diff options
author | Thales Lima Oliveira <thaleslima.ufu@gmail.com> | 2017-10-05 20:02:59 -0300 |
---|---|---|
committer | Thales Lima Oliveira <thaleslima.ufu@gmail.com> | 2017-10-05 20:02:59 -0300 |
commit | bc5a3e8923cb8efedbbd5b88e212eb0e9009cf87 (patch) | |
tree | a86d950b5ed31b6a7722ba3ef073d54ffc323a6e /docs | |
parent | c7c1963fae6f88a55b3f7e4a3f9ea17e964d23d2 (diff) | |
download | PSP.git-bc5a3e8923cb8efedbbd5b88e212eb0e9009cf87.tar.gz PSP.git-bc5a3e8923cb8efedbbd5b88e212eb0e9009cf87.tar.xz PSP.git-bc5a3e8923cb8efedbbd5b88e212eb0e9009cf87.zip |
Add copyright on files and documentation update
Diffstat (limited to 'docs')
573 files changed, 13529 insertions, 4002 deletions
diff --git a/docs/doxygen/html/_about_form_8cpp_source.html b/docs/doxygen/html/_about_form_8cpp_source.html index 8a9ad94..54c7a2f 100644 --- a/docs/doxygen/html/_about_form_8cpp_source.html +++ b/docs/doxygen/html/_about_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,7 +88,8 @@ $(document).ready(function(){initNavTree('_about_form_8cpp_source.html','');}); <div class="title">AboutForm.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 "AboutForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> AboutForm::AboutForm(wxWindow* parent) : <a class="code" href="class_about_form_base.html">AboutFormBase</a>(parent) { Init(); }</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> AboutForm::~AboutForm() {}</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="keywordtype">void</span> AboutForm::Init()</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  <span class="comment">// Create developers table</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  m_gridCredits->EnableGridLines(<span class="keyword">false</span>);</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  wxFont headerFont = m_gridCredits->GetDefaultCellFont();</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  headerFont.SetWeight(wxFONTWEIGHT_BOLD);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  headerFont.SetPointSize(headerFont.GetPointSize() + 1);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  wxColour headerColour(200, 200, 200);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  wxColour hyperlinkColour(6, 69, 173);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_gridCredits->AppendCols(3);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_gridCredits->AppendRows(6);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  m_gridCredits->HideColLabels();</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  m_gridCredits->HideRowLabels();</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  m_gridCredits->SetCellSize(0, 0, 1, 3);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  m_gridCredits->SetCellSize(3, 0, 1, 3);</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_gridCredits->SetCellValue(0, 0, _(<span class="stringliteral">"Developers"</span>));</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_gridCredits->SetCellAlignment(0, 0, wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_gridCredits->SetCellBackgroundColour(0, 0, headerColour);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_gridCredits->SetCellFont(0, 0, headerFont);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_gridCredits->SetCellValue(1, 0, wxT(<span class="stringliteral">"Thales Lima Oliveira"</span>));</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_gridCredits->SetCellValue(1, 1, _(<span class="stringliteral">"Main developer and project admin"</span>));</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_gridCredits->SetCellValue(1, 2, wxT(<span class="stringliteral">"thales@ufu.br"</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>  m_gridCredits->SetRowMinimalHeight(2, 30);</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_gridCredits->SetCellValue(3, 0, _(<span class="stringliteral">"Contributors / Special Thanks"</span>));</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_gridCredits->SetCellAlignment(3, 0, wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_gridCredits->SetCellBackgroundColour(3, 0, headerColour);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_gridCredits->SetCellFont(3, 0, headerFont);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// Caixeta</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_gridCredits->SetCellValue(4, 0, wxT(<span class="stringliteral">"Geraldo Caixeta Guimar"</span>) + static_cast<wxString>(L<span class="stringliteral">'\u00E3'</span>) + wxT(<span class="stringliteral">"es"</span>));</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_gridCredits->SetCellValue(4, 1, _(<span class="stringliteral">"Chief advisor"</span>));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_gridCredits->SetCellValue(4, 2, wxT(<span class="stringliteral">"gcaixeta@ufu.br"</span>));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">// Marcio Tamashiro</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_gridCredits->SetCellValue(5, 0, wxT(<span class="stringliteral">"M"</span>) + static_cast<wxString>(L<span class="stringliteral">'\u00E1'</span>) + wxT(<span class="stringliteral">"rcio Augusto Tamashiro"</span>));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_gridCredits->SetCellValue(5, 1, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_gridCredits->SetCellValue(5, 2, wxT(<span class="stringliteral">"tamashiro@ifto.edu.br"</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="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < m_gridCredits->GetNumberRows(); ++i) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_gridCredits->SetCellTextColour(i, 2, hyperlinkColour);</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_gridCredits->AutoSize();</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">// Last col size</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">int</span> lastColSize = m_notebook->GetPage(1)->GetSize().GetWidth();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">int</span> lastColNumber = m_gridCredits->GetNumberCols() - 1;</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 < lastColNumber; ++i) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  lastColSize -= m_gridCredits->GetColSize(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>  m_gridCredits->SetColSize(lastColNumber, lastColSize);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_gridCredits->SetSize(m_notebook->GetPage(1)->GetSize());</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">// Load license file</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  wxString licenseStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  wxTextFile file;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span>(!file.Open(<span class="stringliteral">"../data/LICENSE"</span>)) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// Error message</span></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>  licenseStr += file.GetFirstLine() + <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">while</span>(!file.Eof()) {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  licenseStr += file.GetNextLine() + <span class="stringliteral">"\n"</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>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  wxFont font = m_richTextCtrlLicense->GetFont();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  font.SetFamily(wxFONTFAMILY_TELETYPE);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_richTextCtrlLicense->SetFont(font);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_richTextCtrlLicense->SetEditable(<span class="keyword">false</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_richTextCtrlLicense->AppendText(licenseStr);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="ttc" id="class_about_form_base_html"><div class="ttname"><a href="class_about_form_base.html">AboutFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_form_8h_source.html#l00169">PropertiesForm.h:169</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="_about_form_8h.html">AboutForm.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> AboutForm::AboutForm(wxWindow* parent) : <a class="code" href="class_about_form_base.html">AboutFormBase</a>(parent) { Init(); }</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> AboutForm::~AboutForm() {}</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keywordtype">void</span> AboutForm::Init()</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="comment">// Create developers table</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_gridCredits->EnableGridLines(<span class="keyword">false</span>);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxFont headerFont = m_gridCredits->GetDefaultCellFont();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  headerFont.SetWeight(wxFONTWEIGHT_BOLD);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  headerFont.SetPointSize(headerFont.GetPointSize() + 1);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  wxColour headerColour(200, 200, 200);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  wxColour hyperlinkColour(6, 69, 173);</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_gridCredits->AppendCols(3);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_gridCredits->AppendRows(6);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_gridCredits->HideColLabels();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_gridCredits->HideRowLabels();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_gridCredits->SetCellSize(0, 0, 1, 3);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_gridCredits->SetCellSize(3, 0, 1, 3);</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_gridCredits->SetCellValue(0, 0, _(<span class="stringliteral">"Developers"</span>));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_gridCredits->SetCellAlignment(0, 0, wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_gridCredits->SetCellBackgroundColour(0, 0, headerColour);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_gridCredits->SetCellFont(0, 0, headerFont);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_gridCredits->SetCellValue(1, 0, wxT(<span class="stringliteral">"Thales Lima Oliveira"</span>));</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_gridCredits->SetCellValue(1, 1, _(<span class="stringliteral">"Main developer and project admin"</span>));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  m_gridCredits->SetCellValue(1, 2, wxT(<span class="stringliteral">"thales@ufu.br"</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_gridCredits->SetRowMinimalHeight(2, 30);</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_gridCredits->SetCellValue(3, 0, _(<span class="stringliteral">"Contributors / Special Thanks"</span>));</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_gridCredits->SetCellAlignment(3, 0, wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_gridCredits->SetCellBackgroundColour(3, 0, headerColour);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_gridCredits->SetCellFont(3, 0, headerFont);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// Caixeta</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_gridCredits->SetCellValue(4, 0, wxT(<span class="stringliteral">"Geraldo Caixeta Guimar"</span>) + static_cast<wxString>(L<span class="stringliteral">'\u00E3'</span>) + wxT(<span class="stringliteral">"es"</span>));</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_gridCredits->SetCellValue(4, 1, _(<span class="stringliteral">"Chief advisor"</span>));</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_gridCredits->SetCellValue(4, 2, wxT(<span class="stringliteral">"gcaixeta@ufu.br"</span>));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// Marcio Tamashiro</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_gridCredits->SetCellValue(5, 0, wxT(<span class="stringliteral">"M"</span>) + static_cast<wxString>(L<span class="stringliteral">'\u00E1'</span>) + wxT(<span class="stringliteral">"rcio Augusto Tamashiro"</span>));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_gridCredits->SetCellValue(5, 1, <span class="stringliteral">""</span>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_gridCredits->SetCellValue(5, 2, wxT(<span class="stringliteral">"tamashiro@ifto.edu.br"</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="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < m_gridCredits->GetNumberRows(); ++i) {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_gridCredits->SetCellTextColour(i, 2, hyperlinkColour);</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>  m_gridCredits->AutoSize();</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">// Last col size</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">int</span> lastColSize = m_notebook->GetPage(1)->GetSize().GetWidth();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">int</span> lastColNumber = m_gridCredits->GetNumberCols() - 1;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < lastColNumber; ++i) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  lastColSize -= m_gridCredits->GetColSize(i);</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_gridCredits->SetColSize(lastColNumber, lastColSize);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_gridCredits->SetSize(m_notebook->GetPage(1)->GetSize());</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">// Load license file</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  wxString licenseStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  wxTextFile file;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  wxFileName fn(wxStandardPaths::Get().GetExecutablePath());</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  wxString licensePath = fn.GetPath() + <span class="stringliteral">"\\..\\data\\LICENSE"</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">if</span>(!file.Open(licensePath)) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// Error message</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  licenseStr += file.GetFirstLine() + <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">while</span>(!file.Eof()) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  licenseStr += file.GetNextLine() + <span class="stringliteral">"\n"</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>  wxFont font = m_richTextCtrlLicense->GetFont();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  font.SetFamily(wxFONTFAMILY_TELETYPE);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_richTextCtrlLicense->SetFont(font);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  m_richTextCtrlLicense->SetEditable(<span class="keyword">false</span>);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_richTextCtrlLicense->AppendText(licenseStr);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> }</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_about_form_base_html"><div class="ttname"><a href="class_about_form_base.html">AboutFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_form_8h_source.html#l00169">PropertiesForm.h:169</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_about_form_8h.html b/docs/doxygen/html/_about_form_8h.html new file mode 100644 index 0000000..1c822d8 --- /dev/null +++ b/docs/doxygen/html/_about_form_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/AboutForm.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('_about_form_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">AboutForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "PropertiesForm.h"</code><br /> +<code>#include <wx/textfile.h></code><br /> +<code>#include <wx/stdpaths.h></code><br /> +</div> +<p><a href="_about_form_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_about_form.html">AboutForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to show some informations. <a href="class_about_form.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="_about_form_8h.html">AboutForm.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/_about_form_8h_source.html b/docs/doxygen/html/_about_form_8h_source.html index c967711..b4b7f5b 100644 --- a/docs/doxygen/html/_about_form_8h_source.html +++ b/docs/doxygen/html/_about_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,14 +88,14 @@ $(document).ready(function(){initNavTree('_about_form_8h_source.html','');}); <div class="title">AboutForm.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="preprocessor">#ifndef ABOUTFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define ABOUTFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "PropertiesForm.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</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> </div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="class_about_form.html"> 7</a></span> <span class="keyword">class </span><a class="code" href="class_about_form.html">AboutForm</a> : <span class="keyword">public</span> <a class="code" href="class_about_form_base.html">AboutFormBase</a></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <a class="code" href="class_about_form.html">AboutForm</a>(wxWindow* parent);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_about_form.html">AboutForm</a>();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Init();</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">protected</span>:</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event) { EndModal(wxID_OK); };</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> };</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#endif // ABOUTFORM_H</span></div><div class="ttc" id="class_about_form_base_html"><div class="ttname"><a href="class_about_form_base.html">AboutFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_form_8h_source.html#l00169">PropertiesForm.h:169</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="ttdef"><b>Definition:</b> <a href="_about_form_8h_source.html#l00007">AboutForm.h:7</a></div></div> +<a href="_about_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 ABOUTFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define ABOUTFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "PropertiesForm.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 <wx/textfile.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/stdpaths.h></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_about_form.html"> 32</a></span> <span class="keyword">class </span><a class="code" href="class_about_form.html">AboutForm</a> : <span class="keyword">public</span> <a class="code" href="class_about_form_base.html">AboutFormBase</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_about_form.html">AboutForm</a>(wxWindow* parent);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_about_form.html">AboutForm</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Init();</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> OnOKButtonClick(wxCommandEvent& event) { EndModal(wxID_OK); };</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="preprocessor">#endif // ABOUTFORM_H</span></div><div class="ttc" id="class_about_form_base_html"><div class="ttname"><a href="class_about_form_base.html">AboutFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_form_8h_source.html#l00169">PropertiesForm.h:169</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><!-- 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>AboutForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_about_form_8h.html">AboutForm.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/_art_metro_8cpp_source.html b/docs/doxygen/html/_art_metro_8cpp_source.html index b676214..a56d2ef 100644 --- a/docs/doxygen/html/_art_metro_8cpp_source.html +++ b/docs/doxygen/html/_art_metro_8cpp_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_art_metro_8h_source.html b/docs/doxygen/html/_art_metro_8h_source.html index 70e39af..b64d1d2 100644 --- a/docs/doxygen/html/_art_metro_8h_source.html +++ b/docs/doxygen/html/_art_metro_8h_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_branch_8cpp_source.html b/docs/doxygen/html/_branch_8cpp_source.html index 3d95db6..05e75d5 100644 --- a/docs/doxygen/html/_branch_8cpp_source.html +++ b/docs/doxygen/html/_branch_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,18 +88,18 @@ $(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="preprocessor">#include "Branch.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> Branch::Branch()</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>  : <a class="code" href="class_power_element.html">PowerElement</a>()</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> }</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> Branch::~Branch() {}</div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_branch.html#a3a651769f183290af8a91494f5e9047b"> 8</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="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</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="l00011"></a><span class="lineno"> 11</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  wxRect2DDouble nodeRect2(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize, 10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keywordflow">if</span>(nodeRect1.Contains(position)) {</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_activeNodeID = 1;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</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>  <span class="keywordflow">if</span>(nodeRect2.Contains(position)) {</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  m_activeNodeID = 2;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keywordflow">return</span> <span class="keyword">true</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>  m_activeNodeID = 0;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">return</span> <span class="keyword">false</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"><a class="line" href="class_branch.html#aaf64ea58631438e3a16b1b2ede793875"> 28</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="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>(m_activeNodeID == 1 && parent == m_parentList[0]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</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="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">if</span>(parent && m_activeNodeID != 0) {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  wxRect2DDouble nodeRect(0, 0, 0, 0);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</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="l00037"></a><span class="lineno"> 37</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</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="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize, 10 + 2.0 * m_borderSize,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  10 + 2.0 * m_borderSize);</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="keywordflow">if</span>(parent-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(nodeRect)) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// Check if the user is trying to connect the same bus.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span>(m_parentList[1] == parent) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_activeNodeID = 0;</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>  m_parentList[0] = 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="comment">// Centralize the node on bus.</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  wxPoint2DDouble parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</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="l00058"></a><span class="lineno"> 58</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="l00059"></a><span class="lineno"> 59</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="l00060"></a><span class="lineno"> 60</span>  m_pointList[0] = parentPt;</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>  UpdateSwitchesPosition();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">return</span> <span class="keyword">true</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_activeNodeID == 2) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(m_parentList[0] == parent) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">return</span> <span class="keyword">false</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> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_parentList[1] = parent;</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>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</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="l00075"></a><span class="lineno"> 75</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</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="l00077"></a><span class="lineno"> 77</span>  m_pointList[m_pointList.size() - 1] = parentPt;</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>  UpdateSwitchesPosition();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">return</span> <span class="keyword">true</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="keywordflow">else</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) m_parentList[0] = NULL;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) m_parentList[1] = 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>  }</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> }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc"> 90</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="l00091"></a><span class="lineno"> 91</span> {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; i++) {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span>(parent == m_parentList[i]) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_parentList[i] = NULL;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  UpdateSwitchesPosition();</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"><a class="line" href="class_branch.html#a31428bf54c5b95a7a2e63bbf60ef9e35"> 101</a></span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a31428bf54c5b95a7a2e63bbf60ef9e35">Branch::UpdateNodes</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>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</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="l00105"></a><span class="lineno"> 105</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</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_parentList[0]->Intersects(nodeRect)) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_parentList[0] = 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>  <span class="keywordflow">if</span>(m_parentList[1]) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  wxRect2DDouble nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize, 10 + 2.0 * m_borderSize,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  10 + 2.0 * m_borderSize);</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>(!m_parentList[1]->Intersects(nodeRect)) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_parentList[1]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_parentList[1] = NULL;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  UpdateSwitchesPosition();</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"><a class="line" href="class_branch.html#a190d3da81276751c5b9ab23c5d3f37df"> 128</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="l00129"></a><span class="lineno"> 129</span> {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</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>(parent == m_parentList[0]) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</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="l00135"></a><span class="lineno"> 135</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent == m_parentList[1]) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</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="l00137"></a><span class="lineno"> 137</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> <span class="keywordtype">void</span> Branch::UpdateSwitchesPosition()</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_parentList[0]) {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], m_pointList[2]);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  m_pointList[1] = m_pointList[0];</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>(m_parentList[1]) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  m_pointList[m_pointList.size() - 2] =</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  GetSwitchPoint(m_parentList[1], m_pointList[m_pointList.size() - 1], m_pointList[m_pointList.size() - 3]);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  m_pointList[m_pointList.size() - 2] = m_pointList[m_pointList.size() - 1];</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>  UpdateSwitches();</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"><a class="line" href="class_branch.html#a0687f6a668e10dd442c5010649049706"> 157</a></span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a0687f6a668e10dd442c5010649049706">Branch::UpdateSwitches</a>()</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>  wxPoint2DDouble swCenter = wxPoint2DDouble(</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  (m_pointList[0].m_x + m_pointList[1].m_x) / 2.0, (m_pointList[0].m_y + m_pointList[1].m_y) / 2.0);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_switchRect[0] = wxRect2DDouble(</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  swCenter.m_x - m_switchSize / 2.0, swCenter.m_y - m_switchSize / 2.0, m_switchSize, m_switchSize);</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="keywordflow">if</span>(m_switchRect.size() > 1) {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  swCenter =</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</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="l00167"></a><span class="lineno"> 167</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="l00168"></a><span class="lineno"> 168</span>  m_switchRect[1] = wxRect2DDouble(</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  swCenter.m_x - m_switchSize / 2.0, swCenter.m_y - m_switchSize / 2.0, m_switchSize, m_switchSize);</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="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#l00201">Element.h:201</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#l00090">Branch.cpp:90</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#l00088">Element.h:88</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#l00028">Branch.cpp:28</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#l00091">Element.cpp:91</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 "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="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_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#l00157">Branch.cpp:157</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#l00101">Branch.cpp:101</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#l00008">Branch.cpp:8</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#l00100">PowerElement.h:100</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#l00171">Element.h:171</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#l00128">Branch.cpp:128</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_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_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 --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_branch_8h_source.html b/docs/doxygen/html/_branch_8h_source.html index de27de5..564f01b 100644 --- a/docs/doxygen/html/_branch_8h_source.html +++ b/docs/doxygen/html/_branch_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,27 +88,27 @@ $(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="preprocessor">#ifndef BRANCH_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define BRANCH_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "Bus.h"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="class_branch.html"> 7</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="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <a class="code" href="class_branch.html">Branch</a>();</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  ~<a class="code" href="class_branch.html">Branch</a>();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  </div><div class="line"><a name="l00013"></a><span class="lineno"><a class="line" href="class_branch.html#a691f94c3cd2abe1274e870d2882634d8"> 13</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="l00014"></a><span class="lineno"><a class="line" href="class_branch.html#a7037f496f9b9c9e64c74eb638debe278"> 14</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="l00015"></a><span class="lineno"><a class="line" href="class_branch.html#a7cf4b117f43f49bb76cce3df5521fb70"> 15</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="l00016"></a><span class="lineno"><a class="line" href="class_branch.html#a947cec45fcdc78d01eaabe19d23daf64"> 16</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="l00017"></a><span class="lineno"><a class="line" href="class_branch.html#aef2ffe79c9b239fb5a1ad175555a9f5a"> 17</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="l00018"></a><span class="lineno"> 18</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="l00019"></a><span class="lineno"> 19</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="l00020"></a><span class="lineno"> 20</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="l00021"></a><span class="lineno"> 21</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="l00022"></a><span class="lineno"><a class="line" href="class_branch.html#a62418f767cc9bb894d6b7cc73645e43e"> 22</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="l00023"></a><span class="lineno"><a class="line" href="class_branch.html#aa23b1014c947e46996f1c0c4caa187e1"> 23</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="l00024"></a><span class="lineno"><a class="line" href="class_branch.html#af7879ee138170b1421f745f1c942ea05"> 24</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="l00025"></a><span class="lineno"><a class="line" href="class_branch.html#a88ab67c930d37daa723c94d7e59a5cf8"> 25</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="l00026"></a><span class="lineno"> 26</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="l00027"></a><span class="lineno"><a class="line" href="class_branch.html#a8d6d80c50f849c5be2bccffd5b524e21"> 27</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="l00028"></a><span class="lineno"><a class="line" href="class_branch.html#a6ddd901403c46f5d9aa179644467b088"> 28</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="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateSwitchesPosition();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</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="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">bool</span> m_inserted = <span class="keyword">false</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> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</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#l00014">Branch.h:14</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#l00090">Branch.cpp:90</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#l00088">Element.h:88</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#l00028">Branch.cpp:28</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#l00028">Branch.h:28</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#l00024">Branch.h:24</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#l00016">Branch.h:16</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#l00157">Branch.cpp:157</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#l00013">Branch.h:13</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#l00027">Branch.h:27</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#l00023">Branch.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">#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> +<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_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_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_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#l00101">Branch.cpp:101</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#l00008">Branch.cpp:8</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#l00100">PowerElement.h:100</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#l00025">Branch.h:25</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#l00015">Branch.h:15</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#l00128">Branch.cpp:128</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#l00017">Branch.h:17</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#l00022">Branch.h:22</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#l00007">Branch.h:7</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_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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_bus_8cpp_source.html b/docs/doxygen/html/_bus_8cpp_source.html index e2caea0..999dc39 100644 --- a/docs/doxygen/html/_bus_8cpp_source.html +++ b/docs/doxygen/html/_bus_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,37 +88,37 @@ $(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="preprocessor">#include "Bus.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> Bus::Bus() : <a class="code" href="class_power_element.html">PowerElement</a>() {}</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> Bus::Bus(wxPoint2DDouble position) : <a class="code" href="class_power_element.html">PowerElement</a>()</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  m_width = 100.0;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_height = 5.0;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(position);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> }</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> Bus::Bus(wxPoint2DDouble position, wxString name)</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> {</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_width = 100.0;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  m_height = 5.0;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(position);</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>  m_electricalData.name = name;</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> Bus::~Bus() {}</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="class_bus.html#ae9022ca29399377d2fe0082bb762107c"> 24</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="l00025"></a><span class="lineno"> 25</span> <span class="keyword"></span>{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="comment">// Draw selection (layer 1)</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</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="l00029"></a><span class="lineno"> 29</span>  <span class="comment">// edges with fixed sizes for all zoom levels.</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  glPushMatrix();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  glLoadIdentity();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="comment">// The matrix was reset, so we must use screen coordinates (WorldToScreen).</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  wxPoint2DDouble screenPt = <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  glTranslated(screenPt.m_x, screenPt.m_y, 0.0);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  glTranslated(-screenPt.m_x, -screenPt.m_y, 0.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>  glColor4dv(m_selectionColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</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>  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="l00041"></a><span class="lineno"> 41</span>  wxPoint2DDouble(m_borderSize, m_borderSize),</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</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="l00043"></a><span class="lineno"> 43</span>  wxPoint2DDouble(m_borderSize, -m_borderSize),</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</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="l00045"></a><span class="lineno"> 45</span>  wxPoint2DDouble(-m_borderSize, -m_borderSize),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</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="l00047"></a><span class="lineno"> 47</span>  wxPoint2DDouble(-m_borderSize, m_borderSize)};</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(pts);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  glPopMatrix();</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">// Draw bus (layer 2)</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Push the current matrix on stack.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  glPushMatrix();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// Rotate the matrix around the object position.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</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>(m_dynEvent)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  glColor4dv(m_dynamicEventColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</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>  glColor4dv(m_busColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</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>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(m_position, m_width, m_height);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// Pop the old matrix back.</span></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 pickbox (layer 3)</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span>(m_showPickbox) {</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>  glLoadIdentity();</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>  wxPoint2DDouble screenPt = <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  glTranslated(screenPt.m_x, screenPt.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(-screenPt.m_x, -screenPt.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>  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="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale, -m_width / 2.0)};</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="class_element.html#ad1d0d803fe522d030e2be8dc99eb9b39">DrawPickbox</a>(pbPosition[0]);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_element.html#ad1d0d803fe522d030e2be8dc99eb9b39">DrawPickbox</a>(pbPosition[1]);</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>  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> }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="class_bus.html#ad2b960058be6e990463b53d79c74c7a3"> 87</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="l00088"></a><span class="lineno"> 88</span> <span class="keyword"></span>{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  wxPoint2DDouble ptR = <a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -m_angle);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> m_rect.Contains(ptR);</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_bus.html#a5014be68f4bb5d8f1a1ea861b03bacdf"> 93</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="l00094"></a><span class="lineno"> 94</span> <span class="keyword"></span>{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</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="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</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="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_bus.html#a0b8f3ed6e0049dafca8c52358f96bf4b"> 100</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="l00101"></a><span class="lineno"> 101</span> {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_activePickboxID = <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433">ID_PB_NONE</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>  wxPoint2DDouble ptR = <a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -m_angle);</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>  wxPoint2DDouble center(m_position.m_x + m_width / 2.0, m_position.m_y);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  wxRect2DDouble rectRight(center.m_x - 5.0, center.m_y - 5.0, 10.0, 10.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>  center = wxPoint2DDouble(m_position.m_x - m_width / 2.0, m_position.m_y);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  wxRect2DDouble rectLeft(center.m_x - 5.0, center.m_y - 5.0, 10.0, 10.0);</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>(rectRight.Contains(ptR)) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_activePickboxID = <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316af6c9b66260adb71ded1407f62d5eceb0">ID_PB_RIGHT</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <span class="keyword">true</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>(rectLeft.Contains(ptR)) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_activePickboxID = <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa8b70955f3c623a35fb64e0d95531721">ID_PB_LEFT</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> <span class="keyword">true</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="keywordflow">return</span> <span class="keyword">false</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"><a class="line" href="class_bus.html#ac43fc37f8c8a8bc120d9a4bb68da3345"> 124</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="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="keywordtype">double</span> angle = m_angle;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">while</span>(angle >= 157.5) angle -= 180.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>(angle >= -22.5 && angle < 22.5)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> wxCursor(wxCURSOR_SIZEWE);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(angle >= 22.5 && angle < 67.5)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">return</span> wxCursor(wxCURSOR_SIZENWSE);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(angle >= 67.5 && angle < 112.5)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> wxCursor(wxCURSOR_SIZENS);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(angle >= 112.5 && angle < 157.5)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">return</span> wxCursor(wxCURSOR_SIZENESW);</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> wxCursor(wxCURSOR_ARROW);</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#ad569e2192bf95efe668d401583382a04"> 141</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="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_activePickboxID == <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433">ID_PB_NONE</a>) <span class="keywordflow">return</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>  wxPoint2DDouble ptR = <a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -m_angle);</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="keywordtype">double</span> dx = 0.0;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</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="l00149"></a><span class="lineno"> 149</span>  dx = ptR.m_x - m_position.m_x - m_width / 2.0;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</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="l00151"></a><span class="lineno"> 151</span>  dx = m_position.m_x - m_width / 2.0 - ptR.m_x;</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_width + dx < 20.0) <span class="keywordflow">return</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_activePickboxID == <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316af6c9b66260adb71ded1407f62d5eceb0">ID_PB_RIGHT</a>) {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_position.m_x += (dx / 2.0) * std::cos(wxDegToRad(m_angle));</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_position.m_y += (dx / 2.0) * std::sin(wxDegToRad(m_angle));</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</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="l00159"></a><span class="lineno"> 159</span>  m_position.m_x -= (dx / 2.0) * std::cos(wxDegToRad(m_angle));</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  m_position.m_y -= (dx / 2.0) * std::sin(wxDegToRad(m_angle));</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_width += dx;</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_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(m_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> </div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="class_bus.html#ace039d00c23d36a7c14d7e4155c94791"> 167</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="l00168"></a><span class="lineno"> 168</span> {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</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_angle += rotAngle;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</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"><a class="line" href="class_bus.html#ae731d57078982f0bd08e92e6a24f3057"> 176</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="l00177"></a><span class="lineno"> 177</span> {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</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="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="class_element.html#a35f55626a29d5256f8dc07cf92655e64">GeneralMenuItens</a>(menu);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> <span class="keyword">true</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> </div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="class_bus.html#a93dbd8f80b11123395093f561d5241d0"> 183</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="l00184"></a><span class="lineno"> 184</span> {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</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="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span>(busForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  busForm->Destroy();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> <span class="keyword">true</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"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  busForm->Destroy();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> <span class="keyword">false</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"><a class="line" href="class_bus.html#a4288c4c84c8840705c3ce6ccd42e578c"> 195</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="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_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="l00198"></a><span class="lineno"> 198</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> }</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="class_bus.html#a0cf17a7aec23d436ff1eeb9834eb2b70"> 201</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="l00202"></a><span class="lineno"> 202</span> <span class="keyword"></span>{</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  tipText += wxString::Format(<span class="stringliteral">" (%d)"</span>, m_electricalData.number + 1);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  tipText += <a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(m_electricalData.nominalVoltage, 1) +</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</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="l00208"></a><span class="lineno"> 208</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</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="l00210"></a><span class="lineno"> 210</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</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="l00212"></a><span class="lineno"> 212</span>  <span class="stringliteral">" "</span> + wxString(L<span class="stringliteral">'\u00B0'</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>  tipText += _(<span class="stringliteral">"\n\nFault info:"</span>);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</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="l00216"></a><span class="lineno"> 216</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="l00217"></a><span class="lineno"> 217</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="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span>(m_electricalData.hasFault) {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</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="l00220"></a><span class="lineno"> 220</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="l00221"></a><span class="lineno"> 221</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="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>  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="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">return</span> tipText;</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"><a class="line" href="class_bus.html#a1ccb74b15ba07f867f2d73b976577e2a"> 229</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="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>(!m_electricalData.plotBus) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  plotData.SetName(m_electricalData.name);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  plotData.SetCurveType(ElementPlotData::CT_BUS);</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>  std::vector<double> absVoltage, argVoltage;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</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="l00237"></a><span class="lineno"> 237</span>  absVoltage.push_back(std::abs(m_electricalData.stabVoltageVector[i]));</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  argVoltage.push_back(wxRadToDeg(std::arg(m_electricalData.stabVoltageVector[i])));</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>  plotData.AddData(absVoltage, _(<span class="stringliteral">"Voltage"</span>));</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  plotData.AddData(argVoltage, _(<span class="stringliteral">"Angle"</span>));</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="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#l00183">Bus.cpp:183</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#l00088">Element.h:88</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#l00013">PowerElement.h:13</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#l00033">Element.h:33</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#l00141">Bus.cpp:141</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#l00109">Element.cpp:109</a></div></div> -<div class="ttc" id="class_bus_html_a0cf17a7aec23d436ff1eeb9834eb2b70"><div class="ttname"><a href="class_bus.html#a0cf17a7aec23d436ff1eeb9834eb2b70">Bus::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="_bus_8cpp_source.html#l00201">Bus.cpp:201</a></div></div> -<div class="ttc" id="class_bus_html_ae731d57078982f0bd08e92e6a24f3057"><div class="ttname"><a href="class_bus.html#ae731d57078982f0bd08e92e6a24f3057">Bus::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="_bus_8cpp_source.html#l00176">Bus.cpp:176</a></div></div> -<div class="ttc" id="class_bus_html_ae9022ca29399377d2fe0082bb762107c"><div class="ttname"><a href="class_bus.html#ae9022ca29399377d2fe0082bb762107c">Bus::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="_bus_8cpp_source.html#l00024">Bus.cpp: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#l00091">Element.cpp:91</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="ttdef"><b>Definition:</b> <a href="_bus_form_8h_source.html#l00007">BusForm.h:7</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#l00053">Element.cpp:53</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#l00228">Element.cpp:228</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#l00045">Bus.h:45</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#l00229">Bus.cpp:229</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#l00039">ElementPlotData.h:39</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#l00010">Element.cpp:10</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#l00124">Bus.cpp:124</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#l00082">Element.cpp:82</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#l00167">Bus.cpp:167</a></div></div> -<div class="ttc" id="class_bus_html_a0b8f3ed6e0049dafca8c52358f96bf4b"><div class="ttname"><a href="class_bus.html#a0b8f3ed6e0049dafca8c52358f96bf4b">Bus::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="_bus_8cpp_source.html#l00100">Bus.cpp:100</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#l00021">Element.h:21</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#l00300">Element.cpp:300</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#l00020">Element.h:20</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#l00100">PowerElement.h:100</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#l00195">Bus.cpp:195</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#l00087">Bus.cpp:87</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#l00093">Bus.cpp:93</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#l00132">Element.cpp:132</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#l00019">Element.h:19</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#l00083">Element.h:83</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 "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="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> +<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> +<div class="ttc" id="class_bus_html_a0cf17a7aec23d436ff1eeb9834eb2b70"><div class="ttname"><a href="class_bus.html#a0cf17a7aec23d436ff1eeb9834eb2b70">Bus::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="_bus_8cpp_source.html#l00218">Bus.cpp:218</a></div></div> +<div class="ttc" id="class_bus_html_ae731d57078982f0bd08e92e6a24f3057"><div class="ttname"><a href="class_bus.html#ae731d57078982f0bd08e92e6a24f3057">Bus::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="_bus_8cpp_source.html#l00193">Bus.cpp:193</a></div></div> +<div class="ttc" id="class_bus_html_ae9022ca29399377d2fe0082bb762107c"><div class="ttname"><a href="class_bus.html#ae9022ca29399377d2fe0082bb762107c">Bus::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="_bus_8cpp_source.html#l00041">Bus.cpp:41</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_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="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_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_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> +<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> +<div class="ttc" id="class_bus_html_a0b8f3ed6e0049dafca8c52358f96bf4b"><div class="ttname"><a href="class_bus.html#a0b8f3ed6e0049dafca8c52358f96bf4b">Bus::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="_bus_8cpp_source.html#l00117">Bus.cpp:117</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="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_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> +<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="_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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_bus_8h_source.html b/docs/doxygen/html/_bus_8h_source.html index 741c991..8fa6343 100644 --- a/docs/doxygen/html/_bus_8h_source.html +++ b/docs/doxygen/html/_bus_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,18 +88,19 @@ $(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="preprocessor">#ifndef BUS_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define BUS_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "BusForm.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="struct_bus_electrical_data.html"> 7</a></span> <span class="keyword">struct </span><a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> {</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  <span class="keywordtype">int</span> number = 0;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  wxString name = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <span class="keywordtype">double</span> nominalVoltage = 138.0;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span>  <span class="keywordtype">bool</span> isVoltageControlled = <span class="keyword">false</span>;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keywordtype">double</span> controlledVoltage = 1.0;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</span>  <span class="keywordtype">bool</span> slackBus = <span class="keyword">false</span>;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="comment">// Power flow (p.u.)</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  std::complex<double> voltage = std::complex<double>(1.0, 0.0);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  std::complex<double> power = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordtype">int</span> busType = 2; <span class="comment">// PQ</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="comment">// Fault</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordtype">bool</span> hasFault = <span class="keyword">false</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</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="l00025"></a><span class="lineno"> 25</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="l00026"></a><span class="lineno"> 26</span>  <span class="comment">// p.u. fault data</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">double</span> faultResistance = 0.0;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">double</span> faultReactance = 0.0;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</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="l00030"></a><span class="lineno"> 30</span>  std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</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="l00032"></a><span class="lineno"> 32</span>  std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">double</span> scPower = 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>  <span class="comment">// Stability</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">bool</span> plotBus = <span class="keyword">false</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">bool</span> stabHasFault = <span class="keyword">false</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">double</span> stabFaultTime = 0.0;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">double</span> stabFaultLength = 0.0;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">double</span> stabFaultResistance = 0.0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">double</span> stabFaultReactance = 0.0;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  std::vector<std::complex<double> > stabVoltageVector;</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_bus.html"> 45</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="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_bus.html">Bus</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_bus.html">Bus</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="class_bus.html">Bus</a>(wxPoint2DDouble position, wxString name);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  ~<a class="code" href="class_bus.html">Bus</a>();</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>* GetCopy();</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="class_bus.html#ab046baebe4bfe0a52905148d78f44681"> 53</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="l00054"></a><span class="lineno"> 54</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="l00055"></a><span class="lineno"> 55</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="l00056"></a><span class="lineno"> 56</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="l00057"></a><span class="lineno"> 57</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="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> wxCursor GetBestPickboxCursor() <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> MovePickbox(wxPoint2DDouble position);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> PickboxContains(wxPoint2DDouble position);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</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="l00064"></a><span class="lineno"> 64</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="l00065"></a><span class="lineno"> 65</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="l00066"></a><span class="lineno"> 66</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="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>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> m_electricalData;</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 // 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#l00088">Element.h:88</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#l00038">PowerElement.h:38</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#l00014">PowerElement.h:14</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#l00007">Bus.h:7</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#l00011">PowerElement.h:11</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#l00045">Bus.h:45</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#l00043">PowerElement.h:43</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#l00039">ElementPlotData.h:39</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#l00039">PowerElement.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">#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> +<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="_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="_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#l00053">Bus.h:53</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#l00100">PowerElement.h:100</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#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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_bus_form_8cpp_source.html b/docs/doxygen/html/_bus_form_8cpp_source.html index 691a10a..c75a647 100644 --- a/docs/doxygen/html/_bus_form_8cpp_source.html +++ b/docs/doxygen/html/_bus_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,19 +88,20 @@ $(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="preprocessor">#include "BusForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "Bus.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</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="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  m_choiceFaultType->SetString(0, _(<span class="stringliteral">"Three-phase"</span>));</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  m_choiceFaultType->SetString(1, _(<span class="stringliteral">"Line-to-line"</span>));</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  m_choiceFaultType->SetString(2, _(<span class="stringliteral">"Double line-to-ground"</span>));</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  m_choiceFaultType->SetString(3, _(<span class="stringliteral">"Line-to-ground"</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>  SetSize(GetBestSize());</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_parent = parent;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  m_bus = bus;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_textCtrlName->SetValue(bus->GetElectricalData().name);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  m_textCtrlNomVoltage->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().nominalVoltage));</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>  <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="l00020"></a><span class="lineno"> 20</span>  m_choiceNomVoltage->SetSelection(0);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_choiceNomVoltage->SetSelection(1);</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_checkBoxCtrlVoltage->SetValue(bus->GetElectricalData().isVoltageControlled);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_textCtrlCtrlVoltage->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().controlledVoltage));</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_choiceCtrlVoltage->SetSelection(bus->GetElectricalData().controlledVoltageUnitChoice);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_checkBoxSlackBus->SetValue(bus->GetElectricalData().slackBus);</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_checkBoxFault->SetValue(bus->GetElectricalData().hasFault);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">switch</span>(bus->GetElectricalData().faultType) {</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#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a>: {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_choiceFaultType->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#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512">FAULT_2LINE</a>: {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_choiceFaultType->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#a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e">FAULT_2LINE_GROUND</a>: {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_choiceFaultType->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#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d">FAULT_LINE_GROUND</a>: {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_choiceFaultType->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>  <span class="keywordflow">switch</span>(bus->GetElectricalData().faultLocation) {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</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="l00048"></a><span class="lineno"> 48</span>  m_choiceFaultPlace->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> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245">FAULT_LINE_B</a>: {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_choiceFaultPlace->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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315">FAULT_LINE_C</a>: {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_choiceFaultPlace->SetSelection(2);</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_textCtrlFaultResistance->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().faultResistance));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_textCtrlFaultReactance->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().faultReactance));</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>  m_checkBoxPlotData->SetValue(bus->GetElectricalData().plotBus);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_checkBoxStabFault->SetValue(bus->GetElectricalData().stabHasFault);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_textCtrlStabFaultTime->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().stabFaultTime));</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_textCtrlStabFaultLength->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().stabFaultLength));</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_textCtrlStabFaultResistance->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().stabFaultResistance));</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_textCtrlStabFaultReactance->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().stabFaultReactance));</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>  EnableCtrlVoltageFields(bus->GetElectricalData().isVoltageControlled);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  EnableFaultFields(bus->GetElectricalData().hasFault);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  EnableStabFaultFields(bus->GetElectricalData().stabHasFault);</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> BusForm::~BusForm() {}</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keywordtype">void</span> BusForm::OnButtonCancelClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keywordtype">void</span> BusForm::OnButtonOKClick(wxCommandEvent& event)</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_bus_electrical_data.html">BusElectricalData</a> data = m_bus->GetElectricalData();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlNomVoltage->GetValue(), data.nominalVoltage,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Rated voltage\"."</span>)))</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</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="l00084"></a><span class="lineno"> 84</span>  data.isVoltageControlled = m_checkBoxCtrlVoltage->GetValue();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(data.isVoltageControlled) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlCtrlVoltage->GetValue(), data.controlledVoltage,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Controlled voltage\"."</span>)))</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  data.controlledVoltageUnitChoice = m_choiceCtrlVoltage->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>  data.slackBus = m_checkBoxSlackBus->GetValue();</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.hasFault = m_checkBoxFault->GetValue();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">switch</span>(m_choiceFaultType->GetSelection()) {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  data.faultType = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</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> 1: {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  data.faultType = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512">FAULT_2LINE</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>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  data.faultType = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e">FAULT_2LINE_GROUND</a>;</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>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  data.faultType = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d">FAULT_LINE_GROUND</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>  }</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">switch</span>(m_choiceFaultPlace->GetSelection()) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  data.faultLocation = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</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> 1: {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  data.faultLocation = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245">FAULT_LINE_B</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> 2: {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  data.faultLocation = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315">FAULT_LINE_C</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>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlFaultResistance->GetValue(), data.faultResistance,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Fault resistance\"."</span>)))</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</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="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlFaultReactance->GetValue(), data.faultReactance,</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Fault reactance\"."</span>)))</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">return</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>  data.plotBus = m_checkBoxPlotData->GetValue();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  data.stabHasFault = m_checkBoxStabFault->GetValue();</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="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlStabFaultTime->GetValue(), data.stabFaultTime,</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Time\"."</span>)))</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</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">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlStabFaultLength->GetValue(), data.stabFaultLength,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Fault lenght\"."</span>)))</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</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_bus->DoubleFromString(m_parent, m_textCtrlStabFaultResistance->GetValue(), data.stabFaultResistance,</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Fault resistence (stability)\"."</span>)))</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</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>(!m_bus->DoubleFromString(m_parent, m_textCtrlStabFaultReactance->GetValue(), data.stabFaultReactance,</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Fault reactance (stability)\"."</span>)))</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</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>  m_bus->SetElectricalData(data);</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>(data.stabHasFault)</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_bus->SetDynamicEvent(<span class="keyword">true</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  m_bus->SetDynamicEvent(<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>  EndModal(wxID_OK);</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="keywordtype">void</span> BusForm::OnNominalVoltageChoice(wxCommandEvent& event) { UpdateChoiceBoxes(); }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="keywordtype">void</span> BusForm::OnFaultTypeChoice(wxCommandEvent& event) { UpdateChoiceBoxes(); }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="keywordtype">void</span> BusForm::OnControlledVoltageClick(wxCommandEvent& event)</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>  EnableCtrlVoltageFields(m_checkBoxCtrlVoltage->GetValue());</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> BusForm::OnInsertFaultClick(wxCommandEvent& event) { EnableFaultFields(m_checkBoxFault->GetValue()); }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="keywordtype">void</span> BusForm::OnInsertStabFaultClick(wxCommandEvent& event) { EnableStabFaultFields(m_checkBoxStabFault->GetValue()); }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="keywordtype">void</span> BusForm::EnableCtrlVoltageFields(<span class="keywordtype">bool</span> enable)</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>  m_textCtrlCtrlVoltage->Enable(enable);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  m_choiceCtrlVoltage->Enable(enable);</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>  UpdateChoiceBoxes();</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="keywordtype">void</span> BusForm::EnableFaultFields(<span class="keywordtype">bool</span> enable)</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_choiceFaultType->Enable(enable);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_choiceFaultPlace->Enable(enable);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  m_textCtrlFaultReactance->Enable(enable);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  m_textCtrlFaultResistance->Enable(enable);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  m_staticTextPU_1->Enable(enable);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  m_staticTextPU_2->Enable(enable);</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>  UpdateChoiceBoxes();</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> BusForm::EnableStabFaultFields(<span class="keywordtype">bool</span> 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>  m_textCtrlStabFaultTime->Enable(enable);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  m_textCtrlStabFaultLength->Enable(enable);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  m_staticTextS_1->Enable(enable);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  m_staticTextS_2->Enable(enable);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  m_textCtrlStabFaultReactance->Enable(enable);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  m_textCtrlStabFaultResistance->Enable(enable);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  m_staticTextPU_3->Enable(enable);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  m_staticTextPU_4->Enable(enable);</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="keywordtype">void</span> BusForm::UpdateChoiceBoxes()</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">switch</span>(m_choiceFaultType->GetSelection()) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">case</span> 0: <span class="comment">// three-phase</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>  m_choiceFaultPlace->Enable(<span class="keyword">false</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> 1: <span class="comment">// line-to-line</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">case</span> 2: <span class="comment">// double line-to-line</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">if</span>(m_checkBoxFault->GetValue()) m_choiceFaultPlace->Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  m_choiceFaultPlace->SetString(0, _(<span class="stringliteral">"Lines AB"</span>));</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  m_choiceFaultPlace->SetString(1, _(<span class="stringliteral">"Lines BC"</span>));</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  m_choiceFaultPlace->SetString(2, _(<span class="stringliteral">"Lines CA"</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>  <span class="keywordflow">case</span> 3: <span class="comment">// line-to-ground</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">if</span>(m_checkBoxFault->GetValue()) m_choiceFaultPlace->Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  m_choiceFaultPlace->SetString(0, _(<span class="stringliteral">"Line A"</span>));</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  m_choiceFaultPlace->SetString(1, _(<span class="stringliteral">"Line B"</span>));</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  m_choiceFaultPlace->SetString(2, _(<span class="stringliteral">"Line C"</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">default</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>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">switch</span>(m_choiceNomVoltage->GetSelection()) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  m_choiceCtrlVoltage->SetString(1, _(<span class="stringliteral">"V"</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>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_choiceCtrlVoltage->SetString(1, _(<span class="stringliteral">"kV"</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">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> }</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#l00045">PowerElement.h:45</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#l00042">PowerElement.h:42</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#l00013">PowerElement.h:13</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#l00014">PowerElement.h:14</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#l00007">Bus.h:7</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 "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="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#l00045">Bus.h:45</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#l00043">PowerElement.h:43</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#l00040">PowerElement.h:40</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#l00039">PowerElement.h:39</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#l00041">PowerElement.h:41</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#l00300">Element.cpp:300</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#l00044">PowerElement.h:44</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="_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> +<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_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_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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_bus_form_8h.html b/docs/doxygen/html/_bus_form_8h.html new file mode 100644 index 0000000..27fa1f9 --- /dev/null +++ b/docs/doxygen/html/_bus_form_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/BusForm.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_form_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">BusForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +</div> +<p><a href="_bus_form_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_bus_form.html">BusForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the bus power data. <a href="class_bus_form.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_form_8h.html">BusForm.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_form_8h_source.html b/docs/doxygen/html/_bus_form_8h_source.html index 7d112d3..4278bd7 100644 --- a/docs/doxygen/html/_bus_form_8h_source.html +++ b/docs/doxygen/html/_bus_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,15 @@ $(document).ready(function(){initNavTree('_bus_form_8h_source.html','');}); <div class="title">BusForm.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="preprocessor">#ifndef BUSFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define BUSFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="keyword">class </span><a class="code" href="class_bus.html">Bus</a>;</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="class_bus_form.html"> 7</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="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</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="l00011"></a><span class="lineno"> 11</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_bus_form.html">BusForm</a>();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFaultTypeChoice(wxCommandEvent& event);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnControlledVoltageClick(wxCommandEvent& event);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnInsertFaultClick(wxCommandEvent& event);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnInsertStabFaultClick(wxCommandEvent& event);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnNominalVoltageChoice(wxCommandEvent& event);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonCancelClick(wxCommandEvent& event);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonOKClick(wxCommandEvent& event);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</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="l00021"></a><span class="lineno"> 21</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="l00022"></a><span class="lineno"> 22</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="l00023"></a><span class="lineno"> 23</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateChoiceBoxes();</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_bus.html">Bus</a>* m_bus = NULL;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxWindow* m_parent = NULL;</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="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="ttdef"><b>Definition:</b> <a href="_bus_form_8h_source.html#l00007">BusForm.h:7</a></div></div> +<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#l00045">Bus.h:45</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><!-- 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>BusForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_bus_form_8h.html">BusForm.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_bitmaps_8cpp_source.html b/docs/doxygen/html/_bus_form_bitmaps_8cpp_source.html index 450a590..f5ed2a2 100644 --- a/docs/doxygen/html/_bus_form_bitmaps_8cpp_source.html +++ b/docs/doxygen/html/_bus_form_bitmaps_8cpp_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_camera_8cpp_source.html b/docs/doxygen/html/_camera_8cpp_source.html index a9de529..361e9c2 100644 --- a/docs/doxygen/html/_camera_8cpp_source.html +++ b/docs/doxygen/html/_camera_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,7 +88,8 @@ $(document).ready(function(){initNavTree('_camera_8cpp_source.html','');}); <div class="title">Camera.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 "Camera.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> Camera::Camera()</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> {</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  m_translation = wxPoint2DDouble(0, 0);</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  m_scale = 1.0;</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> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> Camera::~Camera() {}</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> wxPoint2DDouble Camera::ScreenToWorld(wxPoint2DDouble screenCoords)<span class="keyword"> const</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="keyword"></span>{</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keywordflow">return</span> wxPoint2DDouble(</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  screenCoords.m_x / m_scale - m_translation.m_x, screenCoords.m_y / m_scale - m_translation.m_y);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> }</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keywordtype">void</span> Camera::SetTranslation(wxPoint2DDouble screenPoint)</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>  m_translation = screenPoint / m_scale - m_translationStartPt;</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> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="keywordtype">void</span> Camera::SetScale(wxPoint2DDouble screenPoint, <span class="keywordtype">double</span> delta)</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_translation -= screenPoint * (1.0 - m_scale) / m_scale;</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_scale += delta;</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">// Limits: 5% - 300%</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">if</span>(m_scale < m_zoomMin) m_scale = m_zoomMin;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">if</span>(m_scale > m_zoomMax) m_scale = m_zoomMax;</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_translation += screenPoint * (1.0 - m_scale) / m_scale;</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> wxPoint2DDouble Camera::GetMousePosition(<span class="keywordtype">bool</span> worldCoords)<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>  <span class="keywordflow">if</span>(worldCoords) <span class="keywordflow">return</span> ScreenToWorld(m_mousePosition);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">return</span> m_mousePosition;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> }</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="_camera_8h.html">Camera.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> Camera::Camera()</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_translation = wxPoint2DDouble(0, 0);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_scale = 1.0;</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> Camera::~Camera() {}</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> wxPoint2DDouble Camera::ScreenToWorld(wxPoint2DDouble screenCoords)<span class="keyword"> const</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword"></span>{</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">return</span> wxPoint2DDouble(screenCoords.m_x / m_scale - m_translation.m_x,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  screenCoords.m_y / m_scale - m_translation.m_y);</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> <span class="keywordtype">void</span> Camera::SetTranslation(wxPoint2DDouble screenPoint)</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_translation = screenPoint / m_scale - m_translationStartPt;</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> Camera::SetScale(wxPoint2DDouble screenPoint, <span class="keywordtype">double</span> delta)</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_translation -= screenPoint * (1.0 - m_scale) / m_scale;</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_scale += delta;</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">// Limits: 5% - 300%</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span>(m_scale < m_zoomMin) m_scale = m_zoomMin;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span>(m_scale > m_zoomMax) m_scale = m_zoomMax;</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>  m_translation += screenPoint * (1.0 - m_scale) / m_scale;</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> wxPoint2DDouble Camera::GetMousePosition(<span class="keywordtype">bool</span> worldCoords)<span class="keyword"> const</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword"></span>{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span>(worldCoords) <span class="keywordflow">return</span> ScreenToWorld(m_mousePosition);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> m_mousePosition;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="ttc" id="_camera_8h_html"><div class="ttname"><a href="_camera_8h.html">Camera.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/_camera_8h.html b/docs/doxygen/html/_camera_8h.html new file mode 100644 index 0000000..0bfb58f --- /dev/null +++ b/docs/doxygen/html/_camera_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/Camera.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('_camera_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">Camera.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include <wx/geometry.h></code><br /> +</div> +<p><a href="_camera_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_camera.html">Camera</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Class responsible for the correct visualization of the elements on screen. <a href="class_camera.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="_camera_8h.html">Camera.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/_camera_8h_source.html b/docs/doxygen/html/_camera_8h_source.html index 3399ad0..385e607 100644 --- a/docs/doxygen/html/_camera_8h_source.html +++ b/docs/doxygen/html/_camera_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,13 +88,13 @@ $(document).ready(function(){initNavTree('_camera_8h_source.html','');}); <div class="title">Camera.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="preprocessor">#ifndef CAMERA_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define CAMERA_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <wx/geometry.h></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"><a class="line" href="class_camera.html"> 6</a></span> <span class="keyword">class </span><a class="code" href="class_camera.html">Camera</a></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="keyword">public</span>:</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <a class="code" href="class_camera.html">Camera</a>();</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  ~<a class="code" href="class_camera.html">Camera</a>();</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keywordtype">void</span> SetScale(wxPoint2DDouble screenPoint, <span class="keywordtype">double</span> delta);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keywordtype">void</span> SetScale(<span class="keywordtype">double</span> scale) { m_scale = scale; }</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <span class="keywordtype">void</span> SetTranslation(wxPoint2DDouble screenPoint);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keywordtype">void</span> StartTranslation(wxPoint2DDouble startPoint) { this->m_translationStartPt = startPoint; }</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keywordtype">void</span> UpdateMousePosition(wxPoint2DDouble mousePosition) { this->m_mousePosition = mousePosition; }</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordtype">double</span> GetScale()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_scale; }</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  wxPoint2DDouble GetTranslation()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_translation; }</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  wxPoint2DDouble GetMousePosition(<span class="keywordtype">bool</span> worldCoords = <span class="keyword">true</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  wxPoint2DDouble ScreenToWorld(wxPoint2DDouble screenCoords) <span class="keyword">const</span>;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keywordtype">double</span> GetZoomMin()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_zoomMin; }</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keywordtype">double</span> GetZoomMax()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_zoomMax; }</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">protected</span>:</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  wxPoint2DDouble m_translation;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxPoint2DDouble m_translationStartPt;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">double</span> m_scale;</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>  wxPoint2DDouble m_mousePosition;</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="keywordtype">double</span> m_zoomMin = 0.01;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">double</span> m_zoomMax = 3.0;</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="preprocessor">#endif // CAMERA_H</span></div><div class="ttc" id="class_camera_html"><div class="ttname"><a href="class_camera.html">Camera</a></div><div class="ttdef"><b>Definition:</b> <a href="_camera_8h_source.html#l00006">Camera.h:6</a></div></div> +<a href="_camera_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 CAMERA_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CAMERA_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/geometry.h></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_camera.html"> 30</a></span> <span class="keyword">class </span><a class="code" href="class_camera.html">Camera</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_camera.html">Camera</a>();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  ~<a class="code" href="class_camera.html">Camera</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">void</span> SetScale(wxPoint2DDouble screenPoint, <span class="keywordtype">double</span> delta);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">void</span> SetScale(<span class="keywordtype">double</span> scale) { m_scale = scale; }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">void</span> SetTranslation(wxPoint2DDouble screenPoint);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">void</span> StartTranslation(wxPoint2DDouble startPoint) { this->m_translationStartPt = startPoint; }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">void</span> UpdateMousePosition(wxPoint2DDouble mousePosition) { this->m_mousePosition = mousePosition; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">double</span> GetScale()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_scale; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  wxPoint2DDouble GetTranslation()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_translation; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  wxPoint2DDouble GetMousePosition(<span class="keywordtype">bool</span> worldCoords = <span class="keyword">true</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  wxPoint2DDouble ScreenToWorld(wxPoint2DDouble screenCoords) <span class="keyword">const</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> GetZoomMin()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_zoomMin; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">double</span> GetZoomMax()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_zoomMax; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  wxPoint2DDouble m_translation;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  wxPoint2DDouble m_translationStartPt;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">double</span> m_scale;</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>  wxPoint2DDouble m_mousePosition;</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> m_zoomMin = 0.01;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">double</span> m_zoomMax = 3.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 // CAMERA_H</span></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><!-- 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>Camera.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_camera_8h.html">Camera.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/_capacitor_8cpp_source.html b/docs/doxygen/html/_capacitor_8cpp_source.html index a038326..14bd837 100644 --- a/docs/doxygen/html/_capacitor_8cpp_source.html +++ b/docs/doxygen/html/_capacitor_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,32 +88,33 @@ $(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="preprocessor">#include "ReactiveShuntElementForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "Capacitor.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> Capacitor::Capacitor() : <a class="code" href="class_shunt.html">Shunt</a>() {}</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> Capacitor::Capacitor(wxString name) : <a class="code" href="class_shunt.html">Shunt</a>() { m_electricalData.name = name; }</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> Capacitor::~Capacitor() {}</div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="class_capacitor.html#ace755e5bc3cc72b491ce31c24c54a5cf"> 7</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="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</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="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</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="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</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="l00018"></a><span class="lineno"> 18</span>  m_width = 40;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  m_height = 30;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</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="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_pointList.push_back(parentPt);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -m_height / 2.0 - 10.0));</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -m_height / 2.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>  m_inserted = <span class="keyword">true</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>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_switchRect.push_back(genRect); <span class="comment">// Push a general rectangle.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  UpdateSwitches();</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="keywordflow">return</span> <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="keywordflow">return</span> <span class="keyword">false</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> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_capacitor.html#a94d378c922467214b394931ec0eb01c8"> 38</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="l00039"></a><span class="lineno"> 39</span> <span class="keyword"></span>{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  elementColour = m_offlineElementColour;</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>(m_inserted) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::vector<wxPoint2DDouble> capPts;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</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="l00052"></a><span class="lineno"> 52</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="l00053"></a><span class="lineno"> 53</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="l00054"></a><span class="lineno"> 54</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="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  glColor4dv(m_selectionColour.GetRGBA());</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>  DrawLine(m_pointList);</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>  glPushMatrix();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</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>  DrawLine(capPts, GL_LINES);</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>  DrawGround(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 10.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>  glPopMatrix();</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>  <span class="comment">// Draw Capacitor (layer 2).</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  glLineWidth(1.5);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  DrawLine(m_pointList);</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>  DrawSwitches();</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>  glPushMatrix();</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>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  glTranslated(-m_position.m_x, -m_position.m_y, 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>  glColor4dv(elementColour.<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>  DrawLine(capPts, GL_LINES);</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>  DrawGround(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 10.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>  glPopMatrix();</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"><a class="line" href="class_capacitor.html#a2c3f0949c2b791c6a0b69866e9aaff7a"> 98</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="l00099"></a><span class="lineno"> 99</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</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_angle += rotAngle;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_pointList[2] = RotateAtPosition(m_pointList[2], rotAngle);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_pointList[3] = RotateAtPosition(m_pointList[3], rotAngle);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  UpdateSwitchesPosition();</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_capacitor.html#a05d5517b64dd8a8888817ca28b72294d"> 110</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="l00111"></a><span class="lineno"> 111</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</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="l00113"></a><span class="lineno"> 113</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <span class="keyword">true</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_capacitor.html#a994039e59a8ae0ec3fe7cf7f5b66e4e5"> 117</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="l00118"></a><span class="lineno"> 118</span> <span class="keyword"></span>{</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  wxPoint2DDouble ptR = RotateAtPosition(position, -m_angle);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> m_rect.Contains(ptR);</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_capacitor.html#a6b06adb1ef3545b220e0b94ee6210b7a"> 123</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="l00124"></a><span class="lineno"> 124</span> <span class="keyword"></span>{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> RotatedRectanglesIntersects(m_rect, rect, m_angle, 0.0);</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"><a class="line" href="class_capacitor.html#a459b1bbdb153bb9720176661e2960ea6"> 128</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="l00129"></a><span class="lineno"> 129</span> {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</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="l00131"></a><span class="lineno"> 131</span>  capacitorForm->SetTitle(_(<span class="stringliteral">"Capacitor"</span>));</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span>(capacitorForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  capacitorForm->Destroy();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> <span class="keyword">true</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>  capacitorForm->Destroy();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> <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> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</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="l00141"></a><span class="lineno"> 141</span> {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">case</span> <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>  data.reactivePower = data.reactivePower / systemPowerBase;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  data.reactivePower = (data.reactivePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  data.reactivePower = (data.reactivePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">default</span>:</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>  }</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">return</span> data;</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"><a class="line" href="class_capacitor.html#a422e353b594ac6e4ef34e1f613f7d580"> 163</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="l00164"></a><span class="lineno"> 164</span> {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</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="l00166"></a><span class="lineno"> 166</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">return</span> copy;</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"><a class="line" href="class_capacitor.html#a00e808708e16b87c80fc650e5710b84e"> 170</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="l00171"></a><span class="lineno"> 171</span> <span class="keyword"></span>{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  wxString tipText = m_electricalData.name;</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">// TODO: Avoid reactive power calculation.</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordtype">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">if</span>(!m_online)</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  reactivePower = 0.0;</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>  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="l00180"></a><span class="lineno"> 180</span>  reactivePower *= std::pow(std::abs(v), 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>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">case</span> <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>  tipText += _(<span class="stringliteral">" p.u."</span>);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  tipText += _(<span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  tipText += _(<span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  tipText += _(<span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">default</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>  }</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> tipText;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</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#l00201">Element.h:201</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#l00128">Capacitor.cpp:128</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#l00088">Element.h:88</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#l00110">Capacitor.cpp:110</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#l00033">Element.h:33</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#l00098">Capacitor.cpp:98</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#l00091">Element.cpp:91</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#l00012">PowerElement.h:12</a></div></div> -<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#l00163">Capacitor.cpp:163</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#l00117">Capacitor.cpp:117</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#l00123">Capacitor.cpp:123</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#l00045">Bus.h:45</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#l00038">Capacitor.cpp:38</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#l00025">PowerElement.h: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#l00333">Element.cpp:333</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#l00024">PowerElement.h:24</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#l00023">PowerElement.h:23</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#l00048">Element.h:48</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#l00014">Capacitor.h:14</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#l00171">Element.h:171</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#l00007">Shunt.h:7</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#l00170">Capacitor.cpp:170</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#l00007">Capacitor.cpp:7</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="ttdef"><b>Definition:</b> <a href="_reactive_shunt_element_form_8h_source.html#l00010">ReactiveShuntElementForm.h:10</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#l00008">Capacitor.h:8</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#l00083">Element.h:83</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 "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="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_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> +<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_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="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_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_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_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="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> +<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 --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_capacitor_8h_source.html b/docs/doxygen/html/_capacitor_8h_source.html index c33b942..179289e 100644 --- a/docs/doxygen/html/_capacitor_8h_source.html +++ b/docs/doxygen/html/_capacitor_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,13 +88,13 @@ $(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="preprocessor">#ifndef CAPACITOR_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define CAPACITOR_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "Shunt.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="struct_capacitor_electrical_data.html"> 8</a></span> <span class="keyword">struct </span><a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  wxString name;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <span class="keywordtype">double</span> reactivePower = 100.0;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span> };</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00014"></a><span class="lineno"><a class="line" href="class_capacitor.html"> 14</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="l00015"></a><span class="lineno"> 15</span> {</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <a class="code" href="class_capacitor.html">Capacitor</a>();</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <a class="code" href="class_capacitor.html">Capacitor</a>(wxString name);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  ~<a class="code" href="class_capacitor.html">Capacitor</a>();</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="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</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="l00023"></a><span class="lineno"> 23</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="l00024"></a><span class="lineno"> 24</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="l00025"></a><span class="lineno"> 25</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="l00026"></a><span class="lineno"> 26</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="l00027"></a><span class="lineno"> 27</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</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="l00030"></a><span class="lineno"> 30</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="l00031"></a><span class="lineno"> 31</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="l00032"></a><span class="lineno"> 32</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="l00033"></a><span class="lineno"> 33</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> m_electricalData;</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 // 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#l00088">Element.h:88</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#l00011">PowerElement.h:11</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#l00025">PowerElement.h:25</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#l00014">Capacitor.h:14</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#l00007">Shunt.h:7</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="ttdef"><b>Definition:</b> <a href="_reactive_shunt_element_form_8h_source.html#l00010">ReactiveShuntElementForm.h:10</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#l00008">Capacitor.h:8</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">#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> +<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_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 --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_chart_view_8cpp_source.html b/docs/doxygen/html/_chart_view_8cpp_source.html index 33c9bfa..c531030 100644 --- a/docs/doxygen/html/_chart_view_8cpp_source.html +++ b/docs/doxygen/html/_chart_view_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,9 +88,10 @@ $(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="preprocessor">#include "ChartView.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "ElementPlotData.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> ChartView::ChartView(wxWindow* parent, std::vector<ElementPlotData> epdList, std::vector<double> time)</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  : <a class="code" href="class_chart_view_base.html">ChartViewBase</a>(parent)</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  m_epdList = epdList;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  m_time = time;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  m_xAxisValues = time;</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>  m_menuItemShowGrid->Check(m_hideGrid ? <span class="keyword">false</span> : <span class="keyword">true</span>);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_menuItemShowLabel->Check(m_showLeg);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_menuItemShowCoordinates->Check(m_showCoords);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  m_menuItemDarkTheme->Check(m_darkTheme);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="comment">// Create color property.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</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="l00018"></a><span class="lineno"> 18</span>  m_pgPropColor->SetEditor(wxT(<span class="stringliteral">"ChoiceAndButton"</span>));</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  m_pgPropColor->SetValue(static_cast<wxVariant>(*wxBLACK));</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="comment">// Set margins and axis limit to composed mode.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_pgPropMargins->SetValue(wxT(<span class="stringliteral">"<composed>"</span>));</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_pgMgr->Collapse(m_pgPropMargins);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_pgPropAxisLimit->SetValue(wxT(<span class="stringliteral">"<composed>"</span>));</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_pgMgr->Collapse(m_pgPropAxisLimit);</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">// Add line type choices</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Solid"</span>), wxPENSTYLE_SOLID);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Dot"</span>), wxPENSTYLE_DOT);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Dash"</span>), wxPENSTYLE_SHORT_DASH);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Dot and dash"</span>), wxPENSTYLE_DOT_DASH);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Cross"</span>), wxPENSTYLE_CROSS_HATCH);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Driagonal cross"</span>), wxPENSTYLE_CROSSDIAG_HATCH);</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>  SetMPWindow();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  GetSizer()->Add(m_mpWindow, 1, wxEXPAND, WXC_FROM_DIP(5));</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  SetTreectrl();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  Layout();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  SetInitialSize();</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>  BuildColourList();</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> ChartView::~ChartView() {}</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keywordtype">void</span> ChartView::SetMPWindow()</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_mpWindow = <span class="keyword">new</span> mpWindow(<span class="keyword">this</span>, wxID_ANY);</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_mpWindow->SetDoubleBuffered(<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>  m_mpWindow->SetMargins(20, 10, 40, 60);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</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="l00053"></a><span class="lineno"> 53</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="l00054"></a><span class="lineno"> 54</span>  m_xaxis->SetDrawOutsideMargins(<span class="keyword">false</span>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_yaxis->SetDrawOutsideMargins(<span class="keyword">false</span>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_xaxis->SetTicks(m_hideGrid);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_yaxis->SetTicks(m_hideGrid);</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_leg = <span class="keyword">new</span> mpInfoLegend(wxRect(200, 20, 40, 40), wxWHITE_BRUSH);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_coords = <span class="keyword">new</span> mpInfoCoords(wxRect(0, 0, 0, 0), wxWHITE_BRUSH);</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>  m_chartTitle = <span class="keyword">new</span> mpText(<span class="stringliteral">""</span>, 50, 0);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  wxFont chartTitleFont(12, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_chartTitle->SetFont(chartTitleFont);</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->AddLayer(m_xaxis);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_mpWindow->AddLayer(m_yaxis);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_mpWindow->AddLayer(m_leg);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_mpWindow->AddLayer(m_coords);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_mpWindow->AddLayer(m_chartTitle);</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_leg->SetVisible(m_showLeg);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_coords->SetVisible(m_showCoords);</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>  m_mpWindow->EnableDoubleBuffer(<span class="keyword">true</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_mpWindow->LockAspect(<span class="keyword">false</span>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  Fit();</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="keywordtype">void</span> ChartView::SetTreectrl()</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>  wxTreeItemId rootID = m_treeCtrl->AddRoot(wxT(<span class="stringliteral">"root"</span>));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_treeTimeID = m_treeCtrl->AppendItem(rootID, _(<span class="stringliteral">"Time"</span>));</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_treeCtrl->SetItemTextColour(m_treeTimeID, *wxRED);</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> firstElement[ElementPlotData::NUM_ELEMENTS];</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</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="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  wxString rootElementName[ElementPlotData::NUM_ELEMENTS];</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  rootElementName[ElementPlotData::CT_BUS] = _(<span class="stringliteral">"Bus"</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  rootElementName[ElementPlotData::CT_IND_MOTOR] = _(<span class="stringliteral">"Induction motor"</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  rootElementName[ElementPlotData::CT_LINE] = _(<span class="stringliteral">"Line"</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  rootElementName[ElementPlotData::CT_LOAD] = _(<span class="stringliteral">"Load"</span>);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  rootElementName[ElementPlotData::CT_SHUNT_CAPACITOR] = _(<span class="stringliteral">"Capacitor"</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  rootElementName[ElementPlotData::CT_SHUNT_INDUCTOR] = _(<span class="stringliteral">"Inductor"</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  rootElementName[ElementPlotData::CT_SYNC_COMPENSATOR] = _(<span class="stringliteral">"Synchronous compensator"</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  rootElementName[ElementPlotData::CT_SYNC_GENERATOR] = _(<span class="stringliteral">"Synchronous generator"</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  rootElementName[ElementPlotData::CT_TRANSFORMER] = _(<span class="stringliteral">"Transformer"</span>);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  rootElementName[ElementPlotData::CT_TEST] = _(<span class="stringliteral">"Test"</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>  wxTreeItemId rootItemID[ElementPlotData::NUM_ELEMENTS];</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">for</span>(<span class="keyword">auto</span> it = m_epdList.begin(), itEnd = m_epdList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a> data = *it;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  ElementPlotData::CurveType curveType = data.GetCurveType();</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>(firstElement[curveType]) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  rootItemID[curveType] = m_treeCtrl->AppendItem(rootID, rootElementName[curveType]);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  firstElement[curveType] = <span class="keyword">false</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>  wxTreeItemId itemID = m_treeCtrl->AppendItem(rootItemID[curveType], data.GetName());</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < data.GetElementDataNumber(); ++i) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_treeCtrl->AppendItem(itemID, data.GetDataName(i), -1, -1, data.GetPlotData(i));</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="keywordtype">void</span> ChartView::OnPropertyGridChange(wxPropertyGridEvent& 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>  <span class="keywordtype">bool</span> fit = <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>  <span class="keywordflow">if</span>(m_treeCtrl->GetSelection()) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</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="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Draw"</span>)) {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordtype">bool</span> isPlotting = m_pgPropDraw->GetValue();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  data->SetPlot(isPlotting);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>(isPlotting) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  wxColour colour = GetNextColour();</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  data->SetColour(colour);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_pgPropColor->SetValue(static_cast<wxVariant>(colour));</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_treeCtrl->SetItemBold(m_treeCtrl->GetSelection(), <span class="keyword">true</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  m_treeCtrl->SetItemBold(m_treeCtrl->GetSelection(), <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>  fit = <span class="keyword">true</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Color"</span>)) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  wxColour colour;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  colour << m_pgPropColor->GetValue();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  data->SetColour(colour);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Thickness"</span>)) {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  data->SetThick(m_pgProplineThick->GetValue().GetInteger());</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Type"</span>)) {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  data->SetPenType(static_cast<wxPenStyle>(m_pgProplineType->GetValue().GetInteger()));</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Axis"</span>)) {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">int</span> axis = m_pgProplineAxis->GetValue().GetInteger();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span>(axis == 1) { <span class="comment">// Y</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// All lines to Y axis</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  AllToYAxis(m_treeCtrl->GetRootItem());</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// curva selecionada para o eixo X</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_treeCtrl->SetItemTextColour(m_treeCtrl->GetSelection(), *wxRED);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_xAxisValues = data->GetValues();</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>  data->SetAxis(axis);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  fit = <span class="keyword">true</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>  }</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>(event.GetPropertyName() == _(<span class="stringliteral">"Margins"</span>)) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  m_mpWindow->SetMargins(m_pgPropMarginsUp->GetValue().GetLong(), m_pgPropMarginsRight->GetValue().GetLong(),</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_pgPropMarginsBot->GetValue().GetLong(), m_pgPropMarginsLeft->GetValue().GetLong());</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  m_mpWindow->UpdateAll();</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="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Axis limit"</span>)) {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_mpWindow->Fit(m_pgPropXMin->GetValue().GetDouble(), m_pgPropXMax->GetValue().GetDouble(),</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  m_pgPropYMin->GetValue().GetDouble(), m_pgPropYMax->GetValue().GetDouble());</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  m_mpWindow->UpdateAll();</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>  UpdatePlot(fit);</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> ChartView::OnMenuDarkThemeClick(wxCommandEvent& event)</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>  m_darkTheme = <span class="keyword">event</span>.IsChecked();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  wxColour grey(96, 96, 96);</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>(m_darkTheme) {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  m_mpWindow->SetColourTheme(*wxBLACK, *wxWHITE, grey);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  m_leg->SetBrush(*wxBLACK_BRUSH);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  m_coords->SetBrush(*wxBLACK_BRUSH);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  m_mpWindow->SetColourTheme(*wxWHITE, *wxBLACK, grey);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  m_leg->SetBrush(*wxWHITE_BRUSH);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  m_coords->SetBrush(*wxWHITE_BRUSH);</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>  m_mpWindow->UpdateAll();</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"> 190</span> <span class="keywordtype">void</span> ChartView::OnMenuSaveImageClick(wxCommandEvent& event)</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="keywordtype">int</span> x = m_mpWindow->GetScreenPosition().x;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordtype">int</span> y = m_mpWindow->GetScreenPosition().y;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordtype">int</span> width = m_mpWindow->GetSize().GetWidth();</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordtype">int</span> height = m_mpWindow->GetSize().GetHeight();</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>  wxScreenDC dcScreen;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  wxBitmap screenshot(width, height);</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>  wxMemoryDC memDC;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  memDC.SelectObject(screenshot);</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>  memDC.Blit(0, 0, width, height, &dcScreen, x, y);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  memDC.SelectObject(wxNullBitmap);</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>  wxFileDialog saveFileDialog(</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</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="l00208"></a><span class="lineno"> 208</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="l00209"></a><span class="lineno"> 209</span>  wxFD_SAVE | wxFD_OVERWRITE_PROMPT);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">if</span>(saveFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</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>  wxFileName imagePath(saveFileDialog.GetPath());</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  wxBitmapType imageType = wxBITMAP_TYPE_BMP;</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">if</span>(imagePath.GetExt() == <span class="stringliteral">"png"</span>)</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  imageType = wxBITMAP_TYPE_PNG;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(imagePath.GetExt() == <span class="stringliteral">"jpg"</span>)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  imageType = wxBITMAP_TYPE_JPEG;</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>  screenshot.SaveFile(imagePath.GetFullPath(), imageType);</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="keywordtype">void</span> ChartView::OnMenuSendClipClick(wxCommandEvent& event)</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="keywordtype">int</span> x = m_mpWindow->GetScreenPosition().x;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordtype">int</span> y = m_mpWindow->GetScreenPosition().y;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordtype">int</span> width = m_mpWindow->GetSize().GetWidth();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordtype">int</span> height = m_mpWindow->GetSize().GetHeight();</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>  wxScreenDC dcScreen;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  wxBitmap screenshot(width, height);</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>  wxMemoryDC memDC;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  memDC.SelectObject(screenshot);</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>  memDC.Blit(0, 0, width, height, &dcScreen, x, y);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  memDC.SelectObject(wxNullBitmap);</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>(wxTheClipboard->Open()) {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  wxTheClipboard->SetData(<span class="keyword">new</span> wxBitmapDataObject(screenshot));</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  wxTheClipboard->Close();</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>  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="l00244"></a><span class="lineno"> 244</span>  wxDefaultPosition);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</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="l00248"></a><span class="lineno"> 248</span>  wxDefaultPosition);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  msgDialog.ShowModal();</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> <span class="keywordtype">void</span> ChartView::OnMenuShowCoordinatesClick(wxCommandEvent& event)</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>  m_showCoords = <span class="keyword">event</span>.IsChecked();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  m_coords->SetVisible(m_showCoords);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  m_mpWindow->UpdateAll();</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="keywordtype">void</span> ChartView::OnMenuShowGridClick(wxCommandEvent& event)</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>  m_hideGrid = <span class="keyword">event</span>.IsChecked() ? false : <span class="keyword">true</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  m_xaxis->SetTicks(m_hideGrid);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  m_yaxis->SetTicks(m_hideGrid);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  m_mpWindow->UpdateAll();</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> ChartView::OnMenuShowLabelClick(wxCommandEvent& event)</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_showLeg = <span class="keyword">event</span>.IsChecked();</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  m_leg->SetVisible(m_showLeg);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  m_mpWindow->UpdateAll();</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> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="keywordtype">void</span> ChartView::Fit()</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>  m_mpWindow->Fit();</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordtype">double</span> bBox[4];</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  m_mpWindow->GetBoundingBox(bBox);</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>  m_pgPropXMin->SetValue(bBox[0]);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  m_pgPropXMax->SetValue(bBox[1]);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  m_pgPropYMin->SetValue(bBox[2]);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  m_pgPropYMax->SetValue(bBox[3]);</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> ChartView::UpdatePlot(<span class="keywordtype">bool</span> fit)</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>  wxRect legRect = m_leg->GetRectangle();</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  wxRect coordsRect = m_coords->GetRectangle();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  m_mpWindow->DelAllLayers(<span class="keyword">true</span>, <span class="keyword">false</span>);</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">// GoAllTrees(treeCtrl_ChartSelection->GetRootItem());</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  UpdateAllPlots(m_treeCtrl->GetRootItem());</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>  m_xaxis = <span class="keyword">new</span> mpScaleX(m_pgPropXLabel->GetValueAsString(), mpALIGN_BOTTOM, <span class="keyword">true</span>);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</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="l00298"></a><span class="lineno"> 298</span>  m_leg = <span class="keyword">new</span> mpInfoLegend(legRect, wxWHITE_BRUSH);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_coords = <span class="keyword">new</span> mpInfoCoords(coordsRect, wxWHITE_BRUSH);</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>  m_xaxis->SetDrawOutsideMargins(<span class="keyword">false</span>);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  m_yaxis->SetDrawOutsideMargins(<span class="keyword">false</span>);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  m_xaxis->SetTicks(m_hideGrid);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  m_yaxis->SetTicks(m_hideGrid);</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>  mpText* chartTitle = <span class="keyword">new</span> mpText(m_pgPropChartTitle->GetValueAsString(), 50, 0);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  wxFont chartTitleFont(12, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  chartTitle->SetFont(chartTitleFont);</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>  m_mpWindow->AddLayer(m_xaxis);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  m_mpWindow->AddLayer(m_yaxis);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  m_mpWindow->AddLayer(m_leg);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  m_mpWindow->AddLayer(m_coords);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  m_mpWindow->AddLayer(chartTitle);</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>  m_leg->SetVisible(m_showLeg);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  m_coords->SetVisible(m_showCoords);</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="keywordflow">if</span>(fit) Fit();</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>  wxColour grey(96, 96, 96);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">if</span>(m_darkTheme) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  m_mpWindow->SetColourTheme(*wxBLACK, *wxWHITE, grey);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  m_leg->SetBrush(*wxBLACK_BRUSH);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  m_coords->SetBrush(*wxBLACK_BRUSH);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  m_mpWindow->SetColourTheme(*wxWHITE, *wxBLACK, grey);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  m_leg->SetBrush(*wxWHITE_BRUSH);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  m_coords->SetBrush(*wxWHITE_BRUSH);</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> }</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="keywordtype">void</span> ChartView::OnTreeItemActivated(wxTreeEvent& event)</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="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="l00336"></a><span class="lineno"> 336</span>  <span class="keywordtype">bool</span> isPlotting = data->IsPlot() ? false : <span class="keyword">true</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  data->SetPlot(isPlotting);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  m_pgPropDraw->SetValue(data->IsPlot());</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">if</span>(isPlotting) {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  wxColour colour = GetNextColour();</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  data->SetColour(colour);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  m_pgPropColor->SetValue(static_cast<wxVariant>(colour));</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  m_treeCtrl->SetItemBold(m_treeCtrl->GetSelection(), <span class="keyword">true</span>);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  m_treeCtrl->SetItemBold(m_treeCtrl->GetSelection(), <span class="keyword">false</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>  UpdatePlot(<span class="keyword">true</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>(event.GetItem() == m_treeTimeID) {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  AllToYAxis(m_treeCtrl->GetRootItem());</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  m_treeCtrl->SetItemTextColour(m_treeTimeID, *wxRED);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  m_xAxisValues = m_time;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  UpdatePlot(<span class="keyword">true</span>);</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="keyword">event</span>.Skip();</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> <span class="keywordtype">void</span> ChartView::OnTreeItemSelectionChanged(wxTreeEvent& event)</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</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="l00363"></a><span class="lineno"> 363</span>  m_pgPropDraw->SetValue(data->IsPlot());</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  wxVariant colour;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  colour << data->GetColour();</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  m_pgPropColor->SetValue(colour);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  m_pgProplineThick->SetValue(data->GetThick());</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  m_pgProplineType->SetValue(data->GetPenType());</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  m_pgProplineAxis->SetValue(data->GetAxis());</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="keyword">event</span>.Skip();</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="keywordtype">void</span> ChartView::BuildColourList()</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>  m_colourList.push_back(wxColour(255, 0, 0));</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  m_colourList.push_back(wxColour(0, 0, 255));</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  m_colourList.push_back(wxColour(0, 255, 0));</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  m_colourList.push_back(wxColour(255, 128, 0));</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  m_colourList.push_back(wxColour(128, 0, 255));</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  m_colourList.push_back(wxColour(0, 255, 128));</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  m_colourList.push_back(wxColour(255, 255, 0));</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  m_colourList.push_back(wxColour(255, 0, 255));</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  m_colourList.push_back(wxColour(0, 255, 255));</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  m_colourList.push_back(wxColour(128, 255, 0));</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  m_colourList.push_back(wxColour(255, 0, 128));</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  m_colourList.push_back(wxColour(0, 128, 255));</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  m_colourList.push_back(wxColour(128, 128, 128));</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  m_colourList.push_back(*wxBLACK);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  m_itColourList = --m_colourList.end();</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> wxColour ChartView::GetNextColour()</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">if</span>(*m_itColourList == *wxBLACK)</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  m_itColourList = m_colourList.begin();</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>  ++m_itColourList;</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">return</span> *m_itColourList;</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> wxTreeItemId ChartView::AllToYAxis(wxTreeItemId root)</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>  wxTreeItemIdValue cookie;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  wxTreeItemId item = m_treeCtrl->GetFirstChild(root, cookie);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  wxTreeItemId child;</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">while</span>(item.IsOk()) {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  m_treeCtrl->SetItemTextColour(item, *wxBLACK);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</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="l00412"></a><span class="lineno"> 412</span> </div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">if</span>(m_treeCtrl->ItemHasChildren(item)) {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  wxTreeItemId nextChild = AllToYAxis(item);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">if</span>(nextChild.IsOk()) <span class="keywordflow">return</span> nextChild;</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>  item = m_treeCtrl->GetNextChild(root, cookie);</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 dummyID;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">return</span> dummyID;</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> wxTreeItemId ChartView::UpdateAllPlots(wxTreeItemId root)</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>  wxTreeItemIdValue cookie;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  wxTreeItemId item = m_treeCtrl->GetFirstChild(root, cookie);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  wxTreeItemId child;</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">while</span>(item.IsOk()) {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</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="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">if</span>(data->IsPlot()) {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  wxString parentName = m_treeCtrl->GetItemText(m_treeCtrl->GetItemParent(item));</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</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="l00435"></a><span class="lineno"> 435</span>  newLayer->SetData(m_xAxisValues, data->GetValues());</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  newLayer->SetContinuity(<span class="keyword">true</span>);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  wxPen layerPen(data->GetColour(), data->GetThick(), data->GetPenType());</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  newLayer->SetPen(layerPen);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  newLayer->SetDrawOutsideMargins(<span class="keyword">false</span>);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  newLayer->ShowName(<span class="keyword">false</span>);</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>  m_mpWindow->AddLayer(newLayer);</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> </div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">if</span>(m_treeCtrl->ItemHasChildren(item)) {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  wxTreeItemId nextChild = UpdateAllPlots(item);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span>(nextChild.IsOk()) <span class="keywordflow">return</span> nextChild;</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>  item = m_treeCtrl->GetNextChild(root, cookie);</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> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  wxTreeItemId dummyID;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">return</span> dummyID;</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> </div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="keywordtype">void</span> ChartView::OnMenuExpCSVClick(wxCommandEvent& event)</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>  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="l00460"></a><span class="lineno"> 460</span>  wxFD_SAVE | wxFD_OVERWRITE_PROMPT);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">if</span>(saveFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</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>  wxTextFile csvFile(saveFileDialog.GetPath());</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">if</span>(!csvFile.Create()) {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">if</span>(!csvFile.Open()) {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</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="l00467"></a><span class="lineno"> 467</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  msgDialog.ShowModal();</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>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  csvFile.Open();</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">if</span>(csvFile.IsOpened()) {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  csvFile.Clear();</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  csvFile.AddLine(GetActiveCurvesCSV());</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  csvFile.Write();</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  csvFile.Close();</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> }</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> wxString ChartView::GetActiveCurvesCSV()</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>  std::vector<PlotData*> activePlotDataList;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  GetActivePlotData(m_treeCtrl->GetRootItem(), activePlotDataList);</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>  std::vector<double> xValues;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  wxString xName = <span class="stringliteral">""</span>;</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>  <span class="comment">// Find X axis curve, if none is found, X is the m_time.</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordtype">bool</span> foundXAxis = <span class="keyword">false</span>;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</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="l00491"></a><span class="lineno"> 491</span>  <a class="code" href="class_plot_data.html">PlotData</a>* data = *it;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordflow">if</span>(data->GetAxis() == 1) {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  xValues = data->GetValues();</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  xName = data->GetName();</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  foundXAxis = <span class="keyword">true</span>;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  activePlotDataList.erase(it);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keyword">delete</span> data;</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>  }</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="keywordflow">if</span>(!foundXAxis) {</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  xValues = m_time;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  xName = _(<span class="stringliteral">"Time"</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> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="comment">// Build CSV text.</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  wxString csvText = xName + <span class="stringliteral">";"</span>;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</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="l00510"></a><span class="lineno"> 510</span>  <a class="code" href="class_plot_data.html">PlotData</a>* data = *it;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  csvText += data->GetName() + <span class="stringliteral">";"</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>  csvText[csvText.length() - 1] = <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="comment">// Values</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</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="l00516"></a><span class="lineno"> 516</span>  csvText += wxString::FromCDouble(xValues[i], 13) + <span class="stringliteral">";"</span>;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</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="l00518"></a><span class="lineno"> 518</span>  <span class="keywordtype">double</span> value = 0.0;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">if</span>(i < activePlotDataList[j]->GetValues().size()) {</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  value = activePlotDataList[j]->GetValues()[i];</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>  csvText += wxString::FromCDouble(value, 13) + <span class="stringliteral">";"</span>;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  }</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  csvText[csvText.length() - 1] = <span class="charliteral">'\n'</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> </div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="comment">// Clear active plot data vector.</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = activePlotDataList.begin(); it != activePlotDataList.end(); ++it) {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keyword">delete</span>(*it);</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>  activePlotDataList.clear();</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> csvText;</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> </div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> wxTreeItemId ChartView::GetActivePlotData(wxTreeItemId root, std::vector<PlotData*>& plotDataList)</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>  wxTreeItemIdValue cookie;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  wxTreeItemId item = m_treeCtrl->GetFirstChild(root, cookie);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  wxTreeItemId child;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> </div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">while</span>(item.IsOk()) {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</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="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">if</span>(data->IsPlot() || data->GetAxis() == 1) {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  wxString parentName = m_treeCtrl->GetItemText(m_treeCtrl->GetItemParent(item));</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>  <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="l00548"></a><span class="lineno"> 548</span>  *dataCopy = *data;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  dataCopy->SetName(data->GetName() + <span class="stringliteral">" ("</span> + parentName + <span class="stringliteral">")"</span>);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  plotDataList.push_back(dataCopy);</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> </div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">if</span>(m_treeCtrl->ItemHasChildren(item)) {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  wxTreeItemId nextChild = GetActivePlotData(item, plotDataList);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">if</span>(nextChild.IsOk()) <span class="keywordflow">return</span> nextChild;</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>  item = m_treeCtrl->GetNextChild(root, cookie);</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> </div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  wxTreeItemId dummyID;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">return</span> dummyID;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</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#l00039">ElementPlotData.h:39</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#l00010">ElementPlotData.h:10</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 "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="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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_chart_view_8h.html b/docs/doxygen/html/_chart_view_8h.html new file mode 100644 index 0000000..90336b5 --- /dev/null +++ b/docs/doxygen/html/_chart_view_8h.html @@ -0,0 +1,122 @@ +<!-- 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/ChartView.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('_chart_view_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">ChartView.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ChartViewBase.h"</code><br /> +<code>#include "wxMathPlot/mathplot.h"</code><br /> +<code>#include <wx/msgdlg.h></code><br /> +<code>#include <wx/clipbrd.h></code><br /> +<code>#include <wx/bitmap.h></code><br /> +<code>#include <wx/dcscreen.h></code><br /> +<code>#include <wx/filedlg.h></code><br /> +<code>#include <wx/textfile.h></code><br /> +</div> +<p><a href="_chart_view_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_chart_view.html">ChartView</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">This class is responsible to manage the charts generated in the transient electromechanical studies. <a href="class_chart_view.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="_chart_view_8h.html">ChartView.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/_chart_view_8h_source.html b/docs/doxygen/html/_chart_view_8h_source.html index 2b4ad7f..45a3f99 100644 --- a/docs/doxygen/html/_chart_view_8h_source.html +++ b/docs/doxygen/html/_chart_view_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,16 +88,16 @@ $(document).ready(function(){initNavTree('_chart_view_8h_source.html','');}); <div class="title">ChartView.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="preprocessor">#ifndef CHARTVIEW_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define CHARTVIEW_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "ChartViewBase.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "wxMathPlot/mathplot.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <wx/msgdlg.h></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include <wx/clipbrd.h></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include <wx/bitmap.h></span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include <wx/dcscreen.h></span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <wx/filedlg.h></span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include <wx/textfile.h></span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="keyword">class </span><a class="code" href="class_plot_data.html">PlotData</a>;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="keyword">class </span><a class="code" href="class_element_plot_data.html">ElementPlotData</a>;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"><a class="line" href="class_chart_view.html"> 16</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="l00017"></a><span class="lineno"> 17</span> {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</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="l00020"></a><span class="lineno"> 20</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_chart_view.html">ChartView</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="keywordtype">void</span> Fit();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordtype">void</span> UpdatePlot(<span class="keywordtype">bool</span> fit = <span class="keyword">true</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">protected</span>:</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuExpCSVClick(wxCommandEvent& event);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnTreeItemActivated(wxTreeEvent& event);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnTreeItemSelectionChanged(wxTreeEvent& event);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuDarkThemeClick(wxCommandEvent& event);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuExitClick(wxCommandEvent& event) { Close(); }</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuFitClick(wxCommandEvent& event) { Fit(); }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuSaveImageClick(wxCommandEvent& event);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuSendClipClick(wxCommandEvent& event);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuShowCoordinatesClick(wxCommandEvent& event);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuShowGridClick(wxCommandEvent& event);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuShowLabelClick(wxCommandEvent& event);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPropertyGridChange(wxPropertyGridEvent& event);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetMPWindow();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetTreectrl();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> BuildColourList();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> wxColour GetNextColour();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> wxTreeItemId AllToYAxis(wxTreeItemId root);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> wxTreeItemId UpdateAllPlots(wxTreeItemId root);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> wxString GetActiveCurvesCSV();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> wxTreeItemId GetActivePlotData(wxTreeItemId root, std::vector<PlotData*>& plotDataList);</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>  wxPGProperty* m_pgPropColor = NULL;</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>  wxTreeItemId m_treeTimeID;</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>  std::vector<ElementPlotData> m_epdList;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  std::vector<double> m_time;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  std::vector<double> m_xAxisValues;</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>  mpWindow* m_mpWindow = NULL;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  mpScaleX* m_xaxis = NULL;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  mpScaleY* m_yaxis = NULL;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  mpText* m_chartTitle = NULL;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  mpInfoCoords* m_coords = NULL;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  mpInfoLegend* m_leg = NULL;</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> m_hideGrid = <span class="keyword">true</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">bool</span> m_showLeg = <span class="keyword">true</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">bool</span> m_showCoords = <span class="keyword">false</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">bool</span> m_darkTheme = <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>  std::vector<wxColour> m_colourList;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::vector<wxColour>::iterator m_itColourList;</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="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#l00039">ElementPlotData.h:39</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="ttdef"><b>Definition:</b> <a href="_chart_view_8h_source.html#l00016">ChartView.h:16</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#l00010">ElementPlotData.h:10</a></div></div> +<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_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><!-- 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>ChartView.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_chart_view_8h.html">ChartView.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_base_8cpp_source.html b/docs/doxygen/html/_chart_view_base_8cpp_source.html index 48c58bf..0825678 100644 --- a/docs/doxygen/html/_chart_view_base_8cpp_source.html +++ b/docs/doxygen/html/_chart_view_base_8cpp_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_chart_view_base_8h_source.html b/docs/doxygen/html/_chart_view_base_8h_source.html index 536573d..e729e4c 100644 --- a/docs/doxygen/html/_chart_view_base_8h_source.html +++ b/docs/doxygen/html/_chart_view_base_8h_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_chart_view_bitmaps_8cpp_source.html b/docs/doxygen/html/_chart_view_bitmaps_8cpp_source.html index 46f6cf0..8424734 100644 --- a/docs/doxygen/html/_chart_view_bitmaps_8cpp_source.html +++ b/docs/doxygen/html/_chart_view_bitmaps_8cpp_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_connection_line_8cpp_source.html b/docs/doxygen/html/_connection_line_8cpp_source.html index 2a92d45..e9e19ff 100644 --- a/docs/doxygen/html/_connection_line_8cpp_source.html +++ b/docs/doxygen/html/_connection_line_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,17 +88,18 @@ $(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="preprocessor">#include "ConnectionLine.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> ConnectionLine::ConnectionLine() : <a class="code" href="class_control_element.html">ControlElement</a>(-1)</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> {</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> }</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> ConnectionLine::ConnectionLine(<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="l00008"></a><span class="lineno"> 8</span>  : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  wxPoint2DDouble pt = firstNode->GetPosition();</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  m_tmpSndPt = pt;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 6; i++) {</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_pointList.push_back(pt);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  }</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_nodeList.push_back(firstNode);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  firstNode->SetConnected();</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> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> ConnectionLine::~ConnectionLine() {}</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e"> 21</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="l00022"></a><span class="lineno"> 22</span> <span class="keyword"></span>{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="comment">// Line selected (Layer 1).</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  DrawLine(m_pointList);</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="comment">// Draw line (Layer 2)</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  glLineWidth(1.5);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  DrawLine(m_pointList);</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>(m_type == ELEMENT_LINE) {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  DrawCircle(m_pointList[5], 3, 10, GL_POLYGON);</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"><a class="line" href="class_connection_line.html#a65c6d7139587c973a92dd1009909597f"> 41</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="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="keywordflow">if</span>(PointToLineDistance(position) < 5.0) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">return</span> <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="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> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="class_connection_line.html#aaa3e63c2e48338e324ee7b58911c86b6"> 49</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="l00050"></a><span class="lineno"> 50</span> <span class="keyword"></span>{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</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="l00052"></a><span class="lineno"> 52</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="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">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> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keywordtype">void</span> ConnectionLine::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="keywordflow">if</span>(m_type == ELEMENT_ELEMENT) {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">bool</span> hasOneNode = <span class="keyword">true</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  wxPoint2DDouble pt1 = m_nodeList[0]->GetPosition();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  wxPoint2DDouble pt2;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span>(m_nodeList.size() == 1)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  pt2 = m_tmpSndPt;</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>  pt2 = m_nodeList[1]->GetPosition();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  hasOneNode = <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 midPt = (pt1 + pt2) / 2.0 + wxPoint2DDouble(0.0, m_lineOffset);</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>  m_pointList[0] = pt1;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 0.0)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(-10, 0);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 90.0)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(0, -10);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 180.0)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(10, 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_nodeList[0]->GetAngle() == 270.0)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(0, 10);</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>  m_pointList[2] = m_pointList[1] + wxPoint2DDouble(0.0, midPt.m_y - m_pointList[1].m_y);</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[5] = pt2;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span>(hasOneNode)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_pointList[4] = pt2;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span>(m_nodeList[1]->GetAngle() == 0.0)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(-10, 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_nodeList[1]->GetAngle() == 90.0)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(0, -10);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[1]->GetAngle() == 180.0)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(10, 0);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[1]->GetAngle() == 270.0)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(0, 10);</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>  m_pointList[3] = m_pointList[4] + wxPoint2DDouble(0.0, midPt.m_y - m_pointList[4].m_y);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_type == ELEMENT_LINE) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  wxPoint2DDouble pt1 = m_nodeList[0]->GetPosition();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  wxPoint2DDouble pt2 = m_parentLine->GetMidPoint();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  wxPoint2DDouble midPt = (pt1 + pt2) / 2.0 + wxPoint2DDouble(0.0, m_lineOffset);</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_pointList[0] = pt1;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 0.0)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(-10, 0);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 90.0)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(0, -10);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 180.0)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(10, 0);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 270.0)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(0, 10);</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_pointList[2] = m_pointList[1] + wxPoint2DDouble(0.0, midPt.m_y - m_pointList[1].m_y);</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[5] = pt2;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span>(m_pointList[2].m_y > pt2.m_y) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(0, 10);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(0, -10);</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>  m_pointList[3] = m_pointList[4] + wxPoint2DDouble(0.0, midPt.m_y - m_pointList[4].m_y);</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">for</span>(<span class="keyword">auto</span> it = m_childList.begin(), itEnd = m_childList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</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="l00126"></a><span class="lineno"> 126</span>  child->UpdatePoints();</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> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</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="l00131"></a><span class="lineno"> 131</span> {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</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="l00133"></a><span class="lineno"> 133</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="l00134"></a><span class="lineno"> 134</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="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">auto</span> nodeList = parent->GetNodeList();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</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="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="class_node.html">Node</a>* parentNode = *it;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</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="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>  m_nodeList.push_back(node);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  node->SetConnected();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">return</span> <span class="keyword">true</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"><a class="line" href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7"> 146</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="l00147"></a><span class="lineno"> 147</span> {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_lineOffset = m_moveStartOffset + position.m_y - m_moveStartPtY;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  UpdatePoints();</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"><a class="line" href="class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36"> 152</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="l00153"></a><span class="lineno"> 153</span> {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  m_moveStartPtY = position.m_y;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  m_moveStartOffset = m_lineOffset;</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> 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="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> ConnectionLine::SetParentLine(<a class="code" href="class_connection_line.html">ConnectionLine</a>* parent)</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="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="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span>(!parent) <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_type = ELEMENT_LINE;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  m_parentLine = parent;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">return</span> <span class="keyword">true</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> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> std::vector<ConnectionLine*> ConnectionLine::GetLineChildList()<span class="keyword"> const</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keyword"></span>{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  std::vector<ConnectionLine*> childList;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</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="l00174"></a><span class="lineno"> 174</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="l00175"></a><span class="lineno"> 175</span>  childList.push_back(child);</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> childList;</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_connection_line.html#a3f5584348b86e665161b033d4ce8d702"> 180</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="l00181"></a><span class="lineno"> 181</span> {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</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="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">if</span>(element == parent) m_parentList.erase(it--);</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> </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="class_connection_line.html#a131a890bd54059c5370f1dc5156c192c"> 188</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="l00189"></a><span class="lineno"> 189</span> {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</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="l00191"></a><span class="lineno"> 191</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</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#l00088">Element.h:88</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#l00146">ConnectionLine.cpp:146</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</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#l00188">ConnectionLine.cpp:188</a></div></div> -<div class="ttc" id="class_connection_line_html_a71cb3502dd098e1d1ef541668789586e"><div class="ttname"><a href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e">ConnectionLine::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="_connection_line_8cpp_source.html#l00021">ConnectionLine.cpp:21</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#l00041">ConnectionLine.cpp:41</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="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00006">ConnectionLine.h:6</a></div></div> -<div class="ttc" id="class_connection_line_html_a3f5584348b86e665161b033d4ce8d702"><div class="ttname"><a href="class_connection_line.html#a3f5584348b86e665161b033d4ce8d702">ConnectionLine::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="_connection_line_8cpp_source.html#l00180">ConnectionLine.cpp:180</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#l00053">ControlElement.h:53</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#l00152">ConnectionLine.cpp:152</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#l00049">ConnectionLine.cpp:49</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="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> +<div class="ttc" id="class_connection_line_html_a71cb3502dd098e1d1ef541668789586e"><div class="ttname"><a href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e">ConnectionLine::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="_connection_line_8cpp_source.html#l00033">ConnectionLine.cpp:33</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="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="class_connection_line_html_a3f5584348b86e665161b033d4ce8d702"><div class="ttname"><a href="class_connection_line.html#a3f5584348b86e665161b033d4ce8d702">ConnectionLine::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="_connection_line_8cpp_source.html#l00191">ConnectionLine.cpp:191</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_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_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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_connection_line_8h.html b/docs/doxygen/html/_connection_line_8h.html new file mode 100644 index 0000000..a8e17fc --- /dev/null +++ b/docs/doxygen/html/_connection_line_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/ConnectionLine.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('_connection_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">ConnectionLine.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="_connection_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">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_connection_line.html">ConnectionLine</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Connection between two control elements or other connection line and an element. <a href="class_connection_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="_connection_line_8h.html">ConnectionLine.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/_connection_line_8h_source.html b/docs/doxygen/html/_connection_line_8h_source.html index a9d1037..5705bd2 100644 --- a/docs/doxygen/html/_connection_line_8h_source.html +++ b/docs/doxygen/html/_connection_line_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,23 +88,24 @@ $(document).ready(function(){initNavTree('_connection_line_8h_source.html','');} <div class="title">ConnectionLine.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="preprocessor">#ifndef CONNECTIONLINE_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define CONNECTIONLINE_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ControlElement.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"><a class="line" href="class_connection_line.html"> 6</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="l00007"></a><span class="lineno"> 7</span> {</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keyword">enum</span> ConnectionLineType { ELEMENT_ELEMENT = 0, ELEMENT_LINE };</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>();</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span>  ~<a class="code" href="class_connection_line.html">ConnectionLine</a>();</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">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="l00015"></a><span class="lineno"> 15</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="l00016"></a><span class="lineno"> 16</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="l00017"></a><span class="lineno"> 17</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="l00018"></a><span class="lineno"> 18</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="l00019"></a><span class="lineno"> 19</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="l00020"></a><span class="lineno"> 20</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="l00021"></a><span class="lineno"> 21</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetTemporarySecondPoint(wxPoint2DDouble point) { m_tmpSndPt = point; }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keyword">virtual</span> wxPoint2DDouble GetMidPoint() <span class="keyword">const</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</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="l00025"></a><span class="lineno"> 25</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="l00026"></a><span class="lineno"> 26</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="l00027"></a><span class="lineno"> 27</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetType(ConnectionLineType newType) { m_type = newType; }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</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="l00029"></a><span class="lineno"> 29</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="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">virtual</span> std::vector<ConnectionLine*> GetLineChildList() <span class="keyword">const</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>  <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="l00034"></a><span class="lineno"> 34</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="l00035"></a><span class="lineno"> 35</span>  </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</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="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="keywordtype">double</span> m_lineOffset = 0.0;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">double</span> m_moveStartPtY = 0.0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">double</span> m_moveStartOffset = 0.0;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  wxPoint2DDouble m_tmpSndPt;</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>  ConnectionLineType m_type = ELEMENT_ELEMENT;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* m_parentLine = 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="keywordtype">double</span> m_value;</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="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#l00088">Element.h:88</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#l00146">ConnectionLine.cpp:146</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</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#l00188">ConnectionLine.cpp:188</a></div></div> -<div class="ttc" id="class_connection_line_html_a71cb3502dd098e1d1ef541668789586e"><div class="ttname"><a href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e">ConnectionLine::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="_connection_line_8cpp_source.html#l00021">ConnectionLine.cpp:21</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#l00041">ConnectionLine.cpp:41</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="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00006">ConnectionLine.h:6</a></div></div> -<div class="ttc" id="class_connection_line_html_a3f5584348b86e665161b033d4ce8d702"><div class="ttname"><a href="class_connection_line.html#a3f5584348b86e665161b033d4ce8d702">ConnectionLine::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="_connection_line_8cpp_source.html#l00180">ConnectionLine.cpp:180</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#l00053">ControlElement.h:53</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#l00152">ConnectionLine.cpp:152</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#l00049">ConnectionLine.cpp:49</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="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> +<div class="ttc" id="class_connection_line_html_a71cb3502dd098e1d1ef541668789586e"><div class="ttname"><a href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e">ConnectionLine::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="_connection_line_8cpp_source.html#l00033">ConnectionLine.cpp:33</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_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_connection_line_html_a3f5584348b86e665161b033d4ce8d702"><div class="ttname"><a href="class_connection_line.html#a3f5584348b86e665161b033d4ce8d702">ConnectionLine::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="_connection_line_8cpp_source.html#l00191">ConnectionLine.cpp:191</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_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_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><!-- 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>ConnectionLine.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_connection_line_8h.html">ConnectionLine.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/_constant_8cpp_source.html b/docs/doxygen/html/_constant_8cpp_source.html index 1d1eeb3..0a18ef1 100644 --- a/docs/doxygen/html/_constant_8cpp_source.html +++ b/docs/doxygen/html/_constant_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,19 +88,21 @@ $(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="preprocessor">#include "Constant.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "ConstantForm.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</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="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  SetValue(m_value);</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  m_angle = 180.0;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> }</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> Constant::~Constant() {}</div><div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="class_constant.html#afc4d8739980ae1b57e9c5058c2e05591"> 15</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="l00016"></a><span class="lineno"> 16</span> <span class="keyword"></span>{</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  glLineWidth(1.0);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  glColor4dv(m_selectionColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</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="l00022"></a><span class="lineno"> 22</span>  }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(m_position, m_width, m_height);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</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="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="comment">// Plot number.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_glStringValue->bind();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_glStringValue->render(m_position.m_x, m_position.m_y);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  glDisable(GL_TEXTURE_2D);</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>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  DrawNodes();</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_constant.html#af6bded0e01717303bb71da9e45c2b061"> 39</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="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</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="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span>(form->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  form->Destroy();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">return</span> <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>  form->Destroy();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> <span class="keyword">false</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"><a class="line" href="class_constant.html#a867addfc3c1a755b7aa0032d119245c6"> 50</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="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_angle += 90.0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_angle -= 90.0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_angle = 0.0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_angle = 270.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>  UpdatePoints();</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">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  node->Rotate(clockwise);</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"> 69</span> <span class="keywordtype">void</span> Constant::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_nodeList.size() != 0) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</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_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 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>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</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="keywordtype">void</span> Constant::SetValue(<span class="keywordtype">double</span> value)</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_value = value;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  wxString text = <a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(m_value);</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>  wxFont font(m_fontSize, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  wxScreenDC dc;</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="keywordflow">if</span>(m_glStringValue) {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">delete</span> m_glStringValue;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_glStringValue = NULL;</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_glStringValue = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string.html">wxGLString</a>(text);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_glStringValue->setFont(font);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_glStringValue->consolidate(&dc);</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>  m_width = m_glStringValue->getWidth() + 6 + 2 * m_borderSize;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_height = m_glStringValue->getheight() + 6 + 2 * m_borderSize;</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>  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> </div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="class_constant.html#ac566e3a63326d3f543a55af14ae0f8fa"> 106</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="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_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="l00109"></a><span class="lineno"> 109</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_glStringValue = NULL;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  SetValue(m_value);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</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#l00088">Element.h:88</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</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#l00106">Constant.cpp:106</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#l00053">Element.cpp:53</a></div></div> -<div class="ttc" id="class_constant_form_html"><div class="ttname"><a href="class_constant_form.html">ConstantForm</a></div><div class="ttdef"><b>Definition:</b> <a href="_constant_form_8h_source.html#l00007">ConstantForm.h:7</a></div></div> -<div class="ttc" id="class_constant_html_af6bded0e01717303bb71da9e45c2b061"><div class="ttname"><a href="class_constant.html#af6bded0e01717303bb71da9e45c2b061">Constant::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="_constant_8cpp_source.html#l00039">Constant.cpp:39</a></div></div> -<div class="ttc" id="class_constant_html_a867addfc3c1a755b7aa0032d119245c6"><div class="ttname"><a href="class_constant.html#a867addfc3c1a755b7aa0032d119245c6">Constant::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="_constant_8cpp_source.html#l00050">Constant.cpp:50</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#l00300">Element.cpp:300</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#l00053">ControlElement.h:53</a></div></div> -<div class="ttc" id="class_constant_html"><div class="ttname"><a href="class_constant.html">Constant</a></div><div class="ttdef"><b>Definition:</b> <a href="_constant_8h_source.html#l00011">Constant.h:11</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="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> +<div class="ttc" id="_constant_form_8h_html"><div class="ttname"><a href="_constant_form_8h.html">ConstantForm.h</a></div></div> +<div class="ttc" id="class_constant_form_html"><div class="ttname"><a href="class_constant_form.html">ConstantForm</a></div><div class="ttdoc">Form to edit the constant control data. </div><div class="ttdef"><b>Definition:</b> <a href="_constant_form_8h_source.html#l00031">ConstantForm.h:31</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_constant_html_af6bded0e01717303bb71da9e45c2b061"><div class="ttname"><a href="class_constant.html#af6bded0e01717303bb71da9e45c2b061">Constant::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="_constant_8cpp_source.html#l00056">Constant.cpp:56</a></div></div> +<div class="ttc" id="class_constant_html_a867addfc3c1a755b7aa0032d119245c6"><div class="ttname"><a href="class_constant.html#a867addfc3c1a755b7aa0032d119245c6">Constant::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="_constant_8cpp_source.html#l00067">Constant.cpp:67</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_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="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_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#l00083">Element.h:83</a></div></div> -<div class="ttc" id="class_constant_html_afc4d8739980ae1b57e9c5058c2e05591"><div class="ttname"><a href="class_constant.html#afc4d8739980ae1b57e9c5058c2e05591">Constant::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="_constant_8cpp_source.html#l00015">Constant.cpp:15</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_constant_html_afc4d8739980ae1b57e9c5058c2e05591"><div class="ttname"><a href="class_constant.html#afc4d8739980ae1b57e9c5058c2e05591">Constant::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="_constant_8cpp_source.html#l00032">Constant.cpp:32</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_constant_8h.html b/docs/doxygen/html/_constant_8h.html new file mode 100644 index 0000000..30c1dbf --- /dev/null +++ b/docs/doxygen/html/_constant_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/Constant.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('_constant_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">Constant.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="_constant_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_constant.html">Constant</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">A control element that provides a constant value. <a href="class_constant.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="_constant_8h.html">Constant.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/_constant_8h_source.html b/docs/doxygen/html/_constant_8h_source.html index 9b8c707..d698df6 100644 --- a/docs/doxygen/html/_constant_8h_source.html +++ b/docs/doxygen/html/_constant_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,23 +88,24 @@ $(document).ready(function(){initNavTree('_constant_8h_source.html','');}); <div class="title">Constant.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="preprocessor">#ifndef CONSTANT_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define CONSTANT_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ControlElement.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <wx/dcscreen.h></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "wxGLString.h"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="keyword">class </span><a class="code" href="class_constant_form.html">ConstantForm</a>;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="class_constant.html"> 11</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="l00012"></a><span class="lineno"> 12</span> {</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</span>  ~<a class="code" href="class_constant.html">Constant</a>();</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</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="l00018"></a><span class="lineno"><a class="line" href="class_constant.html#ae091eb79633beb158dc06880424f7ce6"> 18</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="l00019"></a><span class="lineno"><a class="line" href="class_constant.html#ac2e2c958b3d38ed381d59cbb361974b2"> 19</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="l00020"></a><span class="lineno"> 20</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="l00021"></a><span class="lineno"> 21</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="l00022"></a><span class="lineno"> 22</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText() { SetValue(m_value); }</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">virtual</span> <span class="keywordtype">void</span> SetValue(<span class="keywordtype">double</span> value);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</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="l00026"></a><span class="lineno"> 26</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</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">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="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">double</span> m_value = 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>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glStringValue = NULL;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">int</span> m_fontSize = 10;</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 // 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#l00088">Element.h:88</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#l00018">Constant.h:18</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#l00019">Constant.h:19</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#l00106">Constant.cpp:106</a></div></div> -<div class="ttc" id="class_constant_form_html"><div class="ttname"><a href="class_constant_form.html">ConstantForm</a></div><div class="ttdef"><b>Definition:</b> <a href="_constant_form_8h_source.html#l00007">ConstantForm.h:7</a></div></div> -<div class="ttc" id="class_constant_html_af6bded0e01717303bb71da9e45c2b061"><div class="ttname"><a href="class_constant.html#af6bded0e01717303bb71da9e45c2b061">Constant::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="_constant_8cpp_source.html#l00039">Constant.cpp:39</a></div></div> -<div class="ttc" id="class_constant_html_a867addfc3c1a755b7aa0032d119245c6"><div class="ttname"><a href="class_constant.html#a867addfc3c1a755b7aa0032d119245c6">Constant::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="_constant_8cpp_source.html#l00050">Constant.cpp:50</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#l00053">ControlElement.h:53</a></div></div> -<div class="ttc" id="class_constant_html"><div class="ttname"><a href="class_constant.html">Constant</a></div><div class="ttdef"><b>Definition:</b> <a href="_constant_8h_source.html#l00011">Constant.h:11</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="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> +<div class="ttc" id="class_constant_form_html"><div class="ttname"><a href="class_constant_form.html">ConstantForm</a></div><div class="ttdoc">Form to edit the constant control data. </div><div class="ttdef"><b>Definition:</b> <a href="_constant_form_8h_source.html#l00031">ConstantForm.h:31</a></div></div> +<div class="ttc" id="class_constant_html_af6bded0e01717303bb71da9e45c2b061"><div class="ttname"><a href="class_constant.html#af6bded0e01717303bb71da9e45c2b061">Constant::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="_constant_8cpp_source.html#l00056">Constant.cpp:56</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_constant_html_a867addfc3c1a755b7aa0032d119245c6"><div class="ttname"><a href="class_constant.html#a867addfc3c1a755b7aa0032d119245c6">Constant::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="_constant_8cpp_source.html#l00067">Constant.cpp:67</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="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_constant_html_afc4d8739980ae1b57e9c5058c2e05591"><div class="ttname"><a href="class_constant.html#afc4d8739980ae1b57e9c5058c2e05591">Constant::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="_constant_8cpp_source.html#l00015">Constant.cpp:15</a></div></div> +<div class="ttc" id="class_constant_html_afc4d8739980ae1b57e9c5058c2e05591"><div class="ttname"><a href="class_constant.html#afc4d8739980ae1b57e9c5058c2e05591">Constant::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="_constant_8cpp_source.html#l00032">Constant.cpp:32</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>Constant.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_constant_8h.html">Constant.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/_constant_form_8cpp_source.html b/docs/doxygen/html/_constant_form_8cpp_source.html index 0b1dae9..f90c121 100644 --- a/docs/doxygen/html/_constant_form_8cpp_source.html +++ b/docs/doxygen/html/_constant_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,8 +88,10 @@ $(document).ready(function(){initNavTree('_constant_form_8cpp_source.html','');} <div class="title">ConstantForm.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 "ConstantForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "Constant.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> ConstantForm::ConstantForm(wxWindow* parent, <a class="code" href="class_constant.html">Constant</a>* constant) : <a class="code" href="class_constant_form_base.html">ConstantFormBase</a>(parent)</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  SetSize(GetBestSize());</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>  m_parent = parent;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  m_constant = constant;</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>  m_textCtrlValue->SetValue(m_constant->StringFromDouble(m_constant->GetValue()));</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> }</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> ConstantForm::~ConstantForm() {}</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="keywordtype">void</span> ConstantForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> {</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</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> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="keywordtype">bool</span> ConstantForm::ValidateData()</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="keywordtype">double</span> value;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">if</span>(!m_constant->DoubleFromString(<span class="keyword">this</span>, m_textCtrlValue->GetValue(), value,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Constant value\"."</span>)))</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">return</span> <span class="keyword">false</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_constant->SetValue(value);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> }</div><div class="ttc" id="class_constant_form_base_html"><div class="ttname"><a href="class_constant_form_base.html">ConstantFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00923">ElementForm.h:923</a></div></div> -<div class="ttc" id="class_constant_html"><div class="ttname"><a href="class_constant.html">Constant</a></div><div class="ttdef"><b>Definition:</b> <a href="_constant_8h_source.html#l00011">Constant.h:11</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_form_8h.html">ConstantForm.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_8h.html">Constant.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> ConstantForm::ConstantForm(wxWindow* parent, <a class="code" href="class_constant.html">Constant</a>* constant) : <a class="code" href="class_constant_form_base.html">ConstantFormBase</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_constant = constant;</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_constant->StringFromDouble(m_constant->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> ConstantForm::~ConstantForm() {}</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keywordtype">void</span> ConstantForm::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> ConstantForm::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_constant->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 \"Constant 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_constant->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="_constant_form_8h_html"><div class="ttname"><a href="_constant_form_8h.html">ConstantForm.h</a></div></div> +<div class="ttc" id="class_constant_form_base_html"><div class="ttname"><a href="class_constant_form_base.html">ConstantFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00923">ElementForm.h:923</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_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 --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_constant_form_8h.html b/docs/doxygen/html/_constant_form_8h.html new file mode 100644 index 0000000..dfc7ed2 --- /dev/null +++ b/docs/doxygen/html/_constant_form_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/ConstantForm.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('_constant_form_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">ConstantForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +</div> +<p><a href="_constant_form_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_constant_form.html">ConstantForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the constant control data. <a href="class_constant_form.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="_constant_form_8h.html">ConstantForm.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/_constant_form_8h_source.html b/docs/doxygen/html/_constant_form_8h_source.html index 55610ba..60eae01 100644 --- a/docs/doxygen/html/_constant_form_8h_source.html +++ b/docs/doxygen/html/_constant_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,15 @@ $(document).ready(function(){initNavTree('_constant_form_8h_source.html','');}); <div class="title">ConstantForm.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="preprocessor">#ifndef CONSTANTFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define CONSTANTFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="keyword">class </span><a class="code" href="class_constant.html">Constant</a>;</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="class_constant_form.html"> 7</a></span> <span class="keyword">class </span><a class="code" href="class_constant_form.html">ConstantForm</a> : <span class="keyword">public</span> <a class="code" href="class_constant_form_base.html">ConstantFormBase</a></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <a class="code" href="class_constant_form.html">ConstantForm</a>(wxWindow* parent, <a class="code" href="class_constant.html">Constant</a>* constant);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_constant_form.html">ConstantForm</a>();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</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">protected</span>:</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</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>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <a class="code" href="class_constant.html">Constant</a>* m_constant = NULL;</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">#endif // CONSTANTFORM_H</span></div><div class="ttc" id="class_constant_form_base_html"><div class="ttname"><a href="class_constant_form_base.html">ConstantFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00923">ElementForm.h:923</a></div></div> -<div class="ttc" id="class_constant_form_html"><div class="ttname"><a href="class_constant_form.html">ConstantForm</a></div><div class="ttdef"><b>Definition:</b> <a href="_constant_form_8h_source.html#l00007">ConstantForm.h:7</a></div></div> -<div class="ttc" id="class_constant_html"><div class="ttname"><a href="class_constant.html">Constant</a></div><div class="ttdef"><b>Definition:</b> <a href="_constant_8h_source.html#l00011">Constant.h:11</a></div></div> +<a href="_constant_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 CONSTANTFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CONSTANTFORM_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_constant.html">Constant</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_constant_form.html"> 31</a></span> <span class="keyword">class </span><a class="code" href="class_constant_form.html">ConstantForm</a> : <span class="keyword">public</span> <a class="code" href="class_constant_form_base.html">ConstantFormBase</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_constant_form.html">ConstantForm</a>(wxWindow* parent, <a class="code" href="class_constant.html">Constant</a>* constant);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_constant_form.html">ConstantForm</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_constant.html">Constant</a>* m_constant = 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 // CONSTANTFORM_H</span></div><div class="ttc" id="class_constant_form_base_html"><div class="ttname"><a href="class_constant_form_base.html">ConstantFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00923">ElementForm.h:923</a></div></div> +<div class="ttc" id="class_constant_form_html"><div class="ttname"><a href="class_constant_form.html">ConstantForm</a></div><div class="ttdoc">Form to edit the constant control data. </div><div class="ttdef"><b>Definition:</b> <a href="_constant_form_8h_source.html#l00031">ConstantForm.h:31</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 --> </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>ConstantForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_constant_form_8h.html">ConstantForm.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/_control_editor_8cpp_source.html b/docs/doxygen/html/_control_editor_8cpp_source.html index 0cf4967..db69d94 100644 --- a/docs/doxygen/html/_control_editor_8cpp_source.html +++ b/docs/doxygen/html/_control_editor_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,46 +88,60 @@ $(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="preprocessor">#include "ControlEditor.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include "FileHanding.h"</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "Camera.h"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "ControlElement.h"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "TransferFunction.h"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include "ConnectionLine.h"</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "Sum.h"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "Multiplier.h"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "Limiter.h"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "RateLimiter.h"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "Exponential.h"</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "Constant.h"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "Gain.h"</span></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> <span class="preprocessor">#include "ControlElementSolver.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "ControlElementContainer.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 "ChartView.h"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "ElementPlotData.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> ControlElementButton::ControlElementButton(wxWindow* parent, wxString label, wxImage image, wxWindowID <span class="keywordtype">id</span>)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  : wxWindow(parent, id)</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>  SetBackgroundColour(*wxWHITE);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="comment">// m_font = wxFont(8, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_label = label;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_image = image;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_imageSize = wxSize(image.GetWidth(), image.GetHeight());</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">// Calculate label size.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  wxScreenDC dc;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  dc.SetFont(m_font);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  wxSize textSize = dc.GetTextExtent(label);</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="keywordtype">int</span> buttonWidth = 0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span>(textSize.GetWidth() > m_imageSize.GetWidth()) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  buttonWidth = textSize.GetWidth();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_imagePosition = wxPoint((buttonWidth - m_imageSize.GetWidth()) / 2 + m_borderSize, m_borderSize);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_labelPosition = wxPoint(m_borderSize, m_imageSize.GetHeight() + m_borderSize);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  buttonWidth = m_imageSize.GetWidth();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_imagePosition = wxPoint(m_borderSize, m_borderSize);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_labelPosition =</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  wxPoint((buttonWidth - textSize.GetWidth()) / 2 + m_borderSize, m_imageSize.GetHeight() + m_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>  m_buttonSize =</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  wxSize(buttonWidth + 2 * m_borderSize, textSize.GetHeight() + m_imageSize.GetHeight() + 2 * m_borderSize);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  SetMinSize(m_buttonSize + wxSize(m_borderSize, m_borderSize));</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">// Events.</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  Bind(wxEVT_PAINT, &ControlElementButton::OnPaint, <span class="keyword">this</span>);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  Bind(wxEVT_ENTER_WINDOW, &ControlElementButton::OnMouseEnter, <span class="keyword">this</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  Bind(wxEVT_LEAVE_WINDOW, &ControlElementButton::OnMouseLeave, <span class="keyword">this</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  Bind(wxEVT_LEFT_DOWN, &ControlElementButton::OnLeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  Bind(wxEVT_LEFT_UP, &ControlElementButton::OnLeftClickUp, <span class="keyword">this</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> ControlElementButton::~ControlElementButton() {}</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keywordtype">void</span> ControlElementButton::OnPaint(wxPaintEvent& event)</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>  wxPaintDC dc(<span class="keyword">this</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  wxGraphicsContext* gc = wxGraphicsContext::Create(dc);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">if</span>(gc) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span>(m_mouseAbove) {</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>  gc->SetPen(wxPen(wxColour(0, 125, 255, 255), m_borderSize - 1));</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  gc->SetBrush(wxBrush(wxColour(0, 125, 255, 100)));</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  gc->SetPen(*wxTRANSPARENT_PEN);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  gc->SetBrush(wxBrush(wxColour(0, 125, 255, 70)));</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>  gc->DrawRectangle(m_borderSize / 2, m_borderSize / 2, m_buttonSize.GetWidth(), m_buttonSize.GetHeight());</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>  gc->DrawBitmap(gc->CreateBitmapFromImage(m_image), m_imagePosition.x, m_imagePosition.y, m_imageSize.GetWidth(),</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_imageSize.GetHeight());</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  gc->SetFont(m_font, *wxBLACK);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  gc->DrawText(m_label, m_labelPosition.x, m_labelPosition.y);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">delete</span> gc;</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> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="keywordtype">void</span> ControlElementButton::OnMouseEnter(wxMouseEvent& event)</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_mouseAbove = <span class="keyword">true</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  Refresh();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">event</span>.Skip();</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">void</span> ControlElementButton::OnMouseLeave(wxMouseEvent& event)</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_mouseAbove = <span class="keyword">false</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  Refresh();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">event</span>.Skip();</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> ControlElementButton::OnLeftClickDown(wxMouseEvent& event)</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_selected = <span class="keyword">true</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  Refresh();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">event</span>.Skip();</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> ControlElementButton::OnLeftClickUp(wxMouseEvent& event)</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_selected = <span class="keyword">false</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  Refresh();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">event</span>.Skip();</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> 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="l00116"></a><span class="lineno"> 116</span> {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  BuildControlElementPanel();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_glContext = <span class="keyword">new</span> wxGLContext(m_glCanvas);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_camera = <span class="keyword">new</span> <a class="code" href="class_camera.html">Camera</a>();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_selectionRect = wxRect2DDouble(0, 0, 0, 0);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// m_camera->SetScale(1.2);</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_ioFlags = ioflags;</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> ControlEditor::~ControlEditor()</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">// m_tfButton->Disconnect(wxEVT_LEFT_DOWN, wxMouseEventHandler(ControlEditor::LeftClickDown), m_tfButton, this);</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> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="keywordtype">void</span> ControlEditor::BuildControlElementPanel()</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>  m_panelControlElements->SetDoubleBuffered(<span class="keyword">true</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  wxWrapSizer* wrapSizer = <span class="keyword">new</span> wxWrapSizer();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  m_panelControlElements->SetSizer(wrapSizer);</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_control_element_button.html">ControlElementButton</a>* ioButton = <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(m_panelControlElements, _(<span class="stringliteral">"In/Out"</span>),</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  wxImage(<span class="stringliteral">"..\\data\\images\\control\\io.png"</span>), ID_IO);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  wrapSizer->Add(ioButton, 0, wxALL, 5);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  ioButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</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>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* tfButton = <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_panelControlElements, _(<span class="stringliteral">"Transfer fcn"</span>), wxImage(<span class="stringliteral">"..\\data\\images\\control\\transferFunc.png"</span>), ID_TF);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  wrapSizer->Add(tfButton, 0, wxALL, 5);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  tfButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">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>  <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>(m_panelControlElements, _(<span class="stringliteral">"Sum"</span>),</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  wxImage(<span class="stringliteral">"..\\data\\images\\control\\sum.png"</span>), ID_SUM);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  wrapSizer->Add(sumButton, 0, wxALL, 5);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  sumButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</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>  <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="l00151"></a><span class="lineno"> 151</span>  m_panelControlElements, _(<span class="stringliteral">"Constant"</span>), wxImage(<span class="stringliteral">"..\\data\\images\\control\\value.png"</span>), ID_CONST);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  wrapSizer->Add(constButton, 0, wxALL, 5);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  constButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</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>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* limButton = <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">"Limiter"</span>), wxImage(<span class="stringliteral">"..\\data\\images\\control\\limiter.png"</span>), ID_LIMITER);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  wrapSizer->Add(limButton, 0, wxALL, 5);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  limButton->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>* gainButton = <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_panelControlElements, _(<span class="stringliteral">"Gain"</span>), wxImage(<span class="stringliteral">"..\\data\\images\\control\\gain.png"</span>), ID_GAIN);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  wrapSizer->Add(gainButton, 0, wxALL, 5);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  gainButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</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>  <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="l00166"></a><span class="lineno"> 166</span>  m_panelControlElements, _(<span class="stringliteral">"Multiplier"</span>), wxImage(<span class="stringliteral">"..\\data\\images\\control\\mult.png"</span>), ID_MULT);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  wrapSizer->Add(multButton, 0, wxALL, 5);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  multButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</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>  <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>(m_panelControlElements, _(<span class="stringliteral">"Exponential"</span>),</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  wxImage(<span class="stringliteral">"..\\data\\images\\control\\sat.png"</span>), ID_EXP);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  wrapSizer->Add(satButton, 0, wxALL, 5);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  satButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</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>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* rateLimButton = <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_panelControlElements, _(<span class="stringliteral">"Rate limiter"</span>), wxImage(<span class="stringliteral">"..\\data\\images\\control\\rateLimiter.png"</span>), ID_RATELIM);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  wrapSizer->Add(rateLimButton, 0, wxALL, 5);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  rateLimButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</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="keywordtype">void</span> ControlEditor::LeftClickDown(wxMouseEvent& event)</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>  AddElement(static_cast<ControlElementButtonID>(event.GetId()));</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keyword">event</span>.Skip();</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="keywordtype">void</span> ControlEditor::SetViewport()</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>  glClearColor(1.0, 1.0, 1.0, 1.0); <span class="comment">// White background.</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  glClear(GL_COLOR_BUFFER_BIT);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  glDisable(GL_DEPTH_TEST);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  glEnable(GL_COLOR_MATERIAL);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  glEnable(GL_BLEND);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  glEnable(GL_LINE_SMOOTH);</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> width = m_glCanvas->GetSize().x - 1;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordtype">double</span> height = m_glCanvas->GetSize().y - 1;</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="comment">// Viewport fit the screen.</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  glViewport(0, 0, width, height);</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>  glMatrixMode(GL_PROJECTION);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  glLoadIdentity();</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  gluOrtho2D(0.0, width, height, 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>  glMatrixMode(GL_MODELVIEW);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  glLoadIdentity();</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> ControlEditor::AddElement(ControlElementButtonID <span class="keywordtype">id</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">switch</span>(<span class="keywordtype">id</span>) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">case</span> ID_IO: {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</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="l00218"></a><span class="lineno"> 218</span>  m_elementList.push_back(io);</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> ID_TF: {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</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="l00223"></a><span class="lineno"> 223</span>  m_elementList.push_back(tf);</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">case</span> ID_SUM: {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</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="l00228"></a><span class="lineno"> 228</span>  m_elementList.push_back(sum);</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> ID_CONST: {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</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="l00233"></a><span class="lineno"> 233</span>  m_elementList.push_back(constant);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">case</span> ID_LIMITER: {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</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="l00238"></a><span class="lineno"> 238</span>  m_elementList.push_back(limiter);</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> ID_GAIN: {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</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="l00243"></a><span class="lineno"> 243</span>  m_elementList.push_back(gain);</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> ID_MULT: {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</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="l00248"></a><span class="lineno"> 248</span>  m_elementList.push_back(mult);</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> ID_EXP: {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</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="l00253"></a><span class="lineno"> 253</span>  m_elementList.push_back(exp);</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>  <span class="keywordflow">case</span> ID_RATELIM: {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</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="l00258"></a><span class="lineno"> 258</span>  m_elementList.push_back(rateLim);</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>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  m_lastElementID++;</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> <span class="keywordtype">void</span> ControlEditor::OnPaint(wxPaintEvent& event)</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>  wxPaintDC dc(m_glCanvas);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  m_glContext->SetCurrent(*m_glCanvas);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  SetViewport();</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="comment">// Set GLCanvas scale and translation.</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  glScaled(m_camera->GetScale(), m_camera->GetScale(), 0.0); <span class="comment">// Scale</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</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="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</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="l00275"></a><span class="lineno"> 275</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *it;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</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="l00277"></a><span class="lineno"> 277</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>  <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="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  element-><a class="code" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Draw</a>(m_camera->GetTranslation(), m_camera->GetScale());</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">// Selection rectangle</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  glLineWidth(1.0);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  glColor4d(0.0, 0.5, 1.0, 1.0);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  glBegin(GL_LINE_LOOP);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  glEnd();</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  glColor4d(0.0, 0.5, 1.0, 0.3);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  glBegin(GL_QUADS);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  glEnd();</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>  glFlush(); <span class="comment">// Sends all pending information directly to the GPU.</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  m_glCanvas->SwapBuffers();</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">event</span>.Skip();</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"> 306</span> <span class="keywordtype">void</span> ControlEditor::OnDoubleClick(wxMouseEvent& event)</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>  wxPoint2DDouble clickPoint = <span class="keyword">event</span>.GetPosition();</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordtype">bool</span> redraw = <span class="keyword">false</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">if</span>(m_mode == MODE_EDIT) {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</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="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</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="l00315"></a><span class="lineno"> 315</span>  element-><a class="code" href="class_element.html#ae1652eded3ccbd241a783691117418b2">ShowForm</a>(<span class="keyword">this</span>, element);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  CheckConnections();</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keyword">auto</span> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</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="l00319"></a><span class="lineno"> 319</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="l00320"></a><span class="lineno"> 320</span>  line->UpdatePoints();</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>  redraw = <span class="keyword">true</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>  }</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">if</span>(redraw) Redraw();</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> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="keywordtype">void</span> ControlEditor::OnLeftClickDown(wxMouseEvent& event)</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>  wxPoint2DDouble clickPoint = <span class="keyword">event</span>.GetPosition();</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordtype">bool</span> foundElement = <span class="keyword">false</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="keywordflow">if</span>(m_mode == MODE_INSERT) {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</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="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordtype">bool</span> foundNode = <span class="keyword">false</span>;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keyword">auto</span> nodeList = element->GetNodeList();</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</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="l00343"></a><span class="lineno"> 343</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">if</span>(node->Contains(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  m_mode = MODE_INSERT_LINE;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</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="l00347"></a><span class="lineno"> 347</span>  m_lastElementID++;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  m_connectionList.push_back(line);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  element-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(line);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  line-><a class="code" href="class_element.html#a569178e9138490a981511a644536c0f9">AddParent</a>(element);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  foundNode = <span class="keyword">true</span>;</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>  }</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">if</span>(!foundNode) {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="comment">// Set movement initial position (not necessarily will be moved).</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  element-><a class="code" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">StartMove</a>(m_camera->ScreenToWorld(clickPoint));</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>  <span class="comment">// Click in an element.</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</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="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  foundElement = <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>  m_mode = MODE_MOVE_ELEMENT;</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>  }</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">if</span>(m_mode != MODE_INSERT_LINE) {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</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="l00372"></a><span class="lineno"> 372</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *it;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  line-><a class="code" href="class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36">StartMove</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</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="l00375"></a><span class="lineno"> 375</span>  line-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  m_mode = MODE_MOVE_LINE;</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>  }</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="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  m_mode = MODE_SELECTION_RECT;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  m_startSelRect = m_camera->ScreenToWorld(clickPoint);</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> </div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  Redraw();</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keyword">event</span>.Skip();</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> <span class="keywordtype">void</span> ControlEditor::OnLeftClickUp(wxMouseEvent& event)</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>  <span class="keywordtype">bool</span> foundNode = <span class="keyword">false</span>;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</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="l00396"></a><span class="lineno"> 396</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT_LINE) {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keyword">auto</span> nodeList = element->GetNodeList();</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</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="l00400"></a><span class="lineno"> 400</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">if</span>(node->Contains(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *(m_connectionList.end() - 1);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">if</span>(line->AppendNode(node, element)) {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  line-><a class="code" href="class_element.html#a569178e9138490a981511a644536c0f9">AddParent</a>(element);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  element-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(line);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  line->UpdatePoints();</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  foundNode = <span class="keyword">true</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>  }</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_SELECTION_RECT) {</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#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(m_selectionRect)) {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<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">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</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="l00420"></a><span class="lineno"> 420</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<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>  }</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">for</span>(<span class="keyword">auto</span> it = m_connectionList.begin(), itEnd = m_connectionList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT_LINE && !foundNode && it != (itEnd - 1)) {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</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="l00428"></a><span class="lineno"> 428</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* iLine = *(m_connectionList.end() - 1);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">if</span>(iLine->SetParentLine(cLine)) {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  cLine-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(iLine);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  iLine->UpdatePoints();</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  foundNode = <span class="keyword">true</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">else</span> <span class="keywordflow">if</span>(m_mode == MODE_SELECTION_RECT) {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</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="l00438"></a><span class="lineno"> 438</span>  cLine-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  cLine-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</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="l00444"></a><span class="lineno"> 444</span>  cLine-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</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>  }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  m_selectionRect = wxRect2DDouble(0, 0, 0, 0);</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>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT_LINE && !foundNode) {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *(m_connectionList.end() - 1);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="comment">// Free nodes</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keyword">auto</span> nodeList = cLine->GetNodeList();</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</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="l00456"></a><span class="lineno"> 456</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  node->SetConnected(<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>  <span class="comment">// Remove the associated child from parents.</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keyword">auto</span> parentList = cLine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</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="l00462"></a><span class="lineno"> 462</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  element-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(cLine);</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>  m_connectionList.pop_back();</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">if</span>(cLine) <span class="keyword">delete</span> cLine;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_mode != MODE_INSERT) {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  m_mode = MODE_EDIT;</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>  Redraw();</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keyword">event</span>.Skip();</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> ControlEditor::OnMiddleDown(wxMouseEvent& 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="comment">// Set to drag mode.</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">case</span> MODE_INSERT: {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  m_mode = MODE_DRAG_INSERT;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">case</span> MODE_PASTE: {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  m_mode = MODE_DRAG_PASTE;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  m_mode = MODE_DRAG;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  m_camera->StartTranslation(m_camera->ScreenToWorld(event.GetPosition()));</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> </div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="keywordtype">void</span> ControlEditor::OnMiddleUp(wxMouseEvent& event)</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>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT: {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  m_mode = MODE_INSERT;</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">case</span> MODE_DRAG_PASTE: {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  m_mode = MODE_PASTE;</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>  <span class="keywordflow">case</span> MODE_INSERT:</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">case</span> MODE_PASTE: {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="comment">// Does nothing.</span></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">default</span>: {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  m_mode = MODE_EDIT;</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>  }</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> <span class="keywordtype">void</span> ControlEditor::OnMouseMotion(wxMouseEvent& event)</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>  wxPoint2DDouble clickPoint = <span class="keyword">event</span>.GetPosition();</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordtype">bool</span> redraw = <span class="keyword">false</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="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">case</span> MODE_INSERT: {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</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="l00520"></a><span class="lineno"> 520</span>  newElement-><a class="code" href="class_element.html#abe884d99d12d5252e18956162115b025">Move</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">case</span> MODE_INSERT_LINE: {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *(m_connectionList.end() - 1);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  line->SetTemporarySecondPoint(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  line->UpdatePoints();</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  redraw = <span class="keyword">true</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">case</span> MODE_DRAG:</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT:</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">case</span> MODE_DRAG_PASTE: {</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  m_camera->SetTranslation(clickPoint);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordflow">case</span> MODE_MOVE_ELEMENT: {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</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="l00537"></a><span class="lineno"> 537</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  element-><a class="code" href="class_element.html#abe884d99d12d5252e18956162115b025">Move</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keyword">auto</span> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</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="l00542"></a><span class="lineno"> 542</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="l00543"></a><span class="lineno"> 543</span>  line->UpdatePoints();</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>  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>  <span class="keywordflow">case</span> MODE_MOVE_LINE: {</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</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="l00551"></a><span class="lineno"> 551</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *it;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  line-><a class="code" href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7">Move</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  redraw = <span class="keyword">true</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>  }</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_SELECTION_RECT: {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  wxPoint2DDouble currentPos = m_camera->ScreenToWorld(clickPoint);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordtype">double</span> x, y, w, h;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">if</span>(currentPos.m_x < m_startSelRect.m_x) {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  x = currentPos.m_x;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  w = m_startSelRect.m_x - currentPos.m_x;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  x = m_startSelRect.m_x;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  w = currentPos.m_x - m_startSelRect.m_x;</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="keywordflow">if</span>(currentPos.m_y < m_startSelRect.m_y) {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  y = currentPos.m_y;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  h = m_startSelRect.m_y - currentPos.m_y;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  y = m_startSelRect.m_y;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  h = currentPos.m_y - m_startSelRect.m_y;</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> </div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  m_selectionRect = wxRect2DDouble(x, y, w, h);</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">default</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>  }</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> </div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">if</span>(redraw) Redraw();</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keyword">event</span>.Skip();</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> <span class="keywordtype">void</span> ControlEditor::OnScroll(wxMouseEvent& event)</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">if</span>(event.GetWheelRotation() > 0)</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  m_camera->SetScale(event.GetPosition(), +0.05);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  m_camera->SetScale(event.GetPosition(), -0.05);</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>  Redraw();</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</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="keywordtype">void</span> ControlEditor::OnIdle(wxIdleEvent& event) { ConsolidateTexts(); }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> <span class="keywordtype">void</span> ControlEditor::OnKeyDown(wxKeyEvent& event)</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span> {</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keywordtype">char</span> key = <span class="keyword">event</span>.GetUnicodeKey();</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">if</span>(key != WXK_NONE) {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordflow">switch</span>(key) {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">case</span> WXK_DELETE: <span class="comment">// Delete selected elements.</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>  DeleteSelectedElements();</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</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="l00608"></a><span class="lineno"> 608</span>  {</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  RotateSelectedElements(event.GetModifiers() != wxMOD_SHIFT);</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> <span class="charliteral">'L'</span>: {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="comment">// tests</span></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>  }</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> </div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span> <span class="keywordtype">void</span> ControlEditor::RotateSelectedElements(<span class="keywordtype">bool</span> clockwise)</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">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  element-><a class="code" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Rotate</a>(clockwise);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keyword">auto</span> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</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="l00626"></a><span class="lineno"> 626</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="l00627"></a><span class="lineno"> 627</span>  line->UpdatePoints();</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</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>  }</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  Redraw();</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> }</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="keywordtype">void</span> ControlEditor::DeleteSelectedElements()</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="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="comment">// Remove child/parent.</span></div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keyword">auto</span> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</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="l00642"></a><span class="lineno"> 642</span>  <span class="comment">// The child is always a connection line.</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</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="l00644"></a><span class="lineno"> 644</span>  <span class="comment">// Delete the connection line.</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</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="l00646"></a><span class="lineno"> 646</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *itCo;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">if</span>(line == child) {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  itCo = DeleteLineFromList(itCo);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">break</span>;</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>  m_elementList.erase(it--);</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keywordflow">if</span>(element) <span class="keyword">delete</span> element;</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> </div><div class="line"><a name="l00658"></a><span class="lineno"> 658</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="l00659"></a><span class="lineno"> 659</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *it;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  it = DeleteLineFromList(it);</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>  Redraw();</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> </div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> std::vector<ConnectionLine*>::iterator ControlEditor::DeleteLineFromList(std::vector<ConnectionLine*>::iterator& it)</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span> {</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="keyword">auto</span> childList = cLine->GetLineChildList();</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</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="l00672"></a><span class="lineno"> 672</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* child = *itC;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</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="l00674"></a><span class="lineno"> 674</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* childOnList = *itL;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keywordflow">if</span>(childOnList == child) {</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  itL = DeleteLineFromList(itL);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  }</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>  <span class="comment">// Remove</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keyword">auto</span> parentList = cLine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</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="l00683"></a><span class="lineno"> 683</span>  <a class="code" href="class_element.html">Element</a>* parent = *itP;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</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="l00685"></a><span class="lineno"> 685</span>  }</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</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="l00687"></a><span class="lineno"> 687</span>  <span class="comment">// Free nodes</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keyword">auto</span> nodeList = cLine->GetNodeList();</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</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="l00690"></a><span class="lineno"> 690</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  node->SetConnected(<span class="keyword">false</span>);</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>  m_connectionList.erase(it--);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="keywordflow">if</span>(cLine) <span class="keyword">delete</span> cLine;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keywordflow">return</span> it;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span> }</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="keywordtype">void</span> ControlEditor::CheckConnections()</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="keywordflow">for</span>(<span class="keyword">auto</span> it = m_connectionList.begin(); it != m_connectionList.end(); ++it) {</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="keywordflow">if</span>(cLine->GetType() == ConnectionLine::ELEMENT_ELEMENT) {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</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="l00704"></a><span class="lineno"> 704</span>  it = DeleteLineFromList(it);</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> }</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> <span class="keywordtype">void</span> ControlEditor::OnExportClick(wxCommandEvent& event)</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>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(<span class="keyword">this</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>  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="l00715"></a><span class="lineno"> 715</span>  wxFD_SAVE | wxFD_OVERWRITE_PROMPT);</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keywordflow">if</span>(saveFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</span>;</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>  fileHandling.SaveControl(saveFileDialog.GetPath());</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  wxFileName fileName(saveFileDialog.GetPath());</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keyword">event</span>.Skip();</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> <span class="keywordtype">void</span> ControlEditor::OnImportClick(wxCommandEvent& event)</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>  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="l00726"></a><span class="lineno"> 726</span>  wxFD_OPEN | wxFD_FILE_MUST_EXIST);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <span class="keywordflow">if</span>(openFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</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>  wxFileName fileName(openFileDialog.GetPath());</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>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(<span class="keyword">this</span>);</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <span class="keywordflow">if</span>(!fileHandling.OpenControl(fileName, m_elementList, m_connectionList)) {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</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="l00734"></a><span class="lineno"> 734</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  msgDialog.ShowModal();</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> </div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  SetLastElementID();</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  Redraw();</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keyword">event</span>.Skip();</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> <span class="keywordtype">void</span> ControlEditor::OnTestClick(wxCommandEvent& event)</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>  <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="l00746"></a><span class="lineno"> 746</span>  <span class="keywordflow">if</span>(csTest.ShowModal() == wxID_OK) {</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordtype">double</span> printStep = 1e-3;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keywordtype">double</span> pdbStep = 1e-1;</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>  wxProgressDialog pbd(_(<span class="stringliteral">"Test"</span>), _(<span class="stringliteral">"Initializing..."</span>), 100, <span class="keyword">this</span>,</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  wxPD_APP_MODAL | wxPD_AUTO_HIDE | wxPD_CAN_ABORT | wxPD_SMOOTH);</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</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="l00753"></a><span class="lineno"> 753</span>  <span class="keywordflow">if</span>(solver.IsOK()) {</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="keywordtype">bool</span> simStopped = <span class="keyword">false</span>;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordtype">double</span> currentTime = 0.0;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordtype">double</span> printTime = 0.0;</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="keywordtype">double</span> pdbTime = 0.0;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  std::vector<double> time;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  std::vector<double> solution;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  std::vector<double> inputV;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keywordflow">while</span>(currentTime <= m_simTime) {</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <span class="keywordtype">double</span> input = 0.0;</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keywordflow">if</span>(currentTime >= m_startTime) {</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="keywordflow">switch</span>(m_inputType) {</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  input = m_slope;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  input = m_slope * (currentTime - m_startTime);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  input = m_slope * std::pow(currentTime - m_startTime, 2);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  input = 0.0;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  }</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>  }</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>  solver.SolveNextStep(input);</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="keywordflow">if</span>(printTime >= printStep) {</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  time.push_back(currentTime);</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  solution.push_back(solver.GetLastSolution());</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  inputV.push_back(input);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  printTime = 0.0;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</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="keywordflow">if</span>(pdbTime > pdbStep) {</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</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="l00792"></a><span class="lineno"> 792</span>  pbd.Update(100);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  simStopped = <span class="keyword">true</span>;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  currentTime = m_simTime;</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>  pdbTime = 0.0;</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> </div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  printTime += m_timeStep;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  currentTime += m_timeStep;</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  pdbTime += m_timeStep;</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="keywordflow">if</span>(!simStopped) {</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  std::vector<ElementPlotData> epdList;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</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="l00806"></a><span class="lineno"> 806</span>  curveData.AddData(inputV, _(<span class="stringliteral">"Input"</span>));</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  curveData.AddData(solution, _(<span class="stringliteral">"Output"</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>  curveData.SetPlot(0);</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  curveData.SetColour(0, *wxRED);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  curveData.SetPlot(1);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  curveData.SetColour(1, *wxBLUE);</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>  epdList.push_back(curveData);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> </div><div class="line"><a name="l00816"></a><span class="lineno"> 816</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="l00817"></a><span class="lineno"> 817</span>  cView->Show();</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  cView->UpdatePlot();</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">else</span> {</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</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="l00822"></a><span class="lineno"> 822</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  msgDialog.ShowModal();</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> }</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="keywordtype">void</span> ControlEditor::OnClose(wxCloseEvent& event)</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="keywordflow">if</span>(m_ctrlContainer) {</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  m_ctrlContainer->FillContainer(<span class="keyword">this</span>);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  }</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> ControlEditor::ConsolidateTexts()</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">// Solve wxGLString bug.</span></div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">if</span>(m_firstDraw) {</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</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="l00841"></a><span class="lineno"> 841</span>  m_elementList.push_back(tf);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</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="l00843"></a><span class="lineno"> 843</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  element->UpdateText();</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>  Redraw();</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  m_elementList.pop_back();</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <span class="keyword">delete</span> tf;</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  m_firstDraw = <span class="keyword">false</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> }</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> ControlEditor::SetLastElementID()</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="keywordtype">int</span> <span class="keywordtype">id</span> = 0;</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</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="l00857"></a><span class="lineno"> 857</span>  <span class="keywordtype">int</span> elementID = (*it)->GetID();</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keywordflow">if</span>(<span class="keywordtype">id</span> < elementID) <span class="keywordtype">id</span> = elementID;</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="keyword">auto</span> it = m_connectionList.begin(), itEnd = m_connectionList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="keywordtype">int</span> elementID = (*it)->GetID();</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keywordflow">if</span>(<span class="keywordtype">id</span> < elementID) <span class="keywordtype">id</span> = elementID;</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>  m_lastElementID = ++id;</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</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#l00107">Element.cpp:107</a></div></div> -<div class="ttc" id="class_multiplier_html"><div class="ttname"><a href="class_multiplier.html">Multiplier</a></div><div class="ttdef"><b>Definition:</b> <a href="_multiplier_8h_source.html#l00008">Multiplier.h:8</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#l00088">Element.h:88</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#l00123">Element.h:123</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="ttdef"><b>Definition:</b> <a href="_control_element_solver_8h_source.html#l00020">ControlElementSolver.h:20</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#l00009">Sum.h:9</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#l00517">Element.h:517</a></div></div> -<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00011">Gain.h:11</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#l00146">ConnectionLine.cpp:146</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#l00523">Element.h:523</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</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="ttdef"><b>Definition:</b> <a href="_file_handing_8h_source.html#l00019">FileHanding.h:19</a></div></div> -<div class="ttc" id="class_connection_line_html_a71cb3502dd098e1d1ef541668789586e"><div class="ttname"><a href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e">ConnectionLine::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="_connection_line_8cpp_source.html#l00021">ConnectionLine.cpp:21</a></div></div> -<div class="ttc" id="class_limiter_html"><div class="ttname"><a href="class_limiter.html">Limiter</a></div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8h_source.html#l00008">Limiter.h:8</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#l00335">Element.cpp:335</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#l00100">ControlElement.cpp:100</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 "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="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_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_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_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> +<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_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_connection_line_html_a71cb3502dd098e1d1ef541668789586e"><div class="ttname"><a href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e">ConnectionLine::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="_connection_line_8cpp_source.html#l00033">ConnectionLine.cpp:33</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="_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_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_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_camera_html"><div class="ttname"><a href="class_camera.html">Camera</a></div><div class="ttdef"><b>Definition:</b> <a href="_camera_8h_source.html#l00006">Camera.h:6</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="ttdef"><b>Definition:</b> <a href="_control_editor_8h_source.html#l00039">ControlEditor.h:39</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="ttdef"><b>Definition:</b> <a href="_i_o_control_8h_source.html#l00011">IOControl.h:11</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#l00234">Element.h:234</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_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="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#l00039">ElementPlotData.h:39</a></div></div> -<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00008">Exponential.h:8</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#l00308">Element.h:308</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#l00333">Element.cpp:333</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="ttdef"><b>Definition:</b> <a href="_chart_view_8h_source.html#l00016">ChartView.h:16</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="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00008">RateLimiter.h:8</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#l00547">Element.h:547</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#l00041">ConnectionLine.cpp:41</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="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00006">ConnectionLine.h:6</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#l00011">TransferFunction.h:11</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#l00189">Element.h:189</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="_gain_8h_html"><div class="ttname"><a href="_gain_8h.html">Gain.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="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="_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> +<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="_control_element_solver_8h_html"><div class="ttname"><a href="_control_element_solver_8h.html">ControlElementSolver.h</a></div></div> +<div class="ttc" id="_camera_8h_html"><div class="ttname"><a href="_camera_8h.html">Camera.h</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_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#l00053">ControlElement.h:53</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#l00152">ConnectionLine.cpp:152</a></div></div> -<div class="ttc" id="class_constant_html"><div class="ttname"><a href="class_constant.html">Constant</a></div><div class="ttdef"><b>Definition:</b> <a href="_constant_8h_source.html#l00011">Constant.h:11</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#l00049">ConnectionLine.cpp:49</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="ttdef"><b>Definition:</b> <a href="_control_system_test_8h_source.html#l00008">ControlSystemTest.h:8</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="_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_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="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 --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_control_editor_8h.html b/docs/doxygen/html/_control_editor_8h.html new file mode 100644 index 0000000..de363bb --- /dev/null +++ b/docs/doxygen/html/_control_editor_8h.html @@ -0,0 +1,145 @@ +<!-- 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/ControlEditor.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('_control_editor_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">ControlEditor.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ControlEditorBase.h"</code><br /> +<code>#include <wx/wrapsizer.h></code><br /> +<code>#include <wx/dcclient.h></code><br /> +<code>#include <wx/dcscreen.h></code><br /> +<code>#include <wx/graphics.h></code><br /> +<code>#include <GL/gl.h></code><br /> +<code>#include <GL/glu.h></code><br /> +<code>#include <wx/progdlg.h></code><br /> +<code>#include "<a class="el" href="_i_o_control_8h_source.html">IOControl.h</a>"</code><br /> +<code>#include "<a class="el" href="_control_system_test_8h_source.html">ControlSystemTest.h</a>"</code><br /> +</div> +<p><a href="_control_editor_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_control_element_button.html">ControlElementButton</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">This class is responsible to handle the user interaction with control elements. <a href="class_control_element_button.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_control_editor.html">ControlEditor</a></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:a8b2fbb4494abb95ea860e1b6b3cb7076"><td class="memItemLeft" align="right" valign="top"><a id="a8b2fbb4494abb95ea860e1b6b3cb7076"></a>enum  </td><td class="memItemRight" valign="bottom"><b>ControlElementButtonID</b> { <br /> +  <b>ID_IO</b> = 0, +<b>ID_TF</b>, +<b>ID_SUM</b>, +<b>ID_CONST</b>, +<br /> +  <b>ID_LIMITER</b>, +<b>ID_GAIN</b>, +<b>ID_MULT</b>, +<b>ID_EXP</b>, +<br /> +  <b>ID_RATELIM</b> +<br /> + }</td></tr> +<tr class="separator:a8b2fbb4494abb95ea860e1b6b3cb7076"><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="_control_editor_8h.html">ControlEditor.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/_control_editor_8h.js b/docs/doxygen/html/_control_editor_8h.js new file mode 100644 index 0000000..41a8e39 --- /dev/null +++ b/docs/doxygen/html/_control_editor_8h.js @@ -0,0 +1,16 @@ +var _control_editor_8h = +[ + [ "ControlElementButton", "class_control_element_button.html", "class_control_element_button" ], + [ "ControlEditor", "class_control_editor.html", "class_control_editor" ], + [ "ControlElementButtonID", "_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076", [ + [ "ID_IO", "_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076a82d160d51a00e0512485fb0afff4a09a", null ], + [ "ID_TF", "_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076aa141db7d0f650ecdc828cb8f36fe6ac8", null ], + [ "ID_SUM", "_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076ac09b0c2232a1d94b9cf4caeeff65a959", null ], + [ "ID_CONST", "_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076a39af4bb4f8a6a60d53796dc24c7ef52e", null ], + [ "ID_LIMITER", "_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076a007742cc97c341c08b014bc2e0385c40", null ], + [ "ID_GAIN", "_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076abc8cc51c937d00684cb6967548dbbe12", null ], + [ "ID_MULT", "_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076a4db14943629d93315bc091b2d7e8ac1b", null ], + [ "ID_EXP", "_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076a9f541dfe8890f2636816ed2d7f8d07d7", null ], + [ "ID_RATELIM", "_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076aec5fbed678b51ff6e1b215cb36ac9bfa", null ] + ] ] +];
\ No newline at end of file diff --git a/docs/doxygen/html/_control_editor_8h_source.html b/docs/doxygen/html/_control_editor_8h_source.html index 5feed6d..02a1e13 100644 --- a/docs/doxygen/html/_control_editor_8h_source.html +++ b/docs/doxygen/html/_control_editor_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,32 +88,34 @@ $(document).ready(function(){initNavTree('_control_editor_8h_source.html','');}) <div class="title">ControlEditor.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="preprocessor">#ifndef CONTROLEDITOR_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define CONTROLEDITOR_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ControlEditorBase.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <wx/wrapsizer.h></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <wx/dcclient.h></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include <wx/dcscreen.h></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include <wx/graphics.h></span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include <GL/gl.h></span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <GL/glu.h></span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include <wx/progdlg.h></span></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="preprocessor">#include "IOControl.h"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "ControlSystemTest.h"</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="keyword">class </span><a class="code" href="class_file_handing.html">FileHanding</a>;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">class </span><a class="code" href="class_camera.html">Camera</a>;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">class </span><a class="code" href="class_element.html">Element</a>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">class </span><a class="code" href="class_control_element.html">ControlElement</a>;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">class </span><a class="code" href="class_transfer_function.html">TransferFunction</a>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">class </span><a class="code" href="class_connection_line.html">ConnectionLine</a>;</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> <span class="keyword">class </span><a class="code" href="class_multiplier.html">Multiplier</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">class </span><a class="code" href="class_limiter.html">Limiter</a>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span><a class="code" href="class_rate_limiter.html">RateLimiter</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">class </span><a class="code" href="class_exponential.html">Exponential</a>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">class </span><a class="code" href="class_constant.html">Constant</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> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span><a class="code" href="class_control_element_solver.html">ControlElementSolver</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span><a class="code" href="class_control_element_container.html">ControlElementContainer</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">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_element_data_object.html">ElementDataObject</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> 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="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_control_element_button.html"> 39</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="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</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="l00043"></a><span class="lineno"> 43</span>  ~<a class="code" href="class_control_element_button.html">ControlElementButton</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">protected</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPaint(wxPaintEvent& event);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMouseEnter(wxMouseEvent& event);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMouseLeave(wxMouseEvent& event);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnLeftClickDown(wxMouseEvent& event);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnLeftClickUp(wxMouseEvent& event);</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>  wxString m_label;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  wxFont m_font;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  wxPoint m_labelPosition;</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>  wxImage m_image;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  wxSize m_imageSize;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  wxPoint m_imagePosition;</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">int</span> m_borderSize = 2;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">bool</span> m_mouseAbove = <span class="keyword">false</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> m_selected = <span class="keyword">false</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>  wxSize m_buttonSize;</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_control_editor.html"> 67</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="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="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">enum</span> ControlEditorMode {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  MODE_EDIT = 0,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  MODE_MOVE_ELEMENT,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  MODE_MOVE_LINE,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  MODE_DRAG,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  MODE_DRAG_INSERT,</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  MODE_INSERT,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  MODE_INSERT_LINE,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  MODE_SELECTION_RECT,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  MODE_PASTE,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  MODE_DRAG_PASTE</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>  <a class="code" href="class_control_editor.html">ControlEditor</a>(wxWindow* parent,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">int</span> ioflags = IOControl::IN_TERMINAL_VOLTAGE | IOControl::IN_VELOCITY | IOControl::OUT_FIELD_VOLTAGE |</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  IOControl::OUT_MEC_POWER);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_control_editor.html">ControlEditor</a>();</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">void</span> AddElement(ControlElementButtonID <span class="keywordtype">id</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Redraw() { m_glCanvas->Refresh(); }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RotateSelectedElements(<span class="keywordtype">bool</span> clockwise);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DeleteSelectedElements();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CheckConnections();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</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="l00094"></a><span class="lineno"> 94</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="l00095"></a><span class="lineno"> 95</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="l00096"></a><span class="lineno"> 96</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="l00097"></a><span class="lineno"> 97</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="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="keyword">virtual</span> <span class="keywordtype">void</span> OnClose(wxCloseEvent& event);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnTestClick(wxCommandEvent& event);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonOKClick(wxCommandEvent& event) { Close(); }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnImportClick(wxCommandEvent& event);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnExportClick(wxCommandEvent& event);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnKeyDown(wxKeyEvent& event);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnIdle(wxIdleEvent& event);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnScroll(wxMouseEvent& event);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnDoubleClick(wxMouseEvent& event);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnLeftClickDown(wxMouseEvent& event);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnLeftClickUp(wxMouseEvent& event);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMiddleDown(wxMouseEvent& event);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMiddleUp(wxMouseEvent& event);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMouseMotion(wxMouseEvent& event);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPaint(wxPaintEvent& event);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> LeftClickDown(wxMouseEvent& event);</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="keywordtype">void</span> BuildControlElementPanel();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">void</span> SetViewport();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> ConsolidateTexts();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">void</span> SetLastElementID();</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>  std::vector<ConnectionLine*>::iterator DeleteLineFromList(std::vector<ConnectionLine*>::iterator& it);</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>  wxGLContext* m_glContext = NULL;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="class_camera.html">Camera</a>* m_camera = 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>  ControlEditorMode m_mode = MODE_EDIT;</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>  wxRect2DDouble m_selectionRect;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  wxPoint2DDouble m_startSelRect;</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>  std::vector<ControlElement*> m_elementList;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  std::vector<ConnectionLine*> m_connectionList;</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>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* m_ctrlContainer = NULL;</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">bool</span> m_firstDraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordtype">int</span> m_ioFlags;</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="keywordtype">int</span> m_lastElementID = 0;</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="keywordtype">int</span> m_inputType = 0;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordtype">double</span> m_startTime = 1.0;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">double</span> m_slope = 1.0;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordtype">double</span> m_timeStep = 1e-4;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">double</span> m_simTime = 10.0;</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="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="ttdef"><b>Definition:</b> <a href="_multiplier_8h_source.html#l00008">Multiplier.h:8</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#l00088">Element.h:88</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="ttdef"><b>Definition:</b> <a href="_control_element_solver_8h_source.html#l00020">ControlElementSolver.h:20</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#l00009">Sum.h:9</a></div></div> -<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00011">Gain.h:11</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="ttdef"><b>Definition:</b> <a href="_file_handing_8h_source.html#l00019">FileHanding.h:19</a></div></div> -<div class="ttc" id="class_limiter_html"><div class="ttname"><a href="class_limiter.html">Limiter</a></div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8h_source.html#l00008">Limiter.h:8</a></div></div> -<div class="ttc" id="class_camera_html"><div class="ttname"><a href="class_camera.html">Camera</a></div><div class="ttdef"><b>Definition:</b> <a href="_camera_8h_source.html#l00006">Camera.h:6</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="ttdef"><b>Definition:</b> <a href="_control_editor_8h_source.html#l00039">ControlEditor.h:39</a></div></div> +<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_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="_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="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00008">Exponential.h:8</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#l00012">ElementDataObject.h:12</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="ttdef"><b>Definition:</b> <a href="_chart_view_8h_source.html#l00016">ChartView.h:16</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="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00008">RateLimiter.h:8</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="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00020">ControlElementContainer.h:20</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="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00006">ConnectionLine.h:6</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#l00011">TransferFunction.h:11</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#l00067">ControlEditor.h:67</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#l00053">ControlElement.h:53</a></div></div> -<div class="ttc" id="class_constant_html"><div class="ttname"><a href="class_constant.html">Constant</a></div><div class="ttdef"><b>Definition:</b> <a href="_constant_8h_source.html#l00011">Constant.h:11</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_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="_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> +<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 --> </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>ControlEditor.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_control_editor_8h.html">ControlEditor.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/_control_editor_base_8cpp_source.html b/docs/doxygen/html/_control_editor_base_8cpp_source.html index dd5b8f7..c08213c 100644 --- a/docs/doxygen/html/_control_editor_base_8cpp_source.html +++ b/docs/doxygen/html/_control_editor_base_8cpp_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_control_editor_base_8h_source.html b/docs/doxygen/html/_control_editor_base_8h_source.html index d294746..83db883 100644 --- a/docs/doxygen/html/_control_editor_base_8h_source.html +++ b/docs/doxygen/html/_control_editor_base_8h_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_control_editor_bitmaps_8cpp_source.html b/docs/doxygen/html/_control_editor_bitmaps_8cpp_source.html index 5e26b1b..0b443a1 100644 --- a/docs/doxygen/html/_control_editor_bitmaps_8cpp_source.html +++ b/docs/doxygen/html/_control_editor_bitmaps_8cpp_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_control_element_8cpp_source.html b/docs/doxygen/html/_control_element_8cpp_source.html index c27c6e5..abf4a3c 100644 --- a/docs/doxygen/html/_control_element_8cpp_source.html +++ b/docs/doxygen/html/_control_element_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,10 +88,11 @@ $(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="preprocessor">#include "ControlElement.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> Node::Node(wxPoint2DDouble position, NodeType nodeType, <span class="keywordtype">double</span> borderSize)</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="keywordtype">double</span> totalRadius = m_radius + borderSize;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  m_rect = wxRect2DDouble(position.m_x - totalRadius, position.m_y - totalRadius, totalRadius * 2, totalRadius * 2);</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_nodeType = nodeType;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_triPts.push_back(GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, m_radius));</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_triPts.push_back(GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, -m_radius));</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  m_triPts.push_back(GetPosition() + wxPoint2DDouble(-m_radius + 1, 0));</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> }</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> Node::~Node() {}</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="keywordtype">void</span> Node::SetPosition(wxPoint2DDouble position)</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>  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="l00021"></a><span class="lineno"> 21</span>  m_rect.m_height);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_triPts[0] = GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, m_radius);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_triPts[1] = GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, -m_radius);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_triPts[2] = GetPosition() + wxPoint2DDouble(-m_radius + 1, 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>  <span class="comment">// Rotate according to the angle (node rect center as reference)</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">if</span>(m_angle != 0.0) RotateTriPt(m_angle);</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="keywordtype">void</span> Node::StartMove(wxPoint2DDouble position)</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_moveStartPt = position;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_movePos = m_rect.GetPosition() - wxPoint2DDouble(-m_rect.m_width / 2, -m_rect.m_height / 2);</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> <span class="keywordtype">void</span> Node::Move(wxPoint2DDouble position) { SetPosition(m_movePos + position - m_moveStartPt); }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> wxPoint2DDouble Node::GetPosition()<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>  <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="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="keywordtype">void</span> Node::RotateTriPt(<span class="keywordtype">double</span> angle)</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="keywordtype">double</span> radAngle = wxDegToRad(angle);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  wxPoint2DDouble rectCenter =</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_rect.GetPosition() + wxPoint2DDouble(m_rect.GetSize().GetWidth() / 2.0, m_rect.GetSize().GetHeight() / 2.0);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_triPts[0] = wxPoint2DDouble(std::cos(radAngle) * (m_triPts[0].m_x - rectCenter.m_x) -</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  std::sin(radAngle) * (m_triPts[0].m_y - rectCenter.m_y) + rectCenter.m_x,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::sin(radAngle) * (m_triPts[0].m_x - rectCenter.m_x) +</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::cos(radAngle) * (m_triPts[0].m_y - rectCenter.m_y) + rectCenter.m_y);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_triPts[1] = wxPoint2DDouble(std::cos(radAngle) * (m_triPts[1].m_x - rectCenter.m_x) -</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  std::sin(radAngle) * (m_triPts[1].m_y - rectCenter.m_y) + rectCenter.m_x,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  std::sin(radAngle) * (m_triPts[1].m_x - rectCenter.m_x) +</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  std::cos(radAngle) * (m_triPts[1].m_y - rectCenter.m_y) + rectCenter.m_y);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_triPts[2] = wxPoint2DDouble(std::cos(radAngle) * (m_triPts[2].m_x - rectCenter.m_x) -</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  std::sin(radAngle) * (m_triPts[2].m_y - rectCenter.m_y) + rectCenter.m_x,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  std::sin(radAngle) * (m_triPts[2].m_x - rectCenter.m_x) +</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  std::cos(radAngle) * (m_triPts[2].m_y - rectCenter.m_y) + rectCenter.m_y);</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="keywordtype">void</span> Node::Rotate(<span class="keywordtype">bool</span> clockwise)</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">if</span>(clockwise)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_angle += 90.0;</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>  m_angle -= 90.0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_angle = 0.0;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_angle = 270.0;</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">// Update input triangle points.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_triPts[0] = GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, m_radius);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_triPts[1] = GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, -m_radius);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_triPts[2] = GetPosition() + wxPoint2DDouble(-m_radius + 1, 0);</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">// Rotate according to the angle (node rect center as reference)</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>(m_angle != 0.0) RotateTriPt(m_angle);</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">bool</span> Node::Contains(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="keyword"></span>{</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span>(m_connected) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> m_rect.Contains(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> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</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="l00088"></a><span class="lineno"> 88</span> ControlElement::~ControlElement() {}</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keywordtype">void</span> ControlElement::DrawNodes()<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>  <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="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  DrawCircle(node->GetPosition(), node->GetRadius(), 10, GL_POLYGON);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span>(node->GetNodeType() == Node::NODE_IN) {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  DrawTriangle(node->GetInTrianglePts());</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> }</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_control_element.html#a61440a392d438de163bfe9ffb8e9efec"> 100</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="l00101"></a><span class="lineno"> 101</span> {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_moveStartPt = position;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_movePos = m_position;</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 < (int)m_nodeList.size(); ++i) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_nodeList[i]->StartMove(position);</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"><a class="line" href="class_control_element.html#ac8bd52ddb8eed51a217fecb2eed65708"> 109</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="l00110"></a><span class="lineno"> 110</span> {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  SetPosition(m_movePos + position - m_moveStartPt);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</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="l00113"></a><span class="lineno"> 113</span>  m_nodeList[i]->Move(position);</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> <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="l00118"></a><span class="lineno"> 118</span> {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_output = input;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> <span class="keyword">true</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> 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="l00124"></a><span class="lineno"> 124</span> {</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 < m_nodeList.size(); i++) {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span>(m_nodeList[i] == oldNode) m_nodeList[i] = newNode;</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="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#l00088">Element.h:88</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</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#l00100">ControlElement.cpp:100</a></div></div> -<div class="ttc" id="class_control_element_html_ac8bd52ddb8eed51a217fecb2eed65708"><div class="ttname"><a href="class_control_element.html#ac8bd52ddb8eed51a217fecb2eed65708">ControlElement::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="_control_element_8cpp_source.html#l00109">ControlElement.cpp:109</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="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> +<div class="ttc" id="class_control_element_html_ac8bd52ddb8eed51a217fecb2eed65708"><div class="ttname"><a href="class_control_element.html#ac8bd52ddb8eed51a217fecb2eed65708">ControlElement::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="_control_element_8cpp_source.html#l00126">ControlElement.cpp:126</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_control_element_8h.html b/docs/doxygen/html/_control_element_8h.html new file mode 100644 index 0000000..b059beb --- /dev/null +++ b/docs/doxygen/html/_control_element_8h.html @@ -0,0 +1,124 @@ +<!-- 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/ControlElement.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('_control_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">ControlElement.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p>Base class of a control element. Provide general methods to other control classes. +<a href="#details">More...</a></p> +<div class="textblock"><code>#include "<a class="el" href="_element_8h_source.html">Element.h</a>"</code><br /> +</div> +<p><a href="_control_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_node.html">Node</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> of a control element. This class manages the user interaction with the connection and control elements. <a href="class_node.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_control_element.html">ControlElement</a></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>Base class of a control element. Provide general methods to other control classes. </p> + +<p class="definition">Definition in file <a class="el" href="_control_element_8h_source.html">ControlElement.h</a>.</p> +</div></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="_control_element_8h.html">ControlElement.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/_control_element_8h_source.html b/docs/doxygen/html/_control_element_8h_source.html index 25475b7..2222b15 100644 --- a/docs/doxygen/html/_control_element_8h_source.html +++ b/docs/doxygen/html/_control_element_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,16 +88,16 @@ $(document).ready(function(){initNavTree('_control_element_8h_source.html','');} <div class="title">ControlElement.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="preprocessor">#ifndef CONTROLELEMENT_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define CONTROLELEMENT_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"><a class="line" href="class_node.html"> 6</a></span> <span class="keyword">class </span><a class="code" href="class_node.html">Node</a></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="keyword">public</span>:</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keyword">enum</span> NodeType { NODE_IN = 0, NODE_OUT };</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>  <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="l00012"></a><span class="lineno"> 12</span>  ~<a class="code" href="class_node.html">Node</a>();</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>  wxRect2DDouble GetRect()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect; }</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keywordtype">void</span> SetRect(wxRect2DDouble rect) { m_rect = rect; }</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  wxPoint2DDouble GetPosition() <span class="keyword">const</span>;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordtype">void</span> SetPosition(wxPoint2DDouble position);</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>  NodeType GetNodeType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_nodeType; }</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordtype">void</span> SetNodeType(NodeType nodeType) { m_nodeType = nodeType; }</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</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="l00022"></a><span class="lineno"> 22</span>  std::vector<wxPoint2DDouble> GetInTrianglePts()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_triPts; }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</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="l00024"></a><span class="lineno"> 24</span>  <span class="keywordtype">void</span> SetAngle(<span class="keywordtype">double</span> angle) { m_angle = angle; }</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">void</span> Rotate(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</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="keywordtype">void</span> RotateTriPt(<span class="keywordtype">double</span> angle);</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="keywordtype">void</span> StartMove(wxPoint2DDouble position);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">void</span> Move(wxPoint2DDouble position);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">bool</span> Contains(wxPoint2DDouble position) <span class="keyword">const</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>  <span class="keywordtype">bool</span> IsConnected()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_connected; }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</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="l00035"></a><span class="lineno"> 35</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="l00036"></a><span class="lineno"> 36</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="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="keywordtype">int</span> m_id = -1;</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>  wxRect2DDouble m_rect;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  NodeType m_nodeType;</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">bool</span> m_connected = <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>  wxPoint2DDouble m_moveStartPt;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  wxPoint2DDouble m_movePos;</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="keywordtype">double</span> m_radius = 3.0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::vector<wxPoint2DDouble> m_triPts;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">double</span> m_angle = 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> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="class_control_element.html"> 53</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="l00054"></a><span class="lineno"> 54</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</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="l00057"></a><span class="lineno"> 57</span>  ~<a class="code" href="class_control_element.html">ControlElement</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">virtual</span> <span class="keywordtype">void</span> StartMove(wxPoint2DDouble position);</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> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">void</span> SetNodeList(std::vector<Node*> nodeList) { m_nodeList = nodeList; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  std::vector<Node*> GetNodeList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_nodeList; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawNodes() <span class="keyword">const</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</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="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText() {}</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</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="l00068"></a><span class="lineno"> 68</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="l00069"></a><span class="lineno"> 69</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="l00070"></a><span class="lineno"> 70</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="l00071"></a><span class="lineno"> 71</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="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>  std::vector<Node*> m_nodeList;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">bool</span> m_solved = <span class="keyword">false</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">double</span> m_output = 0.0;</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="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#l00088">Element.h:88</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</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="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="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#l00053">ControlElement.h:53</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 --> <!-- 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>ControlElement.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_control_element_8h.html">ControlElement.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/_control_element_container_8cpp_source.html b/docs/doxygen/html/_control_element_container_8cpp_source.html index e9e32c9..eb02b94 100644 --- a/docs/doxygen/html/_control_element_container_8cpp_source.html +++ b/docs/doxygen/html/_control_element_container_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,25 +88,28 @@ $(document).ready(function(){initNavTree('_control_element_container_8cpp_source <div class="title">ControlElementContainer.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 "ControlElementContainer.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "ControlEditor.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "ControlElement.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> ControlElementContainer::ControlElementContainer() { ClearContainer(); }</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> ControlElementContainer::~ControlElementContainer() {}</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</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="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  ClearContainer();</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_ctrlElementsList = editor->GetControlElementList();</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  m_cLineList = editor->GetConnectionLineList();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">auto</span> cElementList = editor->GetControlElementList();</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</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="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</span>  m_constantList.push_back(constant);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</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="l00017"></a><span class="lineno"> 17</span>  m_exponentialList.push_back(exponential);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</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="l00019"></a><span class="lineno"> 19</span>  m_gainList.push_back(gain);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</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="l00021"></a><span class="lineno"> 21</span>  m_ioControlList.push_back(ioControl);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</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="l00023"></a><span class="lineno"> 23</span>  m_limiterList.push_back(limiter);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</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="l00025"></a><span class="lineno"> 25</span>  m_multiplierList.push_back(multiplier);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</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="l00027"></a><span class="lineno"> 27</span>  m_rateLimiterList.push_back(rateLimiter);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</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="l00029"></a><span class="lineno"> 29</span>  m_sumList.push_back(sum);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</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="l00031"></a><span class="lineno"> 31</span>  m_tfList.push_back(tf);</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> }</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">void</span> ControlElementContainer::ClearContainer()</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_cLineList.clear();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_constantList.clear();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_exponentialList.clear();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_gainList.clear();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_ioControlList.clear();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_limiterList.clear();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_multiplierList.clear();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  m_rateLimiterList.clear();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_sumList.clear();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_tfList.clear();</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">void</span> ControlElementContainer::FillContainer(std::vector<ControlElement*> controlElementList,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  std::vector<ConnectionLine*> connectionLineList)</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>  ClearContainer();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_ctrlElementsList = controlElementList;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_cLineList = connectionLineList;</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">for</span>(<span class="keyword">auto</span> it = controlElementList.begin(), itEnd = controlElementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</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="l00059"></a><span class="lineno"> 59</span>  m_constantList.push_back(constant);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</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="l00061"></a><span class="lineno"> 61</span>  m_exponentialList.push_back(exponential);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</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="l00063"></a><span class="lineno"> 63</span>  m_gainList.push_back(gain);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</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="l00065"></a><span class="lineno"> 65</span>  m_ioControlList.push_back(ioControl);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</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="l00067"></a><span class="lineno"> 67</span>  m_limiterList.push_back(limiter);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</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="l00069"></a><span class="lineno"> 69</span>  m_multiplierList.push_back(multiplier);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</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="l00071"></a><span class="lineno"> 71</span>  m_rateLimiterList.push_back(rateLimiter);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</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="l00073"></a><span class="lineno"> 73</span>  m_sumList.push_back(sum);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</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="l00075"></a><span class="lineno"> 75</span>  m_tfList.push_back(tf);</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> }</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="keywordtype">void</span> ControlElementContainer::GetContainerCopy(std::vector<ControlElement*>& controlElementList,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  std::vector<ConnectionLine*>& connectionLineList)</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>  controlElementList.clear();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  connectionLineList.clear();</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">// Copy connection lines</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</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="l00088"></a><span class="lineno"> 88</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="l00089"></a><span class="lineno"> 89</span>  connectionLineList.push_back(copy);</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="comment">// Copy elements (exept connection line).</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">int</span> nodeID = 0;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</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="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="class_element.html">Element</a>* oldElement = *it;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</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="l00097"></a><span class="lineno"> 97</span>  controlElementList.push_back(copy);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">// Copy nodes.</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  std::vector<Node*> nodeList = copy->GetNodeList();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  std::vector<Node*> nodeListCopy;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</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="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  node->SetID(nodeID);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</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="l00105"></a><span class="lineno"> 105</span>  *copyNode = *node;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  nodeListCopy.push_back(copyNode);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  nodeID++;</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>  copy->SetNodeList(nodeListCopy);</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="comment">// Replace children to copies.</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">auto</span> childList = copy-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</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="l00114"></a><span class="lineno"> 114</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="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// Replace child's parent to copy.</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</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="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* copyLine = *itCL;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</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="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// Replace node.</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  nodeList = child->GetNodeList();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</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="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</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="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="class_node.html">Node</a>* nodeCopy = *itCN;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">if</span>(node->GetID() == nodeCopy->GetID()) {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  copyLine->ReplaceNode(node, nodeCopy);</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>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  copyLine-><a class="code" href="class_element.html#a74ec9a279ac0127550e00941206dddb1">ReplaceParent</a>(oldElement, copy);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  copy-><a class="code" href="class_element.html#ad5f4bee2e241c430a643f46dadf3d3f5">ReplaceChild</a>(child, copyLine);</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"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> }</div><div class="ttc" id="class_multiplier_html"><div class="ttname"><a href="class_multiplier.html">Multiplier</a></div><div class="ttdef"><b>Definition:</b> <a href="_multiplier_8h_source.html#l00008">Multiplier.h:8</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#l00088">Element.h:88</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#l00009">Sum.h:9</a></div></div> -<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00011">Gain.h:11</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#l00523">Element.h:523</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</a></div></div> -<div class="ttc" id="class_limiter_html"><div class="ttname"><a href="class_limiter.html">Limiter</a></div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8h_source.html#l00008">Limiter.h:8</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="ttdef"><b>Definition:</b> <a href="_i_o_control_8h_source.html#l00011">IOControl.h:11</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#l00343">Element.cpp:343</a></div></div> -<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00008">Exponential.h:8</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="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00008">RateLimiter.h:8</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="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00006">ConnectionLine.h:6</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#l00011">TransferFunction.h:11</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#l00067">ControlEditor.h:67</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#l00270">Element.h:270</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#l00326">Element.cpp:326</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#l00053">ControlElement.h:53</a></div></div> -<div class="ttc" id="class_constant_html"><div class="ttname"><a href="class_constant.html">Constant</a></div><div class="ttdef"><b>Definition:</b> <a href="_constant_8h_source.html#l00011">Constant.h:11</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#l00258">Element.h:258</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_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_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_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_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> +<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_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="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 --> <!-- start footer part --> diff --git a/docs/doxygen/html/_control_element_container_8h.html b/docs/doxygen/html/_control_element_container_8h.html new file mode 100644 index 0000000..57f5343 --- /dev/null +++ b/docs/doxygen/html/_control_element_container_8h.html @@ -0,0 +1,125 @@ +<!-- 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/ControlElementContainer.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('_control_element_container_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">ControlElementContainer.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include <vector></code><br /> +<code>#include "<a class="el" href="_connection_line_8h_source.html">ConnectionLine.h</a>"</code><br /> +<code>#include "<a class="el" href="_constant_8h_source.html">Constant.h</a>"</code><br /> +<code>#include "<a class="el" href="_exponential_8h_source.html">Exponential.h</a>"</code><br /> +<code>#include "<a class="el" href="_gain_8h_source.html">Gain.h</a>"</code><br /> +<code>#include "<a class="el" href="_i_o_control_8h_source.html">IOControl.h</a>"</code><br /> +<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 /> +</div> +<p><a href="_control_element_container_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_control_element_container.html">ControlElementContainer</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Class that can contain all control elements. Can identify (using RTTI) the elements from a generic list and store them separately. <a href="class_control_element_container.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="_control_element_container_8h.html">ControlElementContainer.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/_control_element_container_8h_source.html b/docs/doxygen/html/_control_element_container_8h_source.html index 0b62010..f0e83b3 100644 --- a/docs/doxygen/html/_control_element_container_8h_source.html +++ b/docs/doxygen/html/_control_element_container_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,23 @@ $(document).ready(function(){initNavTree('_control_element_container_8h_source.h <div class="title">ControlElementContainer.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="preprocessor">#ifndef CONTROLELEMENTCONTAINER_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define CONTROLELEMENTCONTAINER_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_control_editor.html">ControlEditor</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="keyword">class </span><a class="code" href="class_control_element.html">ControlElement</a>;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "ConnectionLine.h"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include "Constant.h"</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "Exponential.h"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "Gain.h"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "IOControl.h"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "Limiter.h"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "Multiplier.h"</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "RateLimiter.h"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "Sum.h"</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> </div><div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="class_control_element_container.html"> 20</a></span> <span class="keyword">class </span><a class="code" href="class_control_element_container.html">ControlElementContainer</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="keyword">public</span>:</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</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>  ~<a class="code" href="class_control_element_container.html">ControlElementContainer</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">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="l00027"></a><span class="lineno"> 27</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> FillContainer(std::vector<ControlElement*> controlElementList,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  std::vector<ConnectionLine*> connectionLineList);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> GetContainerCopy(std::vector<ControlElement*>& controlElementList,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  std::vector<ConnectionLine*>& connectionLineList);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ClearContainer();</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>  std::vector<ControlElement*> GetControlElementsList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_ctrlElementsList; }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  std::vector<ConnectionLine*> GetConnectionLineList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_cLineList; }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  std::vector<Constant*> GetConstantList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_constantList; }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  std::vector<Exponential*> GetExponentialList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_exponentialList; }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  std::vector<Gain*> GetGainList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_gainList; }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  std::vector<IOControl*> GetIOControlList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_ioControlList; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  std::vector<Limiter*> GetLimiterList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_limiterList; }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  std::vector<Multiplier*> GetMultiplierList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_multiplierList; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  std::vector<RateLimiter*> GetRateLimiterList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rateLimiterList; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  std::vector<Sum*> GetSumList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_sumList; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  std::vector<TransferFunction*> GetTFList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_tfList; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  std::vector<ControlElement*> m_ctrlElementsList;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  std::vector<Constant*> m_constantList;</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>  std::vector<ConnectionLine*> m_cLineList;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::vector<Exponential*> m_exponentialList;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::vector<Gain*> m_gainList;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  std::vector<IOControl*> m_ioControlList;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  std::vector<Limiter*> m_limiterList;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  std::vector<Multiplier*> m_multiplierList;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  std::vector<RateLimiter*> m_rateLimiterList;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  std::vector<Sum*> m_sumList;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  std::vector<TransferFunction*> m_tfList;</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 // CONTROLELEMENTCONTAINER_H</span></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="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00020">ControlElementContainer.h:20</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#l00067">ControlEditor.h:67</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#l00053">ControlElement.h:53</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 "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> +<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="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> +<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="_exponential_8h_html"><div class="ttname"><a href="_exponential_8h.html">Exponential.h</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="_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><!-- 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>ControlElementContainer.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_control_element_container_8h.html">ControlElementContainer.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/_control_element_solver_8cpp_source.html b/docs/doxygen/html/_control_element_solver_8cpp_source.html index c1d832a..7449d9b 100644 --- a/docs/doxygen/html/_control_element_solver_8cpp_source.html +++ b/docs/doxygen/html/_control_element_solver_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,16 +88,27 @@ $(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="preprocessor">#include "ControlElementSolver.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "ControlElementContainer.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ControlEditor.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "ConnectionLine.h"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include "Constant.h"</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "Exponential.h"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "Gain.h"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "IOControl.h"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include "Limiter.h"</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "Multiplier.h"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "RateLimiter.h"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "Sum.h"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "TransferFunction.h"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> ControlElementSolver::ControlElementSolver(<a class="code" href="class_control_editor.html">ControlEditor</a>* controlEditor,</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordtype">double</span> timeStep,</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keywordtype">double</span> integrationError,</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keywordtype">bool</span> startAllZero,</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordtype">double</span> input)</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_ctrlContainer = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_ctrlContainer->FillContainer(controlEditor);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  Initialize(controlEditor, timeStep, integrationError, startAllZero, input);</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> ControlElementSolver::ControlElementSolver(<a class="code" href="class_control_element_container.html">ControlElementContainer</a>* ctrlContainer,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">double</span> timeStep,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordtype">double</span> integrationError,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">bool</span> startAllZero,</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">double</span> input,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  wxWindow* parent)</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_ctrlContainer = ctrlContainer;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  Initialize(parent, timeStep, integrationError, startAllZero, input);</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> ControlElementSolver::Initialize(wxWindow* parent,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">double</span> timeStep,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">double</span> integrationError,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">bool</span> startAllZero,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">double</span> input)</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">// Check if the sistem have one input and one output</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">bool</span> fail = <span class="keyword">false</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  wxString failMessage = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">auto</span> ioList = m_ctrlContainer->GetIOControlList();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span>(ioList.size() != 2) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  fail = <span class="keyword">true</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  failMessage = _(<span class="stringliteral">"The control system must have one input and one output."</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> haveInput, haveOutput;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  haveInput = haveOutput = <span class="keyword">false</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 = ioList.begin(), itEnd = ioList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_i_o_control.html">IOControl</a>* io = *it;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span>(io->GetType() == Node::NODE_OUT) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_inputControl = io;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  haveInput = <span class="keyword">true</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(io->GetType() == Node::NODE_IN) {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_outputControl = io;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  haveOutput = <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>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">if</span>(!fail && !haveInput) {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  fail = <span class="keyword">true</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  failMessage = _(<span class="stringliteral">"There is no input in the control system."</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="keywordflow">if</span>(!fail && !haveOutput) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  fail = <span class="keyword">true</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  failMessage = _(<span class="stringliteral">"There is no output in the control system."</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>(!fail) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</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="l00074"></a><span class="lineno"> 74</span>  fail = <span class="keyword">true</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  failMessage = _(<span class="stringliteral">"Input not connected."</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> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_timeStep = timeStep;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_integrationError = integrationError;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span>(!fail) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">if</span>(!InitializeValues(input, startAllZero)) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  fail = <span class="keyword">true</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  failMessage = _(<span class="stringliteral">"It was not possible to initialize the control system."</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>  }</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>(fail) {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  wxMessageDialog msgDialog(parent, failMessage, _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_isOK = <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> }</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">bool</span> ControlElementSolver::InitializeValues(<span class="keywordtype">double</span> input, <span class="keywordtype">bool</span> startAllZero)</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">// Reset Elements values</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">auto</span> elementList = m_ctrlContainer->GetControlElementsList();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</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="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  element->SetSolved(<span class="keyword">false</span>);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  element->SetOutput(0.0);</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">auto</span> tfList = m_ctrlContainer->GetTFList();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</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="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="class_transfer_function.html">TransferFunction</a>* tf = *it;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  tf->CalculateSpaceState(100, m_integrationError);</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="keyword">auto</span> connectionLineList = m_ctrlContainer->GetConnectionLineList();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</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="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  cLine->SetSolved(<span class="keyword">false</span>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  cLine->SetValue(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"> 117</span>  <span class="keywordflow">if</span>(!startAllZero) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">double</span> origTimeStep = m_timeStep;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">double</span> minStep = m_timeStep / 10;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordtype">double</span> maxStep = m_timeStep * 10;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// Calculate the steady-state results according to the input.</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">double</span> minError = 1e-7 * m_timeStep;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">int</span> maxIteration = 100 / m_timeStep;</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">double</span> prevSol = 0.0;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordtype">double</span> currentSol = 1.0;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordtype">double</span> error = 1.0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordtype">double</span> prevError = 1.0;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordtype">int</span> numIt = 0;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">while</span>(error > minError) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  prevSol = currentSol;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  prevError = error;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  SolveNextStep(input);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  currentSol = GetLastSolution();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  numIt++;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  error = std::abs(prevSol - currentSol);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span>(std::abs(error - prevError) < 1e-1) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(m_timeStep < maxStep) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  m_timeStep *= 1.5;</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">else</span> <span class="keywordflow">if</span>(std::abs(error - prevError) > 10) {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span>(m_timeStep > minStep) {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  m_timeStep /= 1.5;</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="keywordflow">if</span>(numIt >= maxIteration) <span class="keywordflow">return</span> <span class="keyword">false</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>  m_timeStep = origTimeStep;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  m_solutions.clear();</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>  <span class="keywordflow">return</span> <span class="keyword">true</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> ControlElementSolver::SolveNextStep(<span class="keywordtype">double</span> input)</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">// Set all elements as not solved</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">auto</span> elementList = m_ctrlContainer->GetControlElementsList();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</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="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  element->SetSolved(<span class="keyword">false</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="keyword">auto</span> connectionLineList = m_ctrlContainer->GetConnectionLineList();</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</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="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  cLine->SetSolved(<span class="keyword">false</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> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">// Get first node and set input value on connected lines</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</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="l00171"></a><span class="lineno"> 171</span>  m_inputControl->SetSolved();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  firstConn->SetValue(input);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  firstConn->SetSolved();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  FillAllConnectedChildren(firstConn);</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="comment">// Set value to the connected lines in constants</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">auto</span> constantList = m_ctrlContainer->GetConstantList();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</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="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="class_constant.html">Constant</a>* constant = *it;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</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="l00181"></a><span class="lineno"> 181</span>  constant->SetSolved();</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</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="l00183"></a><span class="lineno"> 183</span>  child->SetValue(constant->GetValue());</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  child->SetSolved();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  FillAllConnectedChildren(child);</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> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* currentLine = firstConn;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">while</span>(currentLine) {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  currentLine = SolveNextElement(currentLine);</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>  <span class="keywordtype">bool</span> haveUnsolvedElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">while</span>(haveUnsolvedElement) {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  haveUnsolvedElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</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="l00198"></a><span class="lineno"> 198</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="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">if</span>(cLine->IsSolved()) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keyword">auto</span> parentList = cLine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</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="l00203"></a><span class="lineno"> 203</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="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">if</span>(!parent->IsSolved()) {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  haveUnsolvedElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// Solve secondary branch.</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  currentLine = cLine;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">while</span>(currentLine) {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  currentLine = SolveNextElement(currentLine);</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">break</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>  }</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">if</span>(haveUnsolvedElement) <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> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="comment">// Set the control system step output.</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</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="l00221"></a><span class="lineno"> 221</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="l00222"></a><span class="lineno"> 222</span>  m_solutions.push_back(cLine->GetValue());</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  m_solutions.push_back(0.0);</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="keywordtype">void</span> ControlElementSolver::FillAllConnectedChildren(<a class="code" href="class_connection_line.html">ConnectionLine</a>* parent)</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>  <span class="keyword">auto</span> childList = parent->GetLineChildList();</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</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="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* child = *it;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  child->SetValue(parent->GetValue());</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  child->SetSolved();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  FillAllConnectedChildren(child);</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"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</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="l00239"></a><span class="lineno"> 239</span> {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keyword">auto</span> parentList = currentLine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</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="l00242"></a><span class="lineno"> 242</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="l00243"></a><span class="lineno"> 243</span>  <span class="comment">// Solve the unsolved parent.</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">if</span>(!element->IsSolved()) {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">if</span>(!element->Solve(currentLine->GetValue(), m_timeStep)) <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  element->SetSolved();</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="comment">// Get the output node (must have one or will result NULL).</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="class_node.html">Node</a>* outNode = NULL;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keyword">auto</span> nodeList = element->GetNodeList();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</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="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span>(node->GetNodeType() == Node::NODE_OUT) outNode = node;</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="keywordflow">if</span>(!outNode) <span class="keywordflow">return</span> NULL;</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="comment">// Set connection line value associated with the output node.</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keyword">auto</span> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</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="l00260"></a><span class="lineno"> 260</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="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span>(!cLine->IsSolved()) { <span class="comment">// Only check unsolved lines</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="comment">// Check if the connection line have the output node on the list</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keyword">auto</span> lineNodeList = cLine->GetNodeList();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</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="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="class_node.html">Node</a>* childNode = *itCN;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">if</span>(childNode == outNode) {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="comment">// Check if the line connect two elements, otherwise return NULL</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span>(cLine->GetType() != ConnectionLine::ELEMENT_ELEMENT) <span class="keywordflow">return</span> NULL;</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="comment">// Set the connection line value and return it.</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  cLine->SetValue(element->GetOutput());</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  cLine->SetSolved();</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  FillAllConnectedChildren(cLine);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">return</span> cLine;</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>  }</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"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</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#l00517">Element.h:517</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#l00523">Element.h:523</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</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="ttdef"><b>Definition:</b> <a href="_i_o_control_8h_source.html#l00011">IOControl.h:11</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="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00020">ControlElementContainer.h:20</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="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00006">ConnectionLine.h:6</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#l00011">TransferFunction.h:11</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#l00067">ControlEditor.h:67</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#l00053">ControlElement.h:53</a></div></div> -<div class="ttc" id="class_constant_html"><div class="ttname"><a href="class_constant.html">Constant</a></div><div class="ttdef"><b>Definition:</b> <a href="_constant_8h_source.html#l00011">Constant.h:11</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 "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="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_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="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="_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> +<div class="ttc" id="_exponential_8h_html"><div class="ttname"><a href="_exponential_8h.html">Exponential.h</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="_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="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 --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_control_element_solver_8h.html b/docs/doxygen/html/_control_element_solver_8h.html new file mode 100644 index 0000000..6b14201 --- /dev/null +++ b/docs/doxygen/html/_control_element_solver_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/ControlElementSolver.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('_control_element_solver_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">ControlElementSolver.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include <wx/window.h></code><br /> +<code>#include <vector></code><br /> +</div> +<p><a href="_control_element_solver_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_control_element_solver.html">ControlElementSolver</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">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. <a href="class_control_element_solver.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="_control_element_solver_8h.html">ControlElementSolver.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/_control_element_solver_8h_source.html b/docs/doxygen/html/_control_element_solver_8h_source.html index 006dfa1..5fb831f 100644 --- a/docs/doxygen/html/_control_element_solver_8h_source.html +++ b/docs/doxygen/html/_control_element_solver_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,25 +88,25 @@ $(document).ready(function(){initNavTree('_control_element_solver_8h_source.html <div class="title">ControlElementSolver.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="preprocessor">#ifndef CONTROLELEMENTSOLVER_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define CONTROLELEMENTSOLVER_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <wx/window.h></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="keyword">class </span><a class="code" href="class_control_element_container.html">ControlElementContainer</a>;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="keyword">class </span><a class="code" href="class_control_editor.html">ControlEditor</a>;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="keyword">class </span><a class="code" href="class_connection_line.html">ConnectionLine</a>;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="keyword">class </span><a class="code" href="class_constant.html">Constant</a>;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="keyword">class </span><a class="code" href="class_exponential.html">Exponential</a>;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="keyword">class </span><a class="code" href="class_gain.html">Gain</a>;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="keyword">class </span><a class="code" href="class_i_o_control.html">IOControl</a>;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="keyword">class </span><a class="code" href="class_limiter.html">Limiter</a>;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="keyword">class </span><a class="code" href="class_multiplier.html">Multiplier</a>;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keyword">class </span><a class="code" href="class_rate_limiter.html">RateLimiter</a>;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="keyword">class </span><a class="code" href="class_sum.html">Sum</a>;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">class </span><a class="code" href="class_transfer_function.html">TransferFunction</a>;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="class_control_element_solver.html"> 20</a></span> <span class="keyword">class </span><a class="code" href="class_control_element_solver.html">ControlElementSolver</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="keyword">public</span>:</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>() {}</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</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="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">double</span> timeStep = 1e-3,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordtype">double</span> integrationError = 1e-3,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">bool</span> startAllZero = <span class="keyword">true</span>,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">double</span> input = 0.0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</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="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> timeStep = 1e-3,</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">double</span> integrationError = 1e-3,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">bool</span> startAllZero = <span class="keyword">true</span>,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">double</span> input = 0.0,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  wxWindow* parent = NULL);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_control_element_solver.html">ControlElementSolver</a>() {}</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</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="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SolveNextStep(<span class="keywordtype">double</span> input);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> std::vector<double> GetSolutions() { <span class="keywordflow">return</span> m_solutions; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</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="l00040"></a><span class="lineno"> 40</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="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> 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="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">void</span> FillAllConnectedChildren(<a class="code" href="class_connection_line.html">ConnectionLine</a>* parent);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</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="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_control_element_container.html">ControlElementContainer</a>* m_ctrlContainer = NULL;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> m_timeStep;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">double</span> m_integrationError;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::vector<double> m_solutions;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">bool</span> m_isOK = <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>  <a class="code" href="class_i_o_control.html">IOControl</a>* m_inputControl = NULL;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="class_i_o_control.html">IOControl</a>* m_outputControl = 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> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</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="ttdef"><b>Definition:</b> <a href="_multiplier_8h_source.html#l00008">Multiplier.h:8</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="ttdef"><b>Definition:</b> <a href="_control_element_solver_8h_source.html#l00020">ControlElementSolver.h:20</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#l00009">Sum.h:9</a></div></div> -<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00011">Gain.h:11</a></div></div> -<div class="ttc" id="class_limiter_html"><div class="ttname"><a href="class_limiter.html">Limiter</a></div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8h_source.html#l00008">Limiter.h:8</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="ttdef"><b>Definition:</b> <a href="_i_o_control_8h_source.html#l00011">IOControl.h:11</a></div></div> -<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00008">Exponential.h:8</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="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00008">RateLimiter.h:8</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="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00020">ControlElementContainer.h:20</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="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00006">ConnectionLine.h:6</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#l00011">TransferFunction.h:11</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#l00067">ControlEditor.h:67</a></div></div> -<div class="ttc" id="class_constant_html"><div class="ttname"><a href="class_constant.html">Constant</a></div><div class="ttdef"><b>Definition:</b> <a href="_constant_8h_source.html#l00011">Constant.h:11</a></div></div> +<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_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_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_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 --> </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>ControlElementSolver.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_control_element_solver_8h.html">ControlElementSolver.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/_control_system_test_8cpp_source.html b/docs/doxygen/html/_control_system_test_8cpp_source.html index e8244c7..c0230ae 100644 --- a/docs/doxygen/html/_control_system_test_8cpp_source.html +++ b/docs/doxygen/html/_control_system_test_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,8 +88,10 @@ $(document).ready(function(){initNavTree('_control_system_test_8cpp_source.html' <div class="title">ControlSystemTest.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 "ControlSystemTest.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "ControlEditor.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> ControlSystemTest::ControlSystemTest(<a class="code" href="class_control_editor.html">ControlEditor</a>* parent,</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  <span class="keywordtype">int</span>* inputType,</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  <span class="keywordtype">double</span>* startTime,</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  <span class="keywordtype">double</span>* slope,</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  <span class="keywordtype">double</span>* timeStep,</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keywordtype">double</span>* simTime)</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  : <a class="code" href="class_control_system_test_base.html">ControlSystemTestBase</a>(parent)</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> {</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  SetSize(GetBestSize());</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>  m_inputType = inputType;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_startTime = startTime;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_slope = slope;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  m_timeStep = timeStep;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  m_simTime = simTime;</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>  m_choiceInput->SetSelection(*m_inputType);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  m_textCtrlStartTime->SetValue(wxString::FromDouble(*m_startTime));</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_textCtrlSlope->SetValue(wxString::FromDouble(*m_slope));</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_textCtrlTimeStep->SetValue(wxString::FromDouble(*m_timeStep));</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_textCtrlSimTime->SetValue(wxString::FromDouble(*m_simTime));</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> ControlSystemTest::~ControlSystemTest() {}</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keywordtype">void</span> ControlSystemTest::OnRunButtonClick(wxCommandEvent& event)</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="keywordtype">int</span> inputType;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">double</span> startTime, slope, timeStep, simTime;</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>  inputType = m_choiceInput->GetSelection();</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>(!m_textCtrlStartTime->GetValue().ToDouble(&startTime)) {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Value entered incorrectly in the field \"Start time\"."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">return</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>  <span class="keywordflow">if</span>(!m_textCtrlSlope->GetValue().ToDouble(&slope)) {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Value entered incorrectly in the field \"Slope\"."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</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="keywordflow">if</span>(!m_textCtrlTimeStep->GetValue().ToDouble(&timeStep)) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Value entered incorrectly in the field \"Time step\"."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</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="keywordflow">if</span>(!m_textCtrlSimTime->GetValue().ToDouble(&simTime)) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Value entered incorrectly in the field \"Simulation time\"."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">return</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>  *m_inputType = inputType;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  *m_startTime = startTime;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  *m_slope = slope;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  *m_timeStep = timeStep;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  *m_simTime = simTime;</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>  EndModal(wxID_OK);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> }</div><div class="ttc" id="class_control_system_test_base_html"><div class="ttname"><a href="class_control_system_test_base.html">ControlSystemTestBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_editor_base_8h_source.html#l00095">ControlEditorBase.h:95</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#l00067">ControlEditor.h:67</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_system_test_8h.html">ControlSystemTest.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> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> ControlSystemTest::ControlSystemTest(<a class="code" href="class_control_editor.html">ControlEditor</a>* parent,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keywordtype">int</span>* inputType,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordtype">double</span>* startTime,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordtype">double</span>* slope,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">double</span>* timeStep,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordtype">double</span>* simTime)</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  : <a class="code" href="class_control_system_test_base.html">ControlSystemTestBase</a>(parent)</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>  SetSize(GetBestSize());</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_inputType = inputType;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_startTime = startTime;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_slope = slope;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_timeStep = timeStep;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_simTime = simTime;</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_choiceInput->SetSelection(*m_inputType);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_textCtrlStartTime->SetValue(wxString::FromDouble(*m_startTime));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_textCtrlSlope->SetValue(wxString::FromDouble(*m_slope));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_textCtrlTimeStep->SetValue(wxString::FromDouble(*m_timeStep));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_textCtrlSimTime->SetValue(wxString::FromDouble(*m_simTime));</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> ControlSystemTest::~ControlSystemTest() {}</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keywordtype">void</span> ControlSystemTest::OnRunButtonClick(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>  <span class="keywordtype">int</span> inputType;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">double</span> startTime, slope, timeStep, simTime;</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>  inputType = m_choiceInput->GetSelection();</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">if</span>(!m_textCtrlStartTime->GetValue().ToDouble(&startTime)) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Value entered incorrectly in the field \"Start time\"."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">return</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"> 59</span>  <span class="keywordflow">if</span>(!m_textCtrlSlope->GetValue().ToDouble(&slope)) {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Value entered incorrectly in the field \"Slope\"."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">return</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> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(!m_textCtrlTimeStep->GetValue().ToDouble(&timeStep)) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Value entered incorrectly in the field \"Time step\"."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">return</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>  <span class="keywordflow">if</span>(!m_textCtrlSimTime->GetValue().ToDouble(&simTime)) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Value entered incorrectly in the field \"Simulation time\"."</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>  msgDialog.ShowModal();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</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>  *m_inputType = inputType;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  *m_startTime = startTime;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  *m_slope = slope;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  *m_timeStep = timeStep;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  *m_simTime = simTime;</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>  EndModal(wxID_OK);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> }</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="_control_editor_8h_html"><div class="ttname"><a href="_control_editor_8h.html">ControlEditor.h</a></div></div> +<div class="ttc" id="class_control_system_test_base_html"><div class="ttname"><a href="class_control_system_test_base.html">ControlSystemTestBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_editor_base_8h_source.html#l00095">ControlEditorBase.h:95</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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_control_system_test_8h.html b/docs/doxygen/html/_control_system_test_8h.html new file mode 100644 index 0000000..b414db8 --- /dev/null +++ b/docs/doxygen/html/_control_system_test_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/ControlSystemTest.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('_control_system_test_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">ControlSystemTest.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ControlEditorBase.h"</code><br /> +</div> +<p><a href="_control_system_test_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_control_system_test.html">ControlSystemTest</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit properties to test the control system created. <a href="class_control_system_test.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="_control_system_test_8h.html">ControlSystemTest.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/_control_system_test_8h_source.html b/docs/doxygen/html/_control_system_test_8h_source.html index 999877f..cf82a39 100644 --- a/docs/doxygen/html/_control_system_test_8h_source.html +++ b/docs/doxygen/html/_control_system_test_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,15 @@ $(document).ready(function(){initNavTree('_control_system_test_8h_source.html',' <div class="title">ControlSystemTest.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="preprocessor">#ifndef CONTROLSYSTEMTEST_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define CONTROLSYSTEMTEST_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ControlEditorBase.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_control_editor.html">ControlEditor</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_control_system_test.html"> 8</a></span> <span class="keyword">class </span><a class="code" href="class_control_system_test.html">ControlSystemTest</a> : <span class="keyword">public</span> <a class="code" href="class_control_system_test_base.html">ControlSystemTestBase</a></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <a class="code" href="class_control_system_test.html">ControlSystemTest</a>(<a class="code" href="class_control_editor.html">ControlEditor</a>* parent, <span class="keywordtype">int</span>* inputType, <span class="keywordtype">double</span>* startTime, <span class="keywordtype">double</span>* slope, <span class="keywordtype">double</span>* timeStep, <span class="keywordtype">double</span>* simTime);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_control_system_test.html">ControlSystemTest</a>();</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">protected</span>:</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRunButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordtype">int</span>* m_inputType = NULL;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keywordtype">double</span>* m_startTime = NULL;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keywordtype">double</span>* m_slope = NULL;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordtype">double</span>* m_timeStep = NULL;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keywordtype">double</span>* m_simTime = NULL;</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">#endif // CONTROLSYSTEMTEST_H</span></div><div class="ttc" id="class_control_system_test_base_html"><div class="ttname"><a href="class_control_system_test_base.html">ControlSystemTestBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_editor_base_8h_source.html#l00095">ControlEditorBase.h:95</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#l00067">ControlEditor.h:67</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="ttdef"><b>Definition:</b> <a href="_control_system_test_8h_source.html#l00008">ControlSystemTest.h:8</a></div></div> +<a href="_control_system_test_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 CONTROLSYSTEMTEST_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CONTROLSYSTEMTEST_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> </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> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_control_system_test.html"> 32</a></span> <span class="keyword">class </span><a class="code" href="class_control_system_test.html">ControlSystemTest</a> : <span class="keyword">public</span> <a class="code" href="class_control_system_test_base.html">ControlSystemTestBase</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_control_system_test.html">ControlSystemTest</a>(<a class="code" href="class_control_editor.html">ControlEditor</a>* parent,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">int</span>* inputType,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">double</span>* startTime,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">double</span>* slope,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">double</span>* timeStep,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">double</span>* simTime);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_control_system_test.html">ControlSystemTest</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="keyword">protected</span>:</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) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRunButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">int</span>* m_inputType = NULL;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span>* m_startTime = NULL;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">double</span>* m_slope = NULL;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">double</span>* m_timeStep = NULL;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">double</span>* m_simTime = NULL;</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 // CONTROLSYSTEMTEST_H</span></div><div class="ttc" id="class_control_system_test_base_html"><div class="ttname"><a href="class_control_system_test_base.html">ControlSystemTestBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_editor_base_8h_source.html#l00095">ControlEditorBase.h:95</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_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 --> </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>ControlSystemTest.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_control_system_test_8h.html">ControlSystemTest.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/_data_report_8cpp_source.html b/docs/doxygen/html/_data_report_8cpp_source.html index 66ec420..2975535 100644 --- a/docs/doxygen/html/_data_report_8cpp_source.html +++ b/docs/doxygen/html/_data_report_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,25 +88,27 @@ $(document).ready(function(){initNavTree('_data_report_8cpp_source.html','');}); <div class="title">DataReport.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 "DataReport.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "Workspace.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> DataReport::DataReport(wxWindow* parent, <a class="code" href="class_workspace.html">Workspace</a>* workspace) : <a class="code" href="class_data_report_base.html">DataReportBase</a>(parent)</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  m_workspace = workspace;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  m_headerColour = wxColour(150, 150, 150);</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_offlineColour = wxColour(100, 100, 100);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  m_oddRowColour = wxColour(220, 220, 220);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_evenRowColour = wxColour(255, 255, 255);</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>  CreateGrids();</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  SetHeaders();</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  FillValues();</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>  SetRowsColours(m_gridPowerFlow);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  SetRowsColours(m_gridPFBuses);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  SetRowsColours(m_gridPFBranches);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  SetRowsColours(m_gridFault, 2);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  SetRowsColours(m_gridFaultBuses, 2);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  SetRowsColours(m_gridFaultBranches, 2);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  SetRowsColours(m_gridFaultGenerators, 2);</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>  Layout();</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> DataReport::~DataReport() {}</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keywordtype">void</span> DataReport::CreateGrids()</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>  wxFont headerFont = m_gridPowerFlow->GetLabelFont();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  headerFont.SetWeight(wxFONTWEIGHT_BOLD);</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_electric_calculation.html">ElectricCalculation</a> eCalc;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  eCalc.<a class="code" href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">GetElementsFromList</a>(m_workspace->GetElementList());</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">auto</span> lineList = eCalc.<a class="code" href="class_electric_calculation.html#af8eff271de83898c536deda1aab22d48">GetLineList</a>();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">auto</span> transformerList = eCalc.<a class="code" href="class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e">GetTransformerList</a>();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">auto</span> busList = eCalc.<a class="code" href="class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24">GetBusList</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">auto</span> generatorList = eCalc.<a class="code" href="class_electric_calculation.html#ad8719b10c3c4b85b316d3daa71064840">GetSyncGeneratorList</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="comment">// Power Flow</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_gridPowerFlow->AppendCols(7);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  m_gridPowerFlow->AppendRows();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_gridPowerFlow->HideColLabels();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_gridPowerFlow->HideRowLabels();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 7; ++i) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_gridPowerFlow->SetCellBackgroundColour(0, i, m_headerColour);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_gridPowerFlow->SetCellFont(0, i, headerFont);</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_gridPowerFlow->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// Values</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_gridPowerFlow->AppendRows((lineList.size() + transformerList.size()) * 2);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_gridPowerFlow->AutoSize();</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">// Power Flow buses</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_gridPFBuses->AppendCols(6);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_gridPFBuses->AppendRows();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_gridPFBuses->HideColLabels();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  m_gridPFBuses->HideRowLabels();</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 < 6; ++i) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_gridPFBuses->SetCellBackgroundColour(0, i, m_headerColour);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_gridPFBuses->SetCellFont(0, i, headerFont);</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_gridPFBuses->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// Values</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_gridPFBuses->AppendRows(busList.size());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_gridPFBuses->AutoSize();</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">// Power flow branches</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_gridPFBranches->AppendCols(10);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_gridPFBranches->AppendRows(1);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_gridPFBranches->HideColLabels();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_gridPFBranches->HideRowLabels();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 10; ++i) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_gridPFBranches->SetCellBackgroundColour(0, i, m_headerColour);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_gridPFBranches->SetCellFont(0, i, headerFont);</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>  m_gridPFBranches->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// Values</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_gridPFBranches->AppendRows(lineList.size() + transformerList.size());</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_gridPFBranches->AutoSize();</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="comment">// Fault</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_gridFault->AppendCols(7);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_gridFault->AppendRows(2);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_gridFault->HideColLabels();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_gridFault->HideRowLabels();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 7; ++j) {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_gridFault->SetCellBackgroundColour(i, j, m_headerColour);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_gridFault->SetCellFont(i, j, headerFont);</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>  m_gridFault->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_gridFault->SetCellSize(0, 0, 2, 1);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_gridFault->SetCellSize(0, 1, 1, 2);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_gridFault->SetCellSize(0, 3, 1, 2);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_gridFault->SetCellSize(0, 5, 1, 2);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">// Values</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = busList.begin(), itEnd = busList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span>(bus->GetElectricalData().hasFault) m_gridFault->AppendRows();</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_gridFault->AutoSize();</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="comment">// Fault buses</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_gridFaultBuses->AppendCols(7);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  m_gridFaultBuses->AppendRows(2);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_gridFaultBuses->HideColLabels();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  m_gridFaultBuses->HideRowLabels();</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 < 2; ++i) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 7; ++j) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_gridFaultBuses->SetCellBackgroundColour(i, j, m_headerColour);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_gridFaultBuses->SetCellFont(i, j, headerFont);</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_gridFaultBuses->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  m_gridFaultBuses->SetCellSize(0, 0, 2, 1);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_gridFaultBuses->SetCellSize(0, 1, 1, 2);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_gridFaultBuses->SetCellSize(0, 3, 1, 2);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_gridFaultBuses->SetCellSize(0, 5, 1, 2);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// Values</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_gridFaultBuses->AppendRows(busList.size());</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_gridFaultBuses->AutoSize();</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="comment">// Fault branches</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_gridFaultBranches->AppendCols(11);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_gridFaultBranches->AppendRows(2);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_gridFaultBranches->HideColLabels();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  m_gridFaultBranches->HideRowLabels();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 11; ++j) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  m_gridFaultBranches->SetCellBackgroundColour(i, j, m_headerColour);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_gridFaultBranches->SetCellFont(i, j, headerFont);</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>  m_gridFaultBranches->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  m_gridFaultBranches->SetCellSize(0, 0, 2, 1);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  m_gridFaultBranches->SetCellSize(0, 1, 2, 1);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  m_gridFaultBranches->SetCellSize(0, 2, 2, 1);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_gridFaultBranches->SetCellSize(0, 3, 2, 1);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  m_gridFaultBranches->SetCellSize(0, 10, 2, 1);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_gridFaultBranches->SetCellSize(0, 4, 1, 2);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_gridFaultBranches->SetCellSize(0, 6, 1, 2);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  m_gridFaultBranches->SetCellSize(0, 8, 1, 2);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// Values</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  m_gridFaultBranches->AppendRows((lineList.size() + transformerList.size()) * 2);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  m_gridFaultBranches->AutoSize();</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">// Fault generators</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_gridFaultGenerators->AppendCols(7);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  m_gridFaultGenerators->AppendRows(2);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_gridFaultGenerators->HideColLabels();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  m_gridFaultGenerators->HideRowLabels();</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 < 2; ++i) {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 7; ++j) {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_gridFaultGenerators->SetCellBackgroundColour(i, j, m_headerColour);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  m_gridFaultGenerators->SetCellFont(i, j, headerFont);</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>  m_gridFaultGenerators->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  m_gridFaultGenerators->SetCellSize(0, 0, 2, 1);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  m_gridFaultGenerators->SetCellSize(0, 1, 1, 2);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  m_gridFaultGenerators->SetCellSize(0, 3, 1, 2);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_gridFaultGenerators->SetCellSize(0, 5, 1, 2);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// Values</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  m_gridFaultGenerators->AppendRows(generatorList.size());</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_gridFaultGenerators->AutoSize();</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="keywordtype">void</span> DataReport::SetHeaders()</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">// Headers choices fill</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  wxString omega = <span class="keyword">static_cast<</span>wxString<span class="keyword">></span>(L<span class="stringliteral">'\u03A9'</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>  m_voltageChoices.Add(_(<span class="stringliteral">"Voltage (p.u.)"</span>));</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  m_voltageChoices.Add(_(<span class="stringliteral">"Voltage (V)"</span>));</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  m_voltageChoices.Add(_(<span class="stringliteral">"Voltage (kV)"</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>  m_activePowerChoices.Add(_(<span class="stringliteral">"Active Power (p.u.)"</span>));</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  m_activePowerChoices.Add(_(<span class="stringliteral">"Active Power (W)"</span>));</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  m_activePowerChoices.Add(_(<span class="stringliteral">"Active Power (kW)"</span>));</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  m_activePowerChoices.Add(_(<span class="stringliteral">"Active Power (MW)"</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>  m_reactivePowerChoices.Add(_(<span class="stringliteral">"Reactive Power (p.u.)"</span>));</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  m_reactivePowerChoices.Add(_(<span class="stringliteral">"Reactive Power (VAr)"</span>));</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  m_reactivePowerChoices.Add(_(<span class="stringliteral">"Reactive Power (kVAr)"</span>));</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  m_reactivePowerChoices.Add(_(<span class="stringliteral">"Reactive Power (MVAr)"</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>  m_resistanceChoices.Add(_(<span class="stringliteral">"R (p.u.)"</span>));</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  m_resistanceChoices.Add(_(<span class="stringliteral">"R ("</span>) + omega + wxT(<span class="stringliteral">")"</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>  m_indReactanceChoices.Add(_(<span class="stringliteral">"XL (p.u.)"</span>));</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  m_indReactanceChoices.Add(_(<span class="stringliteral">"XL ("</span>) + omega + wxT(<span class="stringliteral">")"</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_capSusceptanceChoices.Add(_(<span class="stringliteral">"B (p.u.)"</span>));</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  m_capSusceptanceChoices.Add(_(<span class="stringliteral">"B (S)"</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>  m_currentChoices.Add(_(<span class="stringliteral">"Current (p.u.)"</span>));</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  m_currentChoices.Add(_(<span class="stringliteral">"Current (A)"</span>));</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  m_currentChoices.Add(_(<span class="stringliteral">"Current (kA)"</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="comment">// Power flow</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  m_gridPowerFlow->SetCellValue(0, 0, _(<span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  m_gridPowerFlow->SetCellValue(0, 1, _(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  m_gridPowerFlow->SetCellValue(0, 2, _(<span class="stringliteral">"From"</span>));</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  m_gridPowerFlow->SetCellValue(0, 3, _(<span class="stringliteral">"To"</span>));</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  m_gridPowerFlow->SetCellEditor(0, 4, <span class="keyword">new</span> wxGridCellChoiceEditor(m_activePowerChoices));</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  m_gridPowerFlow->SetCellValue(0, 4, m_activePowerChoices[3]);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  m_gridPowerFlow->SetCellEditor(0, 5, <span class="keyword">new</span> wxGridCellChoiceEditor(m_reactivePowerChoices));</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  m_gridPowerFlow->SetCellValue(0, 5, m_reactivePowerChoices[3]);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  m_gridPowerFlow->SetCellValue(0, 6, _(<span class="stringliteral">"Online"</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="comment">// Power flow buses</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  m_gridPFBuses->SetCellValue(0, 0, _(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  m_gridPFBuses->SetCellValue(0, 1, _(<span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  m_gridPFBuses->SetCellEditor(0, 2, <span class="keyword">new</span> wxGridCellChoiceEditor(m_voltageChoices));</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  m_gridPFBuses->SetCellValue(0, 2, m_voltageChoices[0]);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  m_gridPFBuses->SetCellValue(0, 3, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_gridPFBuses->SetCellEditor(0, 4, <span class="keyword">new</span> wxGridCellChoiceEditor(m_activePowerChoices));</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  m_gridPFBuses->SetCellValue(0, 4, m_activePowerChoices[3]);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  m_gridPFBuses->SetCellEditor(0, 5, <span class="keyword">new</span> wxGridCellChoiceEditor(m_reactivePowerChoices));</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  m_gridPFBuses->SetCellValue(0, 5, m_reactivePowerChoices[3]);</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>  <span class="comment">// Power flow branches</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  m_gridPFBranches->SetCellValue(0, 0, _(<span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  m_gridPFBranches->SetCellValue(0, 1, _(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  m_gridPFBranches->SetCellValue(0, 2, _(<span class="stringliteral">"From"</span>));</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  m_gridPFBranches->SetCellValue(0, 3, _(<span class="stringliteral">"To"</span>));</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  m_gridPFBranches->SetCellEditor(0, 4, <span class="keyword">new</span> wxGridCellChoiceEditor(m_resistanceChoices));</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  m_gridPFBranches->SetCellValue(0, 4, m_resistanceChoices[0]);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  m_gridPFBranches->SetCellEditor(0, 5, <span class="keyword">new</span> wxGridCellChoiceEditor(m_indReactanceChoices));</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  m_gridPFBranches->SetCellValue(0, 5, m_indReactanceChoices[0]);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  m_gridPFBranches->SetCellEditor(0, 6, <span class="keyword">new</span> wxGridCellChoiceEditor(m_capSusceptanceChoices));</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  m_gridPFBranches->SetCellValue(0, 6, m_capSusceptanceChoices[0]);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  m_gridPFBranches->SetCellValue(0, 7, _(<span class="stringliteral">"TAP"</span>));</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  m_gridPFBranches->SetCellValue(0, 8, _(<span class="stringliteral">"Phase Shift"</span>));</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  m_gridPFBranches->SetCellValue(0, 9, _(<span class="stringliteral">"Online"</span>));</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="comment">// Fault</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  m_gridFault->SetCellValue(0, 0, _(<span class="stringliteral">"Fault bus name"</span>));</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  m_gridFault->SetCellValue(0, 1, _(<span class="stringliteral">"Phase A"</span>));</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  m_gridFault->SetCellValue(0, 3, _(<span class="stringliteral">"Phase B"</span>));</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  m_gridFault->SetCellValue(0, 5, _(<span class="stringliteral">"Phase C"</span>));</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  m_gridFault->SetCellEditor(1, 1, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  m_gridFault->SetCellValue(1, 1, m_currentChoices[1]);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  m_gridFault->SetCellValue(1, 2, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  m_gridFault->SetCellEditor(1, 3, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  m_gridFault->SetCellValue(1, 3, m_currentChoices[1]);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  m_gridFault->SetCellValue(1, 4, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  m_gridFault->SetCellEditor(1, 5, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  m_gridFault->SetCellValue(1, 5, m_currentChoices[1]);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  m_gridFault->SetCellValue(1, 6, _(<span class="stringliteral">"Angle"</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>  <span class="comment">// Fault buses</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  m_gridFaultBuses->SetCellValue(0, 0, _(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  m_gridFaultBuses->SetCellValue(0, 1, _(<span class="stringliteral">"Phase A"</span>));</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  m_gridFaultBuses->SetCellValue(0, 3, _(<span class="stringliteral">"Phase B"</span>));</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  m_gridFaultBuses->SetCellValue(0, 5, _(<span class="stringliteral">"Phase C"</span>));</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  m_gridFaultBuses->SetCellEditor(1, 1, <span class="keyword">new</span> wxGridCellChoiceEditor(m_voltageChoices));</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  m_gridFaultBuses->SetCellValue(1, 1, m_voltageChoices[0]);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  m_gridFaultBuses->SetCellValue(1, 2, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  m_gridFaultBuses->SetCellEditor(1, 3, <span class="keyword">new</span> wxGridCellChoiceEditor(m_voltageChoices));</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  m_gridFaultBuses->SetCellValue(1, 3, m_voltageChoices[0]);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  m_gridFaultBuses->SetCellValue(1, 4, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  m_gridFaultBuses->SetCellEditor(1, 5, <span class="keyword">new</span> wxGridCellChoiceEditor(m_voltageChoices));</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  m_gridFaultBuses->SetCellValue(1, 5, m_voltageChoices[0]);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  m_gridFaultBuses->SetCellValue(1, 6, _(<span class="stringliteral">"Angle"</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>  <span class="comment">// Fault branches</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  m_gridFaultBranches->SetCellValue(0, 0, _(<span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  m_gridFaultBranches->SetCellValue(0, 1, _(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  m_gridFaultBranches->SetCellValue(0, 2, _(<span class="stringliteral">"From"</span>));</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  m_gridFaultBranches->SetCellValue(0, 3, _(<span class="stringliteral">"To"</span>));</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  m_gridFaultBranches->SetCellValue(0, 4, _(<span class="stringliteral">"Phase A"</span>));</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  m_gridFaultBranches->SetCellValue(0, 6, _(<span class="stringliteral">"Phase B"</span>));</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  m_gridFaultBranches->SetCellValue(0, 8, _(<span class="stringliteral">"Phase C"</span>));</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  m_gridFaultBranches->SetCellValue(0, 10, _(<span class="stringliteral">"Online"</span>));</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  m_gridFaultBranches->SetCellEditor(1, 4, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  m_gridFaultBranches->SetCellValue(1, 4, m_currentChoices[1]);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  m_gridFaultBranches->SetCellValue(1, 5, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  m_gridFaultBranches->SetCellEditor(1, 6, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  m_gridFaultBranches->SetCellValue(1, 6, m_currentChoices[1]);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  m_gridFaultBranches->SetCellValue(1, 7, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  m_gridFaultBranches->SetCellEditor(1, 8, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  m_gridFaultBranches->SetCellValue(1, 8, m_currentChoices[1]);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  m_gridFaultBranches->SetCellValue(1, 9, _(<span class="stringliteral">"Angle"</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="comment">// Fault generators</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  m_gridFaultGenerators->SetCellValue(0, 0, _(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_gridFaultGenerators->SetCellValue(0, 1, _(<span class="stringliteral">"Phase A"</span>));</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  m_gridFaultGenerators->SetCellValue(0, 3, _(<span class="stringliteral">"Phase B"</span>));</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  m_gridFaultGenerators->SetCellValue(0, 5, _(<span class="stringliteral">"Phase C"</span>));</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  m_gridFaultGenerators->SetCellEditor(1, 1, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  m_gridFaultGenerators->SetCellValue(1, 1, m_currentChoices[1]);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  m_gridFaultGenerators->SetCellValue(1, 2, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  m_gridFaultGenerators->SetCellEditor(1, 3, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  m_gridFaultGenerators->SetCellValue(1, 3, m_currentChoices[1]);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  m_gridFaultGenerators->SetCellValue(1, 4, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  m_gridFaultGenerators->SetCellEditor(1, 5, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  m_gridFaultGenerators->SetCellValue(1, 5, m_currentChoices[1]);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  m_gridFaultGenerators->SetCellValue(1, 6, _(<span class="stringliteral">"Angle"</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> <span class="keywordtype">void</span> DataReport::FillValues(GridSelection gridToFill)</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>  m_changingValues = <span class="keyword">true</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="class_electric_calculation.html">ElectricCalculation</a> eCalc;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  eCalc.<a class="code" href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">GetElementsFromList</a>(m_workspace->GetElementList());</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">double</span> basePower = m_workspace->GetProperties()->GetSimulationPropertiesData().basePower;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">switch</span>(m_workspace->GetProperties()->GetSimulationPropertiesData().basePowerUnit) {</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#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  basePower *= 1e3;</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#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  basePower *= 1e6;</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">default</span>:</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>  }</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="keywordtype">int</span> rowNumber = 1;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keyword">auto</span> lineList = eCalc.<a class="code" href="class_electric_calculation.html#af8eff271de83898c536deda1aab22d48">GetLineList</a>();</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keyword">auto</span> transformerList = eCalc.<a class="code" href="class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e">GetTransformerList</a>();</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keyword">auto</span> busList = eCalc.<a class="code" href="class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24">GetBusList</a>();</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keyword">auto</span> generatorList = eCalc.<a class="code" href="class_electric_calculation.html#ad8719b10c3c4b85b316d3daa71064840">GetSyncGeneratorList</a>();</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="comment">// Power Flow</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">if</span>(gridToFill == GRID_ALL || gridToFill == GRID_PF) {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordtype">double</span> kActivePower = 1.0;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">if</span>(m_gridPowerFlow->GetCellValue(0, 4) == m_activePowerChoices[1])</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  kActivePower = basePower;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPowerFlow->GetCellValue(0, 4) == m_activePowerChoices[2])</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  kActivePower = basePower / 1e3;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPowerFlow->GetCellValue(0, 4) == m_activePowerChoices[3])</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  kActivePower = basePower / 1e6;</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>  <span class="keywordtype">double</span> kReactivePower = 1.0;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">if</span>(m_gridPowerFlow->GetCellValue(0, 5) == m_reactivePowerChoices[1])</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  kReactivePower = basePower;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPowerFlow->GetCellValue(0, 5) == m_reactivePowerChoices[2])</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  kReactivePower = basePower / 1e3;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPowerFlow->GetCellValue(0, 5) == m_reactivePowerChoices[3])</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  kReactivePower = basePower / 1e6;</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">for</span>(<span class="keyword">auto</span> it = lineList.begin(), itEnd = lineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <a class="code" href="class_line.html">Line</a>* line = *it;</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>  wxString busName1 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  busName1 = static_cast<Bus*>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().name;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  wxString busName2 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  busName2 = static_cast<Bus*>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().name;</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>  wxString isOnline = _(<span class="stringliteral">"Yes"</span>);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  wxColour textColour = m_gridPowerFlow->GetDefaultCellTextColour();</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">if</span>(!line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  isOnline = _(<span class="stringliteral">"No"</span>);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  textColour = m_offlineColour;</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">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 7; ++j) {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  m_gridPowerFlow->SetCellTextColour(rowNumber + i, j, textColour);</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"> 376</span> </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  m_gridPowerFlow->SetCellValue(rowNumber, 9, isOnline);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keyword">auto</span> data = line->GetPUElectricalData(basePower);</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>  m_gridPowerFlow->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Line"</span>));</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  m_gridPowerFlow->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  m_gridPowerFlow->SetCellValue(rowNumber, 2, busName1);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  m_gridPowerFlow->SetCellValue(rowNumber, 3, busName2);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  m_gridPowerFlow->SetCellValue(rowNumber, 4,</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::real(data.powerFlow[0]) * kActivePower));</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  m_gridPowerFlow->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::imag(data.powerFlow[0]) * kReactivePower));</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  m_gridPowerFlow->SetCellValue(rowNumber, 6, isOnline);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  rowNumber++;</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>  m_gridPowerFlow->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Line"</span>));</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  m_gridPowerFlow->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  m_gridPowerFlow->SetCellValue(rowNumber, 2, busName2);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  m_gridPowerFlow->SetCellValue(rowNumber, 3, busName1);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  m_gridPowerFlow->SetCellValue(rowNumber, 4,</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::real(data.powerFlow[1]) * kActivePower));</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  m_gridPowerFlow->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::imag(data.powerFlow[1]) * kReactivePower));</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  m_gridPowerFlow->SetCellValue(rowNumber, 6, isOnline);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  rowNumber++;</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">for</span>(<span class="keyword">auto</span> it = transformerList.begin(), itEnd = transformerList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = *it;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keyword">auto</span> data = transformer->GetPUElectricalData(basePower);</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>  wxString busName1 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  busName1 = static_cast<Bus*>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().name;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  wxString busName2 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  busName2 = static_cast<Bus*>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().name;</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>  wxString isOnline = _(<span class="stringliteral">"Yes"</span>);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  wxColour textColour = m_gridPowerFlow->GetDefaultCellTextColour();</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">if</span>(!transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  isOnline = _(<span class="stringliteral">"No"</span>);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  textColour = m_offlineColour;</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>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 7; ++j) {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  m_gridPowerFlow->SetCellTextColour(rowNumber + i, j, textColour);</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>  m_gridPowerFlow->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Transformer"</span>));</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  m_gridPowerFlow->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  m_gridPowerFlow->SetCellValue(rowNumber, 2, busName1);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  m_gridPowerFlow->SetCellValue(rowNumber, 3, busName2);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  m_gridPowerFlow->SetCellValue(rowNumber, 4,</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::real(data.powerFlow[0]) * kActivePower));</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  m_gridPowerFlow->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::imag(data.powerFlow[0]) * kReactivePower));</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  m_gridPowerFlow->SetCellValue(rowNumber, 6, isOnline);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  rowNumber++;</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>  m_gridPowerFlow->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Transformer"</span>));</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  m_gridPowerFlow->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  m_gridPowerFlow->SetCellValue(rowNumber, 2, busName2);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  m_gridPowerFlow->SetCellValue(rowNumber, 3, busName1);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  m_gridPowerFlow->SetCellValue(rowNumber, 4,</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::real(data.powerFlow[1]) * kActivePower));</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  m_gridPowerFlow->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::imag(data.powerFlow[1]) * kReactivePower));</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  m_gridPowerFlow->SetCellValue(rowNumber, 6, isOnline);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  rowNumber++;</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>  m_gridPowerFlow->AutoSize();</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> </div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="comment">// Power Flow buses</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">if</span>(gridToFill == GRID_ALL || gridToFill == GRID_PFBUSES) {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordtype">double</span> kActivePower = 1.0;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">if</span>(m_gridPFBuses->GetCellValue(0, 4) == m_activePowerChoices[1])</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  kActivePower = basePower;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPFBuses->GetCellValue(0, 4) == m_activePowerChoices[2])</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  kActivePower = basePower / 1e3;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPFBuses->GetCellValue(0, 4) == m_activePowerChoices[3])</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  kActivePower = basePower / 1e6;</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="keywordtype">double</span> kReactivePower = 1.0;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">if</span>(m_gridPFBuses->GetCellValue(0, 5) == m_reactivePowerChoices[1])</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  kReactivePower = basePower;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPFBuses->GetCellValue(0, 5) == m_reactivePowerChoices[2])</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  kReactivePower = basePower / 1e3;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPFBuses->GetCellValue(0, 5) == m_reactivePowerChoices[3])</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  kReactivePower = basePower / 1e6;</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>  rowNumber = 1;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = busList.begin(), itEnd = busList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</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">double</span> vb = std::abs(data.nominalVoltage);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordflow">if</span>(data.nominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>) vb *= 1e3;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordtype">double</span> kVoltage = 1.0;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">if</span>(m_gridPFBuses->GetCellValue(0, 2) == m_voltageChoices[1])</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  kVoltage = vb;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPFBuses->GetCellValue(0, 2) == m_voltageChoices[2])</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  kVoltage = vb / 1e3;</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_gridPFBuses->SetCellValue(rowNumber, 0, data.name);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  wxString busTypeString = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">switch</span>(data.busType) {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="keywordflow">case</span> BUS_SLACK: {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  busTypeString = _(<span class="stringliteral">"Slack"</span>);</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>  <span class="keywordflow">case</span> BUS_PV: {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  busTypeString = _(<span class="stringliteral">"PV"</span>);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">case</span> BUS_PQ: {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  busTypeString = _(<span class="stringliteral">"PQ"</span>);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  } <span class="keywordflow">break</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>  m_gridPFBuses->SetCellValue(rowNumber, 1, busTypeString);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  m_gridPFBuses->SetCellValue(rowNumber, 2, bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.voltage) * kVoltage));</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  m_gridPFBuses->SetCellValue(rowNumber, 3, bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.voltage))));</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  m_gridPFBuses->SetCellValue(rowNumber, 4, bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::real(data.power) * kActivePower));</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  m_gridPFBuses->SetCellValue(rowNumber, 5, bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::imag(data.power) * kReactivePower));</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  rowNumber++;</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>  m_gridPFBuses->AutoSize();</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="comment">// Power flow branches</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">if</span>(gridToFill == GRID_ALL || gridToFill == GRID_PFBRANCHES) {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  rowNumber = 1;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = lineList.begin(), itEnd = lineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <a class="code" href="class_line.html">Line</a>* line = *it;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keyword">auto</span> data = line->GetPUElectricalData(basePower);</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="keywordtype">double</span> vb = data.nominalVoltage;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">if</span>(data.nominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>) vb *= 1e3;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordtype">double</span> zb = (vb * vb) / basePower;</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>  wxString busName1 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  busName1 = static_cast<Bus*>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().name;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  wxString busName2 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  busName2 = static_cast<Bus*>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().name;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  wxString isOnline = _(<span class="stringliteral">"Yes"</span>);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  wxColour textColour = m_gridPFBranches->GetDefaultCellTextColour();</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="keywordflow">if</span>(!line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  isOnline = _(<span class="stringliteral">"No"</span>);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  textColour = m_offlineColour;</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>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 10; ++j) {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  m_gridPFBranches->SetCellTextColour(rowNumber, j, textColour);</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> </div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  m_gridPFBranches->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Line"</span>));</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  m_gridPFBranches->SetCellValue(rowNumber, 1, data.name);</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>  m_gridPFBranches->SetCellValue(rowNumber, 2, busName1);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  m_gridPFBranches->SetCellValue(rowNumber, 3, busName2);</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="keywordtype">double</span> k = 1.0;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">if</span>(m_gridPFBranches->GetCellValue(0, 4) == m_resistanceChoices[1]) k = zb;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  m_gridPFBranches->SetCellValue(rowNumber, 4, line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(data.resistance * k));</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  k = 1.0;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">if</span>(m_gridPFBranches->GetCellValue(0, 5) == m_indReactanceChoices[1]) k = zb;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  m_gridPFBranches->SetCellValue(rowNumber, 5, line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(data.indReactance * k));</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  k = 1.0;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keywordflow">if</span>(m_gridPFBranches->GetCellValue(0, 6) == m_capSusceptanceChoices[1]) k = zb;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  m_gridPFBranches->SetCellValue(rowNumber, 6, line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(data.capSusceptance / k));</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  m_gridPFBranches->SetCellValue(rowNumber, 7, <span class="stringliteral">"-"</span>);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  m_gridPFBranches->SetCellValue(rowNumber, 8, <span class="stringliteral">"-"</span>);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  m_gridPFBranches->SetCellValue(rowNumber, 9, isOnline);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  rowNumber++;</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">for</span>(<span class="keyword">auto</span> it = transformerList.begin(), itEnd = transformerList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = *it;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keyword">auto</span> data = transformer->GetPUElectricalData(basePower);</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="keywordtype">double</span> vb = 0.0;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">if</span>(data.baseVoltage == 0) {</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  vb = data.primaryNominalVoltage;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">if</span>(data.primaryNominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>) vb *= 1e3;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  vb = data.secondaryNominalVoltage;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">if</span>(data.secondaryNominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>) vb *= 1e3;</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="keywordtype">double</span> zb = (vb * vb) / basePower;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> </div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  wxString busName1 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  busName1 = static_cast<Bus*>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().name;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  wxString busName2 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  busName2 = static_cast<Bus*>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().name;</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>  wxString isOnline = _(<span class="stringliteral">"Yes"</span>);</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  wxColour textColour = m_gridPFBranches->GetDefaultCellTextColour();</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">if</span>(!transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  isOnline = _(<span class="stringliteral">"No"</span>);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  textColour = m_offlineColour;</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>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 10; ++j) {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  m_gridPFBranches->SetCellTextColour(rowNumber, j, textColour);</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> </div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  m_gridPFBranches->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Transformer"</span>));</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  m_gridPFBranches->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  m_gridPFBranches->SetCellValue(rowNumber, 2, busName1);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  m_gridPFBranches->SetCellValue(rowNumber, 3, busName2);</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">double</span> k = 1.0;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">if</span>(m_gridPFBranches->GetCellValue(0, 4) == m_resistanceChoices[1]) k = zb;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  m_gridPFBranches->SetCellValue(rowNumber, 4, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(data.resistance * k));</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  k = 1.0;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">if</span>(m_gridPFBranches->GetCellValue(0, 5) == m_indReactanceChoices[1]) k = zb;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  m_gridPFBranches->SetCellValue(rowNumber, 5, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(data.indReactance * k));</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  m_gridPFBranches->SetCellValue(rowNumber, 6, <span class="stringliteral">"-"</span>);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  m_gridPFBranches->SetCellValue(rowNumber, 7, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(data.turnsRatio));</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  m_gridPFBranches->SetCellValue(rowNumber, 8, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(data.phaseShift));</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  m_gridPFBranches->SetCellValue(rowNumber, 9, isOnline);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  rowNumber++;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  }</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  m_gridPFBranches->AutoSize();</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> </div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordflow">if</span>(gridToFill == GRID_ALL || gridToFill == GRID_FAULT) {</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  rowNumber = 2;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = busList.begin(), itEnd = busList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keywordflow">if</span>(data.hasFault) {</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keywordtype">double</span> vb = bus->GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordtype">double</span> ib = basePower / (std::sqrt(3.0) * vb);</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>  m_gridFault->SetCellValue(rowNumber, 0, data.name);</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="keywordtype">double</span> kCurrent = 1.0;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keywordflow">if</span>(m_gridFault->GetCellValue(1, 1) == m_currentChoices[1]) {</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  kCurrent = ib;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFault->GetCellValue(1, 1) == m_currentChoices[2]) {</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  kCurrent = ib / 1e3;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  }</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  m_gridFault->SetCellValue(rowNumber, 1,</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[0]) * kCurrent));</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>  m_gridFault->SetCellValue(rowNumber, 2,</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[0]))));</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>  kCurrent = 1.0;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordflow">if</span>(m_gridFault->GetCellValue(1, 3) == m_currentChoices[1]) {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  kCurrent = ib;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFault->GetCellValue(1, 3) == m_currentChoices[2]) {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  kCurrent = ib / 1e3;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  }</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  m_gridFault->SetCellValue(rowNumber, 3,</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[1]) * kCurrent));</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>  m_gridFault->SetCellValue(rowNumber, 4,</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[1]))));</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>  kCurrent = 1.0;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keywordflow">if</span>(m_gridFault->GetCellValue(1, 5) == m_currentChoices[1]) {</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  kCurrent = ib;</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFault->GetCellValue(1, 5) == m_currentChoices[2]) {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  kCurrent = ib / 1e3;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  }</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  m_gridFault->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[2]) * kCurrent));</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> </div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  m_gridFault->SetCellValue(rowNumber, 6,</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[2]))));</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>  rowNumber++;</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>  m_gridFault->AutoSize();</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="comment">// Fault buses</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keywordflow">if</span>(gridToFill == GRID_ALL || gridToFill == GRID_FAULTBUSES) {</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  rowNumber = 2;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = busList.begin(), itEnd = busList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keywordtype">double</span> vb = bus->GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> </div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  m_gridFaultBuses->SetCellValue(rowNumber, 0, data.name);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keywordtype">double</span> kVoltage = 1.0;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keywordflow">if</span>(m_gridFaultBuses->GetCellValue(1, 1) == m_voltageChoices[1]) {</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  kVoltage = vb;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBuses->GetCellValue(1, 1) == m_voltageChoices[2]) {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  kVoltage = vb / 1e3;</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>  m_gridFaultBuses->SetCellValue(rowNumber, 1,</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultVoltage[0]) * kVoltage));</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  m_gridFaultBuses->SetCellValue(rowNumber, 2,</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultVoltage[0]))));</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>  kVoltage = 1.0;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keywordflow">if</span>(m_gridFaultBuses->GetCellValue(1, 3) == m_voltageChoices[1]) {</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  kVoltage = vb;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBuses->GetCellValue(1, 3) == m_voltageChoices[2]) {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  kVoltage = vb / 1e3;</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  }</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  m_gridFaultBuses->SetCellValue(rowNumber, 3,</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultVoltage[1]) * kVoltage));</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  m_gridFaultBuses->SetCellValue(rowNumber, 4,</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultVoltage[1]))));</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>  kVoltage = 1.0;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keywordflow">if</span>(m_gridFaultBuses->GetCellValue(1, 5) == m_voltageChoices[1]) {</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  kVoltage = vb;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBuses->GetCellValue(1, 5) == m_voltageChoices[2]) {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  kVoltage = vb / 1e3;</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>  m_gridFaultBuses->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultVoltage[2]) * kVoltage));</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  m_gridFaultBuses->SetCellValue(rowNumber, 6,</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultVoltage[2]))));</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span> </div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  rowNumber++;</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>  m_gridFaultBuses->AutoSize();</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> </div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="comment">// Fault branches</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">if</span>(gridToFill == GRID_ALL || gridToFill == GRID_FAULTBRANCHES) {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  rowNumber = 2;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = lineList.begin(), itEnd = lineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <a class="code" href="class_line.html">Line</a>* line = *it;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keyword">auto</span> data = line->GetPUElectricalData(basePower);</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="keywordtype">double</span> vb = line->GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keywordtype">double</span> ib = basePower / (std::sqrt(3.0) * vb);</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>  wxString busName1 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  busName1 = static_cast<Bus*>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().name;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  wxString busName2 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  busName2 = static_cast<Bus*>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().name;</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>  wxString isOnline = _(<span class="stringliteral">"Yes"</span>);</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  wxColour textColour = m_gridFaultBranches->GetDefaultCellTextColour();</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <span class="keywordflow">if</span>(!line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  isOnline = _(<span class="stringliteral">"No"</span>);</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  textColour = m_offlineColour;</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>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 11; ++j) {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  m_gridFaultBranches->SetCellTextColour(rowNumber + i, j, textColour);</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>  m_gridFaultBranches->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Line"</span>));</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  m_gridFaultBranches->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  m_gridFaultBranches->SetCellValue(rowNumber, 2, busName1);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  m_gridFaultBranches->SetCellValue(rowNumber, 3, busName2);</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="keywordtype">double</span> kCurrent = 1.0;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 4) == m_currentChoices[1]) {</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  kCurrent = ib;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 4) == m_currentChoices[2]) {</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  kCurrent = ib / 1e3;</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  }</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  m_gridFaultBranches->SetCellValue(rowNumber, 4,</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[0][0]) * kCurrent));</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  m_gridFaultBranches->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[0][0]))));</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  kCurrent = 1.0;</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 6) == m_currentChoices[1]) {</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  kCurrent = ib;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 6) == m_currentChoices[2]) {</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  kCurrent = ib / 1e3;</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>  m_gridFaultBranches->SetCellValue(rowNumber, 6,</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[0][1]) * kCurrent));</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  m_gridFaultBranches->SetCellValue(rowNumber, 7,</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[0][1]))));</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  kCurrent = 1.0;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 8) == m_currentChoices[1]) {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  kCurrent = ib;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 8) == m_currentChoices[2]) {</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  kCurrent = ib / 1e3;</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>  m_gridFaultBranches->SetCellValue(rowNumber, 8,</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[0][2]) * kCurrent));</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  m_gridFaultBranches->SetCellValue(rowNumber, 9,</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[0][2]))));</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  m_gridFaultBranches->SetCellValue(rowNumber, 10, isOnline);</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  rowNumber++;</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_gridFaultBranches->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Line"</span>));</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  m_gridFaultBranches->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  m_gridFaultBranches->SetCellValue(rowNumber, 2, busName2);</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  m_gridFaultBranches->SetCellValue(rowNumber, 3, busName1);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  kCurrent = 1.0;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 4) == m_currentChoices[1]) {</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  kCurrent = ib;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 4) == m_currentChoices[2]) {</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  kCurrent = ib / 1e3;</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>  m_gridFaultBranches->SetCellValue(rowNumber, 4,</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[1][0]) * kCurrent));</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  m_gridFaultBranches->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[1][0]))));</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  kCurrent = 1.0;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 6) == m_currentChoices[1]) {</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  kCurrent = ib;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 6) == m_currentChoices[2]) {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  kCurrent = ib / 1e3;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  }</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  m_gridFaultBranches->SetCellValue(rowNumber, 6,</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[1][1]) * kCurrent));</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  m_gridFaultBranches->SetCellValue(rowNumber, 7,</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[1][1]))));</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  kCurrent = 1.0;</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 8) == m_currentChoices[1]) {</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  kCurrent = ib;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 8) == m_currentChoices[2]) {</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  kCurrent = ib / 1e3;</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>  m_gridFaultBranches->SetCellValue(rowNumber, 8,</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[1][2]) * kCurrent));</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  m_gridFaultBranches->SetCellValue(rowNumber, 9,</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[1][2]))));</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  m_gridFaultBranches->SetCellValue(rowNumber, 10, isOnline);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  rowNumber++;</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> </div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = transformerList.begin(), itEnd = transformerList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = *it;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="keyword">auto</span> data = transformer->GetPUElectricalData(basePower);</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="keywordtype">double</span> vb = transformer->GetValueFromUnit(data.primaryNominalVoltage, data.primaryNominalVoltageUnit);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <span class="keywordtype">double</span> ibp = basePower / (std::sqrt(3.0) * vb);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  vb = transformer->GetValueFromUnit(data.secondaryNominalVoltage, data.secondaryNominalVoltageUnit);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keywordtype">double</span> ibs = basePower / (std::sqrt(3.0) * vb);</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>  wxString busName1 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  busName1 = static_cast<Bus*>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().name;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  wxString busName2 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  busName2 = static_cast<Bus*>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().name;</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>  wxString isOnline = _(<span class="stringliteral">"Yes"</span>);</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  wxColour textColour = m_gridFaultBranches->GetDefaultCellTextColour();</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordflow">if</span>(!transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  isOnline = _(<span class="stringliteral">"No"</span>);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  textColour = m_offlineColour;</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">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 11; ++j) {</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  m_gridFaultBranches->SetCellTextColour(rowNumber + i, j, textColour);</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> </div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  m_gridFaultBranches->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Transformer"</span>));</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  m_gridFaultBranches->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  m_gridFaultBranches->SetCellValue(rowNumber, 2, busName1);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  m_gridFaultBranches->SetCellValue(rowNumber, 3, busName2);</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="keywordtype">double</span> kCurrent = 1.0;</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 4) == m_currentChoices[1]) {</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  kCurrent = ibp;</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 4) == m_currentChoices[2]) {</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  kCurrent = ibp / 1e3;</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_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  rowNumber, 4, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[0][0]) * kCurrent));</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  rowNumber, 5, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[0][0]))));</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  kCurrent = 1.0;</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 6) == m_currentChoices[1]) {</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  kCurrent = ibp;</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 6) == m_currentChoices[2]) {</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  kCurrent = ibp / 1e3;</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>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  rowNumber, 6, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[0][1]) * kCurrent));</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  rowNumber, 7, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[0][1]))));</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  kCurrent = 1.0;</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 8) == m_currentChoices[1]) {</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  kCurrent = ibp;</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 8) == m_currentChoices[2]) {</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  kCurrent = ibp / 1e3;</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  }</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  rowNumber, 8, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[0][2]) * kCurrent));</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  rowNumber, 9, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[0][2]))));</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  m_gridFaultBranches->SetCellValue(rowNumber, 10, isOnline);</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  rowNumber++;</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>  m_gridFaultBranches->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Transformer"</span>));</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  m_gridFaultBranches->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  m_gridFaultBranches->SetCellValue(rowNumber, 2, busName2);</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  m_gridFaultBranches->SetCellValue(rowNumber, 3, busName1);</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  kCurrent = 1.0;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 4) == m_currentChoices[1]) {</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  kCurrent = ibs;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 4) == m_currentChoices[2]) {</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  kCurrent = ibs / 1e3;</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>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  rowNumber, 4, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[1][0]) * kCurrent));</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  rowNumber, 5, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[1][0]))));</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  kCurrent = 1.0;</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 6) == m_currentChoices[1]) {</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  kCurrent = ibs;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 6) == m_currentChoices[2]) {</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  kCurrent = ibs / 1e3;</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>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  rowNumber, 6, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[1][1]) * kCurrent));</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  rowNumber, 7, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[1][1]))));</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  kCurrent = 1.0;</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 8) == m_currentChoices[1]) {</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  kCurrent = ibs;</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 8) == m_currentChoices[2]) {</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  kCurrent = ibs / 1e3;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  }</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  rowNumber, 8, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[1][2]) * kCurrent));</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  rowNumber, 9, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[1][2]))));</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  m_gridFaultBranches->SetCellValue(rowNumber, 10, isOnline);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  rowNumber++;</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> </div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  m_gridFaultBranches->AutoSize();</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> </div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  <span class="comment">// Fault generators</span></div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <span class="keywordflow">if</span>(gridToFill == GRID_ALL || gridToFill == GRID_FAULTGENERATORS) {</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  rowNumber = 2;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = generatorList.begin(), itEnd = generatorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator = *it;</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <span class="keyword">auto</span> data = generator->GetPUElectricalData(basePower);</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="keywordtype">double</span> vb = generator->GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <span class="keywordtype">double</span> ib = basePower / (std::sqrt(3.0) * vb);</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span> </div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  m_gridFaultGenerators->SetCellValue(rowNumber, 0, data.name);</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span> </div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="keywordtype">double</span> kCurrent = 1.0;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keywordflow">if</span>(m_gridFaultGenerators->GetCellValue(1, 1) == m_currentChoices[1])</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  kCurrent = ib;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultGenerators->GetCellValue(1, 1) == m_currentChoices[2])</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  kCurrent = ib / 1e3;</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  m_gridFaultGenerators->SetCellValue(rowNumber, 1,</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  generator-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[0]) * kCurrent));</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  m_gridFaultGenerators->SetCellValue(</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  rowNumber, 2, generator-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[0]))));</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>  kCurrent = 1.0;</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="keywordflow">if</span>(m_gridFaultGenerators->GetCellValue(1, 3) == m_currentChoices[1])</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  kCurrent = ib;</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultGenerators->GetCellValue(1, 3) == m_currentChoices[2])</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  kCurrent = ib / 1e3;</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  m_gridFaultGenerators->SetCellValue(rowNumber, 3,</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  generator-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[1]) * kCurrent));</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  m_gridFaultGenerators->SetCellValue(</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  rowNumber, 4, generator-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[1]))));</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>  kCurrent = 1.0;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="keywordflow">if</span>(m_gridFaultGenerators->GetCellValue(1, 5) == m_currentChoices[1])</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  kCurrent = ib;</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultGenerators->GetCellValue(1, 5) == m_currentChoices[2])</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  kCurrent = ib / 1e3;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  m_gridFaultGenerators->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  generator-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[2]) * kCurrent));</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  m_gridFaultGenerators->SetCellValue(</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  rowNumber, 6, generator-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[2]))));</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>  rowNumber++;</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>  m_gridFaultGenerators->AutoSize();</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_changingValues = <span class="keyword">false</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> </div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span> <span class="keywordtype">void</span> DataReport::SetRowsColours(wxGrid* grid, <span class="keywordtype">int</span> rowStart)</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="keywordflow">for</span>(<span class="keywordtype">int</span> i = rowStart; i < grid->GetNumberRows(); ++i) {</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  wxGridCellAttr* attr = grid->GetOrCreateCellAttr(i, 0);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="keywordflow">if</span>((i - rowStart) % 2 == 0)</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  attr->SetBackgroundColour(m_evenRowColour);</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  attr->SetBackgroundColour(m_oddRowColour);</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  grid->SetRowAttr(i, attr);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  }</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span> }</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="keywordtype">void</span> DataReport::OnPFBusGridChanged(wxGridEvent& event)</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="keywordflow">if</span>(!m_changingValues) FillValues(GRID_PFBUSES);</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span> }</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span> <span class="keywordtype">void</span> DataReport::OnFaulrGridChanged(wxGridEvent& event)</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span> {</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <span class="keywordflow">if</span>(!m_changingValues) FillValues(GRID_FAULT);</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="keywordtype">void</span> DataReport::OnFaultBranchesGridChanged(wxGridEvent& event)</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>  <span class="keywordflow">if</span>(!m_changingValues) FillValues(GRID_FAULTBRANCHES);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span> }</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span> <span class="keywordtype">void</span> DataReport::OnFaultBusesGridChanged(wxGridEvent& event)</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="keywordflow">if</span>(!m_changingValues) FillValues(GRID_FAULTBUSES);</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="keywordtype">void</span> DataReport::OnFaultGeneratorsGridChanged(wxGridEvent& event)</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span> {</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <span class="keywordflow">if</span>(!m_changingValues) FillValues(GRID_FAULTGENERATORS);</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="keywordtype">void</span> DataReport::OnPFBranchesGridChanged(wxGridEvent& event)</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span> {</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  <span class="keywordflow">if</span>(!m_changingValues) FillValues(GRID_PFBRANCHES);</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">void</span> DataReport::OnPowerFlowGridChanged(wxGridEvent& event)</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> {</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  <span class="keywordflow">if</span>(!m_changingValues) FillValues(GRID_PF);</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</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#l00168">ElectricCalculation.h:168</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#l00517">Element.h:517</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="_data_report_8h.html">DataReport.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_workspace_8h.html">Workspace.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.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> DataReport::DataReport(wxWindow* parent, <a class="code" href="class_workspace.html">Workspace</a>* workspace) : <a class="code" href="class_data_report_base.html">DataReportBase</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_workspace = workspace;</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_headerColour = wxColour(150, 150, 150);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_offlineColour = wxColour(100, 100, 100);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_oddRowColour = wxColour(220, 220, 220);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_evenRowColour = wxColour(255, 255, 255);</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>  CreateGrids();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  SetHeaders();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  FillValues();</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>  SetRowsColours(m_gridPowerFlow);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  SetRowsColours(m_gridPFBuses);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  SetRowsColours(m_gridPFBranches);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  SetRowsColours(m_gridFault, 2);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  SetRowsColours(m_gridFaultBuses, 2);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  SetRowsColours(m_gridFaultBranches, 2);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  SetRowsColours(m_gridFaultGenerators, 2);</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>  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> DataReport::~DataReport() {}</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keywordtype">void</span> DataReport::CreateGrids()</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>  wxFont headerFont = m_gridPowerFlow->GetLabelFont();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  headerFont.SetWeight(wxFONTWEIGHT_BOLD);</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_electric_calculation.html">ElectricCalculation</a> eCalc;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  eCalc.<a class="code" href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">GetElementsFromList</a>(m_workspace->GetElementList());</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">auto</span> lineList = eCalc.<a class="code" href="class_electric_calculation.html#af8eff271de83898c536deda1aab22d48">GetLineList</a>();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">auto</span> transformerList = eCalc.<a class="code" href="class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e">GetTransformerList</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">auto</span> busList = eCalc.<a class="code" href="class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24">GetBusList</a>();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">auto</span> generatorList = eCalc.<a class="code" href="class_electric_calculation.html#ad8719b10c3c4b85b316d3daa71064840">GetSyncGeneratorList</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="comment">// Power Flow</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_gridPowerFlow->AppendCols(7);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  m_gridPowerFlow->AppendRows();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_gridPowerFlow->HideColLabels();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_gridPowerFlow->HideRowLabels();</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 < 7; ++i) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_gridPowerFlow->SetCellBackgroundColour(0, i, m_headerColour);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_gridPowerFlow->SetCellFont(0, i, headerFont);</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_gridPowerFlow->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// Values</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_gridPowerFlow->AppendRows((lineList.size() + transformerList.size()) * 2);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_gridPowerFlow->AutoSize();</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">// Power Flow buses</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_gridPFBuses->AppendCols(6);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_gridPFBuses->AppendRows();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_gridPFBuses->HideColLabels();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_gridPFBuses->HideRowLabels();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 6; ++i) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_gridPFBuses->SetCellBackgroundColour(0, i, m_headerColour);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_gridPFBuses->SetCellFont(0, i, headerFont);</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>  m_gridPFBuses->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// Values</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_gridPFBuses->AppendRows(busList.size());</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_gridPFBuses->AutoSize();</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">// Power flow branches</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_gridPFBranches->AppendCols(10);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_gridPFBranches->AppendRows(1);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  m_gridPFBranches->HideColLabels();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_gridPFBranches->HideRowLabels();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 10; ++i) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_gridPFBranches->SetCellBackgroundColour(0, i, m_headerColour);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_gridPFBranches->SetCellFont(0, i, headerFont);</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>  m_gridPFBranches->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// Values</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_gridPFBranches->AppendRows(lineList.size() + transformerList.size());</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_gridPFBranches->AutoSize();</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">// Fault</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_gridFault->AppendCols(7);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  m_gridFault->AppendRows(2);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  m_gridFault->HideColLabels();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_gridFault->HideRowLabels();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 7; ++j) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_gridFault->SetCellBackgroundColour(i, j, m_headerColour);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_gridFault->SetCellFont(i, j, headerFont);</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>  m_gridFault->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_gridFault->SetCellSize(0, 0, 2, 1);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_gridFault->SetCellSize(0, 1, 1, 2);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_gridFault->SetCellSize(0, 3, 1, 2);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_gridFault->SetCellSize(0, 5, 1, 2);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// Values</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 = busList.begin(), itEnd = busList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span>(bus->GetElectricalData().hasFault) m_gridFault->AppendRows();</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_gridFault->AutoSize();</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">// Fault buses</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_gridFaultBuses->AppendCols(7);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_gridFaultBuses->AppendRows(2);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_gridFaultBuses->HideColLabels();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  m_gridFaultBuses->HideRowLabels();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 7; ++j) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_gridFaultBuses->SetCellBackgroundColour(i, j, m_headerColour);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  m_gridFaultBuses->SetCellFont(i, j, headerFont);</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>  m_gridFaultBuses->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_gridFaultBuses->SetCellSize(0, 0, 2, 1);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  m_gridFaultBuses->SetCellSize(0, 1, 1, 2);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  m_gridFaultBuses->SetCellSize(0, 3, 1, 2);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  m_gridFaultBuses->SetCellSize(0, 5, 1, 2);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// Values</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  m_gridFaultBuses->AppendRows(busList.size());</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  m_gridFaultBuses->AutoSize();</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="comment">// Fault branches</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_gridFaultBranches->AppendCols(11);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  m_gridFaultBranches->AppendRows(2);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  m_gridFaultBranches->HideColLabels();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  m_gridFaultBranches->HideRowLabels();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 11; ++j) {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_gridFaultBranches->SetCellBackgroundColour(i, j, m_headerColour);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  m_gridFaultBranches->SetCellFont(i, j, headerFont);</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>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_gridFaultBranches->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  m_gridFaultBranches->SetCellSize(0, 0, 2, 1);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  m_gridFaultBranches->SetCellSize(0, 1, 2, 1);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  m_gridFaultBranches->SetCellSize(0, 2, 2, 1);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_gridFaultBranches->SetCellSize(0, 3, 2, 1);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  m_gridFaultBranches->SetCellSize(0, 10, 2, 1);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  m_gridFaultBranches->SetCellSize(0, 4, 1, 2);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_gridFaultBranches->SetCellSize(0, 6, 1, 2);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  m_gridFaultBranches->SetCellSize(0, 8, 1, 2);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">// Values</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  m_gridFaultBranches->AppendRows((lineList.size() + transformerList.size()) * 2);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  m_gridFaultBranches->AutoSize();</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">// Fault generators</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_gridFaultGenerators->AppendCols(7);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_gridFaultGenerators->AppendRows(2);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  m_gridFaultGenerators->HideColLabels();</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  m_gridFaultGenerators->HideRowLabels();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 7; ++j) {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  m_gridFaultGenerators->SetCellBackgroundColour(i, j, m_headerColour);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  m_gridFaultGenerators->SetCellFont(i, j, headerFont);</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>  m_gridFaultGenerators->SetDefaultCellAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  m_gridFaultGenerators->SetCellSize(0, 0, 2, 1);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  m_gridFaultGenerators->SetCellSize(0, 1, 1, 2);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  m_gridFaultGenerators->SetCellSize(0, 3, 1, 2);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  m_gridFaultGenerators->SetCellSize(0, 5, 1, 2);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// Values</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  m_gridFaultGenerators->AppendRows(generatorList.size());</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  m_gridFaultGenerators->AutoSize();</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> <span class="keywordtype">void</span> DataReport::SetHeaders()</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">// Headers choices fill</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  wxString omega = <span class="keyword">static_cast<</span>wxString<span class="keyword">></span>(L<span class="stringliteral">'\u03A9'</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>  m_voltageChoices.Add(_(<span class="stringliteral">"Voltage (p.u.)"</span>));</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  m_voltageChoices.Add(_(<span class="stringliteral">"Voltage (V)"</span>));</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  m_voltageChoices.Add(_(<span class="stringliteral">"Voltage (kV)"</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>  m_activePowerChoices.Add(_(<span class="stringliteral">"Active Power (p.u.)"</span>));</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  m_activePowerChoices.Add(_(<span class="stringliteral">"Active Power (W)"</span>));</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  m_activePowerChoices.Add(_(<span class="stringliteral">"Active Power (kW)"</span>));</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  m_activePowerChoices.Add(_(<span class="stringliteral">"Active Power (MW)"</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>  m_reactivePowerChoices.Add(_(<span class="stringliteral">"Reactive Power (p.u.)"</span>));</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  m_reactivePowerChoices.Add(_(<span class="stringliteral">"Reactive Power (VAr)"</span>));</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  m_reactivePowerChoices.Add(_(<span class="stringliteral">"Reactive Power (kVAr)"</span>));</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  m_reactivePowerChoices.Add(_(<span class="stringliteral">"Reactive Power (MVAr)"</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>  m_resistanceChoices.Add(_(<span class="stringliteral">"R (p.u.)"</span>));</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  m_resistanceChoices.Add(_(<span class="stringliteral">"R ("</span>) + omega + wxT(<span class="stringliteral">")"</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>  m_indReactanceChoices.Add(_(<span class="stringliteral">"XL (p.u.)"</span>));</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  m_indReactanceChoices.Add(_(<span class="stringliteral">"XL ("</span>) + omega + wxT(<span class="stringliteral">")"</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>  m_capSusceptanceChoices.Add(_(<span class="stringliteral">"B (p.u.)"</span>));</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  m_capSusceptanceChoices.Add(_(<span class="stringliteral">"B (S)"</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_currentChoices.Add(_(<span class="stringliteral">"Current (p.u.)"</span>));</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  m_currentChoices.Add(_(<span class="stringliteral">"Current (A)"</span>));</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  m_currentChoices.Add(_(<span class="stringliteral">"Current (kA)"</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">// Power flow</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  m_gridPowerFlow->SetCellValue(0, 0, _(<span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  m_gridPowerFlow->SetCellValue(0, 1, _(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  m_gridPowerFlow->SetCellValue(0, 2, _(<span class="stringliteral">"From"</span>));</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  m_gridPowerFlow->SetCellValue(0, 3, _(<span class="stringliteral">"To"</span>));</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  m_gridPowerFlow->SetCellEditor(0, 4, <span class="keyword">new</span> wxGridCellChoiceEditor(m_activePowerChoices));</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  m_gridPowerFlow->SetCellValue(0, 4, m_activePowerChoices[3]);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  m_gridPowerFlow->SetCellEditor(0, 5, <span class="keyword">new</span> wxGridCellChoiceEditor(m_reactivePowerChoices));</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  m_gridPowerFlow->SetCellValue(0, 5, m_reactivePowerChoices[3]);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  m_gridPowerFlow->SetCellValue(0, 6, _(<span class="stringliteral">"Online"</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="comment">// Power flow buses</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  m_gridPFBuses->SetCellValue(0, 0, _(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  m_gridPFBuses->SetCellValue(0, 1, _(<span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  m_gridPFBuses->SetCellEditor(0, 2, <span class="keyword">new</span> wxGridCellChoiceEditor(m_voltageChoices));</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  m_gridPFBuses->SetCellValue(0, 2, m_voltageChoices[0]);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  m_gridPFBuses->SetCellValue(0, 3, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  m_gridPFBuses->SetCellEditor(0, 4, <span class="keyword">new</span> wxGridCellChoiceEditor(m_activePowerChoices));</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  m_gridPFBuses->SetCellValue(0, 4, m_activePowerChoices[3]);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  m_gridPFBuses->SetCellEditor(0, 5, <span class="keyword">new</span> wxGridCellChoiceEditor(m_reactivePowerChoices));</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  m_gridPFBuses->SetCellValue(0, 5, m_reactivePowerChoices[3]);</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">// Power flow branches</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  m_gridPFBranches->SetCellValue(0, 0, _(<span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  m_gridPFBranches->SetCellValue(0, 1, _(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  m_gridPFBranches->SetCellValue(0, 2, _(<span class="stringliteral">"From"</span>));</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  m_gridPFBranches->SetCellValue(0, 3, _(<span class="stringliteral">"To"</span>));</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  m_gridPFBranches->SetCellEditor(0, 4, <span class="keyword">new</span> wxGridCellChoiceEditor(m_resistanceChoices));</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  m_gridPFBranches->SetCellValue(0, 4, m_resistanceChoices[0]);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  m_gridPFBranches->SetCellEditor(0, 5, <span class="keyword">new</span> wxGridCellChoiceEditor(m_indReactanceChoices));</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  m_gridPFBranches->SetCellValue(0, 5, m_indReactanceChoices[0]);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  m_gridPFBranches->SetCellEditor(0, 6, <span class="keyword">new</span> wxGridCellChoiceEditor(m_capSusceptanceChoices));</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  m_gridPFBranches->SetCellValue(0, 6, m_capSusceptanceChoices[0]);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  m_gridPFBranches->SetCellValue(0, 7, _(<span class="stringliteral">"TAP"</span>));</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  m_gridPFBranches->SetCellValue(0, 8, _(<span class="stringliteral">"Phase Shift"</span>));</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  m_gridPFBranches->SetCellValue(0, 9, _(<span class="stringliteral">"Online"</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="comment">// Fault</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  m_gridFault->SetCellValue(0, 0, _(<span class="stringliteral">"Fault bus name"</span>));</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  m_gridFault->SetCellValue(0, 1, _(<span class="stringliteral">"Phase A"</span>));</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  m_gridFault->SetCellValue(0, 3, _(<span class="stringliteral">"Phase B"</span>));</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  m_gridFault->SetCellValue(0, 5, _(<span class="stringliteral">"Phase C"</span>));</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  m_gridFault->SetCellEditor(1, 1, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  m_gridFault->SetCellValue(1, 1, m_currentChoices[1]);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  m_gridFault->SetCellValue(1, 2, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  m_gridFault->SetCellEditor(1, 3, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  m_gridFault->SetCellValue(1, 3, m_currentChoices[1]);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  m_gridFault->SetCellValue(1, 4, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  m_gridFault->SetCellEditor(1, 5, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  m_gridFault->SetCellValue(1, 5, m_currentChoices[1]);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  m_gridFault->SetCellValue(1, 6, _(<span class="stringliteral">"Angle"</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"> 280</span>  <span class="comment">// Fault buses</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  m_gridFaultBuses->SetCellValue(0, 0, _(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  m_gridFaultBuses->SetCellValue(0, 1, _(<span class="stringliteral">"Phase A"</span>));</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  m_gridFaultBuses->SetCellValue(0, 3, _(<span class="stringliteral">"Phase B"</span>));</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  m_gridFaultBuses->SetCellValue(0, 5, _(<span class="stringliteral">"Phase C"</span>));</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  m_gridFaultBuses->SetCellEditor(1, 1, <span class="keyword">new</span> wxGridCellChoiceEditor(m_voltageChoices));</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  m_gridFaultBuses->SetCellValue(1, 1, m_voltageChoices[0]);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  m_gridFaultBuses->SetCellValue(1, 2, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  m_gridFaultBuses->SetCellEditor(1, 3, <span class="keyword">new</span> wxGridCellChoiceEditor(m_voltageChoices));</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  m_gridFaultBuses->SetCellValue(1, 3, m_voltageChoices[0]);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  m_gridFaultBuses->SetCellValue(1, 4, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  m_gridFaultBuses->SetCellEditor(1, 5, <span class="keyword">new</span> wxGridCellChoiceEditor(m_voltageChoices));</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  m_gridFaultBuses->SetCellValue(1, 5, m_voltageChoices[0]);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  m_gridFaultBuses->SetCellValue(1, 6, _(<span class="stringliteral">"Angle"</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>  <span class="comment">// Fault branches</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  m_gridFaultBranches->SetCellValue(0, 0, _(<span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  m_gridFaultBranches->SetCellValue(0, 1, _(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  m_gridFaultBranches->SetCellValue(0, 2, _(<span class="stringliteral">"From"</span>));</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_gridFaultBranches->SetCellValue(0, 3, _(<span class="stringliteral">"To"</span>));</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  m_gridFaultBranches->SetCellValue(0, 4, _(<span class="stringliteral">"Phase A"</span>));</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  m_gridFaultBranches->SetCellValue(0, 6, _(<span class="stringliteral">"Phase B"</span>));</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  m_gridFaultBranches->SetCellValue(0, 8, _(<span class="stringliteral">"Phase C"</span>));</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  m_gridFaultBranches->SetCellValue(0, 10, _(<span class="stringliteral">"Online"</span>));</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  m_gridFaultBranches->SetCellEditor(1, 4, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  m_gridFaultBranches->SetCellValue(1, 4, m_currentChoices[1]);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  m_gridFaultBranches->SetCellValue(1, 5, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  m_gridFaultBranches->SetCellEditor(1, 6, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  m_gridFaultBranches->SetCellValue(1, 6, m_currentChoices[1]);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  m_gridFaultBranches->SetCellValue(1, 7, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  m_gridFaultBranches->SetCellEditor(1, 8, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  m_gridFaultBranches->SetCellValue(1, 8, m_currentChoices[1]);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  m_gridFaultBranches->SetCellValue(1, 9, _(<span class="stringliteral">"Angle"</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>  <span class="comment">// Fault generators</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  m_gridFaultGenerators->SetCellValue(0, 0, _(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  m_gridFaultGenerators->SetCellValue(0, 1, _(<span class="stringliteral">"Phase A"</span>));</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  m_gridFaultGenerators->SetCellValue(0, 3, _(<span class="stringliteral">"Phase B"</span>));</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  m_gridFaultGenerators->SetCellValue(0, 5, _(<span class="stringliteral">"Phase C"</span>));</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  m_gridFaultGenerators->SetCellEditor(1, 1, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  m_gridFaultGenerators->SetCellValue(1, 1, m_currentChoices[1]);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  m_gridFaultGenerators->SetCellValue(1, 2, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  m_gridFaultGenerators->SetCellEditor(1, 3, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  m_gridFaultGenerators->SetCellValue(1, 3, m_currentChoices[1]);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  m_gridFaultGenerators->SetCellValue(1, 4, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  m_gridFaultGenerators->SetCellEditor(1, 5, <span class="keyword">new</span> wxGridCellChoiceEditor(m_currentChoices));</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  m_gridFaultGenerators->SetCellValue(1, 5, m_currentChoices[1]);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  m_gridFaultGenerators->SetCellValue(1, 6, _(<span class="stringliteral">"Angle"</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> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="keywordtype">void</span> DataReport::FillValues(GridSelection gridToFill)</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>  m_changingValues = <span class="keyword">true</span>;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <a class="code" href="class_electric_calculation.html">ElectricCalculation</a> eCalc;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  eCalc.<a class="code" href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">GetElementsFromList</a>(m_workspace->GetElementList());</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">double</span> basePower = m_workspace->GetProperties()->GetSimulationPropertiesData().basePower;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">switch</span>(m_workspace->GetProperties()->GetSimulationPropertiesData().basePowerUnit) {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  basePower *= 1e3;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  basePower *= 1e6;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">default</span>:</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>  }</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="keywordtype">int</span> rowNumber = 1;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keyword">auto</span> lineList = eCalc.<a class="code" href="class_electric_calculation.html#af8eff271de83898c536deda1aab22d48">GetLineList</a>();</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keyword">auto</span> transformerList = eCalc.<a class="code" href="class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e">GetTransformerList</a>();</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keyword">auto</span> busList = eCalc.<a class="code" href="class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24">GetBusList</a>();</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keyword">auto</span> generatorList = eCalc.<a class="code" href="class_electric_calculation.html#ad8719b10c3c4b85b316d3daa71064840">GetSyncGeneratorList</a>();</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="comment">// Power Flow</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">if</span>(gridToFill == GRID_ALL || gridToFill == GRID_PF) {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordtype">double</span> kActivePower = 1.0;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">if</span>(m_gridPowerFlow->GetCellValue(0, 4) == m_activePowerChoices[1])</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  kActivePower = basePower;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPowerFlow->GetCellValue(0, 4) == m_activePowerChoices[2])</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  kActivePower = basePower / 1e3;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPowerFlow->GetCellValue(0, 4) == m_activePowerChoices[3])</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  kActivePower = basePower / 1e6;</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="keywordtype">double</span> kReactivePower = 1.0;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">if</span>(m_gridPowerFlow->GetCellValue(0, 5) == m_reactivePowerChoices[1])</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  kReactivePower = basePower;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPowerFlow->GetCellValue(0, 5) == m_reactivePowerChoices[2])</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  kReactivePower = basePower / 1e3;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPowerFlow->GetCellValue(0, 5) == m_reactivePowerChoices[3])</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  kReactivePower = basePower / 1e6;</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="keywordflow">for</span>(<span class="keyword">auto</span> it = lineList.begin(), itEnd = lineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <a class="code" href="class_line.html">Line</a>* line = *it;</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>  wxString busName1 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  busName1 = static_cast<Bus*>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().name;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  wxString busName2 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  busName2 = static_cast<Bus*>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().name;</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>  wxString isOnline = _(<span class="stringliteral">"Yes"</span>);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  wxColour textColour = m_gridPowerFlow->GetDefaultCellTextColour();</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">if</span>(!line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  isOnline = _(<span class="stringliteral">"No"</span>);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  textColour = m_offlineColour;</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="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</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 < 7; ++j) {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  m_gridPowerFlow->SetCellTextColour(rowNumber + i, j, textColour);</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>  m_gridPowerFlow->SetCellValue(rowNumber, 9, isOnline);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keyword">auto</span> data = line->GetPUElectricalData(basePower);</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>  m_gridPowerFlow->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Line"</span>));</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  m_gridPowerFlow->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  m_gridPowerFlow->SetCellValue(rowNumber, 2, busName1);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  m_gridPowerFlow->SetCellValue(rowNumber, 3, busName2);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  m_gridPowerFlow->SetCellValue(rowNumber, 4,</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::real(data.powerFlow[0]) * kActivePower));</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  m_gridPowerFlow->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::imag(data.powerFlow[0]) * kReactivePower));</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  m_gridPowerFlow->SetCellValue(rowNumber, 6, isOnline);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  rowNumber++;</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>  m_gridPowerFlow->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Line"</span>));</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  m_gridPowerFlow->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  m_gridPowerFlow->SetCellValue(rowNumber, 2, busName2);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  m_gridPowerFlow->SetCellValue(rowNumber, 3, busName1);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  m_gridPowerFlow->SetCellValue(rowNumber, 4,</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::real(data.powerFlow[1]) * kActivePower));</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  m_gridPowerFlow->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::imag(data.powerFlow[1]) * kReactivePower));</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  m_gridPowerFlow->SetCellValue(rowNumber, 6, isOnline);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  rowNumber++;</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>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = transformerList.begin(), itEnd = transformerList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = *it;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keyword">auto</span> data = transformer->GetPUElectricalData(basePower);</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>  wxString busName1 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  busName1 = static_cast<Bus*>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().name;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  wxString busName2 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  busName2 = static_cast<Bus*>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().name;</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>  wxString isOnline = _(<span class="stringliteral">"Yes"</span>);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  wxColour textColour = m_gridPowerFlow->GetDefaultCellTextColour();</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">if</span>(!transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  isOnline = _(<span class="stringliteral">"No"</span>);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  textColour = m_offlineColour;</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>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 7; ++j) {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  m_gridPowerFlow->SetCellTextColour(rowNumber + i, j, textColour);</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>  }</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>  m_gridPowerFlow->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Transformer"</span>));</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  m_gridPowerFlow->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  m_gridPowerFlow->SetCellValue(rowNumber, 2, busName1);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  m_gridPowerFlow->SetCellValue(rowNumber, 3, busName2);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  m_gridPowerFlow->SetCellValue(rowNumber, 4,</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::real(data.powerFlow[0]) * kActivePower));</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  m_gridPowerFlow->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::imag(data.powerFlow[0]) * kReactivePower));</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  m_gridPowerFlow->SetCellValue(rowNumber, 6, isOnline);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  rowNumber++;</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>  m_gridPowerFlow->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Transformer"</span>));</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  m_gridPowerFlow->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  m_gridPowerFlow->SetCellValue(rowNumber, 2, busName2);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  m_gridPowerFlow->SetCellValue(rowNumber, 3, busName1);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  m_gridPowerFlow->SetCellValue(rowNumber, 4,</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::real(data.powerFlow[1]) * kActivePower));</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  m_gridPowerFlow->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::imag(data.powerFlow[1]) * kReactivePower));</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  m_gridPowerFlow->SetCellValue(rowNumber, 6, isOnline);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  rowNumber++;</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>  m_gridPowerFlow->AutoSize();</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> </div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="comment">// Power Flow buses</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">if</span>(gridToFill == GRID_ALL || gridToFill == GRID_PFBUSES) {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordtype">double</span> kActivePower = 1.0;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">if</span>(m_gridPFBuses->GetCellValue(0, 4) == m_activePowerChoices[1])</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  kActivePower = basePower;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPFBuses->GetCellValue(0, 4) == m_activePowerChoices[2])</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  kActivePower = basePower / 1e3;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPFBuses->GetCellValue(0, 4) == m_activePowerChoices[3])</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  kActivePower = basePower / 1e6;</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> kReactivePower = 1.0;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">if</span>(m_gridPFBuses->GetCellValue(0, 5) == m_reactivePowerChoices[1])</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  kReactivePower = basePower;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPFBuses->GetCellValue(0, 5) == m_reactivePowerChoices[2])</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  kReactivePower = basePower / 1e3;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPFBuses->GetCellValue(0, 5) == m_reactivePowerChoices[3])</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  kReactivePower = basePower / 1e6;</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>  rowNumber = 1;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = busList.begin(), itEnd = busList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</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="keywordtype">double</span> vb = std::abs(data.nominalVoltage);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordflow">if</span>(data.nominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>) vb *= 1e3;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordtype">double</span> kVoltage = 1.0;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">if</span>(m_gridPFBuses->GetCellValue(0, 2) == m_voltageChoices[1])</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  kVoltage = vb;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridPFBuses->GetCellValue(0, 2) == m_voltageChoices[2])</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  kVoltage = vb / 1e3;</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>  m_gridPFBuses->SetCellValue(rowNumber, 0, data.name);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  wxString busTypeString = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">switch</span>(data.busType) {</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="keywordflow">case</span> BUS_SLACK: {</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  busTypeString = _(<span class="stringliteral">"Slack"</span>);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">case</span> BUS_PV: {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  busTypeString = _(<span class="stringliteral">"PV"</span>);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">case</span> BUS_PQ: {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  busTypeString = _(<span class="stringliteral">"PQ"</span>);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  } <span class="keywordflow">break</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>  m_gridPFBuses->SetCellValue(rowNumber, 1, busTypeString);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  m_gridPFBuses->SetCellValue(rowNumber, 2, bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.voltage) * kVoltage));</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  m_gridPFBuses->SetCellValue(rowNumber, 3, bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.voltage))));</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  m_gridPFBuses->SetCellValue(rowNumber, 4, bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::real(data.power) * kActivePower));</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  m_gridPFBuses->SetCellValue(rowNumber, 5, bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::imag(data.power) * kReactivePower));</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  rowNumber++;</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>  m_gridPFBuses->AutoSize();</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> </div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="comment">// Power flow branches</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">if</span>(gridToFill == GRID_ALL || gridToFill == GRID_PFBRANCHES) {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  rowNumber = 1;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = lineList.begin(), itEnd = lineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <a class="code" href="class_line.html">Line</a>* line = *it;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keyword">auto</span> data = line->GetPUElectricalData(basePower);</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> vb = data.nominalVoltage;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">if</span>(data.nominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>) vb *= 1e3;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordtype">double</span> zb = (vb * vb) / basePower;</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>  wxString busName1 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  busName1 = static_cast<Bus*>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().name;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  wxString busName2 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  busName2 = static_cast<Bus*>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().name;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  wxString isOnline = _(<span class="stringliteral">"Yes"</span>);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  wxColour textColour = m_gridPFBranches->GetDefaultCellTextColour();</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">if</span>(!line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  isOnline = _(<span class="stringliteral">"No"</span>);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  textColour = m_offlineColour;</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>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 10; ++j) {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  m_gridPFBranches->SetCellTextColour(rowNumber, j, textColour);</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> </div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  m_gridPFBranches->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Line"</span>));</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  m_gridPFBranches->SetCellValue(rowNumber, 1, data.name);</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>  m_gridPFBranches->SetCellValue(rowNumber, 2, busName1);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  m_gridPFBranches->SetCellValue(rowNumber, 3, busName2);</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="keywordtype">double</span> k = 1.0;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">if</span>(m_gridPFBranches->GetCellValue(0, 4) == m_resistanceChoices[1]) k = zb;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  m_gridPFBranches->SetCellValue(rowNumber, 4, line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(data.resistance * k));</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  k = 1.0;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">if</span>(m_gridPFBranches->GetCellValue(0, 5) == m_indReactanceChoices[1]) k = zb;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  m_gridPFBranches->SetCellValue(rowNumber, 5, line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(data.indReactance * k));</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  k = 1.0;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">if</span>(m_gridPFBranches->GetCellValue(0, 6) == m_capSusceptanceChoices[1]) k = zb;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  m_gridPFBranches->SetCellValue(rowNumber, 6, line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(data.capSusceptance / k));</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  m_gridPFBranches->SetCellValue(rowNumber, 7, <span class="stringliteral">"-"</span>);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  m_gridPFBranches->SetCellValue(rowNumber, 8, <span class="stringliteral">"-"</span>);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  m_gridPFBranches->SetCellValue(rowNumber, 9, isOnline);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  rowNumber++;</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="keywordflow">for</span>(<span class="keyword">auto</span> it = transformerList.begin(), itEnd = transformerList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = *it;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keyword">auto</span> data = transformer->GetPUElectricalData(basePower);</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="keywordtype">double</span> vb = 0.0;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordflow">if</span>(data.baseVoltage == 0) {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  vb = data.primaryNominalVoltage;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">if</span>(data.primaryNominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>) vb *= 1e3;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  vb = data.secondaryNominalVoltage;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">if</span>(data.secondaryNominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>) vb *= 1e3;</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="keywordtype">double</span> zb = (vb * vb) / basePower;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> </div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  wxString busName1 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  busName1 = static_cast<Bus*>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().name;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  wxString busName2 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  busName2 = static_cast<Bus*>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().name;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> </div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  wxString isOnline = _(<span class="stringliteral">"Yes"</span>);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  wxColour textColour = m_gridPFBranches->GetDefaultCellTextColour();</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">if</span>(!transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  isOnline = _(<span class="stringliteral">"No"</span>);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  textColour = m_offlineColour;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 10; ++j) {</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  m_gridPFBranches->SetCellTextColour(rowNumber, j, textColour);</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> </div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  m_gridPFBranches->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Transformer"</span>));</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  m_gridPFBranches->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  m_gridPFBranches->SetCellValue(rowNumber, 2, busName1);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  m_gridPFBranches->SetCellValue(rowNumber, 3, busName2);</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>  <span class="keywordtype">double</span> k = 1.0;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">if</span>(m_gridPFBranches->GetCellValue(0, 4) == m_resistanceChoices[1]) k = zb;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  m_gridPFBranches->SetCellValue(rowNumber, 4, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(data.resistance * k));</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  k = 1.0;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keywordflow">if</span>(m_gridPFBranches->GetCellValue(0, 5) == m_indReactanceChoices[1]) k = zb;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  m_gridPFBranches->SetCellValue(rowNumber, 5, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(data.indReactance * k));</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  m_gridPFBranches->SetCellValue(rowNumber, 6, <span class="stringliteral">"-"</span>);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  m_gridPFBranches->SetCellValue(rowNumber, 7, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(data.turnsRatio));</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  m_gridPFBranches->SetCellValue(rowNumber, 8, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(data.phaseShift));</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  m_gridPFBranches->SetCellValue(rowNumber, 9, isOnline);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  rowNumber++;</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>  m_gridPFBranches->AutoSize();</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="comment">// Fault</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">if</span>(gridToFill == GRID_ALL || gridToFill == GRID_FAULT) {</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  rowNumber = 2;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = busList.begin(), itEnd = busList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">if</span>(data.hasFault) {</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordtype">double</span> vb = bus->GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordtype">double</span> ib = basePower / (std::sqrt(3.0) * vb);</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>  m_gridFault->SetCellValue(rowNumber, 0, data.name);</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>  <span class="keywordtype">double</span> kCurrent = 1.0;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keywordflow">if</span>(m_gridFault->GetCellValue(1, 1) == m_currentChoices[1]) {</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  kCurrent = ib;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFault->GetCellValue(1, 1) == m_currentChoices[2]) {</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  kCurrent = ib / 1e3;</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>  m_gridFault->SetCellValue(rowNumber, 1,</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[0]) * kCurrent));</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>  m_gridFault->SetCellValue(rowNumber, 2,</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[0]))));</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>  kCurrent = 1.0;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">if</span>(m_gridFault->GetCellValue(1, 3) == m_currentChoices[1]) {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  kCurrent = ib;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFault->GetCellValue(1, 3) == m_currentChoices[2]) {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  kCurrent = ib / 1e3;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  }</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  m_gridFault->SetCellValue(rowNumber, 3,</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[1]) * kCurrent));</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>  m_gridFault->SetCellValue(rowNumber, 4,</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[1]))));</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>  kCurrent = 1.0;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordflow">if</span>(m_gridFault->GetCellValue(1, 5) == m_currentChoices[1]) {</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  kCurrent = ib;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFault->GetCellValue(1, 5) == m_currentChoices[2]) {</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  kCurrent = ib / 1e3;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  }</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  m_gridFault->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[2]) * kCurrent));</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> </div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  m_gridFault->SetCellValue(rowNumber, 6,</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[2]))));</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>  rowNumber++;</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>  m_gridFault->AutoSize();</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> </div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="comment">// Fault buses</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keywordflow">if</span>(gridToFill == GRID_ALL || gridToFill == GRID_FAULTBUSES) {</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  rowNumber = 2;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = busList.begin(), itEnd = busList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="keywordtype">double</span> vb = bus->GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</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>  m_gridFaultBuses->SetCellValue(rowNumber, 0, data.name);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="keywordtype">double</span> kVoltage = 1.0;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="keywordflow">if</span>(m_gridFaultBuses->GetCellValue(1, 1) == m_voltageChoices[1]) {</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  kVoltage = vb;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBuses->GetCellValue(1, 1) == m_voltageChoices[2]) {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  kVoltage = vb / 1e3;</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>  m_gridFaultBuses->SetCellValue(rowNumber, 1,</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultVoltage[0]) * kVoltage));</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  m_gridFaultBuses->SetCellValue(rowNumber, 2,</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultVoltage[0]))));</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>  kVoltage = 1.0;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keywordflow">if</span>(m_gridFaultBuses->GetCellValue(1, 3) == m_voltageChoices[1]) {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  kVoltage = vb;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBuses->GetCellValue(1, 3) == m_voltageChoices[2]) {</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  kVoltage = vb / 1e3;</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>  m_gridFaultBuses->SetCellValue(rowNumber, 3,</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultVoltage[1]) * kVoltage));</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  m_gridFaultBuses->SetCellValue(rowNumber, 4,</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultVoltage[1]))));</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>  kVoltage = 1.0;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <span class="keywordflow">if</span>(m_gridFaultBuses->GetCellValue(1, 5) == m_voltageChoices[1]) {</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  kVoltage = vb;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBuses->GetCellValue(1, 5) == m_voltageChoices[2]) {</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  kVoltage = vb / 1e3;</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>  m_gridFaultBuses->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultVoltage[2]) * kVoltage));</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  m_gridFaultBuses->SetCellValue(rowNumber, 6,</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultVoltage[2]))));</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>  rowNumber++;</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>  m_gridFaultBuses->AutoSize();</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="comment">// Fault branches</span></div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keywordflow">if</span>(gridToFill == GRID_ALL || gridToFill == GRID_FAULTBRANCHES) {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  rowNumber = 2;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = lineList.begin(), itEnd = lineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <a class="code" href="class_line.html">Line</a>* line = *it;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keyword">auto</span> data = line->GetPUElectricalData(basePower);</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">double</span> vb = line->GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <span class="keywordtype">double</span> ib = basePower / (std::sqrt(3.0) * vb);</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>  wxString busName1 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  busName1 = static_cast<Bus*>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().name;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  wxString busName2 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  busName2 = static_cast<Bus*>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().name;</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>  wxString isOnline = _(<span class="stringliteral">"Yes"</span>);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  wxColour textColour = m_gridFaultBranches->GetDefaultCellTextColour();</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keywordflow">if</span>(!line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  isOnline = _(<span class="stringliteral">"No"</span>);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  textColour = m_offlineColour;</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  }</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 11; ++j) {</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  m_gridFaultBranches->SetCellTextColour(rowNumber + i, j, textColour);</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>  }</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>  m_gridFaultBranches->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Line"</span>));</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  m_gridFaultBranches->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  m_gridFaultBranches->SetCellValue(rowNumber, 2, busName1);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  m_gridFaultBranches->SetCellValue(rowNumber, 3, busName2);</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="keywordtype">double</span> kCurrent = 1.0;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 4) == m_currentChoices[1]) {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  kCurrent = ib;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 4) == m_currentChoices[2]) {</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  kCurrent = ib / 1e3;</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>  m_gridFaultBranches->SetCellValue(rowNumber, 4,</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[0][0]) * kCurrent));</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  m_gridFaultBranches->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[0][0]))));</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  kCurrent = 1.0;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 6) == m_currentChoices[1]) {</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  kCurrent = ib;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 6) == m_currentChoices[2]) {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  kCurrent = ib / 1e3;</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_gridFaultBranches->SetCellValue(rowNumber, 6,</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[0][1]) * kCurrent));</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  m_gridFaultBranches->SetCellValue(rowNumber, 7,</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[0][1]))));</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  kCurrent = 1.0;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 8) == m_currentChoices[1]) {</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  kCurrent = ib;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 8) == m_currentChoices[2]) {</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  kCurrent = ib / 1e3;</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>  m_gridFaultBranches->SetCellValue(rowNumber, 8,</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[0][2]) * kCurrent));</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  m_gridFaultBranches->SetCellValue(rowNumber, 9,</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[0][2]))));</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  m_gridFaultBranches->SetCellValue(rowNumber, 10, isOnline);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  rowNumber++;</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_gridFaultBranches->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Line"</span>));</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  m_gridFaultBranches->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  m_gridFaultBranches->SetCellValue(rowNumber, 2, busName2);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  m_gridFaultBranches->SetCellValue(rowNumber, 3, busName1);</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  kCurrent = 1.0;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 4) == m_currentChoices[1]) {</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  kCurrent = ib;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 4) == m_currentChoices[2]) {</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  kCurrent = ib / 1e3;</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>  m_gridFaultBranches->SetCellValue(rowNumber, 4,</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[1][0]) * kCurrent));</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  m_gridFaultBranches->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[1][0]))));</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  kCurrent = 1.0;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 6) == m_currentChoices[1]) {</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  kCurrent = ib;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 6) == m_currentChoices[2]) {</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  kCurrent = ib / 1e3;</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>  m_gridFaultBranches->SetCellValue(rowNumber, 6,</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[1][1]) * kCurrent));</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  m_gridFaultBranches->SetCellValue(rowNumber, 7,</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[1][1]))));</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  kCurrent = 1.0;</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 8) == m_currentChoices[1]) {</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  kCurrent = ib;</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 8) == m_currentChoices[2]) {</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  kCurrent = ib / 1e3;</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>  m_gridFaultBranches->SetCellValue(rowNumber, 8,</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[1][2]) * kCurrent));</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  m_gridFaultBranches->SetCellValue(rowNumber, 9,</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  line-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[1][2]))));</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  m_gridFaultBranches->SetCellValue(rowNumber, 10, isOnline);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  rowNumber++;</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">for</span>(<span class="keyword">auto</span> it = transformerList.begin(), itEnd = transformerList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = *it;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="keyword">auto</span> data = transformer->GetPUElectricalData(basePower);</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="keywordtype">double</span> vb = transformer->GetValueFromUnit(data.primaryNominalVoltage, data.primaryNominalVoltageUnit);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keywordtype">double</span> ibp = basePower / (std::sqrt(3.0) * vb);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  vb = transformer->GetValueFromUnit(data.secondaryNominalVoltage, data.secondaryNominalVoltageUnit);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keywordtype">double</span> ibs = basePower / (std::sqrt(3.0) * vb);</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>  wxString busName1 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  busName1 = static_cast<Bus*>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().name;</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  wxString busName2 = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  busName2 = static_cast<Bus*>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().name;</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>  wxString isOnline = _(<span class="stringliteral">"Yes"</span>);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  wxColour textColour = m_gridFaultBranches->GetDefaultCellTextColour();</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="keywordflow">if</span>(!transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  isOnline = _(<span class="stringliteral">"No"</span>);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  textColour = m_offlineColour;</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">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; ++i) {</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 11; ++j) {</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  m_gridFaultBranches->SetCellTextColour(rowNumber + i, j, textColour);</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> </div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  m_gridFaultBranches->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Transformer"</span>));</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  m_gridFaultBranches->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  m_gridFaultBranches->SetCellValue(rowNumber, 2, busName1);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  m_gridFaultBranches->SetCellValue(rowNumber, 3, busName2);</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">double</span> kCurrent = 1.0;</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 4) == m_currentChoices[1]) {</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  kCurrent = ibp;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 4) == m_currentChoices[2]) {</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  kCurrent = ibp / 1e3;</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_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  rowNumber, 4, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[0][0]) * kCurrent));</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  rowNumber, 5, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[0][0]))));</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  kCurrent = 1.0;</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 6) == m_currentChoices[1]) {</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  kCurrent = ibp;</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 6) == m_currentChoices[2]) {</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  kCurrent = ibp / 1e3;</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>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  rowNumber, 6, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[0][1]) * kCurrent));</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  rowNumber, 7, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[0][1]))));</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  kCurrent = 1.0;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 8) == m_currentChoices[1]) {</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  kCurrent = ibp;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 8) == m_currentChoices[2]) {</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  kCurrent = ibp / 1e3;</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>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  rowNumber, 8, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[0][2]) * kCurrent));</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  rowNumber, 9, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[0][2]))));</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  m_gridFaultBranches->SetCellValue(rowNumber, 10, isOnline);</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  rowNumber++;</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>  m_gridFaultBranches->SetCellValue(rowNumber, 0, _(<span class="stringliteral">"Transformer"</span>));</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  m_gridFaultBranches->SetCellValue(rowNumber, 1, data.name);</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  m_gridFaultBranches->SetCellValue(rowNumber, 2, busName2);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  m_gridFaultBranches->SetCellValue(rowNumber, 3, busName1);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  kCurrent = 1.0;</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 4) == m_currentChoices[1]) {</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  kCurrent = ibs;</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 4) == m_currentChoices[2]) {</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  kCurrent = ibs / 1e3;</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  }</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  rowNumber, 4, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[1][0]) * kCurrent));</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  rowNumber, 5, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[1][0]))));</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  kCurrent = 1.0;</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 6) == m_currentChoices[1]) {</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  kCurrent = ibs;</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 6) == m_currentChoices[2]) {</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  kCurrent = ibs / 1e3;</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>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  rowNumber, 6, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[1][1]) * kCurrent));</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  rowNumber, 7, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[1][1]))));</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  kCurrent = 1.0;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 8) == m_currentChoices[1]) {</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  kCurrent = ibs;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultBranches->GetCellValue(1, 8) == m_currentChoices[2]) {</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  kCurrent = ibs / 1e3;</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>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  rowNumber, 8, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[1][2]) * kCurrent));</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  m_gridFaultBranches->SetCellValue(</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  rowNumber, 9, transformer-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[1][2]))));</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  m_gridFaultBranches->SetCellValue(rowNumber, 10, isOnline);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  rowNumber++;</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> </div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  m_gridFaultBranches->AutoSize();</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="comment">// Fault generators</span></div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keywordflow">if</span>(gridToFill == GRID_ALL || gridToFill == GRID_FAULTGENERATORS) {</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  rowNumber = 2;</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = generatorList.begin(), itEnd = generatorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator = *it;</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="keyword">auto</span> data = generator->GetPUElectricalData(basePower);</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keywordtype">double</span> vb = generator->GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="keywordtype">double</span> ib = basePower / (std::sqrt(3.0) * vb);</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_gridFaultGenerators->SetCellValue(rowNumber, 0, data.name);</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="keywordtype">double</span> kCurrent = 1.0;</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <span class="keywordflow">if</span>(m_gridFaultGenerators->GetCellValue(1, 1) == m_currentChoices[1])</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  kCurrent = ib;</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultGenerators->GetCellValue(1, 1) == m_currentChoices[2])</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  kCurrent = ib / 1e3;</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  m_gridFaultGenerators->SetCellValue(rowNumber, 1,</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  generator-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[0]) * kCurrent));</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  m_gridFaultGenerators->SetCellValue(</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  rowNumber, 2, generator-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[0]))));</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span> </div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  kCurrent = 1.0;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <span class="keywordflow">if</span>(m_gridFaultGenerators->GetCellValue(1, 3) == m_currentChoices[1])</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  kCurrent = ib;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultGenerators->GetCellValue(1, 3) == m_currentChoices[2])</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  kCurrent = ib / 1e3;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  m_gridFaultGenerators->SetCellValue(rowNumber, 3,</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  generator-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[1]) * kCurrent));</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  m_gridFaultGenerators->SetCellValue(</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  rowNumber, 4, generator-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[1]))));</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>  kCurrent = 1.0;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keywordflow">if</span>(m_gridFaultGenerators->GetCellValue(1, 5) == m_currentChoices[1])</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  kCurrent = ib;</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_gridFaultGenerators->GetCellValue(1, 5) == m_currentChoices[2])</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  kCurrent = ib / 1e3;</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  m_gridFaultGenerators->SetCellValue(rowNumber, 5,</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  generator-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(std::abs(data.faultCurrent[2]) * kCurrent));</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  m_gridFaultGenerators->SetCellValue(</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  rowNumber, 6, generator-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(wxRadToDeg(std::arg(data.faultCurrent[2]))));</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span> </div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  rowNumber++;</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>  m_gridFaultGenerators->AutoSize();</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>  m_changingValues = <span class="keyword">false</span>;</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</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="keywordtype">void</span> DataReport::SetRowsColours(wxGrid* grid, <span class="keywordtype">int</span> rowStart)</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>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = rowStart; i < grid->GetNumberRows(); ++i) {</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  wxGridCellAttr* attr = grid->GetOrCreateCellAttr(i, 0);</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  <span class="keywordflow">if</span>((i - rowStart) % 2 == 0)</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  attr->SetBackgroundColour(m_evenRowColour);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  attr->SetBackgroundColour(m_oddRowColour);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  grid->SetRowAttr(i, attr);</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  }</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> </div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span> <span class="keywordtype">void</span> DataReport::OnPFBusGridChanged(wxGridEvent& event)</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span> {</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  <span class="keywordflow">if</span>(!m_changingValues) FillValues(GRID_PFBUSES);</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="keywordtype">void</span> DataReport::OnFaulrGridChanged(wxGridEvent& event)</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>  <span class="keywordflow">if</span>(!m_changingValues) FillValues(GRID_FAULT);</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> }</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> <span class="keywordtype">void</span> DataReport::OnFaultBranchesGridChanged(wxGridEvent& event)</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> {</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  <span class="keywordflow">if</span>(!m_changingValues) FillValues(GRID_FAULTBRANCHES);</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> <span class="keywordtype">void</span> DataReport::OnFaultBusesGridChanged(wxGridEvent& event)</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> {</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="keywordflow">if</span>(!m_changingValues) FillValues(GRID_FAULTBUSES);</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">void</span> DataReport::OnFaultGeneratorsGridChanged(wxGridEvent& event)</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="keywordflow">if</span>(!m_changingValues) FillValues(GRID_FAULTGENERATORS);</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> <span class="keywordtype">void</span> DataReport::OnPFBranchesGridChanged(wxGridEvent& event)</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">if</span>(!m_changingValues) FillValues(GRID_PFBRANCHES);</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">void</span> DataReport::OnPowerFlowGridChanged(wxGridEvent& event)</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> {</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="keywordflow">if</span>(!m_changingValues) FillValues(GRID_PF);</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</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="_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#l00110">SyncGenerator.h:110</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#l00014">PowerElement.h:14</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#l00128">ElectricCalculation.h:128</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#l00158">ElectricCalculation.h:158</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#l00045">Bus.h:45</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#l00219">Element.h:219</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#l00022">PowerElement.h:22</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#l00035">Line.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="_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_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_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#l00300">Element.cpp:300</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#l00008">ElectricCalculation.cpp:8</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#l00049">ElectricCalculation.h:49</a></div></div> -<div class="ttc" id="class_workspace_html"><div class="ttname"><a href="class_workspace.html">Workspace</a></div><div class="ttdef"><b>Definition:</b> <a href="_workspace_8h_source.html#l00056">Workspace.h:56</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#l00021">PowerElement.h:21</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#l00148">ElectricCalculation.h:148</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#l00054">Transformer.h:54</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_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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_data_report_8h.html b/docs/doxygen/html/_data_report_8h.html new file mode 100644 index 0000000..9ffd33b --- /dev/null +++ b/docs/doxygen/html/_data_report_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/DataReport.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('_data_report_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">DataReport.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "DataReportBase.h"</code><br /> +</div> +<p><a href="_data_report_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_data_report.html">DataReport</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form that shows the results of power flow and fault calculations. <a href="class_data_report.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="_data_report_8h.html">DataReport.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/_data_report_8h_source.html b/docs/doxygen/html/_data_report_8h_source.html index 314265a..b16cf97 100644 --- a/docs/doxygen/html/_data_report_8h_source.html +++ b/docs/doxygen/html/_data_report_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,16 +88,16 @@ $(document).ready(function(){initNavTree('_data_report_8h_source.html','');}); <div class="title">DataReport.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="preprocessor">#ifndef DATAREPORT_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define DATAREPORT_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "DataReportBase.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_workspace.html">Workspace</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="keyword">class </span><a class="code" href="class_electric_calculation.html">ElectricCalculation</a>;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"><a class="line" href="class_data_report.html"> 9</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="l00010"></a><span class="lineno"> 10</span> {</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">enum</span> GridSelection {</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  GRID_ALL = 0,</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  GRID_PF,</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  GRID_PFBUSES,</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  GRID_PFBRANCHES,</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  GRID_FAULT,</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  GRID_FAULTBUSES,</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  GRID_FAULTBRANCHES,</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  GRID_FAULTGENERATORS,</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>  <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="l00024"></a><span class="lineno"> 24</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_data_report.html">DataReport</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">virtual</span> <span class="keywordtype">void</span> SetHeaders();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateGrids();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> FillValues(GridSelection gridToFill = GRID_ALL);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</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="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFaulrGridChanged(wxGridEvent& event);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFaultBranchesGridChanged(wxGridEvent& event);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFaultBusesGridChanged(wxGridEvent& event);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFaultGeneratorsGridChanged(wxGridEvent& event);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPFBranchesGridChanged(wxGridEvent& event);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPowerFlowGridChanged(wxGridEvent& event);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPFBusGridChanged(wxGridEvent& event);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_workspace.html">Workspace</a>* m_workspace = NULL;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> m_changingValues = <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>  <span class="comment">// Headers choices</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  wxArrayString m_voltageChoices;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  wxArrayString m_activePowerChoices;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  wxArrayString m_reactivePowerChoices;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  wxArrayString m_resistanceChoices;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  wxArrayString m_indReactanceChoices;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  wxArrayString m_capSusceptanceChoices;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  wxArrayString m_currentChoices;</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">// Colors</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  wxColour m_headerColour;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  wxColour m_offlineColour;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  wxColour m_oddRowColour;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  wxColour m_evenRowColour;</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 // 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="ttdef"><b>Definition:</b> <a href="_data_report_8h_source.html#l00009">DataReport.h:9</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#l00049">ElectricCalculation.h:49</a></div></div> -<div class="ttc" id="class_workspace_html"><div class="ttname"><a href="class_workspace.html">Workspace</a></div><div class="ttdef"><b>Definition:</b> <a href="_workspace_8h_source.html#l00056">Workspace.h:56</a></div></div> +<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_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 --> <!-- 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>DataReport.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_data_report_8h.html">DataReport.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/_data_report_base_8cpp_source.html b/docs/doxygen/html/_data_report_base_8cpp_source.html index 9073051..c7cecb9 100644 --- a/docs/doxygen/html/_data_report_base_8cpp_source.html +++ b/docs/doxygen/html/_data_report_base_8cpp_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_data_report_base_8h_source.html b/docs/doxygen/html/_data_report_base_8h_source.html index f3ac16d..89ee097 100644 --- a/docs/doxygen/html/_data_report_base_8h_source.html +++ b/docs/doxygen/html/_data_report_base_8h_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_data_report_bitmaps_8cpp_source.html b/docs/doxygen/html/_data_report_bitmaps_8cpp_source.html index 2e86f68..4951e8f 100644 --- a/docs/doxygen/html/_data_report_bitmaps_8cpp_source.html +++ b/docs/doxygen/html/_data_report_bitmaps_8cpp_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_degrees_and_radians_8h_source.html b/docs/doxygen/html/_degrees_and_radians_8h_source.html index 485fd42..e12c65b 100644 --- a/docs/doxygen/html/_degrees_and_radians_8h_source.html +++ b/docs/doxygen/html/_degrees_and_radians_8h_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_electric_calculation_8cpp_source.html b/docs/doxygen/html/_electric_calculation_8cpp_source.html index 1e57a24..03fc2e3 100644 --- a/docs/doxygen/html/_electric_calculation_8cpp_source.html +++ b/docs/doxygen/html/_electric_calculation_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,47 +88,47 @@ $(document).ready(function(){initNavTree('_electric_calculation_8cpp_source.html <div class="title">ElectricCalculation.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 "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a6663e7a20e96ee975bd0f7d54b8a6f70"> 6</a></span> <a class="code" href="class_electric_calculation.html#a6663e7a20e96ee975bd0f7d54b8a6f70">ElectricCalculation::ElectricCalculation</a>() {}</div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a1e70291bfa9a0850d9ffcbee44daa2f7"> 7</a></span> <a class="code" href="class_electric_calculation.html#a1e70291bfa9a0850d9ffcbee44daa2f7">ElectricCalculation::~ElectricCalculation</a>() {}</div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92"> 8</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="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_powerElementList.clear();</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  m_busList.clear();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_capacitorList.clear();</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_indMotorList.clear();</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  m_inductorList.clear();</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_lineList.clear();</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_loadList.clear();</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  m_syncGeneratorList.clear();</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  m_syncMotorList.clear();</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  m_transformerList.clear();</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="comment">// TODO: Bad design?</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(); it != elementList.end(); it++) {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_powerElementList.push_back(static_cast<PowerElement*>(element));</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>(<a class="code" href="class_bus.html">Bus</a>* bus = dynamic_cast<Bus*>(element))</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_busList.push_back(bus);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</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="l00028"></a><span class="lineno"> 28</span>  m_capacitorList.push_back(capacitor);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</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="l00030"></a><span class="lineno"> 30</span>  m_indMotorList.push_back(indMotor);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</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="l00032"></a><span class="lineno"> 32</span>  m_inductorList.push_back(inductor);</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_line.html">Line</a>* line = dynamic_cast<Line*>(element))</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_lineList.push_back(line);</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_load.html">Load</a>* load = dynamic_cast<Load*>(element))</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_loadList.push_back(load);</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_sync_generator.html">SyncGenerator</a>* syncGenerator = dynamic_cast<SyncGenerator*>(element))</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_syncGeneratorList.push_back(syncGenerator);</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_sync_motor.html">SyncMotor</a>* syncMotor = dynamic_cast<SyncMotor*>(element))</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_syncMotorList.push_back(syncMotor);</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_transformer.html">Transformer</a>* transformer = dynamic_cast<Transformer*>(element))</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_transformerList.push_back(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> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">// Set buses numbers</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>  data.number = busNumber;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  bus->SetElectricalData(data);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  busNumber++;</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"><a class="line" href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d"> 56</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="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">double</span> systemPowerBase,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  YBusSequence sequence,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">bool</span> includeSyncMachines,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">bool</span> allLoadsAsImpedances)</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="keywordflow">if</span>(m_busList.size() == 0) <span class="keywordflow">return</span> <span class="keyword">false</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="comment">// Clear and fill with zeros the Ybus</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  yBus.clear();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</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="l00067"></a><span class="lineno"> 67</span>  std::vector<std::complex<double> > line;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</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="l00069"></a><span class="lineno"> 69</span>  line.push_back(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>  yBus.push_back(line);</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="comment">// Set buses numbers</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">int</span> busNumber = 0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</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="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *itb;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  data.number = busNumber;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  bus->SetElectricalData(data);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  busNumber++;</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">// Load</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_loadList.begin(), itEnd = m_loadList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="class_load.html">Load</a>* load = *it;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span>(load-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</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="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data = load->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span>(data.loadType == CONST_IMPEDANCE || allLoadsAsImpedances) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  std::complex<double> yLoad = std::complex<double>(data.activePower, -data.reactivePower);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">if</span>(allLoadsAsImpedances) {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</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="l00094"></a><span class="lineno"> 94</span>  yLoad /= (std::abs(v) * std::abs(v));</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>  yBus[n][n] += yLoad;</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="comment">// Capacitor</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_capacitorList.begin(), itEnd = m_capacitorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = *it;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>(capacitor-><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>(capacitor-><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_capacitor_electrical_data.html">CapacitorElectricalData</a> data = capacitor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  yBus[n][n] += std::complex<double>(0.0, data.reactivePower);</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> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// Inductor</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_inductorList.begin(), itEnd = m_inductorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = *it;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">if</span>(inductor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</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="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data = inductor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  yBus[n][n] += std::complex<double>(0.0, -data.reactivePower);</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"> 121</span>  <span class="comment">// Power line</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_lineList.begin(), itEnd = m_lineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="class_line.html">Line</a>* line = *it;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = line->GetPUElectricalData(systemPowerBase);</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="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="l00128"></a><span class="lineno"> 128</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="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">switch</span>(sequence) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">case</span> POSITIVE_SEQ:</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">case</span> NEGATIVE_SEQ: {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  yBus[n1][n2] -= 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  yBus[n2][n1] -= 1.0 / std::complex<double>(data.resistance, data.indReactance);</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>  yBus[n1][n1] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  yBus[n2][n2] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</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>  yBus[n1][n1] += std::complex<double>(0.0, data.capSusceptance / 2.0);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  yBus[n2][n2] += std::complex<double>(0.0, data.capSusceptance / 2.0);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">case</span> ZERO_SEQ: {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  yBus[n1][n2] -= 1.0 / std::complex<double>(data.zeroResistance, data.zeroIndReactance);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  yBus[n2][n1] -= 1.0 / std::complex<double>(data.zeroResistance, data.zeroIndReactance);</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>  yBus[n1][n1] += 1.0 / std::complex<double>(data.zeroResistance, data.zeroIndReactance);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  yBus[n2][n2] += 1.0 / std::complex<double>(data.zeroResistance, data.zeroIndReactance);</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>  yBus[n1][n1] += std::complex<double>(0.0, data.zeroCapSusceptance / 2.0);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  yBus[n2][n2] += std::complex<double>(0.0, data.zeroCapSusceptance / 2.0);</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="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="comment">// Transformer</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</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="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = *it;</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>(transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = transformer->GetPUElectricalData(systemPowerBase);</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> 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="l00164"></a><span class="lineno"> 164</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="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</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="l00167"></a><span class="lineno"> 167</span>  <span class="comment">// impedance.</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span>(data.turnsRatio == 1.0 && data.phaseShift == 0.0 && sequence != ZERO_SEQ) {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  yBus[n1][n2] += -1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  yBus[n2][n1] += -1.0 / std::complex<double>(data.resistance, data.indReactance);</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>  yBus[n1][n1] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  yBus[n2][n2] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</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="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="l00176"></a><span class="lineno"> 176</span>  <span class="comment">// way (see references).</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">//[Ref. 1: Elementos de analise de sistemas de potencia - Stevenson - pg. 232]</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</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="l00179"></a><span class="lineno"> 179</span>  <span class="comment">//[Ref. 3: http://www.columbia.edu/~dano/courses/power/notes/power/andersson1.pdf]</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(sequence != ZERO_SEQ) {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// Complex turns ratio</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordtype">double</span> radPhaseShift = wxDegToRad(data.phaseShift);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  std::complex<double> a = std::complex<double>(data.turnsRatio * std::cos(radPhaseShift),</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  -data.turnsRatio * std::sin(radPhaseShift));</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">// Transformer admitance</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  std::complex<double> y = 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>  <span class="keywordflow">if</span>(sequence == POSITIVE_SEQ) {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  yBus[n1][n1] += y / std::pow(std::abs(a), 2.0);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  yBus[n1][n2] += -(y / std::conj(a));</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  yBus[n2][n1] += -(y / a);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  yBus[n2][n2] += y;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(sequence == NEGATIVE_SEQ) {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  yBus[n1][n1] += y / std::pow(std::abs(a), 2.0);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  yBus[n1][n2] += -(y / a);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  yBus[n2][n1] += -(y / std::conj(a));</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  yBus[n2][n2] += y;</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">else</span> <span class="keywordflow">if</span>(sequence == ZERO_SEQ) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">switch</span>(data.connection) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">case</span> GWYE_GWYE: {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  std::complex<double> y =</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  1.0 /</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  std::complex<double>(</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  data.zeroResistance + 3.0 * (data.primaryGrndResistance + data.secondaryGrndResistance),</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  data.zeroIndReactance +</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  3.0 * (data.primaryGrndReactance + data.secondaryGrndReactance));</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  std::complex<double> a = std::complex<double>(data.turnsRatio, 0.0);</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>  yBus[n1][n1] += y / (a * a);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  yBus[n1][n2] += -(y / a);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  yBus[n2][n1] += -(y / a);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  yBus[n2][n2] += y;</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> DELTA_GWYE: {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  std::complex<double> y =</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  1.0 / std::complex<double>(data.zeroResistance + 3.0 * (data.secondaryGrndResistance),</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  data.zeroIndReactance + 3.0 * (data.secondaryGrndReactance));</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  yBus[n2][n2] += y;</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>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">case</span> GWYE_DELTA: {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  std::complex<double> y =</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  1.0 / std::complex<double>(data.zeroResistance + 3.0 * (data.primaryGrndResistance),</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  data.zeroIndReactance + 3.0 * (data.primaryGrndReactance));</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  yBus[n1][n1] += y;</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>  <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>  }</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> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">if</span>(includeSyncMachines) {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">// Synchronous generator</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</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="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</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="l00243"></a><span class="lineno"> 243</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = syncGenerator->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">switch</span>(sequence) {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">case</span> POSITIVE_SEQ: {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  yBus[n][n] += 1.0 / std::complex<double>(data.positiveResistance, data.positiveReactance);</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> NEGATIVE_SEQ: {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  yBus[n][n] += 1.0 / std::complex<double>(data.negativeResistance, data.negativeReactance);</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">case</span> ZERO_SEQ: {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">if</span>(data.groundNeutral) {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  yBus[n][n] += 1.0 / std::complex<double>(data.zeroResistance + 3.0 * data.groundResistance,</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  data.zeroReactance + 3.0 * data.groundReactance);</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>  }</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="comment">// Synchronous motor</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</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="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = *it;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">if</span>(syncMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</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="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = syncMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">switch</span>(sequence) {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">case</span> POSITIVE_SEQ: {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  yBus[n][n] += 1.0 / std::complex<double>(data.positiveResistance, data.positiveReactance);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">case</span> NEGATIVE_SEQ: {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  yBus[n][n] += 1.0 / std::complex<double>(data.negativeResistance, data.negativeReactance);</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> ZERO_SEQ: {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span>(data.groundNeutral) {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  yBus[n][n] += 1.0 / std::complex<double>(data.zeroResistance + 3.0 * data.groundResistance,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  data.zeroReactance + 3.0 * data.groundReactance);</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>  } <span class="keywordflow">break</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"> 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="keywordflow">return</span> <span class="keyword">true</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"><a class="line" href="class_electric_calculation.html#a1d417da6eeb8c12f7be6501fff6f7049"> 287</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="l00288"></a><span class="lineno"> 288</span>  std::vector<std::complex<double> > power,</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  std::vector<BusType> busType,</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  std::vector<ReactiveLimits> reactiveLimit,</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordtype">double</span> systemPowerBase)</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="keywordtype">double</span> zeroLimit = 1e-4;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</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="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">if</span>(reactiveLimit[i].maxLimit > -zeroLimit && reactiveLimit[i].maxLimit < zeroLimit)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  reactiveLimit[i].maxLimit = zeroLimit;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">if</span>(reactiveLimit[i].minLimit > -zeroLimit && reactiveLimit[i].minLimit < zeroLimit)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  reactiveLimit[i].minLimit = zeroLimit;</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">unsigned</span> <span class="keywordtype">int</span> i = 0; i < power.size(); ++i) {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span>(std::real(power[i]) > -zeroLimit && std::real(power[i]) < zeroLimit)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  power[i] = std::complex<double>(0.0, std::imag(power[i]));</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">if</span>(std::imag(power[i]) > -zeroLimit && std::imag(power[i]) < zeroLimit)</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  power[i] = std::complex<double>(std::real(power[i]), 0.0);</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>  <span class="comment">// Buses</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</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="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="class_bus.html">Bus</a>* bus = m_busList[i];</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  data.voltage = voltage[i];</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  data.power = power[i];</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  data.busType = busType[i];</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  bus->SetElectricalData(data);</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>  <span class="comment">// Power line</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</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="l00318"></a><span class="lineno"> 318</span>  <a class="code" href="class_line.html">Line</a>* line = m_lineList[i];</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</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="l00321"></a><span class="lineno"> 321</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="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = line->GetElectricalData();</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  std::complex<double> v1 = voltage[n1];</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  std::complex<double> v2 = voltage[n2];</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>  data.current[0] = (v1 - v2) / std::complex<double>(data.resistance, data.indReactance) +</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  v1 * std::complex<double>(0.0, data.capSusceptance / 2.0);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  data.current[1] = (v2 - v1) / std::complex<double>(data.resistance, data.indReactance) +</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  v2 * std::complex<double>(0.0, data.capSusceptance / 2.0);</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>  data.powerFlow[0] = v1 * std::conj(data.current[0]);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  data.powerFlow[1] = v2 * std::conj(data.current[1]);</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="keywordflow">if</span>(data.powerFlow[0].real() > data.powerFlow[1].real())</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</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="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</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="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  line->SetElectricalData(data);</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> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="comment">// Transformer</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</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="l00346"></a><span class="lineno"> 346</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = m_transformerList[i];</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = transformer->GetElectricalData();</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</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="l00350"></a><span class="lineno"> 350</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="l00351"></a><span class="lineno"> 351</span>  std::complex<double> v1 = voltage[n1]; <span class="comment">// Primary voltage</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  std::complex<double> v2 = voltage[n2]; <span class="comment">// Secondary voltage</span></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="comment">// Transformer admitance</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  std::complex<double> y = 1.0 / std::complex<double>(data.resistance, data.indReactance);</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="keywordflow">if</span>(data.turnsRatio == 1.0 && data.phaseShift == 0.0) {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  data.current[0] = (v1 - v2) * y;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  data.current[1] = (v2 - v1) * y;</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="keywordtype">double</span> radPS = wxDegToRad(data.phaseShift);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  std::complex<double> a =</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  std::complex<double>(data.turnsRatio * std::cos(radPS), -data.turnsRatio * std::sin(radPS));</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>  data.current[0] = v1 * (y / std::pow(std::abs(a), 2)) - v2 * (y / std::conj(a));</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  data.current[1] = -v1 * (y / a) + v2 * y;</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>  data.powerFlow[0] = v1 * std::conj(data.current[0]);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  data.powerFlow[1] = v2 * std::conj(data.current[1]);</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="keywordflow">if</span>(data.powerFlow[0].real() > data.powerFlow[1].real())</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</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="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</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="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  transformer->SetElectricaData(data);</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>  }</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="comment">// Synchronous machines</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</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="l00383"></a><span class="lineno"> 383</span>  <a class="code" href="class_bus.html">Bus</a>* bus = m_busList[i];</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</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="comment">// Get the synchronous machines connected and calculate the load power on the bus.</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  std::vector<SyncGenerator*> syncGeneratorsOnBus;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  std::vector<SyncMotor*> syncMotorsOnBus;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  std::complex<double> loadPower(0.0, 0.0);</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="keywordflow">for</span>(<span class="keyword">auto</span> itsg = m_syncGeneratorList.begin(); itsg != m_syncGeneratorList.end(); itsg++) {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *itsg;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</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="l00394"></a><span class="lineno"> 394</span>  syncGeneratorsOnBus.push_back(syncGenerator);</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="keywordflow">for</span>(<span class="keyword">auto</span> itsm = m_syncMotorList.begin(); itsm != m_syncMotorList.end(); itsm++) {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = *itsm;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</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="l00399"></a><span class="lineno"> 399</span>  syncMotorsOnBus.push_back(syncMotor);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> childData = syncMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  loadPower += std::complex<double>(childData.activePower, 0.0);</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>  <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="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="class_load.html">Load</a>* load = *itlo;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</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="l00407"></a><span class="lineno"> 407</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> childData = load->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">if</span>(childData.loadType == CONST_POWER)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  loadPower += std::complex<double>(childData.activePower, childData.reactivePower);</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>  <span class="keywordflow">if</span>(childData.activePower >= 0.0)</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</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="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</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="l00415"></a><span class="lineno"> 415</span>  }</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">for</span>(<span class="keyword">auto</span> itim = m_indMotorList.begin(); itim != m_indMotorList.end(); itim++) {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = *itim;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</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="l00420"></a><span class="lineno"> 420</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> childData = indMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  loadPower += std::complex<double>(childData.activePower, childData.reactivePower);</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>(childData.activePower >= 0.0)</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</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="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</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="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> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="comment">// Set the sync generator power</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itsg = syncGeneratorsOnBus.begin(); itsg != syncGeneratorsOnBus.end(); itsg++) {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator = *itsg;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">if</span>(generator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> childData = generator->GetElectricalData();</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>(busType[i] == BUS_SLACK) {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordtype">double</span> activePower =</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  (power[i].real() + loadPower.real()) * systemPowerBase / (<span class="keywordtype">double</span>)(syncGeneratorsOnBus.size());</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">switch</span>(childData.activePowerUnit) {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  activePower /= systemPowerBase;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  activePower /= 1e3;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  activePower /= 1e6;</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">default</span>:</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">break</span>;</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> </div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  childData.activePower = activePower;</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>(busType[i] == BUS_PV || busType[i] == BUS_SLACK) {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="comment">// double reactivePower = (power[i].imag() + loadPower.imag()) * systemPowerBase /</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="comment">// (double)(syncGeneratorsOnBus.size() + syncMotorsOnBus.size());</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> childData_PU = generator->GetPUElectricalData(systemPowerBase);</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="keywordtype">double</span> reactivePower = (power[i].imag() + loadPower.imag()) * systemPowerBase;</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>(reactiveLimit[i].limitReached == RL_MAX_REACHED)</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  reactivePower *= (childData_PU.maxReactive / reactiveLimit[i].maxLimit);</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">else</span> <span class="keywordflow">if</span>(reactiveLimit[i].limitReached == RL_MIN_REACHED)</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  reactivePower *= (childData_PU.minReactive / reactiveLimit[i].minLimit);</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">else</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  reactivePower /= (double)(syncGeneratorsOnBus.size() + syncMotorsOnBus.size());</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>  <span class="keywordflow">switch</span>(childData.reactivePowerUnit) {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  reactivePower /= systemPowerBase;</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  reactivePower /= 1e3;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  reactivePower /= 1e6;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">default</span>:</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>  }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  childData.reactivePower = reactivePower;</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> </div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">if</span>(childData.activePower >= 0.0)</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</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="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</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="l00492"></a><span class="lineno"> 492</span> </div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  generator->SetElectricalData(childData);</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>  <span class="comment">// Set the sync motor reactive power</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordtype">double</span> exceededReactive = 0.0;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keywordtype">int</span> numMachines = syncGeneratorsOnBus.size() + syncMotorsOnBus.size();</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itsm = syncMotorsOnBus.begin(); itsm != syncMotorsOnBus.end(); itsm++) {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = *itsm;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> childData = syncMotor->GetElectricalData();</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>  <span class="keywordtype">bool</span> reachedMachineLimit = <span class="keyword">false</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"> 506</span>  <span class="keywordflow">if</span>(busType[i] == BUS_PV || busType[i] == BUS_SLACK) {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="comment">// double reactivePower = (power[i].imag() + loadPower.imag()) * systemPowerBase /</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="comment">// (double)(syncGeneratorsOnBus.size() + syncMotorsOnBus.size());</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>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> childData_PU = syncMotor->GetPUElectricalData(systemPowerBase);</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="keywordtype">double</span> reactivePower = power[i].imag() + loadPower.imag();</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">// Bus reachd maximum reactive limit.</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">if</span>(reactiveLimit[i].limitReached == RL_MAX_REACHED)</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  reactivePower *= (childData_PU.maxReactive / reactiveLimit[i].maxLimit);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="comment">// Bus reached minimum reactive limit.</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(reactiveLimit[i].limitReached == RL_MIN_REACHED)</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  reactivePower *= (childData_PU.minReactive / reactiveLimit[i].minLimit);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="comment">// Bus didn't reach any limits</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  reactivePower /= (double)(numMachines);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">if</span>(childData_PU.haveMaxReactive && (reactivePower > childData_PU.maxReactive)) {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  exceededReactive += reactivePower - childData_PU.maxReactive;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  reactivePower = childData_PU.maxReactive;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  reachedMachineLimit = <span class="keyword">true</span>;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(childData_PU.haveMinReactive && (reactivePower < childData_PU.minReactive)) {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  exceededReactive += reactivePower - childData_PU.minReactive;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  reactivePower = childData_PU.minReactive;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  reachedMachineLimit = <span class="keyword">true</span>;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</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="l00532"></a><span class="lineno"> 532</span>  (!childData_PU.haveMinReactive && reactiveLimit[i].limitReached == RL_MIN_REACHED) ||</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  (!childData_PU.haveMaxReactive && !childData_PU.haveMaxReactive)) {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  reactivePower += exceededReactive;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  exceededReactive = 0.0;</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> </div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  reactivePower *= systemPowerBase;</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>  <span class="keywordflow">switch</span>(childData.reactivePowerUnit) {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  reactivePower /= systemPowerBase;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  reactivePower /= 1e3;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  reactivePower /= 1e6;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">default</span>:</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>  }</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  childData.reactivePower = reactivePower;</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> </div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">if</span>(childData.activePower > 0.0)</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</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="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</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="l00561"></a><span class="lineno"> 561</span> </div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  syncMotor->SetElectricalData(childData);</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>(reachedMachineLimit) {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  syncMotorsOnBus.erase(itsm);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  itsm = syncMotorsOnBus.begin();</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>  }</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> </div><div class="line"><a name="l00572"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c"> 572</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="l00573"></a><span class="lineno"> 573</span>  std::vector<std::vector<std::complex<double> > >& inverse)</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">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="l00576"></a><span class="lineno"> 576</span> </div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  inverse.clear();</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="comment">// Fill the inverse matrix with identity.</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; ++i) {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  std::vector<std::complex<double> > line;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < order; ++j) {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</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="l00583"></a><span class="lineno"> 583</span>  }</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  inverse.push_back(line);</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>  <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="l00588"></a><span class="lineno"> 588</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; ++i) {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < order; ++j) {</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordflow">if</span>(i == j && matrix[i][j] == std::complex<double>(0.0, 0.0)) {</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordtype">int</span> row = 0;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">while</span>(row < order) {</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keywordflow">if</span>(matrix[row][j] != std::complex<double>(0.0, 0.0)) {</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < order; ++k) {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  matrix[i][k] += matrix[row][k];</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  inverse[i][k] += inverse[row][k];</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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  }</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  row++;</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="comment">// If all line values are zero, the matrix is singular and the solution is impossible.</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">if</span>(row == order) <span class="keywordflow">return</span> <span class="keyword">false</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>  }</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> </div><div class="line"><a name="l00608"></a><span class="lineno"> 608</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="l00609"></a><span class="lineno"> 609</span>  <span class="comment">// have two matrices: the identity and the inverse of the input.</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; ++i) {</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < order; ++j) {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keywordflow">if</span>(i != j) {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</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="l00614"></a><span class="lineno"> 614</span> </div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  std::complex<double> factor = matrix[j][i] / matrix[i][i];</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < order; ++k) {</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  matrix[j][k] -= factor * matrix[i][k];</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  inverse[j][k] -= factor * inverse[i][k];</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>  }</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>  <span class="comment">// Main diagonal calculation.</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; ++i) {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < order; ++j) {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">if</span>(i == j) {</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</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="l00628"></a><span class="lineno"> 628</span> </div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  std::complex<double> factor = (matrix[i][j] - std::complex<double>(1.0, 0.0)) / matrix[i][j];</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < order; ++k) {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  matrix[j][k] -= factor * matrix[i][k];</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  inverse[j][k] -= factor * inverse[i][k];</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>  }</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>  }</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">return</span> <span class="keyword">true</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> 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="l00642"></a><span class="lineno"> 642</span> {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  dValue = -std::real(complexValue) * std::sin(angle) + std::imag(complexValue) * std::cos(angle);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  qValue = std::real(complexValue) * std::cos(angle) + std::imag(complexValue) * std::sin(angle);</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> </div><div class="line"><a name="l00647"></a><span class="lineno"> 647</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="l00648"></a><span class="lineno"> 648</span> {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordtype">double</span> real = qValue * std::cos(angle) - dValue * std::sin(angle);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keywordtype">double</span> imag = qValue * std::sin(angle) + dValue * std::cos(angle);</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  complexValue = std::complex<double>(real, imag);</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> std::vector<std::complex<double> > ElectricCalculation::GaussianElimination(</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  std::vector<std::complex<double> > array)</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="comment">//[Ref] http://pt.wikipedia.org/wiki/Elimina%C3%A7%C3%A3o_de_Gauss</span></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>  std::vector<std::complex<double> > solution;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> </div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  std::vector<std::vector<std::complex<double> > > triangMatrix;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  triangMatrix.resize(matrix.size());</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</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="l00665"></a><span class="lineno"> 665</span>  triangMatrix[i].resize(matrix.size());</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> </div><div class="line"><a name="l00668"></a><span class="lineno"> 668</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="l00669"></a><span class="lineno"> 669</span>  solution.push_back(array[i]);</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="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="l00673"></a><span class="lineno"> 673</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="l00674"></a><span class="lineno"> 674</span>  triangMatrix[i][j] = matrix[i][j];</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>  }</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span> </div><div class="line"><a name="l00678"></a><span class="lineno"> 678</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="l00679"></a><span class="lineno"> 679</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k1 = k + 1;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</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="l00681"></a><span class="lineno"> 681</span>  <span class="keywordflow">if</span>(triangMatrix[i][k] != std::complex<double>(0.0, 0.0)) {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</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="l00683"></a><span class="lineno"> 683</span>  triangMatrix[i][j] = triangMatrix[i][j] / triangMatrix[i][k];</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>  solution[i] = solution[i] / triangMatrix[i][k];</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>  }</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</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="l00689"></a><span class="lineno"> 689</span>  <span class="keywordflow">if</span>(triangMatrix[i][k] != std::complex<double>(0.0, 0.0)) {</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 = k1; j < matrix.size(); j++) {</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  triangMatrix[i][j] -= triangMatrix[k][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>  solution[i] -= solution[k];</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>  }</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  }</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 = matrix.size() - 2; i >= 0; i--) {</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</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="l00699"></a><span class="lineno"> 699</span>  solution[i] -= triangMatrix[i][j] * solution[j];</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="keywordflow">return</span> solution;</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> </div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span> Machines::SyncMachineModel ElectricCalculation::GetMachineModel(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator)</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="keyword">auto</span> data = generator->GetElectricalData();</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keywordflow">if</span>(data.transTd0 != 0.0) {</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">if</span>(data.transTq0 != 0.0) {</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <span class="keywordflow">if</span>(data.subTd0 != 0.0 || data.subTq0 != 0.0) {</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keywordflow">return</span> Machines::SM_MODEL_5;</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">return</span> Machines::SM_MODEL_3;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keywordflow">if</span>(data.subTd0 != 0.0 || data.subTq0 != 0.0) {</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <span class="keywordflow">return</span> Machines::SM_MODEL_4;</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">return</span> Machines::SM_MODEL_2;</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>  }</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">return</span> Machines::SM_MODEL_1;</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> </div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span> std::vector<std::complex<double> > ElectricCalculation::ComplexMatrixTimesVector(</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  std::vector<std::complex<double> > vector)</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>  std::vector<std::complex<double> > solution;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</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="l00732"></a><span class="lineno"> 732</span>  solution.push_back(std::complex<double>(0.0, 0.0));</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> </div><div class="line"><a name="l00734"></a><span class="lineno"> 734</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="l00735"></a><span class="lineno"> 735</span>  solution[i] += matrix[i][j] * vector[j];</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>  }</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>  <span class="keywordflow">return</span> solution;</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> </div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <span class="keywordtype">void</span> ElectricCalculation::GetLUDecomposition(std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  std::vector<std::vector<std::complex<double> > >& matrixL,</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  std::vector<std::vector<std::complex<double> > >& matrixU)</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="comment">// Doolittle method</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="comment">// [Ref] http://www3.nd.edu/~zxu2/acms40390F11/Alg-LU-Crout.pdf</span></div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="comment">// [Ref] http://www.engr.colostate.edu/~thompson/hPage/CourseMat/Tutorials/CompMethods/doolittle.pdf</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="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="l00751"></a><span class="lineno"> 751</span> </div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <span class="comment">// Set upper and lower matrices sizes.</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  matrixL.resize(size);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  matrixU.resize(size);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < size; i++) {</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  matrixL[i].resize(size);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  matrixU[i].resize(size);</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> </div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="comment">// First row of upper matrix and first column of lower matrix.</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < size; i++) {</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  matrixU[0][i] = matrix[0][i];</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  matrixL[i][0] = matrix[i][0] / matrixU[0][0];</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="comment">// Lower matrix main diagonal.</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < size; i++) {</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  matrixL[i][i] = std::complex<double>(1.0, 0.0);</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  }</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">for</span>(<span class="keywordtype">int</span> i = 1; i < size - 1; i++) {</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="comment">// Upper matrix main diagonal.</span></div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  matrixU[i][i] = matrix[i][i];</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < i; k++) {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  matrixU[i][i] -= matrixL[i][k] * matrixU[k][i];</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> </div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="comment">// Others elements of upper matrix</span></div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = i + 1; j < size; j++) {</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  matrixU[i][j] = matrix[i][j];</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < i; k++) {</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  matrixU[i][j] -= matrixL[i][k] * matrixU[k][j];</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</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> </div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <span class="comment">// Lower matrix elements</span></div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = i + 1; j < size; j++) {</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  matrixL[j][i] = matrix[j][i];</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < i; k++) {</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  matrixL[j][i] -= matrixL[j][k] * matrixU[k][i];</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>  matrixL[j][i] = matrixL[j][i] / matrixU[i][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> </div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="comment">// Last element of upper matrix.</span></div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  matrixU[size - 1][size - 1] = matrix[size - 1][size - 1];</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 < size - 1; k++) {</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  matrixU[size - 1][size - 1] -= matrixL[size - 1][k] * matrixU[k][size - 1];</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> std::vector<std::complex<double> > ElectricCalculation::LUEvaluate(std::vector<std::vector<std::complex<double> > > u,</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  std::vector<std::vector<std::complex<double> > > l,</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  std::vector<std::complex<double> > b)</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>  <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="l00808"></a><span class="lineno"> 808</span>  std::vector<std::complex<double> > x;</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  std::vector<std::complex<double> > y;</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  x.resize(size);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  y.resize(size);</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">// Forward</span></div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < size; i++) {</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  y[i] = b[i];</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < i; j++) {</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  y[i] -= l[i][j] * y[j];</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>  y[i] /= l[i][i];</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>  <span class="comment">// Backward</span></div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = size - 1; i >= 0; i--) {</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  x[i] = y[i];</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = i + 1; j < size; j++) {</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  x[i] -= u[i][j] * x[j];</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>  x[i] /= u[i][i];</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  }</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="keywordflow">return</span> x;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</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#l00008">IndMotor.h:8</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#l00008">SyncGenerator.h:8</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#l00088">Element.h:88</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#l00517">Element.h:517</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#l00170">PowerElement.h:170</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="_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_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="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#l00008">Inductor.h:8</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#l00019">PowerElement.h:19</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#l00110">SyncGenerator.h:110</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#l00007">Bus.h:7</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#l00012">PowerElement.h:12</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#l00064">PowerElement.h:64</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#l00018">PowerElement.h:18</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#l00045">Bus.h:45</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#l00007">ElectricCalculation.cpp:7</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#l00250">Machines.cpp:250</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#l00219">Element.h:219</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#l00388">Transformer.cpp:388</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#l00025">PowerElement.h:25</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#l00572">ElectricCalculation.cpp:572</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#l00035">Line.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="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00023">Load.h:23</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#l00066">PowerElement.h:66</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#l00024">PowerElement.h:24</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#l00007">Line.h:7</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#l00056">ElectricCalculation.cpp:56</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#l00287">ElectricCalculation.cpp:287</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#l00013">Load.h:13</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#l00110">SyncMotor.h:110</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#l00063">PowerElement.h:63</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#l00006">ElectricCalculation.cpp:6</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#l00017">IndMotor.h:17</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#l00014">Capacitor.h:14</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#l00065">PowerElement.h:65</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#l00014">Inductor.h:14</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#l00008">ElectricCalculation.cpp:8</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#l00020">Transformer.h:20</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#l00429">Line.cpp:429</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#l00054">Transformer.h:54</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#l00008">Capacitor.h:8</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#l00008">SyncMotor.h:8</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="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_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="_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="_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="_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_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="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 --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_electric_calculation_8h.html b/docs/doxygen/html/_electric_calculation_8h.html index 09344ca..900a8c0 100644 --- a/docs/doxygen/html/_electric_calculation_8h.html +++ b/docs/doxygen/html/_electric_calculation_8h.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_electric_calculation_8h_source.html b/docs/doxygen/html/_electric_calculation_8h_source.html index 0957abb..8715e9c 100644 --- a/docs/doxygen/html/_electric_calculation_8h_source.html +++ b/docs/doxygen/html/_electric_calculation_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,20 +88,20 @@ $(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="preprocessor">#ifndef ELECTRICCALCULATION_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define ELECTRICCALCULATION_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <complex></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "Bus.h"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include "Capacitor.h"</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "IndMotor.h"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "Inductor.h"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "Line.h"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "Load.h"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "SyncGenerator.h"</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "SyncMotor.h"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "Transformer.h"</span></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> <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> <span class="keyword">enum</span> BusType { BUS_SLACK = 0, BUS_PV, BUS_PQ };</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">enum</span> ReactiveLimitsType {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  RL_UNLIMITED = 0, <span class="comment">// The bus can generate any ammount of reactive power.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  RL_LIMITED, <span class="comment">// The bus reactive power generation is limited.</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</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="l00027"></a><span class="lineno"> 27</span>  RL_MAX_REACHED, <span class="comment">// Max limit reached</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  RL_MIN_REACHED, <span class="comment">// Min limit reached</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  RL_NONE_REACHED <span class="comment">// No limits reached</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> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">enum</span> YBusSequence { POSITIVE_SEQ = 0, NEGATIVE_SEQ, ZERO_SEQ };</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="struct_reactive_limits.html"> 34</a></span> <span class="keyword">struct </span><a class="code" href="struct_reactive_limits.html">ReactiveLimits</a> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">double</span> maxLimit = 0.0;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">double</span> minLimit = 0.0;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  ReactiveLimitsType maxLimitType = RL_UNLIMITED;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  ReactiveLimitsType minLimitType = RL_UNLIMITED;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  ReactiveLimitsType limitReached = RL_NONE_REACHED;</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="l00049"></a><span class="lineno"><a class="line" href="class_electric_calculation.html"> 49</a></span> <span class="keyword">class </span><a class="code" href="class_electric_calculation.html">ElectricCalculation</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">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_electric_calculation.html">ElectricCalculation</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ~<a class="code" href="class_electric_calculation.html">ElectricCalculation</a>();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> GetElementsFromList(std::vector<Element*> elementList);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</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="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">double</span> systemPowerBase,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  YBusSequence sequence = POSITIVE_SEQ,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordtype">bool</span> includeSyncMachines = <span class="keyword">false</span>,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">bool</span> allLoadsAsImpedances = <span class="keyword">false</span>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</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="l00089"></a><span class="lineno"> 89</span>  std::vector<std::vector<std::complex<double> > >& inverse);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateElementsPowerFlow(std::vector<std::complex<double> > voltage,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  std::vector<std::complex<double> > power,</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  std::vector<BusType> busType,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  std::vector<ReactiveLimits> reactiveLimit,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">double</span> systemPowerBase);</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> 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="l00106"></a><span class="lineno"> 106</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="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  std::vector<std::complex<double> > GaussianElimination(std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  std::vector<std::complex<double> > array);</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>  Machines::SyncMachineModel GetMachineModel(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator);</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>  std::vector<std::complex<double> > ComplexMatrixTimesVector(std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  std::vector<std::complex<double> > vector);</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="keywordtype">void</span> GetLUDecomposition(std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  std::vector<std::vector<std::complex<double> > >& matrixL,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  std::vector<std::vector<std::complex<double> > >& matrixU);</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> > LUEvaluate(std::vector<std::vector<std::complex<double> > > u,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  std::vector<std::vector<std::complex<double> > > l,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  std::vector<std::complex<double> > b);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24"> 128</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="l00133"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a4ddabc6210146ae1ccae5f6911095bfd"> 133</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="l00138"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a906ce639a5d6c5d7946fe8824f1b4f1b"> 138</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="l00143"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a8709a452d684d4224d32591c281ae0ed"> 143</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="l00148"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#af8eff271de83898c536deda1aab22d48"> 148</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="l00153"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#aa5e278a1c5ba1b6159c21ae2ff2b23b4"> 153</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="l00158"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#ad8719b10c3c4b85b316d3daa71064840"> 158</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="l00163"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#ae9b5e9b51615141e88de0a0f99a7741e"> 163</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="l00168"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e"> 168</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="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  std::vector<PowerElement*> m_powerElementList;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  std::vector<Bus*> m_busList;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  std::vector<Capacitor*> m_capacitorList;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  std::vector<IndMotor*> m_indMotorList;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  std::vector<Inductor*> m_inductorList;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  std::vector<Line*> m_lineList;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  std::vector<Load*> m_loadList;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  std::vector<SyncGenerator*> m_syncGeneratorList;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  std::vector<SyncMotor*> m_syncMotorList;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  std::vector<Transformer*> m_transformerList;</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="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#l00168">ElectricCalculation.h:168</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#l00138">ElectricCalculation.h:138</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#l00034">ElectricCalculation.h:34</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#l00110">SyncGenerator.h:110</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#l00128">ElectricCalculation.h:128</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#l00158">ElectricCalculation.h:158</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#l00143">ElectricCalculation.h:143</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 "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> +<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="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_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_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="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#l00133">ElectricCalculation.h:133</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#l00153">ElectricCalculation.h:153</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="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="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#l00163">ElectricCalculation.h:163</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#l00049">ElectricCalculation.h:49</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#l00148">ElectricCalculation.h:148</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_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 --> <!-- start footer part --> diff --git a/docs/doxygen/html/_electromechanical_8cpp_source.html b/docs/doxygen/html/_electromechanical_8cpp_source.html index e256d0e..ad6d4e0 100644 --- a/docs/doxygen/html/_electromechanical_8cpp_source.html +++ b/docs/doxygen/html/_electromechanical_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,39 +88,34 @@ $(document).ready(function(){initNavTree('_electromechanical_8cpp_source.html',' <div class="title">Electromechanical.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 "Electromechanical.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "ControlElementSolver.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</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="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  m_parent = parent;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  <a class="code" href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">GetElementsFromList</a>(elementList);</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  SetEventTimeList();</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_powerSystemBase = GetPowerValue(data.basePower, data.basePowerUnit);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  m_systemFreq = data.stabilityFrequency;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_simTime = data.stabilitySimulationTime;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_timeStep = data.timeStep;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  m_tolerance = data.stabilityTolerance;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_maxIterations = data.stabilityMaxIterations;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</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="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  m_plotTime = data.plotTime;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  m_useCOI = data.useCOI;</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> Electromechanical::~Electromechanical() {}</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keywordtype">bool</span> Electromechanical::RunStabilityCalculation()</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>  wxProgressDialog pbd(_(<span class="stringliteral">"Running simulation"</span>), _(<span class="stringliteral">"Initializing..."</span>), 100, m_parent,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  wxPD_APP_MODAL | wxPD_AUTO_HIDE | wxPD_CAN_ABORT | wxPD_SMOOTH);</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>  SetSyncMachinesModel();</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">// Calculate the admittance matrix with the synchronous machines.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</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="l00033"></a><span class="lineno"> 33</span>  m_errorMsg = _(<span class="stringliteral">"It was not possible to build the admittance matrix."</span>);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  InsertSyncMachinesOnYBus();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  GetLUDecomposition(m_yBus, m_yBusL, m_yBusU);</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">// Get buses voltages.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_vBus.clear();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_vBus.resize(m_busList.size());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</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="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  m_vBus[data.number] = data.voltage;</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="comment">// Calculate injected currents</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_iBus = ComplexMatrixTimesVector(m_yBus, m_vBus);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</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="l00051"></a><span class="lineno"> 51</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="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="keywordflow">if</span>(!InitializeDynamicElements()) <span class="keywordflow">return</span> <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="keywordtype">double</span> pbdTime = m_plotTime;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">double</span> currentTime = 0.0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">double</span> currentPlotTime = 0.0;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">double</span> currentPbdTime = 0.0;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">while</span>(currentTime < m_simTime) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">if</span>(HasEvent(currentTime)) {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  SetEvent(currentTime);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  GetLUDecomposition(m_yBus, m_yBusL, m_yBusU);</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="keywordflow">if</span>(currentPlotTime >= m_plotTime || currentTime == 0.0) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_timeVector.push_back(currentTime);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  SaveData();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  currentPlotTime = 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>(currentPbdTime > pbdTime) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</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="l00074"></a><span class="lineno"> 74</span>  m_errorMsg = wxString::Format(_(<span class="stringliteral">"Simulation cancelled at %.2fs."</span>), currentTime);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  pbd.Update(100);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  currentPbdTime = 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="keywordflow">if</span>(!SolveSynchronousMachines()) <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>  currentTime += m_timeStep;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  currentPlotTime += m_timeStep;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  currentPbdTime += m_timeStep;</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="keywordflow">return</span> <span class="keyword">true</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="keywordtype">void</span> Electromechanical::SetEventTimeList()</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="comment">// Fault</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</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="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span>(data.stabHasFault) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_eventTimeList.push_back(data.stabFaultTime);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_eventOccurrenceList.push_back(<span class="keyword">false</span>);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  m_eventTimeList.push_back(data.stabFaultTime + data.stabFaultLength);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_eventOccurrenceList.push_back(<span class="keyword">false</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">// Switching</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_powerElementList.begin(), itEnd = m_powerElementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="class_power_element.html">PowerElement</a>* element = *it;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</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="l00107"></a><span class="lineno"> 107</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="l00108"></a><span class="lineno"> 108</span>  m_eventTimeList.push_back(swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[i]);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_eventOccurrenceList.push_back(<span class="keyword">false</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> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keywordtype">bool</span> Electromechanical::HasEvent(<span class="keywordtype">double</span> currentTime)</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">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="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span>(!m_eventOccurrenceList[i]) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(EventTrigger(m_eventTimeList[i], currentTime)) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_eventOccurrenceList[i] = <span class="keyword">true</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> <span class="keyword">true</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>  <span class="keywordflow">return</span> <span class="keyword">false</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> <span class="keywordtype">void</span> Electromechanical::SetEvent(<span class="keywordtype">double</span> currentTime)</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="comment">// Fault</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</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="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span>(data.stabHasFault) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordtype">int</span> n = data.number;</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="comment">// Insert fault</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span>(EventTrigger(data.stabFaultTime, currentTime)) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordtype">double</span> r, x;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  r = data.stabFaultResistance;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  x = data.stabFaultReactance;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">if</span>(x < 1e-5) x = 1e-5;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  m_yBus[n][n] += std::complex<double>(1.0, 0.0) / std::complex<double>(r, x);</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="comment">// Remove fault</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(EventTrigger(data.stabFaultTime + data.stabFaultLength, currentTime)) {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordtype">double</span> r, x;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  r = data.stabFaultResistance;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  x = data.stabFaultReactance;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">if</span>(x < 1e-5) x = 1e-5;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_yBus[n][n] -= std::complex<double>(1.0, 0.0) / std::complex<double>(r, x);</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="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="comment">// SyncGenerator switching</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</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="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator = *it;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</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="l00160"></a><span class="lineno"> 160</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="l00161"></a><span class="lineno"> 161</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="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// Remove machine (only connected machines)</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</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="l00164"></a><span class="lineno"> 164</span>  generator-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</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="l00166"></a><span class="lineno"> 166</span>  m_yBus[n][n] -= GetSyncMachineAdmittance(generator);</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="comment">// Insert machine (only disconnected machines)</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</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="l00171"></a><span class="lineno"> 171</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="l00172"></a><span class="lineno"> 172</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="l00173"></a><span class="lineno"> 173</span>  m_yBus[n][n] += GetSyncMachineAdmittance(generator);</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>  }</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>  <span class="comment">// Load switching</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</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="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="class_load.html">Load</a>* load = *it;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</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="l00184"></a><span class="lineno"> 184</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="l00185"></a><span class="lineno"> 185</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="l00186"></a><span class="lineno"> 186</span>  <span class="comment">// Remove load (only connected loads)</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</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="l00188"></a><span class="lineno"> 188</span>  load-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">auto</span> data = load->GetPUElectricalData(m_powerSystemBase);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</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="l00191"></a><span class="lineno"> 191</span>  <span class="keywordtype">int</span> n = parentBus->GetElectricalData().number;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  std::complex<double> v = parentBus->GetElectricalData().voltage;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  m_yBus[n][n] -= std::complex<double>(data.activePower, -data.reactivePower) / (v * v);</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>  <span class="comment">// Insert load (only disconnected load)</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</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="l00198"></a><span class="lineno"> 198</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="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">auto</span> data = load->GetPUElectricalData(m_powerSystemBase);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</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="l00201"></a><span class="lineno"> 201</span>  <span class="keywordtype">int</span> n = parentBus->GetElectricalData().number;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  std::complex<double> v = parentBus->GetElectricalData().voltage;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  m_yBus[n][n] += std::complex<double>(data.activePower, -data.reactivePower) / (v * v);</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>  }</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> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">// Line switching</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</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="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="class_line.html">Line</a>* line = *it;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</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="l00214"></a><span class="lineno"> 214</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="l00215"></a><span class="lineno"> 215</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="l00216"></a><span class="lineno"> 216</span>  <span class="comment">// Remove line (only connected lines)</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</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="l00218"></a><span class="lineno"> 218</span>  line-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">auto</span> data = line->GetElectricalData();</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">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="l00222"></a><span class="lineno"> 222</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="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  m_yBus[n1][n2] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  m_yBus[n2][n1] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</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>  m_yBus[n1][n1] -= 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_yBus[n2][n2] -= 1.0 / std::complex<double>(data.resistance, data.indReactance);</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>  m_yBus[n1][n1] -= std::complex<double>(0.0, data.capSusceptance / 2.0);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  m_yBus[n2][n2] -= std::complex<double>(0.0, data.capSusceptance / 2.0);</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"> 234</span>  <span class="comment">// Insert line (only disconnected 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#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="l00236"></a><span class="lineno"> 236</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="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>  }</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> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="comment">// Transformer switching</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</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="l00258"></a><span class="lineno"> 258</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = *it;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</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="l00260"></a><span class="lineno"> 260</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="l00261"></a><span class="lineno"> 261</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="l00262"></a><span class="lineno"> 262</span>  <span class="comment">// Remove transformer (only connected transformers)</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</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="l00264"></a><span class="lineno"> 264</span>  transformer-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keyword">auto</span> data = transformer->GetElectricalData();</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">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="l00268"></a><span class="lineno"> 268</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="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">if</span>(data.turnsRatio == 1.0 && data.phaseShift == 0.0) {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  m_yBus[n1][n2] -= -1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  m_yBus[n2][n1] -= -1.0 / std::complex<double>(data.resistance, data.indReactance);</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>  m_yBus[n1][n1] -= 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  m_yBus[n2][n2] -= 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">// Complex turns ratio</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordtype">double</span> radPhaseShift = wxDegToRad(data.phaseShift);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  std::complex<double> a = std::complex<double>(data.turnsRatio * std::cos(radPhaseShift),</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  -data.turnsRatio * std::sin(radPhaseShift));</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="comment">// Transformer admitance</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  std::complex<double> y = 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  m_yBus[n1][n1] -= y / std::pow(std::abs(a), 2.0);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  m_yBus[n1][n2] -= -(y / std::conj(a));</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  m_yBus[n2][n1] -= -(y / a);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  m_yBus[n2][n2] -= y;</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>  }</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">// Insert transformer (only disconnected transformers)</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</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="l00293"></a><span class="lineno"> 293</span>  transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size() == 2) {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</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="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">auto</span> data = transformer->GetElectricalData();</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="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="l00298"></a><span class="lineno"> 298</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="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">if</span>(data.turnsRatio == 1.0 && data.phaseShift == 0.0) {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  m_yBus[n1][n2] += -1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  m_yBus[n2][n1] += -1.0 / std::complex<double>(data.resistance, data.indReactance);</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>  m_yBus[n1][n1] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  m_yBus[n2][n2] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="comment">// Complex turns ratio</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordtype">double</span> radPhaseShift = wxDegToRad(data.phaseShift);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  std::complex<double> a = std::complex<double>(data.turnsRatio * std::cos(radPhaseShift),</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  -data.turnsRatio * std::sin(radPhaseShift));</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="comment">// Transformer admitance</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  std::complex<double> y = 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  m_yBus[n1][n1] += y / std::pow(std::abs(a), 2.0);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  m_yBus[n1][n2] += -(y / std::conj(a));</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  m_yBus[n2][n1] += -(y / a);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  m_yBus[n2][n2] += y;</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>  }</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>  }</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">// Capacitor switching</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_capacitorList.begin(), itEnd = m_capacitorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = *it;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</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="l00329"></a><span class="lineno"> 329</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="l00330"></a><span class="lineno"> 330</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="l00331"></a><span class="lineno"> 331</span>  <span class="comment">// Remove capacitor (only connected capacitors)</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</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="l00333"></a><span class="lineno"> 333</span>  capacitor-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keyword">auto</span> data = capacitor->GetPUElectricalData(m_powerSystemBase);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</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="l00336"></a><span class="lineno"> 336</span>  m_yBus[n][n] -= std::complex<double>(0.0, data.reactivePower);</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>  <span class="comment">// Insert capacitor (only disconnected capacitors)</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</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="l00341"></a><span class="lineno"> 341</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="l00342"></a><span class="lineno"> 342</span>  <span class="keyword">auto</span> data = capacitor->GetPUElectricalData(m_powerSystemBase);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</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="l00344"></a><span class="lineno"> 344</span>  m_yBus[n][n] += std::complex<double>(0.0, data.reactivePower);</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>  }</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> </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="comment">// Inductor switching</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</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="l00353"></a><span class="lineno"> 353</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = *it;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</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="l00355"></a><span class="lineno"> 355</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="l00356"></a><span class="lineno"> 356</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="l00357"></a><span class="lineno"> 357</span>  <span class="comment">// Remove inductor (only connected inductors)</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#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776">SW_REMOVE</a> && inductor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  inductor-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keyword">auto</span> data = inductor->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>(inductor-><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>  <span class="comment">// Insert inductor (only disconnected inductors)</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</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="l00367"></a><span class="lineno"> 367</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="l00368"></a><span class="lineno"> 368</span>  <span class="keyword">auto</span> data = inductor->GetPUElectricalData(m_powerSystemBase);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</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="l00370"></a><span class="lineno"> 370</span>  m_yBus[n][n] += std::complex<double>(0.0, -data.reactivePower);</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>  }</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>  }</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> </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <span class="keywordtype">void</span> Electromechanical::InsertSyncMachinesOnYBus()</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">for</span>(<span class="keyword">auto</span> it = m_syncGeneratorList.begin(), itEnd = m_syncGeneratorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator = *it;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">if</span>(generator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keyword">auto</span> data = generator->GetElectricalData();</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</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="l00385"></a><span class="lineno"> 385</span>  m_yBus[n][n] += GetSyncMachineAdmittance(generator);</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>  }</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> </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</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="l00391"></a><span class="lineno"> 391</span> {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">return</span> (((eventTime - m_timeStep) < currentTime) && (eventTime >= currentTime));</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> std::complex<double> Electromechanical::GetSyncMachineAdmittance(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator)</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="keyword">auto</span> data = generator->GetElectricalData();</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordtype">double</span> k = 1.0; <span class="comment">// Power base change factor.</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordtype">double</span> oldBase = GetPowerValue(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  k = m_powerSystemBase / oldBase;</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>  <span class="keywordtype">double</span> xd = 0.0;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordtype">double</span> xq = 0.0;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordtype">double</span> ra = data.armResistance * k;</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">switch</span>(data.model) {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_1: {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  xq = data.transXd * k;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  xd = xq;</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> Machines::SM_MODEL_2: {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  xd = data.transXd * k;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  xq = data.transXq * k;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">if</span>(xq == 0.0) {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  xq = data.syncXq * k;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">if</span>(xq == 0.0) {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  xq = data.syncXd * k;</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="keywordflow">break</span>;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_3: {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  xd = data.transXd * k;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  xq = data.transXq * k;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span>(xq == 0.0) xq = xd;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_4:</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_5: {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  xd = data.subXd * k;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  xq = data.subXq * k;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">if</span>(xd == 0.0) xd = xq;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">if</span>(xq == 0.0) xq = xd;</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>  }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordtype">double</span> xdq = 0.5 * (xd + xq);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</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="l00438"></a><span class="lineno"> 438</span> }</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="keywordtype">bool</span> Electromechanical::InitializeDynamicElements()</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>  <span class="comment">// Buses</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</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="l00444"></a><span class="lineno"> 444</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  data.stabVoltageVector.clear();</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  bus->SetElectricalData(data);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="comment">// Synchronous generators</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</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="l00451"></a><span class="lineno"> 451</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keyword">auto</span> dataPU = syncGenerator->GetPUElectricalData(m_powerSystemBase);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordtype">double</span> k = 1.0; <span class="comment">// Power base change factor.</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordtype">double</span> oldBase = GetPowerValue(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  k = m_powerSystemBase / oldBase;</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>  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="l00461"></a><span class="lineno"> 461</span> </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  std::complex<double> conjS(dataPU.activePower, -dataPU.reactivePower);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  std::complex<double> conjV = std::conj(data.terminalVoltage);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  std::complex<double> ia = conjS / conjV;</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> xd = data.syncXd * k;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordtype">double</span> xq = data.syncXq * k;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordtype">double</span> ra = data.armResistance * k;</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>  <span class="keywordflow">if</span>(data.model == Machines::SM_MODEL_1) {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  xq = data.transXd * k;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  xd = xq;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(data.syncXq == 0.0)</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  xq = data.syncXd * k;</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="comment">// Initialize state variables</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  std::complex<double> eq0 = data.terminalVoltage + std::complex<double>(ra, xq) * ia;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  data.delta = std::arg(eq0);</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> fi0 = std::arg(ia);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordtype">double</span> id0, iq0;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="comment">// ABCtoDQ0(ia, data.delta - fi0, id0, iq0);</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  iq0 = std::abs(ia) * std::cos(data.delta - fi0);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  id0 = -std::abs(ia) * std::sin(data.delta - fi0);</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>  data.initialFieldVoltage = std::abs(eq0) - (xd - xq) * id0;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  data.fieldVoltage = data.initialFieldVoltage;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  data.pm = std::real((data.terminalVoltage * std::conj(ia)) + (std::abs(ia) * std::abs(ia) * ra));</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  data.speed = 2.0 * M_PI * m_systemFreq;</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>  data.pe = data.pm;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  data.electricalPower = std::complex<double>(dataPU.activePower, dataPU.reactivePower);</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="comment">// Variables to extrapolate.</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  data.oldIq = iq0;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  data.oldId = id0;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  data.oldPe = data.pe;</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">switch</span>(data.model) {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_1: {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="comment">// double tranXd = data.transXd * k;</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="comment">// data.tranEq = data.initialFieldVoltage + (xd - tranXd) * id0;</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  data.tranEq = std::abs(eq0);</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>  data.tranEd = 0.0;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  data.subEq = 0.0;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  data.subEd = 0.0;</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> Machines::SM_MODEL_2: {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordtype">double</span> tranXd = data.transXd * k;</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.tranEq = data.initialFieldVoltage + (xd - tranXd) * id0;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  data.tranEd = 0.0;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  data.subEd = 0.0;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  data.subEq = 0.0;</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">case</span> Machines::SM_MODEL_3: {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordtype">double</span> tranXd = data.transXd * k;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordtype">double</span> tranXq = data.transXq * k;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">if</span>(tranXq == 0.0) tranXq = tranXd;</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>  data.tranEq = data.initialFieldVoltage + (xd - tranXd) * id0;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  data.tranEd = -(xq - tranXq) * iq0;</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>  data.subEd = 0.0;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  data.subEq = 0.0;</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">case</span> Machines::SM_MODEL_4: {</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordtype">double</span> tranXd = data.transXd * k;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordtype">double</span> subXd = data.subXd * k;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordtype">double</span> subXq = data.subXq * k;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordflow">if</span>(subXd == 0.0) subXd = subXq;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">if</span>(subXq == 0.0) subXq = subXd;</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>  data.tranEq = data.initialFieldVoltage + (xd - tranXd) * id0;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  data.tranEd = 0.0;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  data.subEq = data.tranEq + (tranXd - subXd) * id0;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  data.subEd = -(xq - subXq) * iq0;</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> Machines::SM_MODEL_5: {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordtype">double</span> tranXd = data.transXd * k;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keywordtype">double</span> tranXq = data.transXq * k;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordtype">double</span> subXd = data.subXd * k;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keywordtype">double</span> subXq = data.subXq * k;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordflow">if</span>(subXd == 0.0) subXd = subXq;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keywordflow">if</span>(subXq == 0.0) subXq = subXd;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> </div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  data.tranEq = data.initialFieldVoltage + (xd - tranXd) * id0;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  data.tranEd = -(xq - tranXq) * iq0;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  data.subEq = data.tranEq + (tranXd - subXd) * id0;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  data.subEd = data.tranEd - (tranXq - subXq) * iq0;</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>  <span class="keywordflow">default</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>  }</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="comment">// Initialize controllers</span></div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">if</span>(data.useAVR) {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">if</span>(data.avrSolver) <span class="keyword">delete</span> data.avrSolver;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</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="l00562"></a><span class="lineno"> 562</span>  <span class="keyword">false</span>, std::abs(data.terminalVoltage), m_parent);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordflow">if</span>(!data.avrSolver->IsOK()) {</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</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="l00565"></a><span class="lineno"> 565</span>  syncGenerator->SetElectricalData(data);</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>  }</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="keywordflow">if</span>(data.useSpeedGovernor) {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">if</span>(data.speedGovSolver) <span class="keyword">delete</span> data.speedGovSolver;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</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="l00572"></a><span class="lineno"> 572</span>  m_tolerance, <span class="keyword">false</span>, data.speed, m_parent);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">if</span>(!data.speedGovSolver->IsOK()) {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</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="l00575"></a><span class="lineno"> 575</span>  syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="comment">// Initialize open circuit machine.</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="comment">// Reset plot data</span></div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  data.terminalVoltageVector.clear();</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  data.electricalPowerVector.clear();</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  data.mechanicalPowerVector.clear();</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  data.freqVector.clear();</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  data.fieldVoltageVector.clear();</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  data.deltaVector.clear();</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> </div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  syncGenerator->SetElectricalData(data);</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>  CalculateReferenceSpeed();</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</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> </div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> <span class="keywordtype">void</span> Electromechanical::CalculateMachinesCurrents()</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>  <span class="comment">// Reset injected currents vector</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</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="l00600"></a><span class="lineno"> 600</span> </div><div class="line"><a name="l00601"></a><span class="lineno"> 601</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="l00602"></a><span class="lineno"> 602</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="keywordtype">double</span> k = 1.0; <span class="comment">// Power base change factor.</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordtype">double</span> oldBase = GetPowerValue(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  k = m_powerSystemBase / oldBase;</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> </div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordtype">double</span> xd = 0.0;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keywordtype">double</span> xq = 0.0;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="keywordtype">double</span> ra = data.armResistance * k;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</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="l00615"></a><span class="lineno"> 615</span>  std::complex<double> e = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  std::complex<double> v = m_vBus[n];</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  std::complex<double> iInj = m_iBus[n];</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordtype">double</span> xdq = 0.0;</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">switch</span>(data.model) {</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_1: {</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  DQ0toABC(data.tranEd, data.tranEq, data.delta, e);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  xq = data.transXd * k;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  xd = xq;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_2: {</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  DQ0toABC(data.tranEd, data.tranEq, data.delta, e);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  xd = data.transXd * k;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  xq = data.transXq * k;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">if</span>(xq == 0.0) {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  xq = data.syncXq * k;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="keywordflow">if</span>(xq == 0.0) {</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  xq = data.syncXd * k;</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="keywordflow">break</span>;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_3: {</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  DQ0toABC(data.tranEd, data.tranEq, data.delta, e);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  xd = data.transXd * k;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  xq = data.transXq * k;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">if</span>(xq == 0.0) xq = xd;</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_4:</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_5: {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  DQ0toABC(data.subEd, data.subEq, data.delta, e);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  xd = data.subXd * k;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  xq = data.subXq * k;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">if</span>(xd == 0.0) xd = xq;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">if</span>(xq == 0.0) xq = xd;</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>  }</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  xdq = 0.5 * (xd + xq);</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>  std::complex<double> y0 = std::complex<double>(ra, -xdq) / std::complex<double>(ra * ra + xd * xq, 0.0);</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  std::complex<double> iUnadj = y0 * e;</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>  std::complex<double> iAdj =</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  std::complex<double>(0.0, -((0.5 * (xq - xd)) / (ra * ra + xd * xq))) * (std::conj(e) - std::conj(v));</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  iAdj = iAdj * std::cos(2.0 * data.delta) + iAdj * std::complex<double>(0.0, std::sin(2.0 * data.delta));</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>  iInj = iUnadj + iAdj;</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>  m_iBus[n] += iInj;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> </div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  std::complex<double> iMachine = iInj - y0 * v;</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>  data.electricalPower = v * std::conj(iMachine);</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  data.electricalPower = std::complex<double>(0.0, 0.0);</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>  syncGenerator->SetElectricalData(data);</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> <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="l00677"></a><span class="lineno"> 677</span> {</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  CalculateReferenceSpeed();</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</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="keywordtype">double</span> syncXd, syncXq, transXd, transXq, subXd, subXq;</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  syncXd = data.syncXd * k;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  syncXq = data.syncXq * k;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  transXd = data.transXd * k;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  transXq = data.transXq * k;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  subXd = data.subXd * k;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  subXq = data.subXq * k;</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">if</span>(syncXq == 0.0) syncXq = syncXd;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keywordflow">if</span>(transXq == 0.0) transXq = transXd;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <span class="keywordflow">if</span>(subXd == 0.0) subXd = subXq;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordflow">if</span>(subXq == 0.0) subXq = subXd;</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>  <span class="keywordtype">double</span> transTd0, transTq0, subTd0, subTq0;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  transTd0 = data.transTd0;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  transTq0 = data.transTq0;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  subTd0 = data.subTd0;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  subTq0 = data.subTq0;</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="keywordflow">if</span>(subTd0 == 0.0) subTd0 = subTq0;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keywordflow">if</span>(subTq0 == 0.0) subTq0 = subTd0;</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">// Speed</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  data.icSpeed.m = m_timeStep / ((4.0f * data.inertia / m_refSpeed) / k + m_timeStep * data.damping * k);</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  data.icSpeed.c = (1.0f - 2.0f * data.icSpeed.m * data.damping * k) * data.speed +</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  data.icSpeed.m * (data.pm - data.pe + 2.0f * m_refSpeed * data.damping * k);</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">// Delta</span></div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  data.icDelta.m = 0.5f * m_timeStep;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  data.icDelta.c = data.delta + data.icDelta.m * (data.speed - 2.0f * m_refSpeed);</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>  <span class="comment">// Eq'</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</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="l00714"></a><span class="lineno"> 714</span>  data.model == Machines::SM_MODEL_5) {</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  data.icTranEq.m = m_timeStep / (2.0f * transTd0 + m_timeStep);</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  data.icTranEq.c = (1.0f - 2.0 * data.icTranEq.m) * data.tranEq +</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  data.icTranEq.m * (data.fieldVoltage + (syncXd - transXd) * id);</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="comment">// Ed'</span></div><div class="line"><a name="l00721"></a><span class="lineno"> 721</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="l00722"></a><span class="lineno"> 722</span>  data.icTranEd.m = m_timeStep / (2.0f * transTq0 + m_timeStep);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  data.icTranEd.c = (1.0f - 2.0f * data.icTranEd.m) * data.tranEd - data.icTranEd.m * (syncXq - transXq) * iq;</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> </div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="comment">// Eq''</span></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <span class="keywordflow">if</span>(data.model == Machines::SM_MODEL_4 || data.model == Machines::SM_MODEL_5) {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  data.icSubEq.m = m_timeStep / (2.0f * subTd0 + m_timeStep);</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  data.icSubEq.c =</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  (1.0f - 2.0f * data.icSubEq.m) * data.subEq + data.icSubEq.m * (data.tranEq + (transXd - subXd) * id);</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="comment">// Ed''</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  <span class="keywordflow">if</span>(data.model == Machines::SM_MODEL_4) {</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  data.icSubEd.m = m_timeStep / (2.0f * subTq0 + m_timeStep);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  data.icSubEd.c = (1.0f - 2.0f * data.icSubEd.m) * data.subEd - data.icSubEd.m * (syncXq - subXq) * iq;</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>  <span class="keywordflow">if</span>(data.model == Machines::SM_MODEL_5) {</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  data.icSubEd.m = m_timeStep / (2.0f * subTq0 + m_timeStep);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  data.icSubEd.c =</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  (1.0f - 2.0f * data.icSubEd.m) * data.subEd + data.icSubEd.m * (data.tranEd - (transXq - subXq) * iq);</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>  syncGenerator->SetElectricalData(data);</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">bool</span> Electromechanical::SolveSynchronousMachines()</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>  <span class="comment">// CalculateMachinesCurrents();</span></div><div class="line"><a name="l00749"></a><span class="lineno"> 749</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="l00750"></a><span class="lineno"> 750</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</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">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</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="l00755"></a><span class="lineno"> 755</span>  <span class="keywordtype">double</span> id, iq, pe;</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>  pe = data.pe;</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">double</span> k = 1.0; <span class="comment">// Power base change factor.</span></div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keywordtype">double</span> oldBase = GetPowerValue(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  k = m_powerSystemBase / oldBase;</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> </div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  std::complex<double> iMachine = std::conj(data.electricalPower) / std::conj(m_vBus[n]);</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>  ABCtoDQ0(iMachine, data.delta, <span class="keywordtype">id</span>, iq);</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">// Calculate integration constants.</span></div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  CalculateIntegrationConstants(syncGenerator, <span class="keywordtype">id</span>, iq, k);</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span> </div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  CalculateSyncMachineNonIntVariables(syncGenerator, <span class="keywordtype">id</span>, iq, pe, k);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="comment">// Extrapolate nonintegrable variables.</span></div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keywordtype">id</span> = 2.0 * <span class="keywordtype">id</span> - data.oldId;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  iq = 2.0 * iq - data.oldIq;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  pe = 2.0 * pe - data.oldPe;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> </div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  CalculateSyncMachineIntVariables(syncGenerator, <span class="keywordtype">id</span>, iq, pe, k);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  CalculateIntegrationConstants(syncGenerator, 0.0f, 0.0f);</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> </div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  m_wError = 0;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span> </div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <span class="keywordtype">double</span> error = 1.0;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="keywordtype">int</span> iterations = 0;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">while</span>(error > m_tolerance) {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  error = 0.0;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span> </div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="comment">// Calculate the injected currents.</span></div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  CalculateMachinesCurrents();</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>  <span class="comment">// Calculate the buses voltages.</span></div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  m_vBus = LUEvaluate(m_yBusU, m_yBusL, m_iBus);</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="comment">// Solve machine equations.</span></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</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="l00799"></a><span class="lineno"> 799</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</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>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</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="keywordtype">double</span> id, iq, pe;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keywordtype">double</span> k = 1.0; <span class="comment">// Power base change factor.</span></div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <span class="keywordtype">double</span> oldBase = GetPowerValue(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  k = m_powerSystemBase / oldBase;</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> </div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  CalculateSyncMachineNonIntVariables(syncGenerator, <span class="keywordtype">id</span>, iq, pe, k);</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="keywordtype">double</span> genError = CalculateSyncMachineIntVariables(syncGenerator, <span class="keywordtype">id</span>, iq, pe, k);</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>(genError > error) error = genError;</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</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>  ++iterations;</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">if</span>(iterations > m_maxIterations) {</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</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="l00821"></a><span class="lineno"> 821</span>  <span class="stringliteral">"decrease the time step."</span>);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  m_numIt = iterations;</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>  <span class="comment">// Solve controllers.</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</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="l00829"></a><span class="lineno"> 829</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="l00830"></a><span class="lineno"> 830</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="keywordflow">if</span>(data.useAVR && data.avrSolver) {</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</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="l00834"></a><span class="lineno"> 834</span>  data.fieldVoltage = data.initialFieldVoltage + data.avrSolver->GetLastSolution();</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> </div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <span class="keywordflow">if</span>(data.useSpeedGovernor && data.speedGovSolver) {</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</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="l00839"></a><span class="lineno"> 839</span>  data.pm = data.speedGovSolver->GetLastSolution();</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>  syncGenerator->SetElectricalData(data);</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> </div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="keywordflow">return</span> <span class="keyword">true</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> </div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span> <span class="keywordtype">double</span> Electromechanical::GetPowerValue(<span class="keywordtype">double</span> value, <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> unit)</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>  <span class="keywordflow">switch</span>(unit) {</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="keywordflow">return</span> value;</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>: {</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <span class="keywordflow">return</span> value;</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="keywordflow">return</span> value * 1e3;</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  <span class="keywordflow">return</span> value * 1e6;</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <span class="keywordflow">return</span> value;</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  } <span class="keywordflow">break</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#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <span class="keywordflow">return</span> value * 1e3;</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="keywordflow">return</span> value * 1e6;</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <span class="keywordflow">return</span> value;</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <span class="keywordflow">return</span> value * 1e3;</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <span class="keywordflow">return</span> value * 1e6;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keywordflow">return</span> 0.0;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  }</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">return</span> 0.0;</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</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> <span class="keywordtype">void</span> Electromechanical::SaveData()</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">for</span>(<span class="keyword">auto</span> it = m_syncGeneratorList.begin(), itEnd = m_syncGeneratorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="keywordflow">if</span>(data.plotSyncMachine) {</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  data.terminalVoltageVector.push_back(data.terminalVoltage);</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  data.electricalPowerVector.push_back(data.electricalPower);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  data.mechanicalPowerVector.push_back(data.pm);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  data.freqVector.push_back(data.speed / (2.0f * M_PI));</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  data.fieldVoltageVector.push_back(data.fieldVoltage);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  data.deltaVector.push_back(wxRadToDeg(data.delta));</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  syncGenerator->SetElectricalData(data);</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>  }</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</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="l00903"></a><span class="lineno"> 903</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  <span class="keywordflow">if</span>(data.plotBus) {</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  data.stabVoltageVector.push_back(m_vBus[data.number]);</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  bus->SetElectricalData(data);</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</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> </div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  m_wErrorVector.push_back(m_wError);</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  m_numItVector.push_back(m_numIt);</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="keywordtype">void</span> Electromechanical::SetSyncMachinesModel()</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">for</span>(<span class="keyword">auto</span> it = m_syncGeneratorList.begin(), itEnd = m_syncGeneratorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  data.model = GetMachineModel(syncGenerator);</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  }</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span> }</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span> </div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span> <span class="keywordtype">void</span> Electromechanical::CalculateSyncMachineNonIntVariables(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator,</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="keywordtype">double</span>& <span class="keywordtype">id</span>,</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="keywordtype">double</span>& iq,</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keywordtype">double</span>& pe,</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <span class="keywordtype">double</span> k)</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>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</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="l00933"></a><span class="lineno"> 933</span> </div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  data.terminalVoltage = m_vBus[n];</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>  <span class="keywordtype">double</span> vd, vq;</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  ABCtoDQ0(data.terminalVoltage, data.delta, vd, vq);</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>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  std::complex<double> iMachine = std::conj(data.electricalPower) / std::conj(m_vBus[n]);</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  ABCtoDQ0(iMachine, data.delta, <span class="keywordtype">id</span>, iq);</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>  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="l00946"></a><span class="lineno"> 946</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  pe = <span class="keywordtype">id</span> = iq = 0.0f;</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>  data.pe = pe;</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  data.oldId = id;</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  data.oldIq = iq;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</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="keywordtype">double</span> Electromechanical::CalculateSyncMachineIntVariables(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator,</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  <span class="keywordtype">double</span> <span class="keywordtype">id</span>,</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="keywordtype">double</span> iq,</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordtype">double</span> pe,</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="keywordtype">double</span> k)</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>  <span class="keywordtype">double</span> error = 0.0;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</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="comment">// Mechanical differential equations.</span></div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keywordtype">double</span> w = data.icSpeed.<a class="code" href="struct_integration_constant.html#afc3598097377951b84492d087a06b455">c</a> + data.icSpeed.m * (data.pm - pe);</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  error = std::max(error, std::abs(data.speed - w) / m_refSpeed);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span> </div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  m_wError += std::abs(data.speed - w) / m_refSpeed;</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span> </div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  <span class="keywordtype">double</span> delta = data.icDelta.c + data.icDelta.m * w;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  error = std::max(error, std::abs(data.delta - delta));</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>  data.speed = w;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  data.delta = delta;</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="comment">// Electrical differential equations</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <span class="keywordflow">switch</span>(data.model) {</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_1: {</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <span class="comment">// There is no differential equations.</span></div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_2: {</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <span class="keywordtype">double</span> tranEq =</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  data.icTranEq.c + data.icTranEq.m * (data.fieldVoltage + (data.syncXd * k - data.transXd * k) * <span class="keywordtype">id</span>);</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  error = std::max(error, std::abs(data.tranEq - tranEq));</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>  data.tranEq = tranEq;</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_3: {</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <span class="keywordtype">double</span> syncXd, syncXq, transXd, transXq;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  syncXd = data.syncXd * k;</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  syncXq = data.syncXq * k;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  transXd = data.transXd * k;</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  transXq = data.transXq * k;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <span class="keywordflow">if</span>(syncXq == 0.0) syncXq = syncXd;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  <span class="keywordflow">if</span>(transXq == 0.0) transXq = transXd;</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="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="l00998"></a><span class="lineno"> 998</span>  error = std::max(error, std::abs(data.tranEq - tranEq));</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> tranEd = data.icTranEd.c - data.icTranEd.m * (syncXq - transXq) * iq;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  error = std::max(error, std::abs(data.tranEd - tranEd));</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> </div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  data.tranEq = tranEq;</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  data.tranEd = tranEd;</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>  <span class="keywordflow">if</span>(!syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  std::complex<double> e;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  DQ0toABC(data.tranEd, data.tranEq, data.delta, e);</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  data.terminalVoltage = e;</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="keywordflow">break</span>;</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_4: {</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <span class="keywordtype">double</span> syncXd, syncXq, transXd, subXd, subXq;</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  syncXd = data.syncXd * k;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  syncXq = data.syncXq * k;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  transXd = data.transXd * k;</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  subXd = data.subXd * k;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  subXq = data.subXq * k;</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="keywordflow">if</span>(syncXq == 0.0) syncXq = syncXd;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  <span class="keywordflow">if</span>(subXd == 0.0) subXd = subXq;</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <span class="keywordflow">if</span>(subXq == 0.0) subXq = subXd;</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="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="l01024"></a><span class="lineno"> 1024</span>  error = std::max(error, std::abs(data.tranEq - tranEq));</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>  <span class="keywordtype">double</span> subEq = data.icSubEq.c + data.icSubEq.m * (tranEq + (transXd - subXd) * <span class="keywordtype">id</span>);</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  error = std::max(error, std::abs(data.subEq - subEq));</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> </div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  <span class="keywordtype">double</span> subEd = data.icSubEd.c - data.icSubEd.m * (syncXq - subXq) * iq;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  error = std::max(error, std::abs(data.subEd - subEd));</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> </div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  data.tranEq = tranEq;</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  data.subEq = subEq;</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  data.subEd = subEd;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_5: {</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <span class="keywordtype">double</span> syncXd, syncXq, transXd, transXq, subXd, subXq;</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  syncXd = data.syncXd * k;</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  syncXq = data.syncXq * k;</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  transXd = data.transXd * k;</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  transXq = data.transXq * k;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  subXd = data.subXd * k;</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  subXq = data.subXq * k;</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keywordflow">if</span>(syncXq == 0.0) syncXq = syncXd;</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="keywordflow">if</span>(transXq == 0.0) transXq = transXd;</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <span class="keywordflow">if</span>(subXd == 0.0) subXd = subXq;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  <span class="keywordflow">if</span>(subXq == 0.0) subXq = subXd;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> </div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</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="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 = data.icTranEd.c - data.icTranEd.m * (syncXq - transXq) * iq;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  error = std::max(error, std::abs(data.tranEd - tranEd));</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> </div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="keywordtype">double</span> subEq = data.icSubEq.c + data.icSubEq.m * (tranEq + (transXd - subXd) * <span class="keywordtype">id</span>);</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  error = std::max(error, std::abs(data.subEq - subEq));</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>  <span class="keywordtype">double</span> subEd = data.icSubEd.c + data.icSubEd.m * (tranEd - (transXq - subXq) * iq);</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  error = std::max(error, std::abs(data.subEd - subEd));</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>  data.tranEq = tranEq;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  data.tranEd = tranEd;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  data.subEq = subEq;</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  data.subEd = subEd;</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  } <span class="keywordflow">break</span>;</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>  syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <span class="keywordflow">return</span> error;</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> </div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> <span class="keywordtype">void</span> Electromechanical::CalculateReferenceSpeed()</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> {</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="keywordflow">if</span>(m_useCOI) {</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <span class="keywordtype">double</span> sumHW = 0.0;</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <span class="keywordtype">double</span> sumH = 0.0;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</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="l01078"></a><span class="lineno"> 1078</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  <span class="keywordtype">double</span> k = 1.0; <span class="comment">// Power base change factor.</span></div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  <span class="keywordtype">double</span> oldBase = GetPowerValue(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  k = m_powerSystemBase / oldBase;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  }</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  sumH += data.inertia / k;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  sumHW += data.inertia * data.speed / k;</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>  }</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  m_refSpeed = sumHW / sumH;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  m_refSpeed = 2.0 * M_PI * m_systemFreq;</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> }</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#l00078">PowerElement.h:78</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="ttdef"><b>Definition:</b> <a href="_control_element_solver_8h_source.html#l00020">ControlElementSolver.h:20</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#l00517">Element.h:517</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#l00218">Element.cpp:218</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#l00019">PowerElement.h:19</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#l00110">SyncGenerator.h:110</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#l00077">PowerElement.h:77</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#l00011">PowerElement.h:11</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#l00012">PowerElement.h:12</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#l00054">PowerElement.h:54</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#l00018">PowerElement.h:18</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#l00045">Bus.h:45</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#l00219">Element.h:219</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#l00076">PowerElement.h:76</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#l00011">PropertiesData.h:11</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#l00022">PowerElement.h:22</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#l00025">PowerElement.h:25</a></div></div> -<div class="ttc" id="struct_integration_constant_html_afc3598097377951b84492d087a06b455"><div class="ttname"><a href="struct_integration_constant.html#afc3598097377951b84492d087a06b455">IntegrationConstant::c</a></div><div class="ttdeci">double c</div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00089">PowerElement.h:89</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#l00035">Line.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="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00023">Load.h:23</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#l00024">PowerElement.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#l00056">ElectricCalculation.cpp:56</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#l00165">PowerElement.h:165</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#l00023">PowerElement.h:23</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#l00014">Capacitor.h:14</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#l00100">PowerElement.h:100</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#l00014">Inductor.h:14</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#l00020">PowerElement.h:20</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#l00008">ElectricCalculation.cpp:8</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#l00053">PowerElement.h:53</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#l00021">PowerElement.h:21</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#l00054">Transformer.h:54</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#l00017">PowerElement.h:17</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="_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="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="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="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_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_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="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><!-- 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 new file mode 100644 index 0000000..edeac51 --- /dev/null +++ b/docs/doxygen/html/_electromechanical_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/Electromechanical.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('_electromechanical_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">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 /> +</div> +<p><a href="_electromechanical_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_machine_model_data.html">SyncMachineModelData</a></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="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><!-- 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="_electromechanical_8h.html">Electromechanical.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/_electromechanical_8h_source.html b/docs/doxygen/html/_electromechanical_8h_source.html index 7a4e6c0..fa73240 100644 --- a/docs/doxygen/html/_electromechanical_8h_source.html +++ b/docs/doxygen/html/_electromechanical_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,19 +88,23 @@ $(document).ready(function(){initNavTree('_electromechanical_8h_source.html','') <div class="title">Electromechanical.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="preprocessor">#ifndef ELECTROMECHANICAL_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define ELECTROMECHANICAL_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <wx/progdlg.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="keyword">class </span><a class="code" href="class_control_element_solver.html">ControlElementSolver</a>;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"><a class="line" href="class_electromechanical.html"> 10</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="l00011"></a><span class="lineno"> 11</span> {</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</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="l00014"></a><span class="lineno"> 14</span>  ~<a class="code" href="class_electromechanical.html">Electromechanical</a>();</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keywordtype">bool</span> RunStabilityCalculation();</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  wxString GetErrorMessage()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_errorMsg; }</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  std::vector<double> GetTimeVector()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_timeVector; }</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  std::vector<double> m_wErrorVector;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  std::vector<double> m_deltaErrorVector;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  std::vector<double> m_transEdErrorVector;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  std::vector<double> m_transEqErrorVector;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  std::vector<double> m_numItVector;</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">protected</span>:</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordtype">void</span> SetEventTimeList();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">bool</span> HasEvent(<span class="keywordtype">double</span> currentTime);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">void</span> SetEvent(<span class="keywordtype">double</span> currentTime);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</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="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">double</span> GetPowerValue(<span class="keywordtype">double</span> value, <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> unit);</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="keywordtype">void</span> InsertSyncMachinesOnYBus();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  std::complex<double> GetSyncMachineAdmittance(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">bool</span> InitializeDynamicElements();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">void</span> CalculateMachinesCurrents();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</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="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">bool</span> SolveSynchronousMachines();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">void</span> SetSyncMachinesModel();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">double</span> CalculateSyncMachineIntVariables(<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> pe, <span class="keywordtype">double</span> k = 1.0);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">void</span> CalculateSyncMachineNonIntVariables(<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>& pe, <span class="keywordtype">double</span> k = 1.0);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">void</span> CalculateReferenceSpeed();</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="keywordtype">void</span> SaveData();</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>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  wxString m_errorMsg = _(<span class="stringliteral">"Unknown error"</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="keywordtype">double</span> m_systemFreq = 60.0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">double</span> m_refSpeed = 2.0 * M_PI * 60.0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">bool</span> m_useCOI = <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>  std::vector<std::vector<std::complex<double> > > m_yBus;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  std::vector<std::vector<std::complex<double> > > m_yBusU;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  std::vector<std::vector<std::complex<double> > > m_yBusL;</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>  std::vector<std::complex<double> > m_vBus;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  std::vector<std::complex<double> > m_iBus;</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">double</span> m_powerSystemBase = 100e6;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">double</span> m_simTime = 10.0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">double</span> m_plotTime = 1e-2;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">double</span> m_timeStep = 1e-2;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">double</span> m_ctrlTimeStepMultiplier = 0.1;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">double</span> m_tolerance = 1e-8;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">int</span> m_maxIterations = 100;</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>  std::vector<double> m_eventTimeList;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  std::vector<bool> m_eventOccurrenceList;</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>  std::vector<double> m_timeVector;</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">// tests</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">double</span> m_wError = 0.0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">double</span> m_numIt = 0;</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="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="ttdef"><b>Definition:</b> <a href="_control_element_solver_8h_source.html#l00020">ControlElementSolver.h:20</a></div></div> +<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="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#l00110">SyncGenerator.h:110</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#l00011">PowerElement.h:11</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#l00011">PropertiesData.h:11</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#l00010">Electromechanical.h:10</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#l00049">ElectricCalculation.h:49</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="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="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><!-- 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>Electromechanical.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_electromechanical_8h.html">Electromechanical.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_8cpp_source.html b/docs/doxygen/html/_element_8cpp_source.html index c557d20..f5772b7 100644 --- a/docs/doxygen/html/_element_8cpp_source.html +++ b/docs/doxygen/html/_element_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,38 +88,38 @@ $(document).ready(function(){initNavTree('_element_8cpp_source.html','');}); <div class="title">Element.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 "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"><a class="line" href="class_element.html#ab0d0e20be9a36ae676202db753faeec9"> 6</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="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_element.html#a13d54ba9c08b6bec651402f1c2bb002c"> 8</a></span> <a class="code" href="class_element.html#a13d54ba9c08b6bec651402f1c2bb002c">Element::~Element</a>() {}</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"><a class="line" href="class_element.html#a920fe7ba1563615857618f01e64b3284"> 10</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="l00011"></a><span class="lineno"> 11</span> {</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_position = position;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_rect = wxRect2DDouble(m_position.m_x - m_width / 2.0 - m_borderSize,</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  m_position.m_y - m_height / 2.0 - m_borderSize, m_width + 2.0 * m_borderSize, m_height + 2.0 * m_borderSize);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> }</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="class_element.html#a35567bc1e306c6db9522ad05a87b98f5"> 17</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="l00018"></a><span class="lineno"> 18</span> <span class="keyword"></span>{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  glBegin(mode);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numSegments; i++) {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keywordtype">double</span> theta = 2.0 * 3.1415926 * double(i) / double(numSegments);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  glVertex2f(radius * std::cos(theta) + position.m_x, radius * std::sin(theta) + position.m_y);</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>  glEnd();</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> <span class="keywordtype">void</span> Element::DrawArc(wxPoint2DDouble position,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">double</span> radius,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordtype">double</span> initAngle,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> finalAngle,</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">int</span> numSegments,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  GLenum mode)<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>  <span class="keywordtype">double</span> initAngRad = wxDegToRad(initAngle);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">double</span> finalAngRad = wxDegToRad(finalAngle);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  glBegin(mode);</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 <= numSegments; i++) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">double</span> theta = initAngRad + (finalAngRad - initAngRad) * <span class="keywordtype">double</span>(i) / double(numSegments);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  glVertex2f(radius * std::cos(theta) + position.m_x, radius * std::sin(theta) + position.m_y);</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>  glEnd();</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"><a class="line" href="class_element.html#ae425d7e4f94bf7280d7d68c577d2019e"> 44</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="l00045"></a><span class="lineno"> 45</span> <span class="keyword"></span>{</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  glBegin(mode);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 3; i++) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  glVertex2d(points[i].m_x, points[i].m_y);</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>  glEnd();</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_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8"> 53</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="l00054"></a><span class="lineno"> 54</span> <span class="keyword"></span>{</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  glBegin(mode); <span class="comment">// TODO: GL_QUADS é obsoleto (OpenGL 3.0+), encontrar outra solução.</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  glVertex2d(position.m_x - width / 2.0, position.m_y - height / 2.0);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  glVertex2d(position.m_x - width / 2.0, position.m_y + height / 2.0);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  glVertex2d(position.m_x + width / 2.0, position.m_y + height / 2.0);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  glVertex2d(position.m_x + width / 2.0, position.m_y - height / 2.0);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  glEnd();</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_element.html#a971be2d4fab435d9657f88bae36e7cf3"> 63</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="l00064"></a><span class="lineno"> 64</span> <span class="keyword"></span>{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  glBegin(mode); <span class="comment">// TODO: GL_QUADS é obsoleto (OpenGL 3.0+), encontrar outra solução.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  glVertex2d(points[0].m_x, points[0].m_y);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  glVertex2d(points[1].m_x, points[1].m_y);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  glVertex2d(points[2].m_x, points[2].m_y);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  glVertex2d(points[3].m_x, points[3].m_y);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  glEnd();</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_element.html#a103b3cb2670012b2695940b094f63ab3"> 73</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="l00074"></a><span class="lineno"> 74</span> <span class="keyword"></span>{</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  glBegin(mode);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = points.begin(); it != points.end(); ++it) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  glVertex2d((*it).m_x, (*it).m_y);</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>  glEnd();</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_element.html#ad1d0d803fe522d030e2be8dc99eb9b39"> 82</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="l00083"></a><span class="lineno"> 83</span> <span class="keyword"></span>{</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  glLineWidth(1.0);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  glColor4d(1.0, 1.0, 1.0, 0.8);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(position, 8.0, 8.0);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</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="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_element.html#a99b213010776b34a27eb814aff288a34"> 91</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="l00092"></a><span class="lineno"> 92</span> <span class="keyword"></span>{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">double</span> radAngle = angle;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span>(degrees) radAngle = wxDegToRad(angle);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> wxPoint2DDouble(std::cos(radAngle) * (pointToRotate.m_x - m_position.m_x) -</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  std::sin(radAngle) * (pointToRotate.m_y - m_position.m_y) + m_position.m_x,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  std::sin(radAngle) * (pointToRotate.m_x - m_position.m_x) +</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  std::cos(radAngle) * (pointToRotate.m_y - m_position.m_y) + m_position.m_y);</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"><a class="line" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4"> 101</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="l00102"></a><span class="lineno"> 102</span> {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  this->m_moveStartPt = position;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  this->m_movePos = m_position;</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#abe884d99d12d5252e18956162115b025"> 107</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="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8"> 109</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="l00110"></a><span class="lineno"> 110</span> <span class="keyword"></span>{</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</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="l00112"></a><span class="lineno"> 112</span>  scale;</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_element.html#a147dd55d902171b212168ffde7262343"> 115</a></span> wxPoint2DDouble <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">Element::WorldToScreen</a>(wxPoint2DDouble position,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  wxPoint2DDouble translation,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">double</span> scale,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">double</span> offsetX,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">double</span> offsetY)<span class="keyword"> const</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keyword"></span>{</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</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="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_element.html#a4b6dd88902e04b52fe14dfc73c51fd50"> 124</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="l00125"></a><span class="lineno"> 125</span> <span class="keyword"></span>{</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  glPointSize(size);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  glBegin(GL_POINTS);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  glVertex2d(position.m_x, position.m_y);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  glEnd();</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_element.html#a01563b5b2fed2860132f4dd1593f9eea"> 132</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="l00133"></a><span class="lineno"> 133</span>  wxRect2DDouble rect2,</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordtype">double</span> angle1,</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordtype">double</span> angle2)<span class="keyword"> const</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keyword"></span>{</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  wxPoint2DDouble rect1Corners[4] = { rect1.GetLeftTop(), rect1.GetLeftBottom(), rect1.GetRightBottom(),</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  rect1.GetRightTop() };</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  wxPoint2DDouble rect2Corners[4] = { rect2.GetLeftTop(), rect2.GetLeftBottom(), rect2.GetRightBottom(),</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  rect2.GetRightTop() };</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</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="l00142"></a><span class="lineno"> 142</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="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// Rotate the corners.</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">double</span> radAngle1 = wxDegToRad(angle1);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordtype">double</span> radAngle2 = wxDegToRad(angle2);</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">for</span>(<span class="keywordtype">int</span> i = 0; i < 4; i++) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  rect1Corners[i] = wxPoint2DDouble(std::cos(radAngle1) * (rect1Corners[i].m_x - rect1Center.m_x) -</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  std::sin(radAngle1) * (rect1Corners[i].m_y - rect1Center.m_y) + rect1Center.m_x,</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  std::sin(radAngle1) * (rect1Corners[i].m_x - rect1Center.m_x) +</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  std::cos(radAngle1) * (rect1Corners[i].m_y - rect1Center.m_y) + rect1Center.m_y);</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>  rect2Corners[i] = wxPoint2DDouble(std::cos(radAngle2) * (rect2Corners[i].m_x - rect2Center.m_x) -</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  std::sin(radAngle2) * (rect2Corners[i].m_y - rect2Center.m_y) + rect2Center.m_x,</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  std::sin(radAngle2) * (rect2Corners[i].m_x - rect2Center.m_x) +</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  std::cos(radAngle2) * (rect2Corners[i].m_y - rect2Center.m_y) + rect2Center.m_y);</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>  <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="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// Find the rectangles axis to project</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  wxPoint2DDouble axis[4] = { rect1Corners[3] - rect1Corners[0], rect1Corners[3] - rect1Corners[2],</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  rect2Corners[3] - rect2Corners[0], rect2Corners[3] - rect2Corners[2] };</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="comment">// Calculate the projected points to each axis</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  wxPoint2DDouble rect1ProjPts[4][4]; <span class="comment">// [axis][corner]</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  wxPoint2DDouble rect2ProjPts[4][4]; <span class="comment">// [axis][corner]</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 4; i++) {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</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="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 4; j++) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</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="l00173"></a><span class="lineno"> 173</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="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  rect1ProjPts[i][j] = wxPoint2DDouble(m_rectProj * axis[i].m_x, m_rectProj * axis[i].m_y);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  rect2ProjPts[i][j] = wxPoint2DDouble(rectProj * axis[i].m_x, rectProj * axis[i].m_y);</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>  <span class="comment">// Calculate the scalar value to identify the max and min values on projections</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordtype">double</span> rect1Scalar[4][4]; <span class="comment">//[axis][corner]</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordtype">double</span> rect2Scalar[4][4]; <span class="comment">//[axis][corner]</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 4; i++) {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 4; j++) {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</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="l00186"></a><span class="lineno"> 186</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="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="comment">// Identify the max and min scalar values</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordtype">double</span> rect1Min[4];</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordtype">double</span> rect1Max[4];</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordtype">double</span> rect2Min[4];</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordtype">double</span> rect2Max[4];</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">for</span>(<span class="keywordtype">int</span> i = 0; i < 4; i++) {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  rect1Max[i] = rect1Scalar[i][0];</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  rect2Max[i] = rect2Scalar[i][0];</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  rect1Min[i] = rect1Scalar[i][0];</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  rect2Min[i] = rect2Scalar[i][0];</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">for</span>(<span class="keywordtype">int</span> j = 1; j < 4; j++) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span>(rect1Max[i] < rect1Scalar[i][j]) rect1Max[i] = rect1Scalar[i][j];</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span>(rect2Max[i] < rect2Scalar[i][j]) rect2Max[i] = rect2Scalar[i][j];</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>  <span class="keywordflow">if</span>(rect1Min[i] > rect1Scalar[i][j]) rect1Min[i] = rect1Scalar[i][j];</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">if</span>(rect2Min[i] > rect2Scalar[i][j]) rect2Min[i] = rect2Scalar[i][j];</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> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">// Check if any segment don't overlap</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 4; i++) {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</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="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="keywordflow">return</span> <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> </div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb"> 218</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="l00219"></a><span class="lineno"> 219</span> {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="comment">// Check if any parent is null.</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</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="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span>(!(*it)) <span class="keywordflow">return</span> <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_online = online;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">return</span> <span class="keyword">true</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"><a class="line" href="class_element.html#a35f55626a29d5256f8dc07cf92655e64"> 228</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="l00229"></a><span class="lineno"> 229</span> {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</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="l00231"></a><span class="lineno"> 231</span>  clockItem->SetBitmap(wxImage(<span class="stringliteral">"..\\data\\images\\menu\\rotateClock16.png"</span>));</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  menu.Append(clockItem);</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>  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="l00235"></a><span class="lineno"> 235</span>  counterClockItem->SetBitmap(wxImage(<span class="stringliteral">"..\\data\\images\\menu\\rotateCounterClock16.png"</span>));</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  menu.Append(counterClockItem);</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>  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="l00239"></a><span class="lineno"> 239</span>  deleteItem->SetBitmap(wxImage(<span class="stringliteral">"..\\data\\images\\menu\\delete16.png"</span>));</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  menu.Append(deleteItem);</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_element.html#a57f5771fd003020fef3866a1d1dc7487"> 243</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="l00244"></a><span class="lineno"> 244</span> <span class="keyword"></span>{</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="comment">// Check rect corners boundaries.</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="comment">// Get rectangle corners</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  wxPoint2DDouble rectCorner[4] = { m_rect.GetLeftTop(), m_rect.GetLeftBottom(), m_rect.GetRightBottom(),</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  m_rect.GetRightTop() };</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="comment">// Rotate corners.</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 4; ++i) {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  rectCorner[i] = <a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(rectCorner[i], m_angle);</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>  leftUp = rectCorner[0];</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  rightBottom = rectCorner[0];</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < 4; ++i) {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</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="l00258"></a><span class="lineno"> 258</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="l00259"></a><span class="lineno"> 259</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="l00260"></a><span class="lineno"> 260</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="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"> 263</span>  <span class="comment">// Check points list boundaries.</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</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="l00265"></a><span class="lineno"> 265</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="l00266"></a><span class="lineno"> 266</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="l00267"></a><span class="lineno"> 267</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="l00268"></a><span class="lineno"> 268</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="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"><a class="line" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a"> 272</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="l00273"></a><span class="lineno"> 273</span> {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordtype">double</span> dValue = 0.0;</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="keywordflow">if</span>(!strValue.ToDouble(&dValue)) {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  wxMessageDialog msgDialog(parent, errorMsg, _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> <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>  value = dValue;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">return</span> <span class="keyword">true</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> </div><div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="class_element.html#a4c93a9e20ed0ca0c376cf412b4347159"> 286</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="l00287"></a><span class="lineno"> 287</span> {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordtype">long</span> <span class="keywordtype">int</span> iValue = 0;</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>  <span class="keywordflow">if</span>(!strValue.ToLong(&iValue)) {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  wxMessageDialog msgDialog(parent, errorMsg, _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  value = iValue;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">return</span> <span class="keyword">true</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"><a class="line" href="class_element.html#abb2e253ec1e86353cd7160209c96553c"> 300</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="l00301"></a><span class="lineno"> 301</span> {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  wxString str = wxString::FromCDouble(value, 13);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordtype">int</span> cutNumber = 0;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordtype">int</span> numDecimal = 0;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordtype">bool</span> foundCut = <span class="keyword">false</span>;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</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="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">if</span>(str[i] != <span class="charliteral">'0'</span> && !foundCut) {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  cutNumber = i;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  foundCut = <span class="keyword">true</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">if</span>(str[i] == <span class="charliteral">'.'</span>) {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  numDecimal = i;</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>  }</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>  wxString formatedStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">if</span>(cutNumber - numDecimal > minDecimal)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  formatedStr = wxString::FromDouble(value, cutNumber - numDecimal);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  formatedStr = wxString::FromDouble(value, minDecimal);</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="keywordflow">return</span> formatedStr;</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> </div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="class_element.html#a74ec9a279ac0127550e00941206dddb1"> 326</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="l00327"></a><span class="lineno"> 327</span> {</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 < (int)m_parentList.size(); i++) {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">if</span>(m_parentList[i] == oldParent) m_parentList[i] = newParent;</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> }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62"> 333</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="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09"> 335</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="l00336"></a><span class="lineno"> 336</span> {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</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="l00338"></a><span class="lineno"> 338</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">if</span>(element == child) m_childList.erase(it--);</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"><a class="line" href="class_element.html#ad5f4bee2e241c430a643f46dadf3d3f5"> 343</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="l00344"></a><span class="lineno"> 344</span> {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</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="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span>(m_childList[i] == oldChild) m_childList[i] = newChild;</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_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94"> 350</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="l00351"></a><span class="lineno"> 351</span> {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  rgba[0] = red;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  rgba[1] = green;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  rgba[2] = blue;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  rgba[3] = alpha;</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"><a class="line" href="class_open_g_l_colour.html#acc6fa05591fe3881c4d3ffee1bd5b0ad"> 358</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="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00360"></a><span class="lineno"><a class="line" href="class_open_g_l_colour.html#a273751fe4b9efccc28565ec5be7d7967"> 360</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="l00361"></a><span class="lineno"> 361</span> {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  SetRGBA(red, green, blue, alpha);</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"><a class="line" href="class_element.html#a158e271d7f309cd49002ca3c98365e9b"> 365</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="l00366"></a><span class="lineno"> 366</span> <span class="keyword"></span>{</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="comment">//[Ref] http://geomalgorithms.com/a02-_lines.html</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordtype">double</span> distance = 100.0; <span class="comment">// Big initial distance.</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  wxPoint2DDouble p0 = point;</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">for</span>(<span class="keywordtype">int</span> i = 1; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordtype">double</span> d = 0.0;</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>  wxPoint2DDouble p1 = m_pointList[i];</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  wxPoint2DDouble p2 = m_pointList[i + 1];</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>  wxPoint2DDouble v = p2 - p1;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  wxPoint2DDouble w = p0 - p1;</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="keywordtype">double</span> c1 = w.m_x * v.m_x + w.m_y * v.m_y;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</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="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">if</span>(c1 <= 0.0) {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</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="l00385"></a><span class="lineno"> 385</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(c2 <= c1) {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</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="l00387"></a><span class="lineno"> 387</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</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="l00389"></a><span class="lineno"> 389</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="l00390"></a><span class="lineno"> 390</span>  }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">if</span>(d < distance) {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  distance = d;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">if</span>(segmentNumber) *segmentNumber = i;</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> </div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">return</span> distance;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</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#l00107">Element.cpp:107</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#l00088">Element.h:88</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#l00044">Element.cpp:44</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#l00073">Element.cpp:73</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#l00109">Element.cpp:109</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#l00218">Element.cpp:218</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#l00272">Element.cpp:272</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#l00037">Element.h:37</a></div></div> -<div class="ttc" id="class_open_g_l_colour_html_a0193e7fb5730b0e543ba826201568f94"><div class="ttname"><a href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94">OpenGLColour::SetRGBA</a></div><div class="ttdeci">void SetRGBA(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)</div><div class="ttdoc">Set the colour in RGBA. The colour values must be between 0.0 and 1.0. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00350">Element.cpp:350</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#l00335">Element.cpp:335</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#l00091">Element.cpp:91</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#l00243">Element.cpp:243</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#l00053">Element.cpp:53</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_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_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> +<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="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="_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="class_open_g_l_colour_html_a0193e7fb5730b0e543ba826201568f94"><div class="ttname"><a href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94">OpenGLColour::SetRGBA</a></div><div class="ttdeci">void SetRGBA(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)</div><div class="ttdoc">Set the colour in RGBA. The colour values must be between 0.0 and 1.0. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00369">Element.cpp:369</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_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="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#l00228">Element.cpp:228</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#l00343">Element.cpp:343</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#l00286">Element.cpp:286</a></div></div> -<div class="ttc" id="class_open_g_l_colour_html_acc6fa05591fe3881c4d3ffee1bd5b0ad"><div class="ttname"><a href="class_open_g_l_colour.html#acc6fa05591fe3881c4d3ffee1bd5b0ad">OpenGLColour::OpenGLColour</a></div><div class="ttdeci">OpenGLColour()</div><div class="ttdoc">Default construnctor. Use SetRGBA(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00358">Element.cpp:358</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#l00010">Element.cpp:10</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#l00038">Element.h:38</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#l00333">Element.cpp:333</a></div></div> -<div class="ttc" id="class_element_html_a4b6dd88902e04b52fe14dfc73c51fd50"><div class="ttname"><a href="class_element.html#a4b6dd88902e04b52fe14dfc73c51fd50">Element::DrawPoint</a></div><div class="ttdeci">virtual void DrawPoint(wxPoint2DDouble position, double size) const</div><div class="ttdoc">Draw a point. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00124">Element.cpp:124</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#l00082">Element.cpp:82</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#l00036">Element.h:36</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#l00300">Element.cpp:300</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#l00326">Element.cpp:326</a></div></div> -<div class="ttc" id="class_element_html_a158e271d7f309cd49002ca3c98365e9b"><div class="ttname"><a href="class_element.html#a158e271d7f309cd49002ca3c98365e9b">Element::PointToLineDistance</a></div><div class="ttdeci">virtual double PointToLineDistance(wxPoint2DDouble point, int *segmentNumber=NULL) const</div><div class="ttdoc">Calculate the distance between a line (formed by point list) and a point. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00365">Element.cpp:365</a></div></div> -<div class="ttc" id="class_element_html_ab0d0e20be9a36ae676202db753faeec9"><div class="ttname"><a href="class_element.html#ab0d0e20be9a36ae676202db753faeec9">Element::Element</a></div><div class="ttdeci">Element()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00006">Element.cpp:6</a></div></div> -<div class="ttc" id="class_element_html_a35567bc1e306c6db9522ad05a87b98f5"><div class="ttname"><a href="class_element.html#a35567bc1e306c6db9522ad05a87b98f5">Element::DrawCircle</a></div><div class="ttdeci">virtual void DrawCircle(wxPoint2DDouble position, double radius, int numSegments, GLenum mode=GL_LINE_LOOP) const</div><div class="ttdoc">Draw a circle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00017">Element.cpp:17</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#l00101">Element.cpp:101</a></div></div> -<div class="ttc" id="class_element_html_a13d54ba9c08b6bec651402f1c2bb002c"><div class="ttname"><a href="class_element.html#a13d54ba9c08b6bec651402f1c2bb002c">Element::~Element</a></div><div class="ttdeci">virtual ~Element()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00008">Element.cpp:8</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#l00132">Element.cpp:132</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> +<div class="ttc" id="class_open_g_l_colour_html_acc6fa05591fe3881c4d3ffee1bd5b0ad"><div class="ttname"><a href="class_open_g_l_colour.html#acc6fa05591fe3881c4d3ffee1bd5b0ad">OpenGLColour::OpenGLColour</a></div><div class="ttdeci">OpenGLColour()</div><div class="ttdoc">Default construnctor. Use SetRGBA(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00377">Element.cpp:377</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="_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="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_element_html_a4b6dd88902e04b52fe14dfc73c51fd50"><div class="ttname"><a href="class_element.html#a4b6dd88902e04b52fe14dfc73c51fd50">Element::DrawPoint</a></div><div class="ttdeci">virtual void DrawPoint(wxPoint2DDouble position, double size) const</div><div class="ttdoc">Draw a point. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00139">Element.cpp:139</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> +<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="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_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_a158e271d7f309cd49002ca3c98365e9b"><div class="ttname"><a href="class_element.html#a158e271d7f309cd49002ca3c98365e9b">Element::PointToLineDistance</a></div><div class="ttdeci">virtual double PointToLineDistance(wxPoint2DDouble point, int *segmentNumber=NULL) const</div><div class="ttdoc">Calculate the distance between a line (formed by point list) and a point. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00383">Element.cpp:383</a></div></div> +<div class="ttc" id="class_element_html_ab0d0e20be9a36ae676202db753faeec9"><div class="ttname"><a href="class_element.html#ab0d0e20be9a36ae676202db753faeec9">Element::Element</a></div><div class="ttdeci">Element()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00023">Element.cpp:23</a></div></div> +<div class="ttc" id="class_element_html_a35567bc1e306c6db9522ad05a87b98f5"><div class="ttname"><a href="class_element.html#a35567bc1e306c6db9522ad05a87b98f5">Element::DrawCircle</a></div><div class="ttdeci">virtual void DrawCircle(wxPoint2DDouble position, double radius, int numSegments, GLenum mode=GL_LINE_LOOP) const</div><div class="ttdoc">Draw a circle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00033">Element.cpp: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_element_html_a13d54ba9c08b6bec651402f1c2bb002c"><div class="ttname"><a href="class_element.html#a13d54ba9c08b6bec651402f1c2bb002c">Element::~Element</a></div><div class="ttdeci">virtual ~Element()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00024">Element.cpp:24</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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_element_8h.html b/docs/doxygen/html/_element_8h.html index 4a0ccc5..453f108 100644 --- a/docs/doxygen/html/_element_8h.html +++ b/docs/doxygen/html/_element_8h.html @@ -21,6 +21,12 @@ <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> @@ -92,6 +98,8 @@ $(document).ready(function(){initNavTree('_element_8h.html','');}); <code>#include <wx/geometry.h></code><br /> <code>#include <wx/cursor.h></code><br /> <code>#include <wx/menu.h></code><br /> +<code>#include <wx/stdpaths.h></code><br /> +<code>#include <wx/filename.h></code><br /> <code>#include <GL/gl.h></code><br /> <code>#include <complex></code><br /> </div> @@ -134,6 +142,7 @@ Enumerations</h2></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> @@ -165,7 +174,7 @@ Enumerations</h2></td></tr> </td></tr> </table> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00032">32</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00051">51</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -199,7 +208,7 @@ Enumerations</h2></td></tr> </td></tr> </table> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00018">18</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00037">37</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> diff --git a/docs/doxygen/html/_element_8h_source.html b/docs/doxygen/html/_element_8h_source.html index ebb3281..afc215f 100644 --- a/docs/doxygen/html/_element_8h_source.html +++ b/docs/doxygen/html/_element_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,70 +88,70 @@ $(document).ready(function(){initNavTree('_element_8h_source.html','');}); <div class="title">Element.h</div> </div> </div><!--header--> <div class="contents"> -<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="preprocessor">#ifndef ELEMENT_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define ELEMENT_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <wx/msgdlg.h></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <wx/geometry.h></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <wx/cursor.h></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include <wx/menu.h></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include <GL/gl.h></span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <complex></span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">//#include <wx/log.h></span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316"> 18</a></span> <span class="keyword">enum</span> <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316">PickboxID</a> {</div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433"> 19</a></span>  <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433">ID_PB_NONE</a> = 0, </div><div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316af6c9b66260adb71ded1407f62d5eceb0"> 20</a></span>  <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316af6c9b66260adb71ded1407f62d5eceb0">ID_PB_RIGHT</a>, </div><div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa8b70955f3c623a35fb64e0d95531721"> 21</a></span>  <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa8b70955f3c623a35fb64e0d95531721">ID_PB_LEFT</a>, </div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a982b811b9fa895eb15a3f8400ffa385d"> 22</a></span>  <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a982b811b9fa895eb15a3f8400ffa385d">ID_PB_RIGHT_BOTTOM</a>, </div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a34118762cdb912e35698c4550edf470c"> 23</a></span>  <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a34118762cdb912e35698c4550edf470c">ID_PB_RIGHT_TOP</a>, </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa962fdbb47309de8b6f16025e2d46b2f"> 24</a></span>  <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa962fdbb47309de8b6f16025e2d46b2f">ID_PB_LEFT_BOTTOM</a>, </div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a49b276646725b598a6b3a24ee74e8afb"> 25</a></span>  <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a49b276646725b598a6b3a24ee74e8afb">ID_PB_LEFT_TOP</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> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049"> 32</a></span> <span class="keyword">enum</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049">ContextMenuID</a> {</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42"> 33</a></span>  <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a> = 0, </div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049af05f38a3b3fea5d6da036dce48e9d960"> 34</a></span>  <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049af05f38a3b3fea5d6da036dce48e9d960">ID_LINE_ADD_NODE</a>, </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a1a8f8c62fc201993f6a605ff06314803"> 35</a></span>  <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a1a8f8c62fc201993f6a605ff06314803">ID_LINE_REMOVE_NODE</a>, </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a9d58b2fe374676b88029d401da0d77a8"> 36</a></span>  <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a9d58b2fe374676b88029d401da0d77a8">ID_ROTATE_CLOCK</a>, </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049adeee9ba1a6f37ff0622ca94a52e40551"> 37</a></span>  <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049adeee9ba1a6f37ff0622ca94a52e40551">ID_ROTATE_COUNTERCLOCK</a>, </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a80c989d88bc686137e96564dfad6166a"> 38</a></span>  <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a80c989d88bc686137e96564dfad6166a">ID_DELETE</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> </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="class_open_g_l_colour.html"> 48</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="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_open_g_l_colour.html#acc6fa05591fe3881c4d3ffee1bd5b0ad">OpenGLColour</a>();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</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="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="class_open_g_l_colour.html#a4b9a726773b4c82935f15add648ed2a0"> 68</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="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</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="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066"> 83</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="l00084"></a><span class="lineno"> 84</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  GLdouble rgba[4];</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_element.html"> 88</a></span> <span class="keyword">class </span><a class="code" href="class_element.html">Element</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">public</span>:</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="class_element.html">Element</a>();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_element.html">Element</a>();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="class_element.html#add5da19e56211c76bea78638eca87150"> 105</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="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec"> 111</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="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">void</span> SetPosition(<span class="keyword">const</span> wxPoint2DDouble position);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="class_element.html#a5279e5a513391d399d576bcb83df736b"> 123</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="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b"> 129</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="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f"> 135</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="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c"> 141</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="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="class_element.html#afed922f1c0803ebdc96e785a7f696504"> 147</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="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordtype">bool</span> SetOnline(<span class="keywordtype">bool</span> online = <span class="keyword">true</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"><a class="line" href="class_element.html#a88941f383fb321b1be441838e2b8700f"> 159</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="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="class_element.html#ab195252edc86fb98ea011050593e7a8a"> 165</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="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="class_element.html#a536ad18a847dcc979c984b3cb287f238"> 171</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="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#a2f78fae8a5869ff53e87ecfdc6fc33b9"> 177</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="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="class_element.html#a616c73ff20402109ede68579094acc3d"> 183</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="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="class_element.html#ac42604083db300d20c010b50084de91b"> 189</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="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00"> 195</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="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f"> 201</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="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb"> 207</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="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="class_element.html#abd94ea2ca7984d9a32d3ffd23837a323"> 213</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="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa"> 219</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="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="class_element.html#aff2870f5979a84a30c27917cb33271f9"> 225</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="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="class_element.html#a569178e9138490a981511a644536c0f9"> 234</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="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="class_element.html#ad1f153a87797633ab310d07e1d06eba9"> 240</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="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</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="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</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="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3"> 258</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="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="class_element.html#a9aa2fec8b6c7bef4bf75b9f86fbb76f2"> 264</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="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee"> 270</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="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</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="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</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="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00289"></a><span class="lineno"> 289</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="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="class_element.html#aa79db7f54ba9754e953b5059a1d79486"> 295</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="l00296"></a><span class="lineno"> 296</span> </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="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e"> 308</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="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="class_element.html#a2a436b0497017a1c3d03dba5e59f037e"> 315</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="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="class_element.html#aa40c60c03d6a76639d8c6f6bab86720e"> 321</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="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> StartMove(wxPoint2DDouble position);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Move(wxPoint2DDouble position);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd"> 341</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="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="class_element.html#a95b4f7e9341883ec39d0201148afffb4"> 348</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="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="class_element.html#a499c3b52be27d2bf436a13b6f5353b9c"> 353</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"> 354</span> </div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="class_element.html#ac7490a91f3edfff08584567cc84d86b5"> 361</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="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="class_element.html#a9504437b60faf2c5a27584de8a24810c"> 367</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="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</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="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="class_element.html#af26c67b6dd32eb1b3e417fddf54818c3"> 381</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="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="class_element.html#af4815de7e7698ea116e8e2af51414050"> 389</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="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00395"></a><span class="lineno"><a class="line" href="class_element.html#a6f071b6dfd64721ca673bfbe1ca2d525"> 395</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="l00396"></a><span class="lineno"> 396</span> </div><div class="line"><a name="l00401"></a><span class="lineno"><a class="line" href="class_element.html#a245924c5be948397b101787dbea565ea"> 401</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="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33"> 406</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="l00407"></a><span class="lineno"> 407</span> </div><div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="class_element.html#a8c16c17a6f22ffcdeb80ffa0ed27a72a"> 411</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="l00412"></a><span class="lineno"> 412</span> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keyword">virtual</span> wxPoint2DDouble</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  WorldToScreen(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale, <span class="keywordtype">double</span> offsetX = 0.0, <span class="keywordtype">double</span> offsetY = 0.0) <span class="keyword">const</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keyword">virtual</span> wxPoint2DDouble WorldToScreen(wxPoint2DDouble position,</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  wxPoint2DDouble translation,</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordtype">double</span> scale,</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordtype">double</span> offsetX = 0.0,</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordtype">double</span> offsetY = 0.0) <span class="keyword">const</span>;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> </div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  RotatedRectanglesIntersects(wxRect2DDouble rect1, wxRect2DDouble rect2, <span class="keywordtype">double</span> angle1, <span class="keywordtype">double</span> angle2) <span class="keyword">const</span>;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00454"></a><span class="lineno"> 454</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="l00455"></a><span class="lineno"> 455</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawArc(wxPoint2DDouble position,</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordtype">double</span> radius,</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordtype">double</span> initAngle,</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordtype">double</span> finalAngle,</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordtype">int</span> numSegments,</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  GLenum mode = GL_LINE_LOOP) <span class="keyword">const</span>;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</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="l00470"></a><span class="lineno"> 470</span> </div><div class="line"><a name="l00476"></a><span class="lineno"> 476</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="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</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="l00484"></a><span class="lineno"> 484</span> </div><div class="line"><a name="l00490"></a><span class="lineno"> 490</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="l00491"></a><span class="lineno"> 491</span> </div><div class="line"><a name="l00497"></a><span class="lineno"> 497</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="l00498"></a><span class="lineno"> 498</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</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="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00511"></a><span class="lineno"> 511</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="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00517"></a><span class="lineno"><a class="line" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09"> 517</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="l00518"></a><span class="lineno"> 518</span> </div><div class="line"><a name="l00523"></a><span class="lineno"><a class="line" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0"> 523</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="l00524"></a><span class="lineno"> 524</span> </div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">// virtual wxPoint2DDouble GetMoveStartPosition() const { return m_moveStartPt; }</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="comment">// virtual wxPoint2DDouble GetMovePosition() const { return m_movePos; }</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> </div><div class="line"><a name="l00533"></a><span class="lineno"> 533</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="l00534"></a><span class="lineno"> 534</span> </div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> GeneralMenuItens(wxMenu& menu);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> </div><div class="line"><a name="l00547"></a><span class="lineno"><a class="line" href="class_element.html#ae1652eded3ccbd241a783691117418b2"> 547</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="l00548"></a><span class="lineno"> 548</span> </div><div class="line"><a name="l00556"></a><span class="lineno"> 556</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="l00557"></a><span class="lineno"> 557</span> </div><div class="line"><a name="l00565"></a><span class="lineno"> 565</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="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00572"></a><span class="lineno"> 572</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="l00573"></a><span class="lineno"> 573</span> </div><div class="line"><a name="l00580"></a><span class="lineno"> 580</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="l00581"></a><span class="lineno"> 581</span> </div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordtype">int</span> m_elementID = 0;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  std::vector<Element*> m_parentList;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  std::vector<Element*> m_childList;</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>  wxRect2DDouble m_rect;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  wxPoint2DDouble m_position;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordtype">double</span> m_width = 0.0;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordtype">double</span> m_height = 0.0;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordtype">double</span> m_angle = 0.0;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordtype">double</span> m_borderSize = 2.0;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keywordtype">double</span> m_rotationAngle = 45.0;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordtype">double</span> m_switchSize = 10.0;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> </div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  std::vector<wxRect2DDouble> m_switchRect;</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>  <span class="keywordtype">bool</span> m_selected = <span class="keyword">false</span>;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordtype">bool</span> m_dragging = <span class="keyword">false</span>;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keywordtype">bool</span> m_showPickbox = <span class="keyword">false</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="keywordtype">int</span> m_activePickboxID = <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433">ID_PB_NONE</a>;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordtype">int</span> m_activeNodeID = 0;</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>  std::vector<wxPoint2DDouble> m_pointList;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  std::vector<wxPoint2DDouble> m_movePts;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> </div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  wxPoint2DDouble m_moveStartPt;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  wxPoint2DDouble m_movePos;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> </div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordtype">bool</span> m_online = <span class="keyword">true</span>;</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>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_selectionColour;</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> </div><div class="line"><a name="l00616"></a><span class="lineno"> 616</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#l00201">Element.h:201</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#l00141">Element.h:141</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#l00321">Element.h:321</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#l00088">Element.h:88</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#l00123">Element.h:123</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#l00517">Element.h:517</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#l00129">Element.h:129</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#l00523">Element.h:523</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#l00406">Element.h:406</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#l00033">Element.h:33</a></div></div> -<div class="ttc" id="class_element_html_a95b4f7e9341883ec39d0201148afffb4"><div class="ttname"><a href="class_element.html#a95b4f7e9341883ec39d0201148afffb4">Element::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="_element_8h_source.html#l00348">Element.h:348</a></div></div> -<div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049">ContextMenuID</a></div><div class="ttdeci">ContextMenuID</div><div class="ttdoc">ID of contex menu itens. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00032">Element.h:32</a></div></div> -<div class="ttc" id="class_element_html_af4815de7e7698ea116e8e2af51414050"><div class="ttname"><a href="class_element.html#af4815de7e7698ea116e8e2af51414050">Element::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="_element_8h_source.html#l00389">Element.h:389</a></div></div> -<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#l00353">Element.h:353</a></div></div> -<div class="ttc" id="class_element_html_a88941f383fb321b1be441838e2b8700f"><div class="ttname"><a href="class_element.html#a88941f383fb321b1be441838e2b8700f">Element::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="_element_8h_source.html#l00159">Element.h:159</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#l00037">Element.h:37</a></div></div> -<div class="ttc" id="class_open_g_l_colour_html_a0193e7fb5730b0e543ba826201568f94"><div class="ttname"><a href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94">OpenGLColour::SetRGBA</a></div><div class="ttdeci">void SetRGBA(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)</div><div class="ttdoc">Set the colour in RGBA. The colour values must be between 0.0 and 1.0. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00350">Element.cpp:350</a></div></div> -<div class="ttc" id="class_element_html_a870e266e0457bacbc3f7ef1fb70c6fdd"><div class="ttname"><a href="class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd">Element::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="_element_8h_source.html#l00341">Element.h:341</a></div></div> -<div class="ttc" id="_element_8h_html_a7b88da333c092757d91d7492dfa8e316a982b811b9fa895eb15a3f8400ffa385d"><div class="ttname"><a href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a982b811b9fa895eb15a3f8400ffa385d">ID_PB_RIGHT_BOTTOM</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00022">Element.h:22</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#l00234">Element.h:234</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#l00034">Element.h:34</a></div></div> +<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_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> +<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> +<div class="ttc" id="class_element_html_a95b4f7e9341883ec39d0201148afffb4"><div class="ttname"><a href="class_element.html#a95b4f7e9341883ec39d0201148afffb4">Element::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="_element_8h_source.html#l00343">Element.h:343</a></div></div> +<div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049">ContextMenuID</a></div><div class="ttdeci">ContextMenuID</div><div class="ttdoc">ID of contex menu itens. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00051">Element.h:51</a></div></div> +<div class="ttc" id="class_element_html_af4815de7e7698ea116e8e2af51414050"><div class="ttname"><a href="class_element.html#af4815de7e7698ea116e8e2af51414050">Element::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="_element_8h_source.html#l00379">Element.h:379</a></div></div> +<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_element_html_a88941f383fb321b1be441838e2b8700f"><div class="ttname"><a href="class_element.html#a88941f383fb321b1be441838e2b8700f">Element::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="_element_8h_source.html#l00177">Element.h:177</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="class_open_g_l_colour_html_a0193e7fb5730b0e543ba826201568f94"><div class="ttname"><a href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94">OpenGLColour::SetRGBA</a></div><div class="ttdeci">void SetRGBA(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)</div><div class="ttdoc">Set the colour in RGBA. The colour values must be between 0.0 and 1.0. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00369">Element.cpp:369</a></div></div> +<div class="ttc" id="class_element_html_a870e266e0457bacbc3f7ef1fb70c6fdd"><div class="ttname"><a href="class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd">Element::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="_element_8h_source.html#l00337">Element.h:337</a></div></div> +<div class="ttc" id="_element_8h_html_a7b88da333c092757d91d7492dfa8e316a982b811b9fa895eb15a3f8400ffa385d"><div class="ttname"><a href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a982b811b9fa895eb15a3f8400ffa385d">ID_PB_RIGHT_BOTTOM</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00041">Element.h:41</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="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_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#l00213">Element.h:213</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#l00219">Element.h:219</a></div></div> -<div class="ttc" id="class_element_html_ab195252edc86fb98ea011050593e7a8a"><div class="ttname"><a href="class_element.html#ab195252edc86fb98ea011050593e7a8a">Element::GetRect</a></div><div class="ttdeci">wxRect2DDouble GetRect() const</div><div class="ttdoc">Get the element rectangle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00165">Element.h:165</a></div></div> -<div class="ttc" id="class_open_g_l_colour_html_acc6fa05591fe3881c4d3ffee1bd5b0ad"><div class="ttname"><a href="class_open_g_l_colour.html#acc6fa05591fe3881c4d3ffee1bd5b0ad">OpenGLColour::OpenGLColour</a></div><div class="ttdeci">OpenGLColour()</div><div class="ttdoc">Default construnctor. Use SetRGBA(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00358">Element.cpp:358</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#l00135">Element.h:135</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#l00195">Element.h:195</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#l00295">Element.h:295</a></div></div> -<div class="ttc" id="class_open_g_l_colour_html_a4b9a726773b4c82935f15add648ed2a0"><div class="ttname"><a href="class_open_g_l_colour.html#a4b9a726773b4c82935f15add648ed2a0">OpenGLColour::~OpenGLColour</a></div><div class="ttdeci">virtual ~OpenGLColour()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00068">Element.h:68</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#l00308">Element.h:308</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#l00038">Element.h:38</a></div></div> -<div class="ttc" id="_element_8h_html_a7b88da333c092757d91d7492dfa8e316a49b276646725b598a6b3a24ee74e8afb"><div class="ttname"><a href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a49b276646725b598a6b3a24ee74e8afb">ID_PB_LEFT_TOP</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00025">Element.h:25</a></div></div> -<div class="ttc" id="_element_8h_html_a7b88da333c092757d91d7492dfa8e316a34118762cdb912e35698c4550edf470c"><div class="ttname"><a href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a34118762cdb912e35698c4550edf470c">ID_PB_RIGHT_TOP</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00023">Element.h:23</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#l00315">Element.h:315</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#l00183">Element.h:183</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#l00225">Element.h:225</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#l00547">Element.h:547</a></div></div> -<div class="ttc" id="class_element_html_ad1f153a87797633ab310d07e1d06eba9"><div class="ttname"><a href="class_element.html#ad1f153a87797633ab310d07e1d06eba9">Element::AddParent</a></div><div class="ttdeci">virtual void AddParent(Element *parent)</div><div class="ttdoc">Add a parent to the element. </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_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#l00395">Element.h:395</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#l00036">Element.h:36</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#l00035">Element.h:35</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#l00401">Element.h:401</a></div></div> -<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#l00147">Element.h:147</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#l00018">Element.h:18</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#l00189">Element.h:189</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#l00048">Element.h:48</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#l00381">Element.h:381</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#l00021">Element.h:21</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#l00024">Element.h:24</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#l00264">Element.h:264</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#l00361">Element.h:361</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#l00270">Element.h:270</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#l00367">Element.h:367</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#l00020">Element.h:20</a></div></div> -<div class="ttc" id="class_element_html_a2f78fae8a5869ff53e87ecfdc6fc33b9"><div class="ttname"><a href="class_element.html#a2f78fae8a5869ff53e87ecfdc6fc33b9">Element::IsDragging</a></div><div class="ttdeci">bool IsDragging() const</div><div class="ttdoc">Checks if the element is being dragged. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00177">Element.h:177</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#l00171">Element.h:171</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#l00411">Element.h:411</a></div></div> -<div class="ttc" id="class_element_html_add5da19e56211c76bea78638eca87150"><div class="ttname"><a href="class_element.html#add5da19e56211c76bea78638eca87150">Element::SetDragging</a></div><div class="ttdeci">void SetDragging(bool dragging=true)</div><div class="ttdoc">Set if the element are being dragged. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00105">Element.h:105</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#l00258">Element.h:258</a></div></div> -<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#l00207">Element.h:207</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#l00111">Element.h:111</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#l00019">Element.h:19</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#l00083">Element.h:83</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_html_ab195252edc86fb98ea011050593e7a8a"><div class="ttname"><a href="class_element.html#ab195252edc86fb98ea011050593e7a8a">Element::GetRect</a></div><div class="ttdeci">wxRect2DDouble GetRect() const</div><div class="ttdoc">Get the element rectangle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00182">Element.h:182</a></div></div> +<div class="ttc" id="class_open_g_l_colour_html_acc6fa05591fe3881c4d3ffee1bd5b0ad"><div class="ttname"><a href="class_open_g_l_colour.html#acc6fa05591fe3881c4d3ffee1bd5b0ad">OpenGLColour::OpenGLColour</a></div><div class="ttdeci">OpenGLColour()</div><div class="ttdoc">Default construnctor. Use SetRGBA(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00377">Element.cpp:377</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_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_open_g_l_colour_html_a4b9a726773b4c82935f15add648ed2a0"><div class="ttname"><a href="class_open_g_l_colour.html#a4b9a726773b4c82935f15add648ed2a0">OpenGLColour::~OpenGLColour</a></div><div class="ttdeci">virtual ~OpenGLColour()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00087">Element.h:87</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="_element_8h_html_a7b88da333c092757d91d7492dfa8e316a49b276646725b598a6b3a24ee74e8afb"><div class="ttname"><a href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a49b276646725b598a6b3a24ee74e8afb">ID_PB_LEFT_TOP</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00044">Element.h:44</a></div></div> +<div class="ttc" id="_element_8h_html_a7b88da333c092757d91d7492dfa8e316a34118762cdb912e35698c4550edf470c"><div class="ttname"><a href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a34118762cdb912e35698c4550edf470c">ID_PB_RIGHT_TOP</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00042">Element.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_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_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_ad1f153a87797633ab310d07e1d06eba9"><div class="ttname"><a href="class_element.html#ad1f153a87797633ab310d07e1d06eba9">Element::AddParent</a></div><div class="ttdeci">virtual void AddParent(Element *parent)</div><div class="ttdoc">Add a parent to the element. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00245">Element.h:245</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_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_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_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_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> +<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_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_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="_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_element_html_a2f78fae8a5869ff53e87ecfdc6fc33b9"><div class="ttname"><a href="class_element.html#a2f78fae8a5869ff53e87ecfdc6fc33b9">Element::IsDragging</a></div><div class="ttdeci">bool IsDragging() const</div><div class="ttdoc">Checks if the element is being dragged. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00192">Element.h:192</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_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="class_element_html_add5da19e56211c76bea78638eca87150"><div class="ttname"><a href="class_element.html#add5da19e56211c76bea78638eca87150">Element::SetDragging</a></div><div class="ttdeci">void SetDragging(bool dragging=true)</div><div class="ttdoc">Set if the element are being dragged. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00130">Element.h:130</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_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_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="_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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_element_data_object_8cpp_source.html b/docs/doxygen/html/_element_data_object_8cpp_source.html index 76da35b..6ce0314 100644 --- a/docs/doxygen/html/_element_data_object_8cpp_source.html +++ b/docs/doxygen/html/_element_data_object_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,10 +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="preprocessor">#include "ElementDataObject.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> ElementDataObject::ElementDataObject()</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>  : wxDataObjectSimple(wxDataFormat(<span class="stringliteral">"PSPCopy"</span>))</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  m_elementsLists = <span class="keyword">new</span> <a class="code" href="struct_elements_lists.html">ElementsLists</a>();</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> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> ElementDataObject::ElementDataObject(std::vector<Element*> elementList)</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  : wxDataObjectSimple(wxDataFormat(<span class="stringliteral">"PSPCopy"</span>))</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> {</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_elementsLists = <span class="keyword">new</span> <a class="code" href="struct_elements_lists.html">ElementsLists</a>();</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keywordflow">if</span>(elementList.size() > 0) {</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <span class="comment">// Separate buses (parents) from the rest of the elements (childs).</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</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="l00016"></a><span class="lineno"> 16</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="l00017"></a><span class="lineno"> 17</span>  <span class="keywordflow">if</span>(copy) {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</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="l00019"></a><span class="lineno"> 19</span>  m_elementsLists->parentList.push_back(bus);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  m_elementsLists->elementList.push_back(copy);</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>  }</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> ElementDataObject::~ElementDataObject() {}</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</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="l00029"></a><span class="lineno"> 29</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="l00030"></a><span class="lineno"> 30</span> <span class="keyword"></span>{</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  *(<a class="code" href="struct_elements_lists.html">ElementsLists</a>**)buf = m_elementsLists;</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> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</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="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_elementsLists = *(<a class="code" href="struct_elements_lists.html">ElementsLists</a>**)buf;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</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#l00088">Element.h:88</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#l00007">ElementDataObject.h:7</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#l00045">Bus.h:45</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#l00258">Element.h:258</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 "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="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_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 --> <!-- start footer part --> diff --git a/docs/doxygen/html/_element_data_object_8h_source.html b/docs/doxygen/html/_element_data_object_8h_source.html index 677d41a..99ab853 100644 --- a/docs/doxygen/html/_element_data_object_8h_source.html +++ b/docs/doxygen/html/_element_data_object_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,8 +88,9 @@ $(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="preprocessor">#ifndef ELEMENTDATAOBJECT_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define ELEMENTDATAOBJECT_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "Workspace.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <wx/dataobj.h></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="struct_elements_lists.html"> 7</a></span> <span class="keyword">struct </span><a class="code" href="struct_elements_lists.html">ElementsLists</a> {</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  std::vector<Element*> elementList;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  std::vector<Bus*> parentList;</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> </div><div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="class_element_data_object.html"> 12</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="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_element_data_object.html">ElementDataObject</a>();</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <a class="code" href="class_element_data_object.html">ElementDataObject</a>(std::vector<Element*> elementList);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  ~<a class="code" href="class_element_data_object.html">ElementDataObject</a>();</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>  <span class="keywordtype">size_t</span> GetDataSize() <span class="keyword">const override</span>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</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="l00021"></a><span class="lineno"> 21</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="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</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="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <a class="code" href="struct_elements_lists.html">ElementsLists</a>* m_elementsLists = NULL;</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> <span class="preprocessor">#endif // ELEMENTDATAOBJECT_H</span></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#l00007">ElementDataObject.h:7</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#l00012">ElementDataObject.h:12</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">#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> +<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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_element_form_8cpp_source.html b/docs/doxygen/html/_element_form_8cpp_source.html index d0cf593..ca0b601 100644 --- a/docs/doxygen/html/_element_form_8cpp_source.html +++ b/docs/doxygen/html/_element_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_element_form_8h_source.html b/docs/doxygen/html/_element_form_8h_source.html index 9db4411..a45a598 100644 --- a/docs/doxygen/html/_element_form_8h_source.html +++ b/docs/doxygen/html/_element_form_8h_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_element_form_bitmaps_8cpp_source.html b/docs/doxygen/html/_element_form_bitmaps_8cpp_source.html index 24f54e4..e437032 100644 --- a/docs/doxygen/html/_element_form_bitmaps_8cpp_source.html +++ b/docs/doxygen/html/_element_form_bitmaps_8cpp_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_element_plot_data_8cpp_source.html b/docs/doxygen/html/_element_plot_data_8cpp_source.html index 61ab4b0..2d20c4a 100644 --- a/docs/doxygen/html/_element_plot_data_8cpp_source.html +++ b/docs/doxygen/html/_element_plot_data_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,7 +88,7 @@ $(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="preprocessor">#include "ElementPlotData.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> ElementPlotData::ElementPlotData(wxString name, CurveType curveType)</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> {</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  m_name = name;</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  m_curveType = curveType;</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> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> ElementPlotData::~ElementPlotData() {}</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="keywordtype">void</span> ElementPlotData::AddData(std::vector<double> values, wxString name)</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> {</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</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="l00013"></a><span class="lineno"> 13</span>  data->SetName(name);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  data->SetValues(values);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  data->SetPlot(<span class="keyword">false</span>);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  data->SetAxis(0);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  data->SetColour(*wxBLACK);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  data->SetPenType(wxPENSTYLE_SOLID);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  data->SetThick(2);</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>  m_elementData.push_back(data);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</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#l00010">ElementPlotData.h:10</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 "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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_element_plot_data_8h_source.html b/docs/doxygen/html/_element_plot_data_8h_source.html index 90ec59b..2d65d02 100644 --- a/docs/doxygen/html/_element_plot_data_8h_source.html +++ b/docs/doxygen/html/_element_plot_data_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,8 +88,8 @@ $(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="preprocessor">#ifndef ELEMENTPLOTDATA_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define ELEMENTPLOTDATA_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <wx/treectrl.h></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <wx/colour.h></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <wx/pen.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 <vector></span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"><a class="line" href="class_plot_data.html"> 10</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="l00011"></a><span class="lineno"> 11</span> {</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <a class="code" href="class_plot_data.html">PlotData</a>() {}</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  ~<a class="code" href="class_plot_data.html">PlotData</a>() {}</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keywordtype">void</span> SetAxis(<span class="keywordtype">int</span> axis) { m_axis = axis; }</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keywordtype">void</span> SetColour(<span class="keyword">const</span> wxColour& colour) { m_colour = colour; }</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordtype">void</span> SetName(<span class="keyword">const</span> wxString& name) { m_name = name; }</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keywordtype">void</span> SetPenType(<span class="keyword">const</span> wxPenStyle& penType) { m_penType = penType; }</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keywordtype">void</span> SetPlot(<span class="keywordtype">bool</span> plot) { m_plot = plot; }</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordtype">void</span> SetThick(<span class="keywordtype">int</span> thick) { m_thick = thick; }</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</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="l00022"></a><span class="lineno"> 22</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="l00023"></a><span class="lineno"> 23</span>  wxColour GetColour()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_colour; }</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  wxString GetName()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_name; }</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  wxPenStyle GetPenType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_penType; }</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</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="l00027"></a><span class="lineno"> 27</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="l00028"></a><span class="lineno"> 28</span>  std::vector<double> GetValues()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_values; }</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  std::vector<double> m_values;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  wxString m_name;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">bool</span> m_plot;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  wxColour m_colour;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">int</span> m_thick;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  wxPenStyle m_penType;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">int</span> m_axis;</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_element_plot_data.html"> 39</a></span> <span class="keyword">class </span><a class="code" href="class_element_plot_data.html">ElementPlotData</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">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">enum</span> CurveType {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  CT_BUS = 0,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  CT_SYNC_GENERATOR,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  CT_SYNC_COMPENSATOR,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  CT_TRANSFORMER,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  CT_LINE,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  CT_IND_MOTOR,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  CT_SHUNT_INDUCTOR,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  CT_SHUNT_CAPACITOR,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  CT_LOAD,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  CT_TEST,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  NUM_ELEMENTS,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  CT_TIME</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="class_element_plot_data.html">ElementPlotData</a>() {};</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a>(wxString name, CurveType curveType);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  ~<a class="code" href="class_element_plot_data.html">ElementPlotData</a>();</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>  wxString GetName()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_name; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">void</span> SetName(wxString name) { m_name = name; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  CurveType GetCurveType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_curveType; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">void</span> SetCurveType(CurveType type) { m_curveType = type; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</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="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">void</span> AddData(std::vector<double> values, wxString name);</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">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="l00068"></a><span class="lineno"> 68</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="l00069"></a><span class="lineno"> 69</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="l00070"></a><span class="lineno"> 70</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="l00071"></a><span class="lineno"> 71</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="l00072"></a><span class="lineno"> 72</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="l00073"></a><span class="lineno"> 73</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="l00074"></a><span class="lineno"> 74</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="l00075"></a><span class="lineno"> 75</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="l00076"></a><span class="lineno"> 76</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="l00077"></a><span class="lineno"> 77</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="l00078"></a><span class="lineno"> 78</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="l00079"></a><span class="lineno"> 79</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="l00080"></a><span class="lineno"> 80</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="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  wxString m_name;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  CurveType m_curveType;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  std::vector<PlotData*> m_elementData;</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 // 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#l00039">ElementPlotData.h:39</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#l00010">ElementPlotData.h:10</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">#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> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_exponential_8cpp_source.html b/docs/doxygen/html/_exponential_8cpp_source.html index e064fa3..78ab458 100644 --- a/docs/doxygen/html/_exponential_8cpp_source.html +++ b/docs/doxygen/html/_exponential_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,17 @@ $(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="preprocessor">#include "Exponential.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "ExponentialForm.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</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="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  m_width = m_height = 36.0;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</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="l00008"></a><span class="lineno"> 8</span>  nodeIn->StartMove(m_position);</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</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="l00010"></a><span class="lineno"> 10</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_nodeList.push_back(nodeIn);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> }</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> Exponential::~Exponential() {}</div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="class_exponential.html#af5f172e2f7ae7df0fc79b44b55355339"> 17</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="l00018"></a><span class="lineno"> 18</span> <span class="keyword"></span>{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  glLineWidth(1.0);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  DrawRectangle(m_position, m_width + borderSize, m_height + 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>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  DrawRectangle(m_position, m_width, m_height);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  DrawRectangle(m_position, m_width, m_height, GL_LINE_LOOP);</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="comment">// Plot symbol.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  std::vector<wxPoint2DDouble> axis;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  axis.push_back(m_position + wxPoint2DDouble(-13, 13));</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  axis.push_back(m_position + wxPoint2DDouble(13, 13));</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  axis.push_back(m_position + wxPoint2DDouble(-13, -13));</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  axis.push_back(m_position + wxPoint2DDouble(-13, 13));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  DrawLine(axis, GL_LINES);</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>  glLineWidth(2.0);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  std::vector<wxPoint2DDouble> expSymbol;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  expSymbol.push_back(m_position + wxPoint2DDouble(-13, 13));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  expSymbol.push_back(m_position + wxPoint2DDouble(-6, 13));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  expSymbol.push_back(m_position + wxPoint2DDouble(2, 12));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  expSymbol.push_back(m_position + wxPoint2DDouble(4, 11));</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  expSymbol.push_back(m_position + wxPoint2DDouble(6, 10));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  expSymbol.push_back(m_position + wxPoint2DDouble(8, 7));</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  expSymbol.push_back(m_position + wxPoint2DDouble(11, -1));</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  expSymbol.push_back(m_position + wxPoint2DDouble(12, -7));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  expSymbol.push_back(m_position + wxPoint2DDouble(13, -13));</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  glColor4d(0.0, 0.3, 1.0, 1.0);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  DrawLine(expSymbol);</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_exponential.html#abdf1c3c1d8e7839fc2a8fc914acff68d"> 56</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="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_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="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_exponential.html#a0714869ee8815119a6d76431bac767ea"> 67</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="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> Exponential::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_angle == 0.0) {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-18, 0));</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(18, 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, -18));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, 18));</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(18, 0));</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_nodeList[1]->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(0, 18));</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -18));</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::GetValues(<span class="keywordtype">double</span>& aValue, <span class="keywordtype">double</span>& bValue)</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>  aValue = m_aValue;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  bValue = m_bValue;</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="keywordtype">void</span> Exponential::SetValues(<span class="keywordtype">double</span> aValue, <span class="keywordtype">double</span> bValue)</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>  m_aValue = aValue;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_bValue = bValue;</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> <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="l00116"></a><span class="lineno"> 116</span> {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_output = m_aValue * std::exp(m_bValue * input);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> <span class="keyword">true</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_exponential.html#a85cda0dba6549828a9045e478e24609f"> 121</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="l00122"></a><span class="lineno"> 122</span> {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</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="l00124"></a><span class="lineno"> 124</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</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#l00088">Element.h:88</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</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#l00067">Exponential.cpp:67</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#l00056">Exponential.cpp:56</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#l00017">Exponential.cpp:17</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#l00121">Exponential.cpp:121</a></div></div> -<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00008">Exponential.h:8</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="ttdef"><b>Definition:</b> <a href="_exponential_form_8h_source.html#l00007">ExponentialForm.h:7</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#l00053">ControlElement.h:53</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"> 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="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_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_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> +<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 --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_exponential_8h.html b/docs/doxygen/html/_exponential_8h.html new file mode 100644 index 0000000..9973de9 --- /dev/null +++ b/docs/doxygen/html/_exponential_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/Exponential.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('_exponential_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">Exponential.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="_exponential_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_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="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="_exponential_8h.html">Exponential.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/_exponential_8h_source.html b/docs/doxygen/html/_exponential_8h_source.html index 6ecb51b..67cb366 100644 --- a/docs/doxygen/html/_exponential_8h_source.html +++ b/docs/doxygen/html/_exponential_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,22 +88,23 @@ $(document).ready(function(){initNavTree('_exponential_8h_source.html','');}); <div class="title">Exponential.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="preprocessor">#ifndef EXPONENTIAL_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define EXPONENTIAL_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ControlElement.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_exponential_form.html">ExponentialForm</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_exponential.html"> 8</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="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span>  ~<a class="code" href="class_exponential.html">Exponential</a>();</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">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="l00015"></a><span class="lineno"><a class="line" href="class_exponential.html#a79eabfca357002f160b082a6df9f6f2b"> 15</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="l00016"></a><span class="lineno"><a class="line" href="class_exponential.html#a540b1a43045b9bb7c96d32825d15c95e"> 16</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="l00017"></a><span class="lineno"> 17</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="l00018"></a><span class="lineno"> 18</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="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</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">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="l00023"></a><span class="lineno"> 23</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="l00024"></a><span class="lineno"> 24</span>  </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</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="l00026"></a><span class="lineno"> 26</span>  </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</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="l00028"></a><span class="lineno"> 28</span>  </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> m_aValue = 0.001;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">double</span> m_bValue = 5.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> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</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#l00088">Element.h:88</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#l00015">Exponential.h:15</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#l00067">Exponential.cpp:67</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#l00056">Exponential.cpp:56</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#l00017">Exponential.cpp:17</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#l00121">Exponential.cpp:121</a></div></div> -<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00008">Exponential.h:8</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="ttdef"><b>Definition:</b> <a href="_exponential_form_8h_source.html#l00007">ExponentialForm.h:7</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#l00016">Exponential.h:16</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#l00053">ControlElement.h:53</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="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> +<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_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="_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 --> </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>Exponential.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_exponential_8h.html">Exponential.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_form_8cpp_source.html b/docs/doxygen/html/_exponential_form_8cpp_source.html index 464dd0f..c506321 100644 --- a/docs/doxygen/html/_exponential_form_8cpp_source.html +++ b/docs/doxygen/html/_exponential_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,8 +88,10 @@ $(document).ready(function(){initNavTree('_exponential_form_8cpp_source.html','' <div class="title">ExponentialForm.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 "ExponentialForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "Exponential.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</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="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  SetSize(GetBestSize());</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>  wxString expSymbol = wxString::FromUTF8(<span class="stringliteral">"\xF0\x9D\x91\x92"</span>);</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  wxString superscriptCapitalB = wxString::FromUTF8(<span class="stringliteral">"\xE1\xB4\xAE"</span>);</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  wxString superscriptSmallX = wxString::FromUTF8(<span class="stringliteral">"\xCB\xA3"</span>);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  m_staticTextExp->SetLabel(<span class="stringliteral">"y = A"</span> + expSymbol + superscriptCapitalB + superscriptSmallX);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  font.SetPointSize(14);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_staticTextExp->SetFont(font);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  m_parent = parent;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  m_exponential = exponential;</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="keywordtype">double</span> a, b;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  m_exponential->GetValues(a, b);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_textCtrlAValue->SetValue(m_exponential->StringFromDouble(a));</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_textCtrlBValue->SetValue(m_exponential->StringFromDouble(b));</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>  SetInitialSize();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  Layout();</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> ExponentialForm::~ExponentialForm() {}</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keywordtype">void</span> ExponentialForm::OnOKButtonClick(wxCommandEvent& event)</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="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</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="keywordtype">bool</span> ExponentialForm::ValidateData()</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>  <span class="keywordflow">if</span>(!m_exponential->DoubleFromString(<span class="keyword">this</span>, m_textCtrlAValue->GetValue(), a,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"A value\"."</span>)))</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>  <span class="keywordflow">if</span>(!m_exponential->DoubleFromString(<span class="keyword">this</span>, m_textCtrlBValue->GetValue(), b,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"B value\"."</span>)))</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>  m_exponential->SetValues(a, b);</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="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="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00008">Exponential.h:8</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_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="_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 --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_exponential_form_8h.html b/docs/doxygen/html/_exponential_form_8h.html new file mode 100644 index 0000000..027fe13 --- /dev/null +++ b/docs/doxygen/html/_exponential_form_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/ExponentialForm.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('_exponential_form_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">ExponentialForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +</div> +<p><a href="_exponential_form_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_exponential_form.html">ExponentialForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the exponential control data. <a href="class_exponential_form.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="_exponential_form_8h.html">ExponentialForm.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/_exponential_form_8h_source.html b/docs/doxygen/html/_exponential_form_8h_source.html index a9c26c4..e042b3f 100644 --- a/docs/doxygen/html/_exponential_form_8h_source.html +++ b/docs/doxygen/html/_exponential_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,15 @@ $(document).ready(function(){initNavTree('_exponential_form_8h_source.html',''); <div class="title">ExponentialForm.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="preprocessor">#ifndef EXPONENTIALFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define EXPONENTIALFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="keyword">class </span><a class="code" href="class_exponential.html">Exponential</a>;</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="class_exponential_form.html"> 7</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="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</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="l00011"></a><span class="lineno"> 11</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_exponential_form.html">ExponentialForm</a>();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</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">protected</span>:</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</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>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <a class="code" href="class_exponential.html">Exponential</a>* m_exponential = NULL;</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">#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="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00008">Exponential.h:8</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="ttdef"><b>Definition:</b> <a href="_exponential_form_8h_source.html#l00007">ExponentialForm.h:7</a></div></div> +<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_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 --> <!-- 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>ExponentialForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_exponential_form_8h.html">ExponentialForm.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/_fault_8cpp_source.html b/docs/doxygen/html/_fault_8cpp_source.html index 3d7117c..82d6523 100644 --- a/docs/doxygen/html/_fault_8cpp_source.html +++ b/docs/doxygen/html/_fault_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,32 +88,32 @@ $(document).ready(function(){initNavTree('_fault_8cpp_source.html','');}); <div class="title">Fault.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 "<a class="code" href="_fault_8h.html">Fault.h</a>"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"><a class="line" href="class_fault.html#a77baeae2c3388de3f7bbeabf52c99bef"> 6</a></span> <a class="code" href="class_fault.html#a77baeae2c3388de3f7bbeabf52c99bef">Fault::Fault</a>() : <a class="code" href="class_electric_calculation.html">ElectricCalculation</a>() {}</div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="class_fault.html#a8fbe3ce9f7288c4f8261db2d9a89adbb"> 7</a></span> <a class="code" href="class_fault.html#a77baeae2c3388de3f7bbeabf52c99bef">Fault::Fault</a>(std::vector<Element*> elementList) { <a class="code" href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">GetElementsFromList</a>(elementList); }</div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_fault.html#a42019654142cd8187b314e43d70262eb"> 8</a></span> <a class="code" href="class_fault.html#a42019654142cd8187b314e43d70262eb">Fault::~Fault</a>() {}</div><div class="line"><a name="l00009"></a><span class="lineno"><a class="line" href="class_fault.html#a4120f861b073783b4fb82385171fbd0f"> 9</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_fault.html#a4120f861b073783b4fb82385171fbd0f">Fault::RunFaultCalculation</a>(<span class="keywordtype">double</span> systemPowerBase)</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>  m_systemPowerBase = systemPowerBase;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</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="l00013"></a><span class="lineno"> 13</span>  <span class="keywordflow">if</span>(numberOfBuses == 0) {</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  m_errorMsg = _(<span class="stringliteral">"There is no buses in the system."</span>);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</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="comment">// Get adimittance matrices.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  std::vector<std::vector<std::complex<double> > > yBusPos;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <a class="code" href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d">GetYBus</a>(yBusPos, systemPowerBase, POSITIVE_SEQ, <span class="keyword">true</span>);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  std::vector<std::vector<std::complex<double> > > yBusNeg;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <a class="code" href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d">GetYBus</a>(yBusNeg, systemPowerBase, NEGATIVE_SEQ, <span class="keyword">true</span>);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  std::vector<std::vector<std::complex<double> > > yBusZero;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <a class="code" href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d">GetYBus</a>(yBusZero, systemPowerBase, ZERO_SEQ, <span class="keyword">true</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="comment">// Calculate the impedance matrices.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c">InvertMatrix</a>(yBusPos, m_zBusPos)) {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_errorMsg = _(<span class="stringliteral">"Fail to invert the positive sequence admittance matrix."</span>);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">return</span> <span class="keyword">false</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="keywordflow">if</span>(!<a class="code" href="class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c">InvertMatrix</a>(yBusNeg, m_zBusNeg)) {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_errorMsg = _(<span class="stringliteral">"Fail to invert the negative sequence admittance matrix."</span>);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">return</span> <span class="keyword">false</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="keywordflow">if</span>(!<a class="code" href="class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c">InvertMatrix</a>(yBusZero, m_zBusZero)) {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_errorMsg = _(<span class="stringliteral">"Fail to invert the zero sequence admittance matrix."</span>);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  <span class="comment">// Pre-fault voltages (power flow solution).</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  std::vector<std::complex<double> > preFaultVoltages;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  preFaultVoltages.resize(m_busList.size());</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">// Get fault parameters.</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">int</span> fNumber = -1;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb">FaultData</a> fType = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb">FaultData</a> fLocation = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  std::complex<double> fImpedance = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</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="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  preFaultVoltages[data.number] = data.voltage;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span>(data.hasFault) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  fNumber = data.number;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  fType = data.faultType;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  fLocation = data.faultLocation;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  fImpedance = std::complex<double>(data.faultResistance, data.faultReactance);</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>  <span class="keywordflow">if</span>(fNumber == -1) {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  m_errorMsg = _(<span class="stringliteral">"There is no fault in the system."</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">return</span> <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> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Fault calculation.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  std::complex<double> fCurrentPos = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::complex<double> fCurrentNeg = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  std::complex<double> fCurrentZero = 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>  std::complex<double> preFaultVoltage = preFaultVoltages[fNumber];</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  std::complex<double> a = std::complex<double>(-0.5, 0.866025403784);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  std::complex<double> a2 = std::complex<double>(-0.5, -0.866025403784);</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="keywordflow">switch</span>(fType) {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a>: {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  fCurrentPos = preFaultVoltage / (m_zBusPos[fNumber][fNumber] + fImpedance);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512">FAULT_2LINE</a>: {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  fCurrentPos = preFaultVoltage / (m_zBusPos[fNumber][fNumber] + m_zBusNeg[fNumber][fNumber] + fImpedance);</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="keywordflow">switch</span>(fLocation) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</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="l00084"></a><span class="lineno"> 84</span>  fCurrentNeg = -a2 * fCurrentPos;</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> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245">FAULT_LINE_B</a>: {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  fCurrentNeg = -fCurrentPos;</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">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315">FAULT_LINE_C</a>: {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  fCurrentNeg = -a * fCurrentPos;</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">default</span>:</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">break</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="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#a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e">FAULT_2LINE_GROUND</a>: {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  std::complex<double> z1 = m_zBusPos[fNumber][fNumber];</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  std::complex<double> z2 = m_zBusNeg[fNumber][fNumber];</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  std::complex<double> z0 = m_zBusZero[fNumber][fNumber];</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  std::complex<double> zf_3 = std::complex<double>(3.0, 0.0) * fImpedance;</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>  fCurrentPos = (preFaultVoltage * (z2 + z0 + zf_3)) / (z1 * z2 + z2 * z0 + z2 * zf_3 + z1 * z0 + z1 * zf_3);</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">switch</span>(fLocation) {</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#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a>: {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  fCurrentNeg = -a2 * ((preFaultVoltage - z1 * fCurrentPos) / z2);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  fCurrentZero = -a * ((preFaultVoltage - z1 * fCurrentPos) / (z0 + zf_3));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</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="l00110"></a><span class="lineno"> 110</span>  fCurrentNeg = -((preFaultVoltage - z1 * fCurrentPos) / z2);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  fCurrentZero = -((preFaultVoltage - z1 * fCurrentPos) / (z0 + zf_3));</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> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315">FAULT_LINE_C</a>: {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  fCurrentNeg = -a * ((preFaultVoltage - z1 * fCurrentPos) / z2);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  fCurrentZero = -a2 * ((preFaultVoltage - z1 * fCurrentPos) / (z0 + zf_3));</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>  } <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#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d">FAULT_LINE_GROUND</a>: {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  fCurrentPos =</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  preFaultVoltage / (m_zBusPos[fNumber][fNumber] + m_zBusNeg[fNumber][fNumber] +</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  m_zBusZero[fNumber][fNumber] + std::complex<double>(3.0, 0.0) * fImpedance);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">switch</span>(fLocation) {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</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="l00127"></a><span class="lineno"> 127</span>  fCurrentNeg = fCurrentPos;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  fCurrentZero = fCurrentPos;</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#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245">FAULT_LINE_B</a>: {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  fCurrentNeg = a * fCurrentPos;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  fCurrentZero = a2 * fCurrentPos;</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>  <span class="keywordflow">case</span> <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>  fCurrentNeg = a2 * fCurrentPos;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  fCurrentZero = a * fCurrentPos;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">default</span>:</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>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">default</span>:</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>  }</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="comment">// Convert sequence currents to ABC. [Iabc] = [A]*[I012]</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  m_fCurrentA = fCurrentZero + fCurrentPos + fCurrentNeg;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_fCurrentB = fCurrentZero + a2 * fCurrentPos + a * fCurrentNeg;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  m_fCurrentC = fCurrentZero + a * fCurrentPos + a2 * fCurrentNeg;</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">// Pos-fault voltages calculation</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  m_posFaultVoltagePos.clear();</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  m_posFaultVoltageNeg.clear();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  m_posFaultVoltageZero.clear();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  m_posFaultVoltageA.clear();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_posFaultVoltageB.clear();</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_posFaultVoltageC.clear();</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">for</span>(<span class="keywordtype">int</span> i = 0; i < numberOfBuses; ++i) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  m_posFaultVoltagePos.push_back(preFaultVoltages[i] - m_zBusPos[i][fNumber] * fCurrentPos);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_posFaultVoltageNeg.push_back(-m_zBusNeg[i][fNumber] * fCurrentNeg);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  m_posFaultVoltageZero.push_back(-m_zBusZero[i][fNumber] * fCurrentZero);</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="comment">// V012 -> Vabc</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_posFaultVoltageA.push_back(m_posFaultVoltageZero[i] + m_posFaultVoltagePos[i] + m_posFaultVoltageNeg[i]);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  m_posFaultVoltageB.push_back(m_posFaultVoltageZero[i] + a2 * m_posFaultVoltagePos[i] +</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  a * m_posFaultVoltageNeg[i]);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_posFaultVoltageC.push_back(m_posFaultVoltageZero[i] + a * m_posFaultVoltagePos[i] +</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  a2 * m_posFaultVoltageNeg[i]);</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>  <a class="code" href="class_fault.html#af1bb91359dfe8df0251a2031957d3ddf">UpdateElementsFault</a>(systemPowerBase);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> <span class="keyword">true</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"><a class="line" href="class_fault.html#af1bb91359dfe8df0251a2031957d3ddf"> 176</a></span> <span class="keywordtype">void</span> <a class="code" href="class_fault.html#af1bb91359dfe8df0251a2031957d3ddf">Fault::UpdateElementsFault</a>(<span class="keywordtype">double</span> systemPowerBase)</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>  std::complex<double> a = std::complex<double>(-0.5, 0.866025403784);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  std::complex<double> a2 = std::complex<double>(-0.5, -0.866025403784);</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">for</span>(<span class="keyword">auto</span> it = m_busList.begin(), itEnd = m_busList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">if</span>(data.hasFault) {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  data.faultCurrent[0] = m_fCurrentA;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  data.faultCurrent[1] = m_fCurrentB;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  data.faultCurrent[2] = m_fCurrentC;</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>  data.faultCurrent[0] = data.faultCurrent[1] = data.faultCurrent[2] = std::complex<double>(0.0, 0.0);</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>  data.faultVoltage[0] = m_posFaultVoltageA[data.number];</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  data.faultVoltage[1] = m_posFaultVoltageB[data.number];</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  data.faultVoltage[2] = m_posFaultVoltageC[data.number];</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  bus->SetElectricalData(data);</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="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="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="class_line.html">Line</a>* line = *it;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</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="l00201"></a><span class="lineno"> 201</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="l00202"></a><span class="lineno"> 202</span>  <span class="keyword">auto</span> data = line->GetElectricalData();</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keyword">auto</span> puData = line->GetPUElectricalData(m_systemPowerBase);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  std::complex<double> vPos[2] = {m_posFaultVoltagePos[n1], m_posFaultVoltagePos[n2]};</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  std::complex<double> vNeg[2] = {m_posFaultVoltageNeg[n1], m_posFaultVoltageNeg[n2]};</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  std::complex<double> vZero[2] = {m_posFaultVoltageZero[n1], m_posFaultVoltageZero[n2]};</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  std::complex<double> zPos(puData.resistance, puData.indReactance);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  std::complex<double> bPos(0.0, puData.capSusceptance / 2.0);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  std::complex<double> zZero(puData.zeroResistance, puData.zeroIndReactance);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  std::complex<double> bZero(0.0, puData.zeroCapSusceptance / 2.0);</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>  std::complex<double> lineCurrentPos[2];</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  std::complex<double> lineCurrentNeg[2];</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  std::complex<double> lineCurrentZero[2];</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>  lineCurrentPos[0] = ((vPos[0] - vPos[1]) / zPos) + (vPos[0] * bPos);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  lineCurrentNeg[0] = ((vNeg[0] - vNeg[1]) / zPos) + (vNeg[0] * bPos);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  lineCurrentZero[0] = ((vZero[0] - vZero[1]) / zZero) + (vZero[0] * bZero);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  lineCurrentPos[1] = ((vPos[1] - vPos[0]) / zPos) + (vPos[1] * bPos);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  lineCurrentNeg[1] = ((vNeg[1] - vNeg[0]) / zPos) + (vNeg[1] * bPos);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  lineCurrentZero[1] = ((vZero[1] - vZero[0]) / zZero) + (vZero[1] * bZero);</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.faultCurrent[0][0] = lineCurrentZero[0] + lineCurrentPos[0] + lineCurrentNeg[0];</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  data.faultCurrent[0][1] = lineCurrentZero[0] + a2 * lineCurrentPos[0] + a * lineCurrentNeg[0];</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  data.faultCurrent[0][2] = lineCurrentZero[0] + a * lineCurrentPos[0] + a2 * lineCurrentNeg[0];</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  data.faultCurrent[1][0] = lineCurrentZero[1] + lineCurrentPos[1] + lineCurrentNeg[1];</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  data.faultCurrent[1][1] = lineCurrentZero[1] + a2 * lineCurrentPos[1] + a * lineCurrentNeg[1];</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  data.faultCurrent[1][2] = lineCurrentZero[1] + a * lineCurrentPos[1] + a2 * lineCurrentNeg[1];</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>  line->SetElectricalData(data);</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>  }</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">for</span>(<span class="keyword">auto</span> it = m_transformerList.begin(), itEnd = m_transformerList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = *it;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</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="l00238"></a><span class="lineno"> 238</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="l00239"></a><span class="lineno"> 239</span>  <span class="keyword">auto</span> data = transformer->GetElectricalData();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keyword">auto</span> puData = transformer->GetPUElectricalData(m_systemPowerBase);</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>  std::complex<double> vPos[2] = {m_posFaultVoltagePos[n1], m_posFaultVoltagePos[n2]};</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  std::complex<double> vNeg[2] = {m_posFaultVoltageNeg[n1], m_posFaultVoltageNeg[n2]};</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  std::complex<double> vZero[2] = {m_posFaultVoltageZero[n1], m_posFaultVoltageZero[n2]};</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  std::complex<double> zPos(puData.resistance, puData.indReactance);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  std::complex<double> zZero(puData.zeroResistance, puData.zeroIndReactance);</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>  std::complex<double> transformerCurrentPos[2];</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  std::complex<double> transformerCurrentNeg[2];</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  std::complex<double> transformerCurrentZero[2];</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="keywordflow">if</span>(data.turnsRatio == 1.0 && data.phaseShift == 0.0) {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  transformerCurrentPos[0] = (vPos[0] - vPos[1]) / zPos;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  transformerCurrentNeg[0] = (vNeg[0] - vNeg[1]) / zPos;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  transformerCurrentZero[0] = (vZero[0] - vZero[1]) / zZero;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  transformerCurrentPos[1] = (vPos[1] - vPos[0]) / zPos;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  transformerCurrentNeg[1] = (vNeg[1] - vNeg[0]) / zPos;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  transformerCurrentZero[1] = (vZero[1] - vZero[0]) / zZero;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordtype">double</span> radPhaseShift = wxDegToRad(data.phaseShift);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  std::complex<double> t = std::complex<double>(data.turnsRatio * std::cos(radPhaseShift),</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  -data.turnsRatio * std::sin(radPhaseShift));</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>  transformerCurrentPos[0] =</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  vPos[0] * (1.0 / (std::pow(std::abs(t), 2.0) * zPos)) - vPos[1] * (1.0 / (std::conj(t) * zPos));</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  transformerCurrentNeg[0] =</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  vNeg[0] * (1.0 / (std::pow(std::abs(t), 2.0) * zPos)) - vNeg[1] * (1.0 / (t * zPos));</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>  transformerCurrentPos[1] = -vPos[0] * (1.0 / (t * zPos)) + vPos[1] / zPos;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  transformerCurrentNeg[1] = -vNeg[0] * (1.0 / (std::conj(t) * zPos)) + vNeg[1] / zPos;</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>  <span class="keywordflow">switch</span>(data.connection) {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">case</span> GWYE_GWYE: {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  transformerCurrentZero[0] = (vZero[0] - vZero[1]) / zZero;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  transformerCurrentZero[1] = (vZero[1] - vZero[0]) / zZero;</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>  }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">case</span> GWYE_DELTA: {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  transformerCurrentZero[0] = vZero[0] / zZero;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  transformerCurrentZero[1] = std::complex<double>(0.0, 0.0);</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>  <span class="keywordflow">case</span> DELTA_GWYE: {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  transformerCurrentZero[0] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  transformerCurrentZero[1] = vZero[1] / zZero;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">break</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"> 289</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  transformerCurrentZero[0] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  transformerCurrentZero[1] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">break</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>  data.faultCurrent[0][0] = transformerCurrentZero[0] + transformerCurrentPos[0] + transformerCurrentNeg[0];</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  data.faultCurrent[0][1] =</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  transformerCurrentZero[0] + a2 * transformerCurrentPos[0] + a * transformerCurrentNeg[0];</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  data.faultCurrent[0][2] =</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  transformerCurrentZero[0] + a * transformerCurrentPos[0] + a2 * transformerCurrentNeg[0];</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  data.faultCurrent[1][0] = transformerCurrentZero[1] + transformerCurrentPos[1] + transformerCurrentNeg[1];</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  data.faultCurrent[1][1] =</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  transformerCurrentZero[1] + a2 * transformerCurrentPos[1] + a * transformerCurrentNeg[1];</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  data.faultCurrent[1][2] =</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  transformerCurrentZero[1] + a * transformerCurrentPos[1] + a2 * transformerCurrentNeg[1];</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>  transformer->SetElectricaData(data);</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> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</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="l00312"></a><span class="lineno"> 312</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</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>(syncGenerator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordtype">int</span> n = bus->GetElectricalData().number;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  std::complex<double> v = bus->GetElectricalData().voltage; <span class="comment">// Pre-fault voltage.</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keyword">auto</span> puData = syncGenerator->GetPUElectricalData(m_systemPowerBase);</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>  std::complex<double> vPos = m_posFaultVoltagePos[n];</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  std::complex<double> vNeg = m_posFaultVoltageNeg[n];</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  std::complex<double> vZero = m_posFaultVoltageZero[n];</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::complex<double> zPos(puData.positiveResistance, puData.positiveReactance);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  std::complex<double> zNeg(puData.negativeResistance, puData.negativeReactance);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  std::complex<double> zZero(puData.zeroResistance + 3.0 * puData.groundResistance,</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  puData.zeroReactance + 3.0 * puData.groundReactance);</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="comment">// Internal voltage</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  std::complex<double> i = std::complex<double>(puData.activePower, -puData.reactivePower) / std::conj(v);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  std::complex<double> e = v + zPos * i;</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>  std::complex<double> syncGeneratorCurrentPos = (e - vPos) / zPos;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  std::complex<double> syncGeneratorCurrentNeg = (-vNeg) / zNeg;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  std::complex<double> syncGeneratorCurrentZero(0.0, 0.0);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span>(data.groundNeutral) syncGeneratorCurrentZero = (-vZero) / zZero;</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>  data.faultCurrent[0] = syncGeneratorCurrentZero + syncGeneratorCurrentPos + syncGeneratorCurrentNeg;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  data.faultCurrent[1] =</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  syncGeneratorCurrentZero + a2 * syncGeneratorCurrentPos + a * syncGeneratorCurrentNeg;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  data.faultCurrent[2] =</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  syncGeneratorCurrentZero + a * syncGeneratorCurrentPos + a2 * syncGeneratorCurrentNeg;</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>  syncGenerator->SetElectricalData(data);</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>  }</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="keyword">auto</span> it = m_syncMotorList.begin(), itEnd = m_syncMotorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = *it;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">if</span>(syncMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</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>(syncMotor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordtype">int</span> n = bus->GetElectricalData().number;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  std::complex<double> v = bus->GetElectricalData().voltage; <span class="comment">// Pre-fault voltage.</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keyword">auto</span> data = syncMotor->GetElectricalData();</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keyword">auto</span> puData = syncMotor->GetPUElectricalData(m_systemPowerBase);</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>  std::complex<double> vPos = m_posFaultVoltagePos[n];</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  std::complex<double> vNeg = m_posFaultVoltageNeg[n];</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  std::complex<double> vZero = m_posFaultVoltageZero[n];</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>  std::complex<double> zPos(puData.positiveResistance, puData.positiveReactance);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  std::complex<double> zNeg(puData.negativeResistance, puData.negativeReactance);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  std::complex<double> zZero(puData.zeroResistance + 3.0 * puData.groundResistance,</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  puData.zeroReactance + 3.0 * puData.groundReactance);</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>  std::complex<double> syncGeneratorCurrentPos = (v - vPos) / zPos;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  std::complex<double> syncGeneratorCurrentNeg = (-vNeg) / zNeg;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  std::complex<double> syncGeneratorCurrentZero(0.0, 0.0);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">if</span>(data.groundNeutral) syncGeneratorCurrentZero = (-vZero) / zZero;</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>  data.faultCurrent[0] = syncGeneratorCurrentZero + syncGeneratorCurrentPos + syncGeneratorCurrentNeg;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  data.faultCurrent[1] =</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  syncGeneratorCurrentZero + a2 * syncGeneratorCurrentPos + a * syncGeneratorCurrentNeg;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  data.faultCurrent[2] =</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  syncGeneratorCurrentZero + a * syncGeneratorCurrentPos + a2 * syncGeneratorCurrentNeg;</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>  syncMotor->SetElectricalData(data);</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>  }</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"><a class="line" href="class_fault.html#ac7942a558f3ecdb8c06ddb49567c487a"> 382</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_fault.html#ac7942a558f3ecdb8c06ddb49567c487a">Fault::RunSCPowerCalcutation</a>(<span class="keywordtype">double</span> systemPowerBase)</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">// Get adimittance matrix.</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  std::vector<std::vector<std::complex<double> > > yBusPos;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <a class="code" href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d">GetYBus</a>(yBusPos, systemPowerBase, POSITIVE_SEQ, <span class="keyword">true</span>);</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="comment">// Calculate the impedance matrix.</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c">InvertMatrix</a>(yBusPos, m_zBusPos)) {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  m_errorMsg = _(<span class="stringliteral">"Fail to invert the positive sequence admittance matrix."</span>);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  <span class="comment">// Set the SC power.</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</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="l00396"></a><span class="lineno"> 396</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordtype">int</span> n = data.number;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  data.scPower = 1.0 / std::abs(m_zBusPos[n][n]);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  bus->SetElectricalData(data);</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">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</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#l00045">PowerElement.h:45</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#l00042">PowerElement.h:42</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#l00517">Element.h:517</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#l00038">PowerElement.h:38</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#l00110">SyncGenerator.h:110</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#l00007">Bus.h:7</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#l00045">Bus.h:45</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#l00219">Element.h:219</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#l00009">Fault.cpp:9</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#l00043">PowerElement.h:43</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#l00006">Fault.cpp:6</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#l00040">PowerElement.h:40</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#l00039">PowerElement.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="_fault_8h.html">Fault.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_fault.html#a77baeae2c3388de3f7bbeabf52c99bef"> 23</a></span> <a class="code" href="class_fault.html#a77baeae2c3388de3f7bbeabf52c99bef">Fault::Fault</a>() : <a class="code" href="class_electric_calculation.html">ElectricCalculation</a>() {}</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="class_fault.html#a8fbe3ce9f7288c4f8261db2d9a89adbb"> 24</a></span> <a class="code" href="class_fault.html#a77baeae2c3388de3f7bbeabf52c99bef">Fault::Fault</a>(std::vector<Element*> elementList) { <a class="code" href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">GetElementsFromList</a>(elementList); }</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="class_fault.html#a42019654142cd8187b314e43d70262eb"> 25</a></span> <a class="code" href="class_fault.html#a42019654142cd8187b314e43d70262eb">Fault::~Fault</a>() {}</div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="class_fault.html#a4120f861b073783b4fb82385171fbd0f"> 26</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_fault.html#a4120f861b073783b4fb82385171fbd0f">Fault::RunFaultCalculation</a>(<span class="keywordtype">double</span> systemPowerBase)</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_systemPowerBase = systemPowerBase;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</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="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">if</span>(numberOfBuses == 0) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_errorMsg = _(<span class="stringliteral">"There is no buses in 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">// Get adimittance matrices.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  std::vector<std::vector<std::complex<double> > > yBusPos;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d">GetYBus</a>(yBusPos, systemPowerBase, POSITIVE_SEQ, <span class="keyword">true</span>);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  std::vector<std::vector<std::complex<double> > > yBusNeg;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d">GetYBus</a>(yBusNeg, systemPowerBase, NEGATIVE_SEQ, <span class="keyword">true</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  std::vector<std::vector<std::complex<double> > > yBusZero;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d">GetYBus</a>(yBusZero, systemPowerBase, ZERO_SEQ, <span class="keyword">true</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">// Calculate the impedance matrices.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c">InvertMatrix</a>(yBusPos, m_zBusPos)) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  m_errorMsg = _(<span class="stringliteral">"Fail to invert the positive sequence admittance matrix."</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <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>(!<a class="code" href="class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c">InvertMatrix</a>(yBusNeg, m_zBusNeg)) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_errorMsg = _(<span class="stringliteral">"Fail to invert the negative sequence admittance matrix."</span>);</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>  <span class="keywordflow">if</span>(!<a class="code" href="class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c">InvertMatrix</a>(yBusZero, m_zBusZero)) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_errorMsg = _(<span class="stringliteral">"Fail to invert the zero sequence admittance matrix."</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> <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> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// Pre-fault voltages (power flow solution).</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  std::vector<std::complex<double> > preFaultVoltages;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  preFaultVoltages.resize(m_busList.size());</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">// Get fault parameters.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">int</span> fNumber = -1;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb">FaultData</a> fType = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb">FaultData</a> fLocation = <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>  std::complex<double> fImpedance = std::complex<double>(0.0, 0.0);</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_busList.begin(), itEnd = m_busList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  preFaultVoltages[data.number] = data.voltage;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span>(data.hasFault) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  fNumber = data.number;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  fType = data.faultType;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  fLocation = data.faultLocation;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  fImpedance = std::complex<double>(data.faultResistance, data.faultReactance);</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> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>(fNumber == -1) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_errorMsg = _(<span class="stringliteral">"There is no fault in the system."</span>);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">return</span> <span class="keyword">false</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="comment">// Fault calculation.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  std::complex<double> fCurrentPos = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  std::complex<double> fCurrentNeg = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  std::complex<double> fCurrentZero = 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>  std::complex<double> preFaultVoltage = preFaultVoltages[fNumber];</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  std::complex<double> a = std::complex<double>(-0.5, 0.866025403784);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  std::complex<double> a2 = std::complex<double>(-0.5, -0.866025403784);</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="keywordflow">switch</span>(fType) {</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#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a>: {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  fCurrentPos = preFaultVoltage / (m_zBusPos[fNumber][fNumber] + fImpedance);</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#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512">FAULT_2LINE</a>: {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  fCurrentPos = preFaultVoltage / (m_zBusPos[fNumber][fNumber] + m_zBusNeg[fNumber][fNumber] + fImpedance);</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">switch</span>(fLocation) {</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#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a>: {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  fCurrentNeg = -a2 * fCurrentPos;</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#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245">FAULT_LINE_B</a>: {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  fCurrentNeg = -fCurrentPos;</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">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315">FAULT_LINE_C</a>: {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  fCurrentNeg = -a * fCurrentPos;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">default</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>  }</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> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e">FAULT_2LINE_GROUND</a>: {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  std::complex<double> z1 = m_zBusPos[fNumber][fNumber];</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  std::complex<double> z2 = m_zBusNeg[fNumber][fNumber];</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  std::complex<double> z0 = m_zBusZero[fNumber][fNumber];</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  std::complex<double> zf_3 = std::complex<double>(3.0, 0.0) * fImpedance;</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>  fCurrentPos = (preFaultVoltage * (z2 + z0 + zf_3)) / (z1 * z2 + z2 * z0 + z2 * zf_3 + z1 * z0 + z1 * zf_3);</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="keywordflow">switch</span>(fLocation) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</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="l00123"></a><span class="lineno"> 123</span>  fCurrentNeg = -a2 * ((preFaultVoltage - z1 * fCurrentPos) / z2);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  fCurrentZero = -a * ((preFaultVoltage - z1 * fCurrentPos) / (z0 + zf_3));</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</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="l00127"></a><span class="lineno"> 127</span>  fCurrentNeg = -((preFaultVoltage - z1 * fCurrentPos) / z2);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  fCurrentZero = -((preFaultVoltage - z1 * fCurrentPos) / (z0 + zf_3));</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#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315">FAULT_LINE_C</a>: {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  fCurrentNeg = -a * ((preFaultVoltage - z1 * fCurrentPos) / z2);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  fCurrentZero = -a2 * ((preFaultVoltage - z1 * fCurrentPos) / (z0 + zf_3));</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>  <span class="keywordflow">default</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>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</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="l00139"></a><span class="lineno"> 139</span>  fCurrentPos =</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  preFaultVoltage / (m_zBusPos[fNumber][fNumber] + m_zBusNeg[fNumber][fNumber] +</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_zBusZero[fNumber][fNumber] + std::complex<double>(3.0, 0.0) * fImpedance);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">switch</span>(fLocation) {</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#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a>: {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  fCurrentNeg = fCurrentPos;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  fCurrentZero = fCurrentPos;</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> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245">FAULT_LINE_B</a>: {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  fCurrentNeg = a * fCurrentPos;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  fCurrentZero = a2 * fCurrentPos;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</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="l00152"></a><span class="lineno"> 152</span>  fCurrentNeg = a2 * fCurrentPos;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  fCurrentZero = a * fCurrentPos;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">break</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="keywordflow">break</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">default</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>  }</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">// Convert sequence currents to ABC. [Iabc] = [A]*[I012]</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  m_fCurrentA = fCurrentZero + fCurrentPos + fCurrentNeg;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_fCurrentB = fCurrentZero + a2 * fCurrentPos + a * fCurrentNeg;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  m_fCurrentC = fCurrentZero + a * fCurrentPos + a2 * fCurrentNeg;</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">// Pos-fault voltages calculation</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  m_posFaultVoltagePos.clear();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  m_posFaultVoltageNeg.clear();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  m_posFaultVoltageZero.clear();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  m_posFaultVoltageA.clear();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_posFaultVoltageB.clear();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  m_posFaultVoltageC.clear();</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">for</span>(<span class="keywordtype">int</span> i = 0; i < numberOfBuses; ++i) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_posFaultVoltagePos.push_back(preFaultVoltages[i] - m_zBusPos[i][fNumber] * fCurrentPos);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  m_posFaultVoltageNeg.push_back(-m_zBusNeg[i][fNumber] * fCurrentNeg);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  m_posFaultVoltageZero.push_back(-m_zBusZero[i][fNumber] * fCurrentZero);</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">// V012 -> Vabc</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  m_posFaultVoltageA.push_back(m_posFaultVoltageZero[i] + m_posFaultVoltagePos[i] + m_posFaultVoltageNeg[i]);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  m_posFaultVoltageB.push_back(m_posFaultVoltageZero[i] + a2 * m_posFaultVoltagePos[i] +</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  a * m_posFaultVoltageNeg[i]);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  m_posFaultVoltageC.push_back(m_posFaultVoltageZero[i] + a * m_posFaultVoltagePos[i] +</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  a2 * m_posFaultVoltageNeg[i]);</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>  <a class="code" href="class_fault.html#af1bb91359dfe8df0251a2031957d3ddf">UpdateElementsFault</a>(systemPowerBase);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">return</span> <span class="keyword">true</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"><a class="line" href="class_fault.html#af1bb91359dfe8df0251a2031957d3ddf"> 193</a></span> <span class="keywordtype">void</span> <a class="code" href="class_fault.html#af1bb91359dfe8df0251a2031957d3ddf">Fault::UpdateElementsFault</a>(<span class="keywordtype">double</span> systemPowerBase)</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>  std::complex<double> a = std::complex<double>(-0.5, 0.866025403784);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  std::complex<double> a2 = std::complex<double>(-0.5, -0.866025403784);</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="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="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span>(data.hasFault) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  data.faultCurrent[0] = m_fCurrentA;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  data.faultCurrent[1] = m_fCurrentB;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  data.faultCurrent[2] = m_fCurrentC;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  data.faultCurrent[0] = data.faultCurrent[1] = data.faultCurrent[2] = std::complex<double>(0.0, 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>  data.faultVoltage[0] = m_posFaultVoltageA[data.number];</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  data.faultVoltage[1] = m_posFaultVoltageB[data.number];</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  data.faultVoltage[2] = m_posFaultVoltageC[data.number];</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  bus->SetElectricalData(data);</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="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="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="class_line.html">Line</a>* line = *it;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</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="l00218"></a><span class="lineno"> 218</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="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">auto</span> data = line->GetElectricalData();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">auto</span> puData = line->GetPUElectricalData(m_systemPowerBase);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  std::complex<double> vPos[2] = {m_posFaultVoltagePos[n1], m_posFaultVoltagePos[n2]};</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  std::complex<double> vNeg[2] = {m_posFaultVoltageNeg[n1], m_posFaultVoltageNeg[n2]};</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  std::complex<double> vZero[2] = {m_posFaultVoltageZero[n1], m_posFaultVoltageZero[n2]};</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  std::complex<double> zPos(puData.resistance, puData.indReactance);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  std::complex<double> bPos(0.0, puData.capSusceptance / 2.0);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  std::complex<double> zZero(puData.zeroResistance, puData.zeroIndReactance);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  std::complex<double> bZero(0.0, puData.zeroCapSusceptance / 2.0);</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>  std::complex<double> lineCurrentPos[2];</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  std::complex<double> lineCurrentNeg[2];</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  std::complex<double> lineCurrentZero[2];</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>  lineCurrentPos[0] = ((vPos[0] - vPos[1]) / zPos) + (vPos[0] * bPos);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  lineCurrentNeg[0] = ((vNeg[0] - vNeg[1]) / zPos) + (vNeg[0] * bPos);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  lineCurrentZero[0] = ((vZero[0] - vZero[1]) / zZero) + (vZero[0] * bZero);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  lineCurrentPos[1] = ((vPos[1] - vPos[0]) / zPos) + (vPos[1] * bPos);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  lineCurrentNeg[1] = ((vNeg[1] - vNeg[0]) / zPos) + (vNeg[1] * bPos);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  lineCurrentZero[1] = ((vZero[1] - vZero[0]) / zZero) + (vZero[1] * bZero);</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>  data.faultCurrent[0][0] = lineCurrentZero[0] + lineCurrentPos[0] + lineCurrentNeg[0];</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  data.faultCurrent[0][1] = lineCurrentZero[0] + a2 * lineCurrentPos[0] + a * lineCurrentNeg[0];</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  data.faultCurrent[0][2] = lineCurrentZero[0] + a * lineCurrentPos[0] + a2 * lineCurrentNeg[0];</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  data.faultCurrent[1][0] = lineCurrentZero[1] + lineCurrentPos[1] + lineCurrentNeg[1];</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  data.faultCurrent[1][1] = lineCurrentZero[1] + a2 * lineCurrentPos[1] + a * lineCurrentNeg[1];</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  data.faultCurrent[1][2] = lineCurrentZero[1] + a * lineCurrentPos[1] + a2 * lineCurrentNeg[1];</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>  line->SetElectricalData(data);</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> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</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="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = *it;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</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="l00255"></a><span class="lineno"> 255</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="l00256"></a><span class="lineno"> 256</span>  <span class="keyword">auto</span> data = transformer->GetElectricalData();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keyword">auto</span> puData = transformer->GetPUElectricalData(m_systemPowerBase);</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>  std::complex<double> vPos[2] = {m_posFaultVoltagePos[n1], m_posFaultVoltagePos[n2]};</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  std::complex<double> vNeg[2] = {m_posFaultVoltageNeg[n1], m_posFaultVoltageNeg[n2]};</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  std::complex<double> vZero[2] = {m_posFaultVoltageZero[n1], m_posFaultVoltageZero[n2]};</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  std::complex<double> zPos(puData.resistance, puData.indReactance);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  std::complex<double> zZero(puData.zeroResistance, puData.zeroIndReactance);</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>  std::complex<double> transformerCurrentPos[2];</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  std::complex<double> transformerCurrentNeg[2];</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  std::complex<double> transformerCurrentZero[2];</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>  <span class="keywordflow">if</span>(data.turnsRatio == 1.0 && data.phaseShift == 0.0) {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  transformerCurrentPos[0] = (vPos[0] - vPos[1]) / zPos;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  transformerCurrentNeg[0] = (vNeg[0] - vNeg[1]) / zPos;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  transformerCurrentZero[0] = (vZero[0] - vZero[1]) / zZero;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  transformerCurrentPos[1] = (vPos[1] - vPos[0]) / zPos;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  transformerCurrentNeg[1] = (vNeg[1] - vNeg[0]) / zPos;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  transformerCurrentZero[1] = (vZero[1] - vZero[0]) / zZero;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordtype">double</span> radPhaseShift = wxDegToRad(data.phaseShift);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  std::complex<double> t = std::complex<double>(data.turnsRatio * std::cos(radPhaseShift),</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  -data.turnsRatio * std::sin(radPhaseShift));</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>  transformerCurrentPos[0] =</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  vPos[0] * (1.0 / (std::pow(std::abs(t), 2.0) * zPos)) - vPos[1] * (1.0 / (std::conj(t) * zPos));</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  transformerCurrentNeg[0] =</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  vNeg[0] * (1.0 / (std::pow(std::abs(t), 2.0) * zPos)) - vNeg[1] * (1.0 / (t * zPos));</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>  transformerCurrentPos[1] = -vPos[0] * (1.0 / (t * zPos)) + vPos[1] / zPos;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  transformerCurrentNeg[1] = -vNeg[0] * (1.0 / (std::conj(t) * zPos)) + vNeg[1] / zPos;</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> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">switch</span>(data.connection) {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">case</span> GWYE_GWYE: {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  transformerCurrentZero[0] = (vZero[0] - vZero[1]) / zZero;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  transformerCurrentZero[1] = (vZero[1] - vZero[0]) / zZero;</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>  }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">case</span> GWYE_DELTA: {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  transformerCurrentZero[0] = vZero[0] / zZero;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  transformerCurrentZero[1] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">break</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">case</span> DELTA_GWYE: {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  transformerCurrentZero[0] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  transformerCurrentZero[1] = vZero[1] / zZero;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">break</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"> 306</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  transformerCurrentZero[0] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  transformerCurrentZero[1] = std::complex<double>(0.0, 0.0);</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>  }</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>  data.faultCurrent[0][0] = transformerCurrentZero[0] + transformerCurrentPos[0] + transformerCurrentNeg[0];</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  data.faultCurrent[0][1] =</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  transformerCurrentZero[0] + a2 * transformerCurrentPos[0] + a * transformerCurrentNeg[0];</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  data.faultCurrent[0][2] =</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  transformerCurrentZero[0] + a * transformerCurrentPos[0] + a2 * transformerCurrentNeg[0];</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  data.faultCurrent[1][0] = transformerCurrentZero[1] + transformerCurrentPos[1] + transformerCurrentNeg[1];</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  data.faultCurrent[1][1] =</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  transformerCurrentZero[1] + a2 * transformerCurrentPos[1] + a * transformerCurrentNeg[1];</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  data.faultCurrent[1][2] =</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  transformerCurrentZero[1] + a * transformerCurrentPos[1] + a2 * transformerCurrentNeg[1];</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>  transformer->SetElectricaData(data);</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> </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</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="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</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>(syncGenerator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordtype">int</span> n = bus->GetElectricalData().number;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  std::complex<double> v = bus->GetElectricalData().voltage; <span class="comment">// Pre-fault voltage.</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keyword">auto</span> puData = syncGenerator->GetPUElectricalData(m_systemPowerBase);</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>  std::complex<double> vPos = m_posFaultVoltagePos[n];</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  std::complex<double> vNeg = m_posFaultVoltageNeg[n];</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  std::complex<double> vZero = m_posFaultVoltageZero[n];</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>  std::complex<double> zPos(puData.positiveResistance, puData.positiveReactance);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  std::complex<double> zNeg(puData.negativeResistance, puData.negativeReactance);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  std::complex<double> zZero(puData.zeroResistance + 3.0 * puData.groundResistance,</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  puData.zeroReactance + 3.0 * puData.groundReactance);</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="comment">// Internal voltage</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  std::complex<double> i = std::complex<double>(puData.activePower, -puData.reactivePower) / std::conj(v);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  std::complex<double> e = v + zPos * i;</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>  std::complex<double> syncGeneratorCurrentPos = (e - vPos) / zPos;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  std::complex<double> syncGeneratorCurrentNeg = (-vNeg) / zNeg;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  std::complex<double> syncGeneratorCurrentZero(0.0, 0.0);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">if</span>(data.groundNeutral) syncGeneratorCurrentZero = (-vZero) / zZero;</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>  data.faultCurrent[0] = syncGeneratorCurrentZero + syncGeneratorCurrentPos + syncGeneratorCurrentNeg;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  data.faultCurrent[1] =</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  syncGeneratorCurrentZero + a2 * syncGeneratorCurrentPos + a * syncGeneratorCurrentNeg;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  data.faultCurrent[2] =</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  syncGeneratorCurrentZero + a * syncGeneratorCurrentPos + a2 * syncGeneratorCurrentNeg;</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>  syncGenerator->SetElectricalData(data);</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> </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</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="l00366"></a><span class="lineno"> 366</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = *it;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">if</span>(syncMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</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>(syncMotor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordtype">int</span> n = bus->GetElectricalData().number;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  std::complex<double> v = bus->GetElectricalData().voltage; <span class="comment">// Pre-fault voltage.</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keyword">auto</span> data = syncMotor->GetElectricalData();</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keyword">auto</span> puData = syncMotor->GetPUElectricalData(m_systemPowerBase);</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>  std::complex<double> vPos = m_posFaultVoltagePos[n];</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  std::complex<double> vNeg = m_posFaultVoltageNeg[n];</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  std::complex<double> vZero = m_posFaultVoltageZero[n];</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>  std::complex<double> zPos(puData.positiveResistance, puData.positiveReactance);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  std::complex<double> zNeg(puData.negativeResistance, puData.negativeReactance);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  std::complex<double> zZero(puData.zeroResistance + 3.0 * puData.groundResistance,</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  puData.zeroReactance + 3.0 * puData.groundReactance);</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>  std::complex<double> syncGeneratorCurrentPos = (v - vPos) / zPos;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  std::complex<double> syncGeneratorCurrentNeg = (-vNeg) / zNeg;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  std::complex<double> syncGeneratorCurrentZero(0.0, 0.0);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">if</span>(data.groundNeutral) syncGeneratorCurrentZero = (-vZero) / zZero;</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>  data.faultCurrent[0] = syncGeneratorCurrentZero + syncGeneratorCurrentPos + syncGeneratorCurrentNeg;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  data.faultCurrent[1] =</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  syncGeneratorCurrentZero + a2 * syncGeneratorCurrentPos + a * syncGeneratorCurrentNeg;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  data.faultCurrent[2] =</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  syncGeneratorCurrentZero + a * syncGeneratorCurrentPos + a2 * syncGeneratorCurrentNeg;</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>  syncMotor->SetElectricalData(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> </div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="class_fault.html#ac7942a558f3ecdb8c06ddb49567c487a"> 399</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_fault.html#ac7942a558f3ecdb8c06ddb49567c487a">Fault::RunSCPowerCalcutation</a>(<span class="keywordtype">double</span> systemPowerBase)</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="comment">// Get adimittance matrix.</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  std::vector<std::vector<std::complex<double> > > yBusPos;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <a class="code" href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d">GetYBus</a>(yBusPos, systemPowerBase, POSITIVE_SEQ, <span class="keyword">true</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>  <span class="comment">// Calculate the impedance matrix.</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c">InvertMatrix</a>(yBusPos, m_zBusPos)) {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  m_errorMsg = _(<span class="stringliteral">"Fail to invert the positive sequence admittance matrix."</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> </div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="comment">// Set the SC power.</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</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="l00413"></a><span class="lineno"> 413</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordtype">int</span> n = data.number;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  data.scPower = 1.0 / std::abs(m_zBusPos[n][n]);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  bus->SetElectricalData(data);</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>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</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="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="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_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="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#l00572">ElectricCalculation.cpp:572</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#l00035">Line.h:35</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#l00056">ElectricCalculation.cpp:56</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#l00110">SyncMotor.h:110</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#l00041">PowerElement.h:41</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#l00382">Fault.cpp:382</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#l00008">Fault.cpp:8</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#l00044">PowerElement.h:44</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#l00008">ElectricCalculation.cpp:8</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#l00049">ElectricCalculation.h:49</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#l00176">Fault.cpp:176</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#l00054">Transformer.h:54</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_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="_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_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><!-- 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 311d0d7..ecd4a49 100644 --- a/docs/doxygen/html/_fault_8h.html +++ b/docs/doxygen/html/_fault_8h.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_fault_8h_source.html b/docs/doxygen/html/_fault_8h_source.html index ffbcce0..2b601bc 100644 --- a/docs/doxygen/html/_fault_8h_source.html +++ b/docs/doxygen/html/_fault_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,15 @@ $(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="preprocessor">#ifndef FAULT_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define FAULT_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00013"></a><span class="lineno"><a class="line" href="class_fault.html"> 13</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="l00014"></a><span class="lineno"> 14</span> {</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <a class="code" href="class_fault.html#a77baeae2c3388de3f7bbeabf52c99bef">Fault</a>(std::vector<Element*> elementList);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <a class="code" href="class_fault.html#a77baeae2c3388de3f7bbeabf52c99bef">Fault</a>();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="class_fault.html#a42019654142cd8187b314e43d70262eb">~Fault</a>();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </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_fault.html#a4120f861b073783b4fb82385171fbd0f">RunFaultCalculation</a>(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </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_fault.html#ac7942a558f3ecdb8c06ddb49567c487a">RunSCPowerCalcutation</a>(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</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_fault.html#af1bb91359dfe8df0251a2031957d3ddf">UpdateElementsFault</a>(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="class_fault.html#a3c2f14cd1da46cb88109fdb172d959b0"> 54</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="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>  wxString m_errorMsg = <span class="stringliteral">""</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">double</span> m_systemPowerBase;</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>  std::vector<std::vector<std::complex<double> > > m_zBusPos;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  std::vector<std::vector<std::complex<double> > > m_zBusNeg;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  std::vector<std::vector<std::complex<double> > > m_zBusZero;</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<std::complex<double> > m_posFaultVoltagePos;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  std::vector<std::complex<double> > m_posFaultVoltageNeg;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  std::vector<std::complex<double> > m_posFaultVoltageZero;</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::complex<double> m_fCurrentA;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  std::complex<double> m_fCurrentB;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  std::complex<double> m_fCurrentC;</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<std::complex<double> > m_posFaultVoltageA;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  std::vector<std::complex<double> > m_posFaultVoltageB;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::vector<std::complex<double> > m_posFaultVoltageC;</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="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> -<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#l00054">Fault.h:54</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#l00009">Fault.cpp:9</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#l00006">Fault.cpp:6</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#l00013">Fault.h:13</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#l00382">Fault.cpp:382</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#l00008">Fault.cpp:8</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#l00049">ElectricCalculation.h:49</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#l00176">Fault.cpp:176</a></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 class="ttdoc">Base class of electric calculations, with general methods. </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_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_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 --> <!-- start footer part --> diff --git a/docs/doxygen/html/_file_handing_8cpp_source.html b/docs/doxygen/html/_file_handing_8cpp_source.html index 14f2099..983eb4f 100644 --- a/docs/doxygen/html/_file_handing_8cpp_source.html +++ b/docs/doxygen/html/_file_handing_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,101 +88,102 @@ $(document).ready(function(){initNavTree('_file_handing_8cpp_source.html','');}) <div class="title">FileHanding.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 "FileHanding.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> FileHanding::~FileHanding() {}</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> FileHanding::FileHanding(<a class="code" href="class_workspace.html">Workspace</a>* workspace) { m_workspace = workspace; }</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> FileHanding::FileHanding(<a class="code" href="class_control_editor.html">ControlEditor</a>* controlEditor) { m_controlEditor = controlEditor; }</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> FileHanding::FileHanding() {}</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="keywordtype">void</span> FileHanding::SaveProject(wxFileName path)</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="comment">// Erase the file (if exists or not) and write the initial data</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  std::ofstream writeProjectsFile(path.GetFullPath());</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  writeProjectsFile.close();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  rapidxml::xml_document<> doc;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  rapidxml::file<> xmlFile(path.GetFullPath().mb_str());</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  doc.parse<0>(xmlFile.data());</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  rapidxml::xml_node<>* decl = doc.allocate_node(rapidxml::node_declaration);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</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="l00019"></a><span class="lineno"> 19</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="l00020"></a><span class="lineno"> 20</span>  decl->append_attribute(ver);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  decl->append_attribute(encoding);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  doc.append_node(decl);</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>  rapidxml::xml_node<>* rootNode = doc.allocate_node(rapidxml::node_element, <span class="stringliteral">"Project"</span>);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  doc.append_node(rootNode);</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>  rapidxml::xml_node<>* projectNameNode = AppendNode(doc, rootNode, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  SetNodeValue(doc, projectNameNode, path.GetName());</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">auto</span> elementsNode = AppendNode(doc, rootNode, <span class="stringliteral">"Elements"</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="comment">// Save all the data</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="class_electric_calculation.html">ElectricCalculation</a> allElements;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  allElements.<a class="code" href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">GetElementsFromList</a>(m_workspace->GetElementList());</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="comment">//{ Buses</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">auto</span> busesNode = AppendNode(doc, elementsNode, <span class="stringliteral">"BusList"</span>);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</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="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)busList.size(); i++) {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="class_bus.html">Bus</a>* bus = busList[i];</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">auto</span> busNode = AppendNode(doc, busesNode, <span class="stringliteral">"Bus"</span>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  SetNodeAttribute(doc, busNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, busNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  SetNodeValue(doc, posX, bus-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  SetNodeValue(doc, posY, bus-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  SetNodeValue(doc, width, bus-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  SetNodeValue(doc, height, bus-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  SetNodeValue(doc, angle, bus-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</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>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, busNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">auto</span> nominalVoltage = AppendNode(doc, electricalProp, <span class="stringliteral">"NominalVoltage"</span>);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  SetNodeValue(doc, nominalVoltage, data.nominalVoltage);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  SetNodeAttribute(doc, nominalVoltage, <span class="stringliteral">"UnitID"</span>, data.nominalVoltageUnit);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">auto</span> isVoltageControlled = AppendNode(doc, electricalProp, <span class="stringliteral">"IsVoltageControlled"</span>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  SetNodeValue(doc, isVoltageControlled, data.isVoltageControlled);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">auto</span> controlledVoltage = AppendNode(doc, electricalProp, <span class="stringliteral">"ControlledVoltage"</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  SetNodeValue(doc, controlledVoltage, data.controlledVoltage);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  SetNodeAttribute(doc, controlledVoltage, <span class="stringliteral">"Choice"</span>, data.controlledVoltageUnitChoice);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">auto</span> slackBus = AppendNode(doc, electricalProp, <span class="stringliteral">"SlackBus"</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  SetNodeValue(doc, slackBus, data.slackBus);</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">auto</span> fault = AppendNode(doc, electricalProp, <span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">auto</span> hasFault = AppendNode(doc, fault, <span class="stringliteral">"HasFault"</span>);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  SetNodeValue(doc, hasFault, data.hasFault);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">auto</span> faultType = AppendNode(doc, fault, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  SetNodeValue(doc, faultType, data.faultType);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">auto</span> faultLocation = AppendNode(doc, fault, <span class="stringliteral">"Location"</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  SetNodeValue(doc, faultLocation, data.faultLocation);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">auto</span> faultResistance = AppendNode(doc, fault, <span class="stringliteral">"Resistance"</span>);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  SetNodeValue(doc, faultResistance, data.faultResistance);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">auto</span> faultReactance = AppendNode(doc, fault, <span class="stringliteral">"Reactance"</span>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  SetNodeValue(doc, faultReactance, data.faultReactance);</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="keyword">auto</span> stability = AppendNode(doc, electricalProp, <span class="stringliteral">"Stability"</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">auto</span> plotBus = AppendNode(doc, stability, <span class="stringliteral">"Plot"</span>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  SetNodeValue(doc, plotBus, data.plotBus);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">auto</span> stabHasFault = AppendNode(doc, stability, <span class="stringliteral">"HasFault"</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  SetNodeValue(doc, stabHasFault, data.stabHasFault);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">auto</span> stabFaultTime = AppendNode(doc, stability, <span class="stringliteral">"FaultTime"</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  SetNodeValue(doc, stabFaultTime, data.stabFaultTime);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">auto</span> stabFaultLength = AppendNode(doc, stability, <span class="stringliteral">"FaultLength"</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  SetNodeValue(doc, stabFaultLength, data.stabFaultLength);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">auto</span> stabFaultResistance = AppendNode(doc, stability, <span class="stringliteral">"FaultResistance"</span>);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  SetNodeValue(doc, stabFaultResistance, data.stabFaultResistance);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">auto</span> stabFaultReactance = AppendNode(doc, stability, <span class="stringliteral">"FaultReactance"</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  SetNodeValue(doc, stabFaultReactance, data.stabFaultReactance);</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.number = i;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  bus->SetElectricalData(data);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  } <span class="comment">//}</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">//{ Capacitor</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">auto</span> capacitorsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"CapacitorList"</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</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="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)capacitorList.size(); i++) {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = capacitorList[i];</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">auto</span> capacitorNode = AppendNode(doc, capacitorsNode, <span class="stringliteral">"Capacitor"</span>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  SetNodeAttribute(doc, capacitorNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, capacitorNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  SetNodeValue(doc, posX, capacitor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  SetNodeValue(doc, posY, capacitor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  SetNodeValue(doc, width, capacitor-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  SetNodeValue(doc, height, capacitor-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  SetNodeValue(doc, angle, capacitor-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">auto</span> nodePos = AppendNode(doc, cadProp, <span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">auto</span> nodePosX = AppendNode(doc, nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  SetNodeValue(doc, nodePosX, capacitor-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_x);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keyword">auto</span> nodePosY = AppendNode(doc, nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  SetNodeValue(doc, nodePosY, capacitor-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_y);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">auto</span> parentID = AppendNode(doc, cadProp, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</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="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">if</span>(parent) SetNodeValue(doc, parentID, parent->GetElectricalData().number);</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>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data = capacitor->GetElectricalData();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, capacitorNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">auto</span> isOnline = AppendNode(doc, electricalProp, <span class="stringliteral">"IsOnline"</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  SetNodeValue(doc, isOnline, capacitor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>());</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">auto</span> reactivePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  SetNodeValue(doc, reactivePower, data.reactivePower);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  SetNodeAttribute(doc, reactivePower, <span class="stringliteral">"UnitID"</span>, data.reactivePowerUnit);</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">auto</span> switchingList = AppendNode(doc, electricalProp, <span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</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="l00143"></a><span class="lineno"> 143</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="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">auto</span> switching = AppendNode(doc, switchingList, <span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  SetNodeAttribute(doc, switching, <span class="stringliteral">"ID"</span>, j);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">auto</span> swType = AppendNode(doc, switching, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  SetNodeValue(doc, swType, swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[j]);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">auto</span> swTime = AppendNode(doc, switching, <span class="stringliteral">"Time"</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  SetNodeValue(doc, swTime, swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[j]);</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">//}</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="comment">//{ IndMotor</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">auto</span> indMotorsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"IndMotorList"</span>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</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="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)indMotorList.size(); i++) {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = indMotorList[i];</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">auto</span> indMotorNode = AppendNode(doc, indMotorsNode, <span class="stringliteral">"IndMotor"</span>);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  SetNodeAttribute(doc, indMotorNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, indMotorNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  SetNodeValue(doc, posX, indMotor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  SetNodeValue(doc, posY, indMotor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  SetNodeValue(doc, width, indMotor-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  SetNodeValue(doc, height, indMotor-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  SetNodeValue(doc, angle, indMotor-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">auto</span> nodePos = AppendNode(doc, cadProp, <span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keyword">auto</span> nodePosX = AppendNode(doc, nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  SetNodeValue(doc, nodePosX, indMotor-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_x);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">auto</span> nodePosY = AppendNode(doc, nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  SetNodeValue(doc, nodePosY, indMotor-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_y);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">auto</span> parentID = AppendNode(doc, cadProp, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</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="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">if</span>(parent) SetNodeValue(doc, parentID, parent->GetElectricalData().number);</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="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> data = indMotor->GetElectricalData();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, indMotorNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keyword">auto</span> isOnline = AppendNode(doc, electricalProp, <span class="stringliteral">"IsOnline"</span>);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  SetNodeValue(doc, isOnline, indMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>());</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keyword">auto</span> activePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ActivePower"</span>);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  SetNodeValue(doc, activePower, data.activePower);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  SetNodeAttribute(doc, activePower, <span class="stringliteral">"UnitID"</span>, data.activePowerUnit);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keyword">auto</span> reactivePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  SetNodeValue(doc, reactivePower, data.reactivePower);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  SetNodeAttribute(doc, reactivePower, <span class="stringliteral">"UnitID"</span>, data.reactivePowerUnit);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  } <span class="comment">//}</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="comment">//{ Inductor</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keyword">auto</span> inductorsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"InductorList"</span>);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</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="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)inductorList.size(); i++) {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = inductorList[i];</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keyword">auto</span> inductorNode = AppendNode(doc, inductorsNode, <span class="stringliteral">"Inductor"</span>);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  SetNodeAttribute(doc, inductorNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, inductorNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  SetNodeValue(doc, posX, inductor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  SetNodeValue(doc, posY, inductor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  SetNodeValue(doc, width, inductor-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  SetNodeValue(doc, height, inductor-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  SetNodeValue(doc, angle, inductor-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">auto</span> nodePos = AppendNode(doc, cadProp, <span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keyword">auto</span> nodePosX = AppendNode(doc, nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  SetNodeValue(doc, nodePosX, inductor-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_x);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">auto</span> nodePosY = AppendNode(doc, nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  SetNodeValue(doc, nodePosY, inductor-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_y);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keyword">auto</span> parentID = AppendNode(doc, cadProp, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</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="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">if</span>(parent) SetNodeValue(doc, parentID, parent->GetElectricalData().number);</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>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data = inductor->GetElectricalData();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, inductorNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keyword">auto</span> isOnline = AppendNode(doc, electricalProp, <span class="stringliteral">"IsOnline"</span>);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  SetNodeValue(doc, isOnline, inductor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>());</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keyword">auto</span> reactivePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  SetNodeValue(doc, reactivePower, data.reactivePower);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  SetNodeAttribute(doc, reactivePower, <span class="stringliteral">"UnitID"</span>, data.reactivePowerUnit);</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="keyword">auto</span> switchingList = AppendNode(doc, electricalProp, <span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</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="l00237"></a><span class="lineno"> 237</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="l00238"></a><span class="lineno"> 238</span>  <span class="keyword">auto</span> switching = AppendNode(doc, switchingList, <span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  SetNodeAttribute(doc, switching, <span class="stringliteral">"ID"</span>, j);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keyword">auto</span> swType = AppendNode(doc, switching, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  SetNodeValue(doc, swType, swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[j]);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">auto</span> swTime = AppendNode(doc, switching, <span class="stringliteral">"Time"</span>);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  SetNodeValue(doc, swTime, swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[j]);</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="comment">//}</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="comment">//{ Line</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keyword">auto</span> linesNode = AppendNode(doc, elementsNode, <span class="stringliteral">"LineList"</span>);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</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="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)lineList.size(); i++) {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="class_line.html">Line</a>* line = lineList[i];</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keyword">auto</span> lineNode = AppendNode(doc, linesNode, <span class="stringliteral">"Line"</span>);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  SetNodeAttribute(doc, lineNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, lineNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, cadProp, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keyword">auto</span> ptList = line-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordtype">int</span> nodeID = 0;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)ptList.size(); j++) {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">if</span>((j != 1) && (j != (int)ptList.size() - 2)) {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keyword">auto</span> nodePos = AppendNode(doc, nodeList, <span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  SetNodeAttribute(doc, nodePos, <span class="stringliteral">"ID"</span>, nodeID);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keyword">auto</span> nodePosX = AppendNode(doc, nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  SetNodeValue(doc, nodePosX, ptList[j].m_x);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keyword">auto</span> nodePosY = AppendNode(doc, nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  SetNodeValue(doc, nodePosY, ptList[j].m_y);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  nodeID++;</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="keyword">auto</span> parentIDList = AppendNode(doc, cadProp, <span class="stringliteral">"ParentIDList"</span>);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</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="l00272"></a><span class="lineno"> 272</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="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keyword">auto</span> parentID = AppendNode(doc, parentIDList, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  SetNodeAttribute(doc, parentID, <span class="stringliteral">"ID"</span>, j);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  SetNodeValue(doc, parentID, parent->GetElectricalData().number);</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>  }</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>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = line->GetElectricalData();</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, lineNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keyword">auto</span> isOnline = AppendNode(doc, electricalProp, <span class="stringliteral">"IsOnline"</span>);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  SetNodeValue(doc, isOnline, line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>());</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keyword">auto</span> nominalVoltage = AppendNode(doc, electricalProp, <span class="stringliteral">"NominalVoltage"</span>);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  SetNodeValue(doc, nominalVoltage, data.nominalVoltage);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  SetNodeAttribute(doc, nominalVoltage, <span class="stringliteral">"UnitID"</span>, data.nominalVoltageUnit);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keyword">auto</span> nominalPower = AppendNode(doc, electricalProp, <span class="stringliteral">"NominalPower"</span>);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  SetNodeValue(doc, nominalPower, data.nominalPower);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  SetNodeAttribute(doc, nominalPower, <span class="stringliteral">"UnitID"</span>, data.nominalPowerUnit);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keyword">auto</span> resistance = AppendNode(doc, electricalProp, <span class="stringliteral">"Resistance"</span>);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  SetNodeValue(doc, resistance, data.resistance);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  SetNodeAttribute(doc, resistance, <span class="stringliteral">"UnitID"</span>, data.resistanceUnit);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">auto</span> indReactance = AppendNode(doc, electricalProp, <span class="stringliteral">"IndReactance"</span>);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  SetNodeValue(doc, indReactance, data.indReactance);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  SetNodeAttribute(doc, indReactance, <span class="stringliteral">"UnitID"</span>, data.indReactanceUnit);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keyword">auto</span> capSusceptance = AppendNode(doc, electricalProp, <span class="stringliteral">"CapSusceptance"</span>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  SetNodeValue(doc, capSusceptance, data.capSusceptance);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  SetNodeAttribute(doc, capSusceptance, <span class="stringliteral">"UnitID"</span>, data.capSusceptanceUnit);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keyword">auto</span> lineSize = AppendNode(doc, electricalProp, <span class="stringliteral">"LineSize"</span>);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  SetNodeValue(doc, lineSize, data.lineSize);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">auto</span> useLinePower = AppendNode(doc, electricalProp, <span class="stringliteral">"UseLinePower"</span>);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  SetNodeValue(doc, useLinePower, data.useLinePower);</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>  <span class="keyword">auto</span> fault = AppendNode(doc, electricalProp, <span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keyword">auto</span> zeroResistance = AppendNode(doc, fault, <span class="stringliteral">"ZeroResistance"</span>);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  SetNodeValue(doc, zeroResistance, data.zeroResistance);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keyword">auto</span> zeroIndReactance = AppendNode(doc, fault, <span class="stringliteral">"ZeroIndReactance"</span>);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  SetNodeValue(doc, zeroIndReactance, data.zeroIndReactance);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">auto</span> zeroCapSusceptance = AppendNode(doc, fault, <span class="stringliteral">"ZeroCapSusceptance"</span>);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  SetNodeValue(doc, zeroCapSusceptance, data.zeroCapSusceptance);</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="keyword">auto</span> switchingList = AppendNode(doc, electricalProp, <span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</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="l00316"></a><span class="lineno"> 316</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="l00317"></a><span class="lineno"> 317</span>  <span class="keyword">auto</span> switching = AppendNode(doc, switchingList, <span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  SetNodeAttribute(doc, switching, <span class="stringliteral">"ID"</span>, j);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keyword">auto</span> swType = AppendNode(doc, switching, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  SetNodeValue(doc, swType, swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[j]);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keyword">auto</span> swTime = AppendNode(doc, switching, <span class="stringliteral">"Time"</span>);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  SetNodeValue(doc, swTime, swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[j]);</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="comment">//}</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>  <span class="comment">//{ Load</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keyword">auto</span> loadsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"LoadList"</span>);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</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="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)loadList.size(); i++) {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="class_load.html">Load</a>* load = loadList[i];</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keyword">auto</span> loadNode = AppendNode(doc, loadsNode, <span class="stringliteral">"Load"</span>);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  SetNodeAttribute(doc, loadNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, loadNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  SetNodeValue(doc, posX, load-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  SetNodeValue(doc, posY, load-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  SetNodeValue(doc, width, load-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  SetNodeValue(doc, height, load-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  SetNodeValue(doc, angle, load-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keyword">auto</span> nodePos = AppendNode(doc, cadProp, <span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keyword">auto</span> nodePosX = AppendNode(doc, nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  SetNodeValue(doc, nodePosX, load-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_x);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keyword">auto</span> nodePosY = AppendNode(doc, nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  SetNodeValue(doc, nodePosY, load-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_y);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keyword">auto</span> parentID = AppendNode(doc, cadProp, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</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="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">if</span>(parent) SetNodeValue(doc, parentID, parent->GetElectricalData().number);</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>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data = load->GetElectricalData();</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, loadNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keyword">auto</span> isOnline = AppendNode(doc, electricalProp, <span class="stringliteral">"IsOnline"</span>);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  SetNodeValue(doc, isOnline, load-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>());</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keyword">auto</span> activePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ActivePower"</span>);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  SetNodeValue(doc, activePower, data.activePower);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  SetNodeAttribute(doc, activePower, <span class="stringliteral">"UnitID"</span>, data.activePowerUnit);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keyword">auto</span> reactivePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  SetNodeValue(doc, reactivePower, data.reactivePower);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  SetNodeAttribute(doc, reactivePower, <span class="stringliteral">"UnitID"</span>, data.reactivePowerUnit);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keyword">auto</span> loadType = AppendNode(doc, electricalProp, <span class="stringliteral">"LoadType"</span>);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  SetNodeValue(doc, loadType, data.loadType);</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>  <span class="keyword">auto</span> switchingList = AppendNode(doc, electricalProp, <span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</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="l00372"></a><span class="lineno"> 372</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="l00373"></a><span class="lineno"> 373</span>  <span class="keyword">auto</span> switching = AppendNode(doc, switchingList, <span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  SetNodeAttribute(doc, switching, <span class="stringliteral">"ID"</span>, j);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keyword">auto</span> swType = AppendNode(doc, switching, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  SetNodeValue(doc, swType, swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[j]);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keyword">auto</span> swTime = AppendNode(doc, switching, <span class="stringliteral">"Time"</span>);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  SetNodeValue(doc, swTime, swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[j]);</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="comment">//}</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="comment">//{ SyncGenerator</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keyword">auto</span> syncGeneratorsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"SyncGeneratorList"</span>);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</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="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)syncGeneratorList.size(); i++) {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = syncGeneratorList[i];</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keyword">auto</span> syncGeneratorNode = AppendNode(doc, syncGeneratorsNode, <span class="stringliteral">"SyncGenerator"</span>);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  SetNodeAttribute(doc, syncGeneratorNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, syncGeneratorNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  SetNodeValue(doc, posX, syncGenerator-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  SetNodeValue(doc, posY, syncGenerator-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  SetNodeValue(doc, width, syncGenerator-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  SetNodeValue(doc, height, syncGenerator-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  SetNodeValue(doc, angle, syncGenerator-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keyword">auto</span> nodePos = AppendNode(doc, cadProp, <span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keyword">auto</span> nodePosX = AppendNode(doc, nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  SetNodeValue(doc, nodePosX, syncGenerator-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_x);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keyword">auto</span> nodePosY = AppendNode(doc, nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  SetNodeValue(doc, nodePosY, syncGenerator-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_y);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keyword">auto</span> parentID = AppendNode(doc, cadProp, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</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="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">if</span>(parent) SetNodeValue(doc, parentID, parent->GetElectricalData().number);</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>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, syncGeneratorNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keyword">auto</span> isOnline = AppendNode(doc, electricalProp, <span class="stringliteral">"IsOnline"</span>);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  SetNodeValue(doc, isOnline, syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>());</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keyword">auto</span> nominalPower = AppendNode(doc, electricalProp, <span class="stringliteral">"NominalPower"</span>);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  SetNodeValue(doc, nominalPower, data.nominalPower);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  SetNodeAttribute(doc, nominalPower, <span class="stringliteral">"UnitID"</span>, data.nominalPowerUnit);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keyword">auto</span> nominalVoltage = AppendNode(doc, electricalProp, <span class="stringliteral">"NominalVoltage"</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  SetNodeValue(doc, nominalVoltage, data.nominalVoltage);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  SetNodeAttribute(doc, nominalVoltage, <span class="stringliteral">"UnitID"</span>, data.nominalVoltageUnit);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keyword">auto</span> activePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ActivePower"</span>);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  SetNodeValue(doc, activePower, data.activePower);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  SetNodeAttribute(doc, activePower, <span class="stringliteral">"UnitID"</span>, data.activePowerUnit);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keyword">auto</span> reactivePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  SetNodeValue(doc, reactivePower, data.reactivePower);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  SetNodeAttribute(doc, reactivePower, <span class="stringliteral">"UnitID"</span>, data.reactivePowerUnit);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keyword">auto</span> haveMaxReactive = AppendNode(doc, electricalProp, <span class="stringliteral">"HaveMaxReactive"</span>);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  SetNodeValue(doc, haveMaxReactive, data.haveMaxReactive);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keyword">auto</span> maxReactive = AppendNode(doc, electricalProp, <span class="stringliteral">"MaxReactive"</span>);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  SetNodeValue(doc, maxReactive, data.maxReactive);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  SetNodeAttribute(doc, maxReactive, <span class="stringliteral">"UnitID"</span>, data.maxReactiveUnit);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keyword">auto</span> haveMinReactive = AppendNode(doc, electricalProp, <span class="stringliteral">"HaveMinReactive"</span>);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  SetNodeValue(doc, haveMinReactive, data.haveMinReactive);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keyword">auto</span> minReactive = AppendNode(doc, electricalProp, <span class="stringliteral">"MinReactive"</span>);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  SetNodeValue(doc, minReactive, data.minReactive);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  SetNodeAttribute(doc, minReactive, <span class="stringliteral">"UnitID"</span>, data.minReactiveUnit);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keyword">auto</span> useMachineBase = AppendNode(doc, electricalProp, <span class="stringliteral">"UseMachineBase"</span>);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  SetNodeValue(doc, useMachineBase, data.useMachineBase);</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>  <span class="keyword">auto</span> fault = AppendNode(doc, electricalProp, <span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keyword">auto</span> positiveResistance = AppendNode(doc, fault, <span class="stringliteral">"PositiveResistance"</span>);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  SetNodeValue(doc, positiveResistance, data.positiveResistance);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keyword">auto</span> positiveReactance = AppendNode(doc, fault, <span class="stringliteral">"PositiveReactance"</span>);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  SetNodeValue(doc, positiveReactance, data.positiveReactance);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keyword">auto</span> negativeResistance = AppendNode(doc, fault, <span class="stringliteral">"NegativeResistance"</span>);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  SetNodeValue(doc, negativeResistance, data.negativeResistance);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keyword">auto</span> negativeReactance = AppendNode(doc, fault, <span class="stringliteral">"NegativeReactance"</span>);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  SetNodeValue(doc, negativeReactance, data.negativeReactance);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keyword">auto</span> zeroResistance = AppendNode(doc, fault, <span class="stringliteral">"ZeroResistance"</span>);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  SetNodeValue(doc, zeroResistance, data.zeroResistance);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keyword">auto</span> zeroReactance = AppendNode(doc, fault, <span class="stringliteral">"ZeroReactance"</span>);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  SetNodeValue(doc, zeroReactance, data.zeroReactance);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keyword">auto</span> groundResistance = AppendNode(doc, fault, <span class="stringliteral">"GroundResistance"</span>);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  SetNodeValue(doc, groundResistance, data.groundResistance);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keyword">auto</span> groundReactance = AppendNode(doc, fault, <span class="stringliteral">"GroundReactance"</span>);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  SetNodeValue(doc, groundReactance, data.groundReactance);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keyword">auto</span> groundNeutral = AppendNode(doc, fault, <span class="stringliteral">"GroundNeutral"</span>);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  SetNodeValue(doc, groundNeutral, data.groundNeutral);</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="keyword">auto</span> stability = AppendNode(doc, electricalProp, <span class="stringliteral">"Stability"</span>);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keyword">auto</span> plotSyncMachine = AppendNode(doc, stability, <span class="stringliteral">"PlotSyncMachine"</span>);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  SetNodeValue(doc, plotSyncMachine, data.plotSyncMachine);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keyword">auto</span> inertia = AppendNode(doc, stability, <span class="stringliteral">"Inertia"</span>);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  SetNodeValue(doc, inertia, data.inertia);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keyword">auto</span> damping = AppendNode(doc, stability, <span class="stringliteral">"Damping"</span>);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  SetNodeValue(doc, damping, data.damping);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keyword">auto</span> useAVR = AppendNode(doc, stability, <span class="stringliteral">"UseAVR"</span>);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  SetNodeValue(doc, useAVR, data.useAVR);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keyword">auto</span> useSpeedGovernor = AppendNode(doc, stability, <span class="stringliteral">"UseSpeedGovernor"</span>);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  SetNodeValue(doc, useSpeedGovernor, data.useSpeedGovernor);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keyword">auto</span> armResistance = AppendNode(doc, stability, <span class="stringliteral">"ArmResistance"</span>);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  SetNodeValue(doc, armResistance, data.armResistance);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keyword">auto</span> potierReactance = AppendNode(doc, stability, <span class="stringliteral">"PotierReactance"</span>);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  SetNodeValue(doc, potierReactance, data.potierReactance);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keyword">auto</span> satFactor = AppendNode(doc, stability, <span class="stringliteral">"SatFactor"</span>);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  SetNodeValue(doc, satFactor, data.satFactor);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keyword">auto</span> syncXd = AppendNode(doc, stability, <span class="stringliteral">"SyncXd"</span>);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  SetNodeValue(doc, syncXd, data.syncXd);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keyword">auto</span> syncXq = AppendNode(doc, stability, <span class="stringliteral">"SyncXq"</span>);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  SetNodeValue(doc, syncXq, data.syncXq);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keyword">auto</span> transXd = AppendNode(doc, stability, <span class="stringliteral">"TransXd"</span>);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  SetNodeValue(doc, transXd, data.transXd);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="keyword">auto</span> transXq = AppendNode(doc, stability, <span class="stringliteral">"TransXq"</span>);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  SetNodeValue(doc, transXq, data.transXq);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keyword">auto</span> transTd0 = AppendNode(doc, stability, <span class="stringliteral">"TransTd0"</span>);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  SetNodeValue(doc, transTd0, data.transTd0);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keyword">auto</span> transTq0 = AppendNode(doc, stability, <span class="stringliteral">"TransTq0"</span>);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  SetNodeValue(doc, transTq0, data.transTq0);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keyword">auto</span> subXd = AppendNode(doc, stability, <span class="stringliteral">"SubXd"</span>);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  SetNodeValue(doc, subXd, data.subXd);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keyword">auto</span> subXq = AppendNode(doc, stability, <span class="stringliteral">"SubXq"</span>);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  SetNodeValue(doc, subXq, data.subXq);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keyword">auto</span> subTd0 = AppendNode(doc, stability, <span class="stringliteral">"SubTd0"</span>);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  SetNodeValue(doc, subTd0, data.subTd0);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keyword">auto</span> subTq0 = AppendNode(doc, stability, <span class="stringliteral">"SubTq0"</span>);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  SetNodeValue(doc, subTq0, data.subTq0);</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>  <span class="keyword">auto</span> avr = AppendNode(doc, stability, <span class="stringliteral">"AVR"</span>);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">if</span>(data.avr) SaveControlElements(doc, avr, data.avr);</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="keyword">auto</span> speedGov = AppendNode(doc, stability, <span class="stringliteral">"SpeedGovernor"</span>);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">if</span>(data.speedGov) SaveControlElements(doc, speedGov, data.speedGov);</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="keyword">auto</span> switchingList = AppendNode(doc, electricalProp, <span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</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="l00508"></a><span class="lineno"> 508</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="l00509"></a><span class="lineno"> 509</span>  <span class="keyword">auto</span> switching = AppendNode(doc, switchingList, <span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  SetNodeAttribute(doc, switching, <span class="stringliteral">"ID"</span>, j);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keyword">auto</span> swType = AppendNode(doc, switching, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  SetNodeValue(doc, swType, swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[j]);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keyword">auto</span> swTime = AppendNode(doc, switching, <span class="stringliteral">"Time"</span>);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  SetNodeValue(doc, swTime, swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[j]);</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="comment">//}</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="comment">//{ SyncMotor</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keyword">auto</span> syncMotorsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"SyncMotorList"</span>);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</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="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)syncMotorList.size(); i++) {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = syncMotorList[i];</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keyword">auto</span> syncMotorNode = AppendNode(doc, syncMotorsNode, <span class="stringliteral">"SyncMotor"</span>);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  SetNodeAttribute(doc, syncMotorNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, syncMotorNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  SetNodeValue(doc, posX, syncMotor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  SetNodeValue(doc, posY, syncMotor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  SetNodeValue(doc, width, syncMotor-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  SetNodeValue(doc, height, syncMotor-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  SetNodeValue(doc, angle, syncMotor-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keyword">auto</span> nodePos = AppendNode(doc, cadProp, <span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keyword">auto</span> nodePosX = AppendNode(doc, nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  SetNodeValue(doc, nodePosX, syncMotor-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_x);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keyword">auto</span> nodePosY = AppendNode(doc, nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  SetNodeValue(doc, nodePosY, syncMotor-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_y);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keyword">auto</span> parentID = AppendNode(doc, cadProp, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</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="l00545"></a><span class="lineno"> 545</span>  <span class="keywordflow">if</span>(parent) SetNodeValue(doc, parentID, parent->GetElectricalData().number);</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>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = syncMotor->GetElectricalData();</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, syncMotorNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keyword">auto</span> isOnline = AppendNode(doc, electricalProp, <span class="stringliteral">"IsOnline"</span>);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  SetNodeValue(doc, isOnline, syncMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>());</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keyword">auto</span> nominalPower = AppendNode(doc, electricalProp, <span class="stringliteral">"NominalPower"</span>);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  SetNodeValue(doc, nominalPower, data.nominalPower);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  SetNodeAttribute(doc, nominalPower, <span class="stringliteral">"UnitID"</span>, data.nominalPowerUnit);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="comment">// auto nominalVoltage = AppendNode(doc, electricalProp, "NominalVoltage");</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="comment">// SetNodeValue(doc, nominalVoltage, data.nominalVoltage);</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="comment">// SetNodeAttribute(doc, nominalVoltage, "UnitID", data.nominalVoltageUnit);</span></div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keyword">auto</span> activePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ActivePower"</span>);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  SetNodeValue(doc, activePower, data.activePower);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  SetNodeAttribute(doc, activePower, <span class="stringliteral">"UnitID"</span>, data.activePowerUnit);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keyword">auto</span> reactivePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  SetNodeValue(doc, reactivePower, data.reactivePower);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  SetNodeAttribute(doc, reactivePower, <span class="stringliteral">"UnitID"</span>, data.reactivePowerUnit);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keyword">auto</span> haveMaxReactive = AppendNode(doc, electricalProp, <span class="stringliteral">"HaveMaxReactive"</span>);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  SetNodeValue(doc, haveMaxReactive, data.haveMaxReactive);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keyword">auto</span> maxReactive = AppendNode(doc, electricalProp, <span class="stringliteral">"MaxReactive"</span>);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  SetNodeValue(doc, maxReactive, data.maxReactive);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  SetNodeAttribute(doc, maxReactive, <span class="stringliteral">"UnitID"</span>, data.maxReactiveUnit);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keyword">auto</span> haveMinReactive = AppendNode(doc, electricalProp, <span class="stringliteral">"HaveMinReactive"</span>);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  SetNodeValue(doc, haveMinReactive, data.haveMinReactive);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keyword">auto</span> minReactive = AppendNode(doc, electricalProp, <span class="stringliteral">"MinReactive"</span>);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  SetNodeValue(doc, minReactive, data.minReactive);</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  SetNodeAttribute(doc, minReactive, <span class="stringliteral">"UnitID"</span>, data.minReactiveUnit);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keyword">auto</span> useMachineBase = AppendNode(doc, electricalProp, <span class="stringliteral">"UseMachineBase"</span>);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  SetNodeValue(doc, useMachineBase, data.useMachineBase);</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>  <span class="keyword">auto</span> fault = AppendNode(doc, electricalProp, <span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keyword">auto</span> positiveResistance = AppendNode(doc, fault, <span class="stringliteral">"PositiveResistance"</span>);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  SetNodeValue(doc, positiveResistance, data.positiveResistance);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keyword">auto</span> positiveReactance = AppendNode(doc, fault, <span class="stringliteral">"PositiveReactance"</span>);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  SetNodeValue(doc, positiveReactance, data.positiveReactance);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keyword">auto</span> negativeResistance = AppendNode(doc, fault, <span class="stringliteral">"NegativeResistance"</span>);</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  SetNodeValue(doc, negativeResistance, data.negativeResistance);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keyword">auto</span> negativeReactance = AppendNode(doc, fault, <span class="stringliteral">"NegativeReactance"</span>);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  SetNodeValue(doc, negativeReactance, data.negativeReactance);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keyword">auto</span> zeroResistance = AppendNode(doc, fault, <span class="stringliteral">"ZeroResistance"</span>);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  SetNodeValue(doc, zeroResistance, data.zeroResistance);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keyword">auto</span> zeroReactance = AppendNode(doc, fault, <span class="stringliteral">"ZeroReactance"</span>);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  SetNodeValue(doc, zeroReactance, data.zeroReactance);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keyword">auto</span> groundResistance = AppendNode(doc, fault, <span class="stringliteral">"GroundResistance"</span>);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  SetNodeValue(doc, groundResistance, data.groundResistance);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keyword">auto</span> groundReactance = AppendNode(doc, fault, <span class="stringliteral">"GroundReactance"</span>);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  SetNodeValue(doc, groundReactance, data.groundReactance);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keyword">auto</span> groundNeutral = AppendNode(doc, fault, <span class="stringliteral">"GroundNeutral"</span>);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  SetNodeValue(doc, groundNeutral, data.groundNeutral);</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>  <span class="comment">// To future use...</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="comment">/*auto stability = AppendNode(doc, electricalProp, "Stability");</span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> <span class="comment"> auto plotSyncMachine = AppendNode(doc, stability, "PlotSyncMotor");</span></div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> <span class="comment"> SetNodeValue(doc, plotSyncMachine, data.plotSyncMachine);</span></div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> <span class="comment"> auto inertia = AppendNode(doc, stability, "Inertia");</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> <span class="comment"> SetNodeValue(doc, inertia, data.inertia);</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span> <span class="comment"> auto damping = AppendNode(doc, stability, "Damping");</span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> <span class="comment"> SetNodeValue(doc, damping, data.damping);</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span> <span class="comment"> auto useAVR = AppendNode(doc, stability, "UseAVR");</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> <span class="comment"> SetNodeValue(doc, useAVR, data.useAVR);</span></div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> <span class="comment"> auto armResistance = AppendNode(doc, stability, "ArmResistance");</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> <span class="comment"> SetNodeValue(doc, armResistance, data.armResistance);</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> <span class="comment"> auto potierReactance = AppendNode(doc, stability, "PotierReactance");</span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> <span class="comment"> SetNodeValue(doc, potierReactance, data.potierReactance);</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> <span class="comment"> auto satFactor = AppendNode(doc, stability, "SatFactor");</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> <span class="comment"> SetNodeValue(doc, satFactor, data.satFactor);</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="comment"> auto syncXd = AppendNode(doc, stability, "SyncXd");</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> <span class="comment"> SetNodeValue(doc, syncXd, data.syncXd);</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> <span class="comment"> auto syncXq = AppendNode(doc, stability, "SyncXq");</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> <span class="comment"> SetNodeValue(doc, syncXq, data.syncXq);</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span> <span class="comment"> auto transXd = AppendNode(doc, stability, "TransXd");</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> <span class="comment"> SetNodeValue(doc, transXd, data.transXd);</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="comment"> auto transXq = AppendNode(doc, stability, "TransXq");</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span> <span class="comment"> SetNodeValue(doc, transXq, data.transXq);</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> <span class="comment"> auto transTd0 = AppendNode(doc, stability, "TransTd0");</span></div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span> <span class="comment"> SetNodeValue(doc, transTd0, data.transTd0);</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> <span class="comment"> auto transTq0 = AppendNode(doc, stability, "TransTq0");</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> <span class="comment"> SetNodeValue(doc, transTq0, data.transTq0);</span></div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> <span class="comment"> auto subXd = AppendNode(doc, stability, "SubXd");</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> <span class="comment"> SetNodeValue(doc, subXd, data.subXd);</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span> <span class="comment"> auto subXq = AppendNode(doc, stability, "SubXq");</span></div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> <span class="comment"> SetNodeValue(doc, subXq, data.subXq);</span></div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> <span class="comment"> auto subTd0 = AppendNode(doc, stability, "SubTd0");</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span> <span class="comment"> SetNodeValue(doc, subTd0, data.subTd0);</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <span class="comment"> auto subTq0 = AppendNode(doc, stability, "SubTq0");</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> <span class="comment"> SetNodeValue(doc, subTq0, data.subTq0);</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="comment"></span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> <span class="comment"> auto switchingList = AppendNode(doc, electricalProp, "SwitchingList");</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="comment"> SwitchingData swData = syncGenerator->GetSwitchingData();</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="comment"> for(int j = 0; j < (int)swData.swType.size(); j++) {</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="comment"> auto switching = AppendNode(doc, switchingList, "Switching");</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="comment"> SetNodeAttribute(doc, switching, "ID", j);</span></div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="comment"> auto swType = AppendNode(doc, switching, "Type");</span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="comment"> SetNodeValue(doc, swType, swData.swType[j]);</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="comment"> auto swTime = AppendNode(doc, switching, "Time");</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> <span class="comment"> SetNodeValue(doc, swTime, swData.swTime[j]);</span></div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> <span class="comment"> }*/</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  } <span class="comment">//}</span></div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> </div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="comment">//{ Transfomer</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keyword">auto</span> transformersNode = AppendNode(doc, elementsNode, <span class="stringliteral">"TransformerList"</span>);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</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="l00650"></a><span class="lineno"> 650</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)transformerList.size(); i++) {</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <a class="code" href="class_transformer.html">Transformer</a>* transfomer = transformerList[i];</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="keyword">auto</span> transformerNode = AppendNode(doc, transformersNode, <span class="stringliteral">"Transfomer"</span>);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  SetNodeAttribute(doc, transformerNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, transformerNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  SetNodeValue(doc, posX, transfomer-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  SetNodeValue(doc, posY, transfomer-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  SetNodeValue(doc, width, transfomer-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  SetNodeValue(doc, height, transfomer-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  SetNodeValue(doc, angle, transfomer-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, cadProp, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keyword">auto</span> nodePos1 = AppendNode(doc, nodeList, <span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  SetNodeAttribute(doc, nodePos1, <span class="stringliteral">"ID"</span>, 0);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="keyword">auto</span> nodePosX1 = AppendNode(doc, nodePos1, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  SetNodeValue(doc, nodePosX1, transfomer-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_x);</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keyword">auto</span> nodePosY1 = AppendNode(doc, nodePos1, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  SetNodeValue(doc, nodePosY1, transfomer-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_y);</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keyword">auto</span> nodePos2 = AppendNode(doc, nodeList, <span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  SetNodeAttribute(doc, nodePos2, <span class="stringliteral">"ID"</span>, 1);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <span class="keyword">auto</span> nodePosX2 = AppendNode(doc, nodePos2, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</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="l00678"></a><span class="lineno"> 678</span>  <span class="keyword">auto</span> nodePosY2 = AppendNode(doc, nodePos2, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</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="l00680"></a><span class="lineno"> 680</span> </div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keyword">auto</span> parentIDList = AppendNode(doc, cadProp, <span class="stringliteral">"ParentIDList"</span>);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</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="l00683"></a><span class="lineno"> 683</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="l00684"></a><span class="lineno"> 684</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keyword">auto</span> parentID = AppendNode(doc, parentIDList, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  SetNodeAttribute(doc, parentID, <span class="stringliteral">"ID"</span>, j);</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  SetNodeValue(doc, parentID, parent->GetElectricalData().number);</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> </div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = transfomer->GetElectricalData();</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, transformerNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keyword">auto</span> isOnline = AppendNode(doc, electricalProp, <span class="stringliteral">"IsOnline"</span>);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  SetNodeValue(doc, isOnline, transfomer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>());</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="keyword">auto</span> primaryNominalVoltage = AppendNode(doc, electricalProp, <span class="stringliteral">"PrimaryNominalVoltage"</span>);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  SetNodeValue(doc, primaryNominalVoltage, data.primaryNominalVoltage);</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  SetNodeAttribute(doc, primaryNominalVoltage, <span class="stringliteral">"UnitID"</span>, data.primaryNominalVoltageUnit);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <span class="keyword">auto</span> secondaryNominalVoltage = AppendNode(doc, electricalProp, <span class="stringliteral">"SecondaryNominalVoltage"</span>);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  SetNodeValue(doc, secondaryNominalVoltage, data.secondaryNominalVoltage);</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  SetNodeAttribute(doc, secondaryNominalVoltage, <span class="stringliteral">"UnitID"</span>, data.secondaryNominalVoltageUnit);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <span class="keyword">auto</span> nominalPower = AppendNode(doc, electricalProp, <span class="stringliteral">"NominalPower"</span>);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  SetNodeValue(doc, nominalPower, data.nominalPower);</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  SetNodeAttribute(doc, nominalPower, <span class="stringliteral">"UnitID"</span>, data.nominalPowerUnit);</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <span class="keyword">auto</span> resistance = AppendNode(doc, electricalProp, <span class="stringliteral">"Resistance"</span>);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  SetNodeValue(doc, resistance, data.resistance);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  SetNodeAttribute(doc, resistance, <span class="stringliteral">"UnitID"</span>, data.resistanceUnit);</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keyword">auto</span> indReactance = AppendNode(doc, electricalProp, <span class="stringliteral">"IndReactance"</span>);</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  SetNodeValue(doc, indReactance, data.indReactance);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  SetNodeAttribute(doc, indReactance, <span class="stringliteral">"UnitID"</span>, data.indReactanceUnit);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keyword">auto</span> connection = AppendNode(doc, electricalProp, <span class="stringliteral">"Connection"</span>);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  SetNodeValue(doc, connection, data.connection);</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keyword">auto</span> turnsRatio = AppendNode(doc, electricalProp, <span class="stringliteral">"TurnsRatio"</span>);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  SetNodeValue(doc, turnsRatio, data.turnsRatio);</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keyword">auto</span> phaseShift = AppendNode(doc, electricalProp, <span class="stringliteral">"PhaseShift"</span>);</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  SetNodeValue(doc, phaseShift, data.phaseShift);</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keyword">auto</span> useTransformerPower = AppendNode(doc, electricalProp, <span class="stringliteral">"UseTransfomerPower"</span>);</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  SetNodeValue(doc, useTransformerPower, data.useTransformerPower);</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="keyword">auto</span> fault = AppendNode(doc, electricalProp, <span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keyword">auto</span> zeroResistance = AppendNode(doc, fault, <span class="stringliteral">"ZeroResistance"</span>);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  SetNodeValue(doc, zeroResistance, data.zeroResistance);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keyword">auto</span> zeroIndReactance = AppendNode(doc, fault, <span class="stringliteral">"ZeroIndReactance"</span>);</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  SetNodeValue(doc, zeroIndReactance, data.zeroIndReactance);</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keyword">auto</span> primaryGrndResistance = AppendNode(doc, fault, <span class="stringliteral">"PrimaryGrndResistance"</span>);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  SetNodeValue(doc, primaryGrndResistance, data.primaryGrndResistance);</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keyword">auto</span> primaryGrndReactance = AppendNode(doc, fault, <span class="stringliteral">"PrimaryGrndReactance"</span>);</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  SetNodeValue(doc, primaryGrndReactance, data.primaryGrndReactance);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <span class="keyword">auto</span> secondaryGrndResistance = AppendNode(doc, fault, <span class="stringliteral">"SecondaryGrndResistance"</span>);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  SetNodeValue(doc, secondaryGrndResistance, data.secondaryGrndResistance);</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <span class="keyword">auto</span> secondaryGrndReactance = AppendNode(doc, fault, <span class="stringliteral">"SecondaryGrndReactance"</span>);</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  SetNodeValue(doc, secondaryGrndReactance, data.secondaryGrndReactance);</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>  <span class="keyword">auto</span> switchingList = AppendNode(doc, electricalProp, <span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</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="l00737"></a><span class="lineno"> 737</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="l00738"></a><span class="lineno"> 738</span>  <span class="keyword">auto</span> switching = AppendNode(doc, switchingList, <span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  SetNodeAttribute(doc, switching, <span class="stringliteral">"ID"</span>, j);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keyword">auto</span> swType = AppendNode(doc, switching, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  SetNodeValue(doc, swType, swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[j]);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  <span class="keyword">auto</span> swTime = AppendNode(doc, switching, <span class="stringliteral">"Time"</span>);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  SetNodeValue(doc, swTime, swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[j]);</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>  } <span class="comment">//}</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="comment">//{ Text</span></div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keyword">auto</span> textsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"TextList"</span>);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  <span class="keyword">auto</span> textList = m_workspace->GetTextList();</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)textList.size(); i++) {</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <a class="code" href="class_text.html">Text</a>* text = textList[i];</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <span class="keyword">auto</span> textNode = AppendNode(doc, textsNode, <span class="stringliteral">"Text"</span>);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  SetNodeAttribute(doc, textNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, textNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  SetNodeValue(doc, posX, text-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  SetNodeValue(doc, posY, text-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  SetNodeValue(doc, width, text-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  SetNodeValue(doc, height, text-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  SetNodeValue(doc, angle, text-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="keyword">auto</span> textProperties = AppendNode(doc, textNode, <span class="stringliteral">"TextProperties"</span>);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <span class="keyword">auto</span> elementType = AppendNode(doc, textProperties, <span class="stringliteral">"ElementType"</span>);</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  SetNodeValue(doc, elementType, text->GetElementType());</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="keyword">auto</span> elementNumber = AppendNode(doc, textProperties, <span class="stringliteral">"ElementNumber"</span>);</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  SetNodeValue(doc, elementNumber, text->GetElementNumber());</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="keyword">auto</span> dataType = AppendNode(doc, textProperties, <span class="stringliteral">"DataType"</span>);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  SetNodeValue(doc, dataType, text->GetDataType());</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keyword">auto</span> dataUnit = AppendNode(doc, textProperties, <span class="stringliteral">"DataUnit"</span>);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  SetNodeValue(doc, dataUnit, text->GetUnit());</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keyword">auto</span> direction = AppendNode(doc, textProperties, <span class="stringliteral">"Direction"</span>);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  SetNodeValue(doc, direction, text->GetDirection());</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keyword">auto</span> decimalPlaces = AppendNode(doc, textProperties, <span class="stringliteral">"DecimalPlaces"</span>);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  SetNodeValue(doc, decimalPlaces, text->GetDecimalPlaces());</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>  <span class="comment">//}</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>  std::ofstream writeXML(path.GetFullPath());</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  writeXML << doc;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  writeXML.close();</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="keywordtype">bool</span> FileHanding::OpenProject(wxFileName path)</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>  rapidxml::xml_document<> doc;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  rapidxml::file<> xmlFile(path.GetFullPath().mb_str());</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span> </div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  doc.parse<0>(xmlFile.data());</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="keyword">auto</span> projectNode = doc.first_node(<span class="stringliteral">"Project"</span>);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordflow">if</span>(!projectNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keyword">auto</span> nameNode = projectNode->first_node(<span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="keywordflow">if</span>(!nameNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  m_workspace->SetName(nameNode->value());</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>  <span class="comment">// Open elements</span></div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="keyword">auto</span> elementsNode = projectNode->first_node(<span class="stringliteral">"Elements"</span>);</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="keywordflow">if</span>(!elementsNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  std::vector<Element*> elementList;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="comment">// Save lists individually to get parents</span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  std::vector<Bus*> busList;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  std::vector<Capacitor*> capacitorList;</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  std::vector<IndMotor*> indMotorList;</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  std::vector<Inductor*> inductorList;</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  std::vector<Line*> lineList;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  std::vector<Load*> loadList;</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  std::vector<SyncGenerator*> syncGeneratorList;</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  std::vector<SyncMotor*> syncMotorList;</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  std::vector<Transformer*> transformerList;</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  std::vector<Text*> textList;</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="comment">//{ Bus</span></div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="keyword">auto</span> busListNode = elementsNode->first_node(<span class="stringliteral">"BusList"</span>);</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keywordflow">if</span>(!busListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keyword">auto</span> busNode = busListNode->first_node(<span class="stringliteral">"Bus"</span>);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keywordflow">while</span>(busNode) {</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keyword">auto</span> cadPropNode = busNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</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="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</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="l00829"></a><span class="lineno"> 829</span> </div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  bus-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  bus-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</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="l00837"></a><span class="lineno"> 837</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="l00838"></a><span class="lineno"> 838</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  clockwise = <span class="keyword">false</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">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="l00844"></a><span class="lineno"> 844</span> </div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="keyword">auto</span> electricalProp = busNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</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>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  data.nominalVoltage = GetNodeValueDouble(electricalProp, <span class="stringliteral">"NominalVoltage"</span>);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</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="l00852"></a><span class="lineno"> 852</span>  data.isVoltageControlled = GetNodeValueInt(electricalProp, <span class="stringliteral">"IsVoltageControlled"</span>);</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  data.controlledVoltage = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ControlledVoltage"</span>);</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  data.controlledVoltageUnitChoice = GetAttributeValueInt(electricalProp, <span class="stringliteral">"ControlledVoltage"</span>, <span class="stringliteral">"Choice"</span>);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  data.slackBus = GetNodeValueInt(electricalProp, <span class="stringliteral">"SlackBus"</span>);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <span class="keyword">auto</span> fault = electricalProp->first_node(<span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  data.hasFault = GetNodeValueInt(fault, <span class="stringliteral">"HasFault"</span>);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</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="l00859"></a><span class="lineno"> 859</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="l00860"></a><span class="lineno"> 860</span>  data.faultResistance = GetNodeValueDouble(fault, <span class="stringliteral">"Resistance"</span>);</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  data.faultReactance = GetNodeValueDouble(fault, <span class="stringliteral">"Reactance"</span>);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keyword">auto</span> stability = electricalProp->first_node(<span class="stringliteral">"Stability"</span>);</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  data.plotBus = GetNodeValueInt(stability, <span class="stringliteral">"Plot"</span>);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  data.stabHasFault = GetNodeValueInt(stability, <span class="stringliteral">"HasFault"</span>);</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  data.stabFaultTime = GetNodeValueDouble(stability, <span class="stringliteral">"FaultTime"</span>);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  data.stabFaultLength = GetNodeValueDouble(stability, <span class="stringliteral">"FaultLength"</span>);</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  data.stabFaultResistance = GetNodeValueDouble(stability, <span class="stringliteral">"FaultResistance"</span>);</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  data.stabFaultReactance = GetNodeValueDouble(stability, <span class="stringliteral">"FaultReactance"</span>);</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>  bus->SetElectricalData(data);</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>  <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="l00873"></a><span class="lineno"> 873</span> </div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  elementList.push_back(bus);</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  busList.push_back(bus);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  busNode = busNode->next_sibling(<span class="stringliteral">"Bus"</span>);</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  } <span class="comment">//}</span></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>  <span class="comment">//{ Capacitor</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="keyword">auto</span> capacitorListNode = elementsNode->first_node(<span class="stringliteral">"CapacitorList"</span>);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keywordflow">if</span>(!capacitorListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <span class="keyword">auto</span> capacitorNode = capacitorListNode->first_node(<span class="stringliteral">"Capacitor"</span>);</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keywordflow">while</span>(capacitorNode) {</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</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="l00885"></a><span class="lineno"> 885</span> </div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keyword">auto</span> cadPropNode = capacitorNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <span class="keyword">auto</span> nodePosition = cadPropNode->first_node(<span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePosition, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePosition, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <span class="keywordtype">int</span> parentID = GetNodeValueInt(cadPropNode, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <span class="keywordflow">if</span>(parentID == -1) {</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <span class="comment">// If the element has no parent, create a temporary one, remove and delete.</span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</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="l00903"></a><span class="lineno"> 903</span>  capacitor-><a class="code" href="class_capacitor.html#ace755e5bc3cc72b491ce31c24c54a5cf">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</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="l00905"></a><span class="lineno"> 905</span>  capacitor-><a class="code" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  capacitor-><a class="code" href="class_shunt.html#a665d9a8c291d427e666567c6df34321b">RemoveParent</a>(parent);</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <span class="keyword">delete</span> parent;</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <a class="code" href="class_bus.html">Bus</a>* parent = busList[parentID];</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  capacitor-><a class="code" href="class_capacitor.html#ace755e5bc3cc72b491ce31c24c54a5cf">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</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="l00912"></a><span class="lineno"> 912</span>  capacitor-><a class="code" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Move</a>(wxPoint2DDouble(posX, posY));</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>  capacitor-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  capacitor-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</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="keywordtype">int</span> numRot = angle / capacitor-><a class="code" href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb">GetRotationAngle</a>();</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  clockwise = <span class="keyword">false</span>;</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  }</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</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="l00924"></a><span class="lineno"> 924</span> </div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="keyword">auto</span> electricalProp = capacitorNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span> </div><div class="line"><a name="l00928"></a><span class="lineno"> 928</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="l00929"></a><span class="lineno"> 929</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data = capacitor->GetElectricalData();</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  data.reactivePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</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="l00933"></a><span class="lineno"> 933</span> </div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData;</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="keyword">auto</span> switchingList = electricalProp->first_node(<span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="keywordflow">if</span>(!switchingList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <span class="keyword">auto</span> swNode = switchingList->first_node(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <span class="keywordflow">while</span>(swNode) {</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</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="l00940"></a><span class="lineno"> 940</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="l00941"></a><span class="lineno"> 941</span>  swNode = swNode->next_sibling(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  }</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  capacitor-><a class="code" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">SetSwitchingData</a>(swData);</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->SetElectricalData(data);</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">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="l00948"></a><span class="lineno"> 948</span> </div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  elementList.push_back(capacitor);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  capacitorList.push_back(capacitor);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  capacitorNode = capacitorNode->next_sibling(<span class="stringliteral">"Capacitor"</span>);</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  } <span class="comment">//}</span></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span> </div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="comment">//{ IndMotor</span></div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <span class="keyword">auto</span> indMotorListNode = elementsNode->first_node(<span class="stringliteral">"IndMotorList"</span>);</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  <span class="keywordflow">if</span>(!indMotorListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="keyword">auto</span> indMotorNode = indMotorListNode->first_node(<span class="stringliteral">"IndMotor"</span>);</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordflow">while</span>(indMotorNode) {</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</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="l00960"></a><span class="lineno"> 960</span> </div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="keyword">auto</span> cadPropNode = indMotorNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="keyword">auto</span> nodePosition = cadPropNode->first_node(<span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePosition, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePosition, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  <span class="keywordtype">int</span> parentID = GetNodeValueInt(cadPropNode, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  <span class="keywordflow">if</span>(parentID == -1) {</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  <span class="comment">// If the element has no parent, create a temporary one, remove and delete.</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</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="l00978"></a><span class="lineno"> 978</span>  indMotor-><a class="code" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</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="l00980"></a><span class="lineno"> 980</span>  indMotor-><a class="code" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  indMotor-><a class="code" href="class_machines.html#a002d852ddd0d73502a6bd819b5545026">RemoveParent</a>(parent);</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <span class="keyword">delete</span> parent;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  <a class="code" href="class_bus.html">Bus</a>* parent = busList[parentID];</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  indMotor-><a class="code" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</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="l00987"></a><span class="lineno"> 987</span>  indMotor-><a class="code" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Move</a>(wxPoint2DDouble(posX, posY));</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>  indMotor-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  indMotor-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</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="keywordtype">int</span> numRot = angle / indMotor-><a class="code" href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb">GetRotationAngle</a>();</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  clockwise = <span class="keyword">false</span>;</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  }</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</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="l00999"></a><span class="lineno"> 999</span> </div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  <span class="keyword">auto</span> electricalProp = indMotorNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> </div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</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="l01004"></a><span class="lineno"> 1004</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> data = indMotor->GetElectricalData();</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  data.activePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ActivePower"</span>);</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</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="l01008"></a><span class="lineno"> 1008</span>  data.reactivePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</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="l01010"></a><span class="lineno"> 1010</span> </div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  indMotor->SetElectricalData(data);</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  elementList.push_back(indMotor);</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  indMotorList.push_back(indMotor);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  indMotorNode = indMotorNode->next_sibling(<span class="stringliteral">"IndMotor"</span>);</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  } <span class="comment">//}</span></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="comment">//{ Inductor</span></div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="keyword">auto</span> inductorListNode = elementsNode->first_node(<span class="stringliteral">"InductorList"</span>);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="keywordflow">if</span>(!inductorListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  <span class="keyword">auto</span> inductorNode = inductorListNode->first_node(<span class="stringliteral">"Inductor"</span>);</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <span class="keywordflow">while</span>(inductorNode) {</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</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="l01023"></a><span class="lineno"> 1023</span> </div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <span class="keyword">auto</span> cadPropNode = inductorNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</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="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  <span class="keyword">auto</span> nodePosition = cadPropNode->first_node(<span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePosition, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePosition, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <span class="keywordtype">int</span> parentID = GetNodeValueInt(cadPropNode, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <span class="keywordflow">if</span>(parentID == -1) {</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <span class="comment">// If the element has no parent, create a temporary one, remove and delete.</span></div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</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="l01041"></a><span class="lineno"> 1041</span>  inductor-><a class="code" href="class_inductor.html#a4e404c6e15f206fe0f5de06fc19dedf5">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</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="l01043"></a><span class="lineno"> 1043</span>  inductor-><a class="code" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  inductor-><a class="code" href="class_shunt.html#a665d9a8c291d427e666567c6df34321b">RemoveParent</a>(parent);</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="keyword">delete</span> parent;</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  <a class="code" href="class_bus.html">Bus</a>* parent = busList[parentID];</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  inductor-><a class="code" href="class_inductor.html#a4e404c6e15f206fe0f5de06fc19dedf5">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</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="l01050"></a><span class="lineno"> 1050</span>  inductor-><a class="code" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Move</a>(wxPoint2DDouble(posX, posY));</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>  inductor-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  inductor-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> </div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</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="l01056"></a><span class="lineno"> 1056</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  clockwise = <span class="keyword">false</span>;</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>  <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="l01062"></a><span class="lineno"> 1062</span> </div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  <span class="keyword">auto</span> electricalProp = inductorNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</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>  inductor-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(GetNodeValueInt(electricalProp, <span class="stringliteral">"IsOnline"</span>));</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data = inductor->GetElectricalData();</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  data.reactivePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</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="l01071"></a><span class="lineno"> 1071</span> </div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  <span class="keyword">auto</span> switchingList = electricalProp->first_node(<span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="keywordflow">if</span>(!switchingList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <span class="keyword">auto</span> swNode = switchingList->first_node(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <span class="keywordflow">while</span>(swNode) {</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</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="l01078"></a><span class="lineno"> 1078</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="l01079"></a><span class="lineno"> 1079</span>  swNode = swNode->next_sibling(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  }</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  inductor-><a class="code" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">SetSwitchingData</a>(swData);</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->SetElectricalData(data);</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> </div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</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="l01086"></a><span class="lineno"> 1086</span> </div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  elementList.push_back(inductor);</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  inductorList.push_back(inductor);</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  inductorNode = inductorNode->next_sibling(<span class="stringliteral">"Inductor"</span>);</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> </div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  <span class="comment">//{ Line</span></div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <span class="keyword">auto</span> lineListNode = elementsNode->first_node(<span class="stringliteral">"LineList"</span>);</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <span class="keywordflow">if</span>(!lineListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  <span class="keyword">auto</span> lineNode = lineListNode->first_node(<span class="stringliteral">"Line"</span>);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <span class="keywordflow">while</span>(lineNode) {</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</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="l01098"></a><span class="lineno"> 1098</span> </div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  <span class="keyword">auto</span> cadPropNode = lineNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="comment">// Get nodes points</span></div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  std::vector<wxPoint2DDouble> ptsList;</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <span class="keyword">auto</span> nodePosList = cadPropNode->first_node(<span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  <span class="keywordflow">if</span>(!nodePosList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  <span class="keyword">auto</span> nodePos = nodePosList->first_node(<span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  <span class="keywordflow">while</span>(nodePos) {</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  ptsList.push_back(wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  nodePos = nodePos->next_sibling(<span class="stringliteral">"Node"</span>);</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> </div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <span class="comment">// Get parents IDs</span></div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <span class="keyword">auto</span> parentIDList = cadPropNode->first_node(<span class="stringliteral">"ParentIDList"</span>);</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  <span class="keywordflow">if</span>(!parentIDList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  <span class="keyword">auto</span> parentNode = parentIDList->first_node(<span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  <span class="keywordtype">long</span> parentID[2] = {-1, -1};</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <span class="keywordflow">while</span>(parentNode) {</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <span class="keywordtype">long</span> index = 0;</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  wxString(parentNode->first_attribute(<span class="stringliteral">"ID"</span>)->value()).ToLong(&index);</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  wxString(parentNode->value()).ToCLong(&parentID[index]);</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  parentNode = parentNode->next_sibling(<span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  }</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>  <span class="comment">// Set parents (if have)</span></div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  <a class="code" href="class_bus.html">Bus</a> *parent1, *parent2;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  <span class="keywordflow">if</span>(parentID[0] == -1) {</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  parent1 = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(ptsList[0]);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  line-><a class="code" href="class_line.html#a26c69f7f703dca718edc28d5093934a3">AddParent</a>(parent1, ptsList[0]);</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  parent1 = busList[parentID[0]];</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  line-><a class="code" href="class_line.html#a26c69f7f703dca718edc28d5093934a3">AddParent</a>(parent1, ptsList[0]);</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>  <span class="keywordflow">if</span>(parentID[1] == -1) {</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</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="l01137"></a><span class="lineno"> 1137</span>  line-><a class="code" href="class_line.html#a26c69f7f703dca718edc28d5093934a3">AddParent</a>(parent2, ptsList[ptsList.size() - 1]);</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  parent2 = busList[parentID[1]];</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  line-><a class="code" href="class_line.html#a26c69f7f703dca718edc28d5093934a3">AddParent</a>(parent2, ptsList[ptsList.size() - 1]);</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">// Add the others nodes (if have)</span></div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  std::vector<wxPoint2DDouble> midPts;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</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="l01146"></a><span class="lineno"> 1146</span>  std::vector<wxPoint2DDouble> edgesPts = line-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>();</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  edgesPts.insert(edgesPts.begin() + 2, midPts.begin(), midPts.end());</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  line-><a class="code" href="class_line.html#af9a931bdb7e0693cacae010a19b744e6">SetPointList</a>(edgesPts);</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>  <span class="keywordflow">if</span>(parentID[0] == -1) {</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  line-><a class="code" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">RemoveParent</a>(parent1);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  <span class="keyword">delete</span> parent1;</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">if</span>(parentID[1] == -1) {</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  line-><a class="code" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">RemoveParent</a>(parent2);</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  <span class="keyword">delete</span> parent2;</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  }</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>  <span class="keyword">auto</span> electricalProp = lineNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</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>  line-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(GetNodeValueInt(electricalProp, <span class="stringliteral">"IsOnline"</span>));</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = line->GetElectricalData();</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  data.nominalVoltage = GetNodeValueDouble(electricalProp, <span class="stringliteral">"NominalVoltage"</span>);</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</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="l01167"></a><span class="lineno"> 1167</span>  data.nominalPower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"NominalPower"</span>);</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</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="l01169"></a><span class="lineno"> 1169</span>  data.resistance = GetNodeValueDouble(electricalProp, <span class="stringliteral">"Resistance"</span>);</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</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="l01171"></a><span class="lineno"> 1171</span>  data.indReactance = GetNodeValueDouble(electricalProp, <span class="stringliteral">"IndReactance"</span>);</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</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="l01173"></a><span class="lineno"> 1173</span>  data.capSusceptance = GetNodeValueDouble(electricalProp, <span class="stringliteral">"CapSusceptance"</span>);</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</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="l01175"></a><span class="lineno"> 1175</span>  data.lineSize = GetNodeValueDouble(electricalProp, <span class="stringliteral">"LineSize"</span>);</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  data.useLinePower = GetNodeValueInt(electricalProp, <span class="stringliteral">"UseLinePower"</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>  <span class="keyword">auto</span> fault = electricalProp->first_node(<span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  data.zeroResistance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroResistance"</span>);</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  data.zeroIndReactance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroIndReactance"</span>);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  data.zeroCapSusceptance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroCapSusceptance"</span>);</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span> </div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  <span class="keyword">auto</span> switchingList = electricalProp->first_node(<span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  <span class="keywordflow">if</span>(!switchingList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <span class="keyword">auto</span> swNode = switchingList->first_node(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <span class="keywordflow">while</span>(swNode) {</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</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="l01189"></a><span class="lineno"> 1189</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="l01190"></a><span class="lineno"> 1190</span>  swNode = swNode->next_sibling(<span class="stringliteral">"Switching"</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>  line-><a class="code" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">SetSwitchingData</a>(swData);</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>  line->SetElectricalData(data);</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> </div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</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="l01197"></a><span class="lineno"> 1197</span> </div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  elementList.push_back(line);</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  lineList.push_back(line);</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  lineNode = lineNode->next_sibling(<span class="stringliteral">"Line"</span>);</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span> </div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  <span class="comment">//{ Load</span></div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  <span class="keyword">auto</span> loadListNode = elementsNode->first_node(<span class="stringliteral">"LoadList"</span>);</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  <span class="keywordflow">if</span>(!loadListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  <span class="keyword">auto</span> loadNode = loadListNode->first_node(<span class="stringliteral">"Load"</span>);</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  <span class="keywordflow">while</span>(loadNode) {</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</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="l01209"></a><span class="lineno"> 1209</span> </div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  <span class="keyword">auto</span> cadPropNode = loadNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  <span class="keyword">auto</span> nodePosition = cadPropNode->first_node(<span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePosition, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePosition, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  <span class="keywordtype">int</span> parentID = GetNodeValueInt(cadPropNode, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  <span class="keywordflow">if</span>(parentID == -1) {</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  <span class="comment">// If the element has no parent, create a temporary one, remove and delete.</span></div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</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="l01227"></a><span class="lineno"> 1227</span>  load-><a class="code" href="class_load.html#ac9f449be9b919b36924a844324bf37ee">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</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="l01229"></a><span class="lineno"> 1229</span>  load-><a class="code" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  load-><a class="code" href="class_shunt.html#a665d9a8c291d427e666567c6df34321b">RemoveParent</a>(parent);</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  <span class="keyword">delete</span> parent;</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  <a class="code" href="class_bus.html">Bus</a>* parent = busList[parentID];</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  load-><a class="code" href="class_load.html#ac9f449be9b919b36924a844324bf37ee">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</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="l01236"></a><span class="lineno"> 1236</span>  load-><a class="code" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  }</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  load-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  load-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</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>  <span class="keywordtype">int</span> numRot = angle / load-><a class="code" href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb">GetRotationAngle</a>();</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  clockwise = <span class="keyword">false</span>;</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">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="l01248"></a><span class="lineno"> 1248</span> </div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  <span class="keyword">auto</span> electricalProp = loadNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> </div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</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="l01253"></a><span class="lineno"> 1253</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data = load->GetElectricalData();</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  data.activePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ActivePower"</span>);</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</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="l01257"></a><span class="lineno"> 1257</span>  data.reactivePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</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="l01259"></a><span class="lineno"> 1259</span>  data.loadType = (LoadType)GetNodeValueInt(electricalProp, <span class="stringliteral">"LoadType"</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>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  <span class="keyword">auto</span> switchingList = electricalProp->first_node(<span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  <span class="keywordflow">if</span>(!switchingList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  <span class="keyword">auto</span> swNode = switchingList->first_node(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  <span class="keywordflow">while</span>(swNode) {</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</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="l01267"></a><span class="lineno"> 1267</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="l01268"></a><span class="lineno"> 1268</span>  swNode = swNode->next_sibling(<span class="stringliteral">"Switching"</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>  load-><a class="code" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">SetSwitchingData</a>(swData);</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>  load->SetElectricalData(data);</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span> </div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</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="l01275"></a><span class="lineno"> 1275</span> </div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  elementList.push_back(load);</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  loadList.push_back(load);</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  loadNode = loadNode->next_sibling(<span class="stringliteral">"Load"</span>);</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span> </div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  <span class="comment">//{ SyncGenerator</span></div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  <span class="keyword">auto</span> syncGeneratorListNode = elementsNode->first_node(<span class="stringliteral">"SyncGeneratorList"</span>);</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  <span class="keywordflow">if</span>(!syncGeneratorListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  <span class="keyword">auto</span> syncGeneratorNode = syncGeneratorListNode->first_node(<span class="stringliteral">"SyncGenerator"</span>);</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  <span class="keywordflow">while</span>(syncGeneratorNode) {</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</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="l01287"></a><span class="lineno"> 1287</span> </div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  <span class="keyword">auto</span> cadPropNode = syncGeneratorNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</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>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  <span class="keyword">auto</span> nodePosition = cadPropNode->first_node(<span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePosition, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePosition, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  <span class="keywordtype">int</span> parentID = GetNodeValueInt(cadPropNode, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  <span class="keywordflow">if</span>(parentID == -1) {</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  <span class="comment">// If the element has no parent, create a temporary one, remove and delete.</span></div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</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="l01305"></a><span class="lineno"> 1305</span>  syncGenerator-><a class="code" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</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="l01307"></a><span class="lineno"> 1307</span>  syncGenerator-><a class="code" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  syncGenerator-><a class="code" href="class_machines.html#a002d852ddd0d73502a6bd819b5545026">RemoveParent</a>(parent);</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  <span class="keyword">delete</span> parent;</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  <a class="code" href="class_bus.html">Bus</a>* parent = busList[parentID];</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  syncGenerator-><a class="code" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</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="l01314"></a><span class="lineno"> 1314</span>  syncGenerator-><a class="code" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  }</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>  syncGenerator-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  syncGenerator-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span> </div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</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="l01320"></a><span class="lineno"> 1320</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>  clockwise = <span class="keyword">false</span>;</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>  }</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</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="l01326"></a><span class="lineno"> 1326</span> </div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  <span class="keyword">auto</span> electricalProp = syncGeneratorNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span> </div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</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="l01331"></a><span class="lineno"> 1331</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>  data.nominalPower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"NominalPower"</span>);</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</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="l01335"></a><span class="lineno"> 1335</span>  data.nominalVoltage = GetNodeValueDouble(electricalProp, <span class="stringliteral">"NominalVoltage"</span>);</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</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="l01337"></a><span class="lineno"> 1337</span>  data.activePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ActivePower"</span>);</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</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="l01339"></a><span class="lineno"> 1339</span>  data.reactivePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</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="l01341"></a><span class="lineno"> 1341</span>  data.haveMaxReactive = GetNodeValueInt(electricalProp, <span class="stringliteral">"HaveMaxReactive"</span>);</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  data.maxReactive = GetNodeValueDouble(electricalProp, <span class="stringliteral">"MaxReactive"</span>);</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</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="l01344"></a><span class="lineno"> 1344</span>  data.haveMinReactive = GetNodeValueInt(electricalProp, <span class="stringliteral">"HaveMinReactive"</span>);</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  data.minReactive = GetNodeValueDouble(electricalProp, <span class="stringliteral">"MinReactive"</span>);</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</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="l01347"></a><span class="lineno"> 1347</span>  data.useMachineBase = GetNodeValueInt(electricalProp, <span class="stringliteral">"UseMachineBase"</span>);</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="keyword">auto</span> fault = electricalProp->first_node(<span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  <span class="keywordflow">if</span>(!fault) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  data.positiveResistance = GetNodeValueDouble(fault, <span class="stringliteral">"PositiveResistance"</span>);</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  data.positiveReactance = GetNodeValueDouble(fault, <span class="stringliteral">"PositiveReactance"</span>);</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  data.negativeResistance = GetNodeValueDouble(fault, <span class="stringliteral">"NegativeResistance"</span>);</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  data.negativeReactance = GetNodeValueDouble(fault, <span class="stringliteral">"NegativeReactance"</span>);</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>  data.zeroResistance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroResistance"</span>);</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  data.zeroReactance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroReactance"</span>);</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>  data.groundResistance = GetNodeValueDouble(fault, <span class="stringliteral">"GroundResistance"</span>);</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>  data.groundReactance = GetNodeValueDouble(fault, <span class="stringliteral">"GroundReactance"</span>);</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>  data.groundNeutral = GetNodeValueInt(fault, <span class="stringliteral">"GroundNeutral"</span>);</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span> </div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>  <span class="keyword">auto</span> stability = electricalProp->first_node(<span class="stringliteral">"Stability"</span>);</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>  <span class="keywordflow">if</span>(!stability) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  data.plotSyncMachine = GetNodeValueInt(stability, <span class="stringliteral">"PlotSyncMachine"</span>);</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  data.inertia = GetNodeValueDouble(stability, <span class="stringliteral">"Inertia"</span>);</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  data.damping = GetNodeValueDouble(stability, <span class="stringliteral">"Damping"</span>);</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  data.useAVR = GetNodeValueInt(stability, <span class="stringliteral">"UseAVR"</span>);</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>  data.useSpeedGovernor = GetNodeValueInt(stability, <span class="stringliteral">"UseSpeedGovernor"</span>);</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>  data.armResistance = GetNodeValueDouble(stability, <span class="stringliteral">"ArmResistance"</span>);</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>  data.potierReactance = GetNodeValueDouble(stability, <span class="stringliteral">"PotierReactance"</span>);</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  data.satFactor = GetNodeValueDouble(stability, <span class="stringliteral">"SatFactor"</span>);</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  data.syncXd = GetNodeValueDouble(stability, <span class="stringliteral">"SyncXd"</span>);</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>  data.syncXq = GetNodeValueDouble(stability, <span class="stringliteral">"SyncXq"</span>);</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  data.transXd = GetNodeValueDouble(stability, <span class="stringliteral">"TransXd"</span>);</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  data.transXq = GetNodeValueDouble(stability, <span class="stringliteral">"TransXq"</span>);</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>  data.transTd0 = GetNodeValueDouble(stability, <span class="stringliteral">"TransTd0"</span>);</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  data.transTq0 = GetNodeValueDouble(stability, <span class="stringliteral">"TransTq0"</span>);</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>  data.subXd = GetNodeValueDouble(stability, <span class="stringliteral">"SubXd"</span>);</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>  data.subXq = GetNodeValueDouble(stability, <span class="stringliteral">"SubXq"</span>);</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>  data.subTd0 = GetNodeValueDouble(stability, <span class="stringliteral">"SubTd0"</span>);</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>  data.subTq0 = GetNodeValueDouble(stability, <span class="stringliteral">"SubTq0"</span>);</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span> </div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  <span class="keyword">auto</span> avr = stability->first_node(<span class="stringliteral">"AVR"</span>);</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>  <span class="keywordflow">if</span>(!avr) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</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="l01385"></a><span class="lineno"> 1385</span> </div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>  <span class="keyword">auto</span> speedGov = stability->first_node(<span class="stringliteral">"SpeedGovernor"</span>);</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>  <span class="keywordflow">if</span>(!speedGov) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</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="l01389"></a><span class="lineno"> 1389</span> </div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData;</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>  <span class="keyword">auto</span> switchingList = electricalProp->first_node(<span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  <span class="keywordflow">if</span>(!switchingList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>  <span class="keyword">auto</span> swNode = switchingList->first_node(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>  <span class="keywordflow">while</span>(swNode) {</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</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="l01396"></a><span class="lineno"> 1396</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="l01397"></a><span class="lineno"> 1397</span>  swNode = swNode->next_sibling(<span class="stringliteral">"Switching"</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>  syncGenerator-><a class="code" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">SetSwitchingData</a>(swData);</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> </div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>  syncGenerator->SetElectricalData(data);</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">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="l01404"></a><span class="lineno"> 1404</span> </div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>  elementList.push_back(syncGenerator);</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>  syncGeneratorList.push_back(syncGenerator);</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>  syncGeneratorNode = syncGeneratorNode->next_sibling(<span class="stringliteral">"SyncGenerator"</span>);</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> </div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  <span class="comment">//{ SyncMotor</span></div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  <span class="keyword">auto</span> syncMotorListNode = elementsNode->first_node(<span class="stringliteral">"SyncMotorList"</span>);</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  <span class="keywordflow">if</span>(!syncMotorListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  <span class="keyword">auto</span> syncMotorNode = syncMotorListNode->first_node(<span class="stringliteral">"SyncMotor"</span>);</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>  <span class="keywordflow">while</span>(syncMotorNode) {</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</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="l01416"></a><span class="lineno"> 1416</span> </div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>  <span class="keyword">auto</span> cadPropNode = syncMotorNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>  <span class="keyword">auto</span> nodePosition = cadPropNode->first_node(<span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePosition, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePosition, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>  <span class="keywordtype">int</span> parentID = GetNodeValueInt(cadPropNode, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>  <span class="keywordflow">if</span>(parentID == -1) {</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>  <span class="comment">// If the element has no parent, create a temporary one, remove and delete.</span></div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</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="l01434"></a><span class="lineno"> 1434</span>  syncMotor-><a class="code" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</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="l01436"></a><span class="lineno"> 1436</span>  syncMotor-><a class="code" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>  syncMotor-><a class="code" href="class_machines.html#a002d852ddd0d73502a6bd819b5545026">RemoveParent</a>(parent);</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>  <span class="keyword">delete</span> parent;</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>  <a class="code" href="class_bus.html">Bus</a>* parent = busList[parentID];</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>  syncMotor-><a class="code" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</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="l01443"></a><span class="lineno"> 1443</span>  syncMotor-><a class="code" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Move</a>(wxPoint2DDouble(posX, posY));</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>  syncMotor-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>  syncMotor-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</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>  <span class="keywordtype">int</span> numRot = angle / syncMotor-><a class="code" href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb">GetRotationAngle</a>();</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>  clockwise = <span class="keyword">false</span>;</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>  <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="l01455"></a><span class="lineno"> 1455</span> </div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>  <span class="keyword">auto</span> electricalProp = syncMotorNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span> </div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</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="l01460"></a><span class="lineno"> 1460</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = syncMotor->GetElectricalData();</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>  data.nominalPower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"NominalPower"</span>);</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</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="l01464"></a><span class="lineno"> 1464</span>  <span class="comment">// data.nominalVoltage = GetNodeValueDouble(electricalProp, "NominalVoltage");</span></div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>  <span class="comment">// data.nominalVoltageUnit = (ElectricalUnit)GetAttributeValueInt(electricalProp, "NominalVoltage", "UnitID");</span></div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>  data.activePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ActivePower"</span>);</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</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="l01468"></a><span class="lineno"> 1468</span>  data.reactivePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</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="l01470"></a><span class="lineno"> 1470</span>  data.haveMaxReactive = GetNodeValueInt(electricalProp, <span class="stringliteral">"HaveMaxReactive"</span>);</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>  data.maxReactive = GetNodeValueDouble(electricalProp, <span class="stringliteral">"MaxReactive"</span>);</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</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="l01473"></a><span class="lineno"> 1473</span>  data.haveMinReactive = GetNodeValueInt(electricalProp, <span class="stringliteral">"HaveMinReactive"</span>);</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>  data.minReactive = GetNodeValueDouble(electricalProp, <span class="stringliteral">"MinReactive"</span>);</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</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="l01476"></a><span class="lineno"> 1476</span>  data.useMachineBase = GetNodeValueInt(electricalProp, <span class="stringliteral">"UseMachineBase"</span>);</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span> </div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>  <span class="keyword">auto</span> fault = electricalProp->first_node(<span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>  <span class="keywordflow">if</span>(!fault) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>  data.positiveResistance = GetNodeValueDouble(fault, <span class="stringliteral">"PositiveResistance"</span>);</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>  data.positiveReactance = GetNodeValueDouble(fault, <span class="stringliteral">"PositiveReactance"</span>);</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>  data.negativeResistance = GetNodeValueDouble(fault, <span class="stringliteral">"NegativeResistance"</span>);</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>  data.negativeReactance = GetNodeValueDouble(fault, <span class="stringliteral">"NegativeReactance"</span>);</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>  data.zeroResistance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroResistance"</span>);</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>  data.zeroReactance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroReactance"</span>);</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>  data.groundResistance = GetNodeValueDouble(fault, <span class="stringliteral">"GroundResistance"</span>);</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>  data.groundReactance = GetNodeValueDouble(fault, <span class="stringliteral">"GroundReactance"</span>);</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>  data.groundNeutral = GetNodeValueInt(fault, <span class="stringliteral">"GroundNeutral"</span>);</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="comment">/*SwitchingData swData;</span></div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span> <span class="comment"> auto switchingList = electricalProp->first_node("SwitchingList");</span></div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span> <span class="comment"> if(!switchingList) return false;</span></div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span> <span class="comment"> auto swNode = switchingList->first_node("Switching");</span></div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span> <span class="comment"> while(swNode) {</span></div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span> <span class="comment"> swData.swType.push_back((SwitchingType)GetNodeValueInt(swNode, "Type"));</span></div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span> <span class="comment"> swData.swTime.push_back(GetNodeValueDouble(swNode, "Time"));</span></div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span> <span class="comment"> swNode = swNode->next_sibling("Switching");</span></div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span> <span class="comment"> }</span></div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span> <span class="comment"> syncMotor->SetSwitchingData(swData);*/</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>  syncMotor->SetElectricalData(data);</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>  elementList.push_back(syncMotor);</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>  syncMotorList.push_back(syncMotor);</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>  syncMotorNode = syncMotorNode->next_sibling(<span class="stringliteral">"SyncMotor"</span>);</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>  } <span class="comment">//}</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">//{ Transformer</span></div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>  <span class="keyword">auto</span> transformerListNode = elementsNode->first_node(<span class="stringliteral">"TransformerList"</span>);</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>  <span class="keywordflow">if</span>(!transformerListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>  <span class="keyword">auto</span> transfomerNode = transformerListNode->first_node(<span class="stringliteral">"Transfomer"</span>);</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>  <span class="keywordflow">while</span>(transfomerNode) {</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</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="l01513"></a><span class="lineno"> 1513</span> </div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>  <span class="keyword">auto</span> cadPropNode = transfomerNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span> </div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span> </div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>  <span class="comment">// Get nodes points</span></div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>  std::vector<wxPoint2DDouble> ptsList;</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>  <span class="keyword">auto</span> nodePosList = cadPropNode->first_node(<span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>  <span class="keywordflow">if</span>(!nodePosList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>  <span class="keyword">auto</span> nodePos = nodePosList->first_node(<span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>  <span class="keywordflow">while</span>(nodePos) {</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>  ptsList.push_back(wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>  nodePos = nodePos->next_sibling(<span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>  }</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span> </div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>  <span class="comment">// Get parents IDs</span></div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>  <span class="keyword">auto</span> parentIDList = cadPropNode->first_node(<span class="stringliteral">"ParentIDList"</span>);</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>  <span class="keywordflow">if</span>(!parentIDList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>  <span class="keyword">auto</span> parentNode = parentIDList->first_node(<span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>  <span class="keywordtype">long</span> parentID[2] = {-1, -1};</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>  <span class="keywordflow">while</span>(parentNode) {</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>  <span class="keywordtype">long</span> index = 0;</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>  wxString(parentNode->first_attribute(<span class="stringliteral">"ID"</span>)->value()).ToLong(&index);</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>  wxString(parentNode->value()).ToCLong(&parentID[index]);</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>  parentNode = parentNode->next_sibling(<span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>  }</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span> </div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>  <span class="comment">// Set parents (if have)</span></div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>  <a class="code" href="class_bus.html">Bus</a> *parent1, *parent2;</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>  <span class="keywordflow">if</span>(parentID[0] == -1) {</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>  parent1 = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(ptsList[0]);</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>  transformer-><a class="code" href="class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6">AddParent</a>(parent1, ptsList[0]);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>  parent1 = busList[parentID[0]];</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>  transformer-><a class="code" href="class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6">AddParent</a>(parent1, ptsList[0]);</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>  }</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>  <span class="keywordflow">if</span>(parentID[1] == -1) {</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</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="l01560"></a><span class="lineno"> 1560</span>  transformer-><a class="code" href="class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6">AddParent</a>(parent2, ptsList[ptsList.size() - 1]);</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>  parent2 = busList[parentID[1]];</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>  transformer-><a class="code" href="class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6">AddParent</a>(parent2, ptsList[ptsList.size() - 1]);</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>  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="l01567"></a><span class="lineno"> 1567</span>  transformer-><a class="code" href="class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span> </div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>  <span class="keywordflow">if</span>(parentID[0] == -1) {</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>  transformer-><a class="code" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">RemoveParent</a>(parent1);</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>  <span class="keyword">delete</span> parent1;</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>  }</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>  <span class="keywordflow">if</span>(parentID[1] == -1) {</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>  transformer-><a class="code" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">RemoveParent</a>(parent2);</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>  <span class="keyword">delete</span> parent2;</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>  }</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span> </div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>  transformer-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>  transformer-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span> </div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</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="l01582"></a><span class="lineno"> 1582</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>  clockwise = <span class="keyword">false</span>;</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>  }</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</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="l01588"></a><span class="lineno"> 1588</span> </div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>  <span class="keyword">auto</span> electricalProp = transfomerNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span> </div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</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="l01593"></a><span class="lineno"> 1593</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = transformer->GetElectricalData();</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>  data.primaryNominalVoltage = GetNodeValueDouble(electricalProp, <span class="stringliteral">"PrimaryNominalVoltage"</span>);</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>  data.primaryNominalVoltageUnit =</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</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="l01598"></a><span class="lineno"> 1598</span>  data.secondaryNominalVoltage = GetNodeValueDouble(electricalProp, <span class="stringliteral">"SecondaryNominalVoltage"</span>);</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>  data.secondaryNominalVoltageUnit =</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</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="l01601"></a><span class="lineno"> 1601</span>  data.nominalPower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"NominalPower"</span>);</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</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="l01603"></a><span class="lineno"> 1603</span>  data.resistance = GetNodeValueDouble(electricalProp, <span class="stringliteral">"Resistance"</span>);</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</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="l01605"></a><span class="lineno"> 1605</span>  data.indReactance = GetNodeValueDouble(electricalProp, <span class="stringliteral">"IndReactance"</span>);</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</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="l01607"></a><span class="lineno"> 1607</span>  data.connection = (TransformerConnection)GetNodeValueInt(electricalProp, <span class="stringliteral">"Connection"</span>);</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>  data.turnsRatio = GetNodeValueDouble(electricalProp, <span class="stringliteral">"TurnsRatio"</span>);</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>  data.phaseShift = GetNodeValueDouble(electricalProp, <span class="stringliteral">"PhaseShift"</span>);</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>  data.useTransformerPower = GetNodeValueInt(electricalProp, <span class="stringliteral">"UseTransfomerPower"</span>);</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span> </div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>  <span class="keyword">auto</span> fault = electricalProp->first_node(<span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>  data.zeroResistance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroResistance"</span>);</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>  data.zeroIndReactance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroIndReactance"</span>);</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>  data.primaryGrndResistance = GetNodeValueDouble(fault, <span class="stringliteral">"PrimaryGrndResistance"</span>);</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>  data.primaryGrndReactance = GetNodeValueDouble(fault, <span class="stringliteral">"PrimaryGrndReactance"</span>);</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>  data.secondaryGrndResistance = GetNodeValueDouble(fault, <span class="stringliteral">"SecondaryGrndResistance"</span>);</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>  data.secondaryGrndReactance = GetNodeValueDouble(fault, <span class="stringliteral">"SecondaryGrndReactance"</span>);</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span> </div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData;</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>  <span class="keyword">auto</span> switchingList = electricalProp->first_node(<span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>  <span class="keywordflow">if</span>(!switchingList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>  <span class="keyword">auto</span> swNode = switchingList->first_node(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>  <span class="keywordflow">while</span>(swNode) {</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</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="l01626"></a><span class="lineno"> 1626</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="l01627"></a><span class="lineno"> 1627</span>  swNode = swNode->next_sibling(<span class="stringliteral">"Switching"</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>  transformer-><a class="code" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">SetSwitchingData</a>(swData);</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span> </div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>  transformer->SetElectricaData(data);</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> </div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</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="l01634"></a><span class="lineno"> 1634</span> </div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>  elementList.push_back(transformer);</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>  transformerList.push_back(transformer);</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>  transfomerNode = transfomerNode->next_sibling(<span class="stringliteral">"Transfomer"</span>);</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span> </div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>  m_workspace->SetElementList(elementList);</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span> </div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>  <span class="comment">//{ Text</span></div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>  <span class="keyword">auto</span> textListNode = elementsNode->first_node(<span class="stringliteral">"TextList"</span>);</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>  <span class="keywordflow">if</span>(!textListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>  <span class="keyword">auto</span> textNode = textListNode->first_node(<span class="stringliteral">"Text"</span>);</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>  <span class="keywordflow">while</span>(textNode) {</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>  <span class="keyword">auto</span> cadPropNode = textNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span> </div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</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="l01659"></a><span class="lineno"> 1659</span> </div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>  text-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>  text-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span> </div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>  <span class="keyword">auto</span> textProperties = textNode->first_node(<span class="stringliteral">"TextProperties"</span>);</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>  <span class="keywordflow">if</span>(!textProperties) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span> </div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>  text->SetElementType((ElementType)GetNodeValueDouble(textProperties, <span class="stringliteral">"ElementType"</span>));</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>  text->SetDataType((DataType)GetNodeValueDouble(textProperties, <span class="stringliteral">"DataType"</span>));</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</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="l01669"></a><span class="lineno"> 1669</span>  text->SetDirection(GetNodeValueDouble(textProperties, <span class="stringliteral">"Direction"</span>));</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>  text->SetDecimalPlaces(GetNodeValueDouble(textProperties, <span class="stringliteral">"DecimalPlaces"</span>));</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span> </div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>  text->SetElementNumber(GetNodeValueInt(textProperties, <span class="stringliteral">"ElementNumber"</span>));</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>  <span class="keywordflow">switch</span>(text->GetElementType()) {</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>  <span class="keywordflow">case</span> TYPE_NONE:</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>  <span class="keywordflow">case</span> TYPE_BUS: {</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>  <a class="code" href="class_bus.html">Bus</a>* bus = busList[text->GetElementNumber()];</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>  text->SetElement(bus);</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>  <span class="keywordflow">case</span> TYPE_CAPACITOR: {</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = capacitorList[text->GetElementNumber()];</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>  text->SetElement(capacitor);</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>  <span class="keywordflow">case</span> TYPE_IND_MOTOR: {</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = indMotorList[text->GetElementNumber()];</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>  text->SetElement(indMotor);</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = inductorList[text->GetElementNumber()];</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>  text->SetElement(inductor);</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>  <a class="code" href="class_line.html">Line</a>* line = lineList[text->GetElementNumber()];</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>  text->SetElement(line);</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>  <span class="keywordflow">case</span> TYPE_LOAD: {</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>  <a class="code" href="class_load.html">Load</a>* load = loadList[text->GetElementNumber()];</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>  text->SetElement(load);</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>  <span class="keywordflow">case</span> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = syncGeneratorList[text->GetElementNumber()];</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>  text->SetElement(syncGenerator);</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>  <span class="keywordflow">case</span> TYPE_SYNC_MOTOR: {</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = syncMotorList[text->GetElementNumber()];</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>  text->SetElement(syncMotor);</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = transformerList[text->GetElementNumber()];</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>  text->SetElement(transformer);</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>  }</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span> </div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</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="l01715"></a><span class="lineno"> 1715</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>  clockwise = <span class="keyword">false</span>;</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>  }</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</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="l01721"></a><span class="lineno"> 1721</span> </div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>  textList.push_back(text);</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>  textNode = textNode->next_sibling(<span class="stringliteral">"Text"</span>);</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span> </div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>  m_workspace->SetTextList(textList);</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</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> <span class="keywordtype">void</span> FileHanding::SaveControl(wxFileName path)</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span> {</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>  <span class="comment">// Same process present in SaveProject():</span></div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>  std::ofstream writeProjectsFile(path.GetFullPath());</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>  writeProjectsFile.close();</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span> </div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>  rapidxml::xml_document<> doc;</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>  rapidxml::file<> xmlFile(path.GetFullPath().mb_str());</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>  doc.parse<0>(xmlFile.data());</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span> </div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>  rapidxml::xml_node<>* decl = doc.allocate_node(rapidxml::node_declaration);</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</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="l01742"></a><span class="lineno"> 1742</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="l01743"></a><span class="lineno"> 1743</span>  decl->append_attribute(ver);</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>  decl->append_attribute(encoding);</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>  doc.append_node(decl);</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>  rapidxml::xml_node<>* rootNode = doc.allocate_node(rapidxml::node_element, <span class="stringliteral">"Control"</span>);</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>  doc.append_node(rootNode);</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span> </div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>  rapidxml::xml_node<>* projectNameNode = AppendNode(doc, rootNode, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>  SetNodeValue(doc, projectNameNode, path.GetName());</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>  <span class="keyword">auto</span> elementsNode = AppendNode(doc, rootNode, <span class="stringliteral">"ControlElements"</span>);</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>  SaveControlElements(doc, elementsNode);</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>  std::ofstream writeXML(path.GetFullPath());</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>  writeXML << doc;</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>  writeXML.close();</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span> }</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span> </div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span> <span class="keywordtype">bool</span> FileHanding::OpenControl(wxFileName path,</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>  std::vector<ControlElement*>& ctrlElementList,</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>  std::vector<ConnectionLine*>& ctrlConnectionList)</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_document<> doc;</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>  rapidxml::file<> xmlFile(path.GetFullPath().mb_str());</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>  doc.parse<0>(xmlFile.data());</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span> </div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>  <span class="keyword">auto</span> projectNode = doc.first_node(<span class="stringliteral">"Control"</span>);</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>  <span class="keywordflow">if</span>(!projectNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>  <span class="comment">// auto nameNode = projectNode->first_node("Name");</span></div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>  <span class="comment">// if(!nameNode) return false;</span></div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>  <span class="comment">// m_controlEditor->SetName(nameNode->value());</span></div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span> </div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>  <span class="comment">// Open elements</span></div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>  <span class="keyword">auto</span> elementsNode = projectNode->first_node(<span class="stringliteral">"ControlElements"</span>);</div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>  <span class="keywordflow">if</span>(!elementsNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span> </div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>  <span class="comment">// auto elementsNode = AppendNode(doc, rootNode, "ControlElements");</span></div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</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="l01781"></a><span class="lineno"> 1781</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="l01782"></a><span class="lineno"> 1782</span>  ctrlElementList = ctrlElementContainer->GetControlElementsList();</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>  ctrlConnectionList = ctrlElementContainer->GetConnectionLineList();</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</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> </div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span> <span class="keywordtype">void</span> FileHanding::SaveControlElements(rapidxml::xml_document<>& doc,</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>  rapidxml::xml_node<>* elementsNode,</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* ctrlContainer)</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span> {</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>  <span class="keywordflow">if</span>(!ctrlContainer) {</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>  ctrlContainer = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>  ctrlContainer->FillContainer(m_controlEditor);</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</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">//{ Constant</span></div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>  <span class="keyword">auto</span> constsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"ConstantList"</span>);</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>  <span class="keyword">auto</span> constList = ctrlContainer->GetConstantList();</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</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="l01800"></a><span class="lineno"> 1800</span>  <a class="code" href="class_constant.html">Constant</a>* constant = *it;</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>  <span class="keyword">auto</span> constNode = AppendNode(doc, constsNode, <span class="stringliteral">"Constant"</span>);</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</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="l01803"></a><span class="lineno"> 1803</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, constNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>  SetNodeValue(doc, posX, constant-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>  SetNodeValue(doc, posY, constant-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>  SetNodeValue(doc, width, constant-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>  SetNodeValue(doc, height, constant-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>  SetNodeValue(doc, angle, constant-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span> </div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, constNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>  SaveControlNodes(doc, nodeList, constant->GetNodeList());</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span> </div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>  <span class="comment">// Control properties</span></div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>  <span class="keyword">auto</span> value = AppendNode(doc, constNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>  SetNodeValue(doc, value, constant->GetValue());</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span> </div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>  <span class="comment">//{ Exponential</span></div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>  <span class="keyword">auto</span> expsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"ExponentialList"</span>);</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>  <span class="keyword">auto</span> expList = ctrlContainer->GetExponentialList();</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</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="l01830"></a><span class="lineno"> 1830</span>  <a class="code" href="class_exponential.html">Exponential</a>* exponential = *it;</div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>  <span class="keyword">auto</span> expNode = AppendNode(doc, expsNode, <span class="stringliteral">"Exponential"</span>);</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</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="l01833"></a><span class="lineno"> 1833</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, expNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>  SetNodeValue(doc, posX, exponential-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>  SetNodeValue(doc, posY, exponential-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>  SetNodeValue(doc, width, exponential-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>  SetNodeValue(doc, height, exponential-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>  SetNodeValue(doc, angle, exponential-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span> </div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, expNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>  SaveControlNodes(doc, nodeList, exponential->GetNodeList());</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span> </div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>  <span class="comment">// Control properties</span></div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>  <span class="keywordtype">double</span> a, b;</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>  exponential->GetValues(a, b);</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>  <span class="keyword">auto</span> value = AppendNode(doc, expNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>  <span class="keyword">auto</span> aValue = AppendNode(doc, value, <span class="stringliteral">"A"</span>);</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>  SetNodeValue(doc, aValue, a);</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>  <span class="keyword">auto</span> bValue = AppendNode(doc, value, <span class="stringliteral">"B"</span>);</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>  SetNodeValue(doc, bValue, b);</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span> </div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>  <span class="comment">//{ Gain</span></div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>  <span class="keyword">auto</span> gainsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"GainList"</span>);</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>  <span class="keyword">auto</span> gainList = ctrlContainer->GetGainList();</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</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="l01865"></a><span class="lineno"> 1865</span>  <a class="code" href="class_gain.html">Gain</a>* gain = *it;</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>  <span class="keyword">auto</span> gainNode = AppendNode(doc, gainsNode, <span class="stringliteral">"Gain"</span>);</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</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="l01868"></a><span class="lineno"> 1868</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, gainNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>  SetNodeValue(doc, posX, gain-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>  SetNodeValue(doc, posY, gain-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>  SetNodeValue(doc, width, gain-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>  SetNodeValue(doc, height, gain-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>  SetNodeValue(doc, angle, gain-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span> </div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, gainNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>  SaveControlNodes(doc, nodeList, gain->GetNodeList());</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span> </div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>  <span class="comment">// Control properties</span></div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>  <span class="keyword">auto</span> value = AppendNode(doc, gainNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>  SetNodeValue(doc, value, gain->GetValue());</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span> </div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>  <span class="comment">//{ IO</span></div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>  <span class="keyword">auto</span> iosNode = AppendNode(doc, elementsNode, <span class="stringliteral">"IOList"</span>);</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>  <span class="keyword">auto</span> ioList = ctrlContainer->GetIOControlList();</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</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="l01895"></a><span class="lineno"> 1895</span>  <a class="code" href="class_i_o_control.html">IOControl</a>* io = *it;</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>  <span class="keyword">auto</span> ioNode = AppendNode(doc, iosNode, <span class="stringliteral">"IO"</span>);</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</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="l01898"></a><span class="lineno"> 1898</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, ioNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>  SetNodeValue(doc, posX, io-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>  SetNodeValue(doc, posY, io-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>  SetNodeValue(doc, width, io-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>  SetNodeValue(doc, height, io-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>  SetNodeValue(doc, angle, io-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span> </div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, ioNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>  SaveControlNodes(doc, nodeList, io->GetNodeList());</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span> </div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>  <span class="comment">// Control properties</span></div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>  <span class="keyword">auto</span> value = AppendNode(doc, ioNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>  SetNodeValue(doc, value, io->GetValue());</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>  <span class="keyword">auto</span> ioFlags = AppendNode(doc, ioNode, <span class="stringliteral">"IOFlags"</span>);</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>  SetNodeValue(doc, ioFlags, io->GetIOFlags());</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span> </div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>  <span class="comment">//{ Limiter</span></div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>  <span class="keyword">auto</span> limitersNode = AppendNode(doc, elementsNode, <span class="stringliteral">"LimiterList"</span>);</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>  <span class="keyword">auto</span> limiterList = ctrlContainer->GetLimiterList();</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</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="l01927"></a><span class="lineno"> 1927</span>  <a class="code" href="class_limiter.html">Limiter</a>* limiter = *it;</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>  <span class="keyword">auto</span> limiterNode = AppendNode(doc, limitersNode, <span class="stringliteral">"Limiter"</span>);</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</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="l01930"></a><span class="lineno"> 1930</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, limiterNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>  SetNodeValue(doc, posX, limiter-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>  SetNodeValue(doc, posY, limiter-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>  SetNodeValue(doc, width, limiter-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>  SetNodeValue(doc, height, limiter-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>  SetNodeValue(doc, angle, limiter-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span> </div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, limiterNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>  SaveControlNodes(doc, nodeList, limiter->GetNodeList());</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span> </div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>  <span class="comment">// Control properties</span></div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>  <span class="keyword">auto</span> upLimit = AppendNode(doc, limiterNode, <span class="stringliteral">"UpperLimit"</span>);</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>  SetNodeValue(doc, upLimit, limiter->GetUpLimit());</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>  <span class="keyword">auto</span> lowLimit = AppendNode(doc, limiterNode, <span class="stringliteral">"LowerLimit"</span>);</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>  SetNodeValue(doc, lowLimit, limiter->GetLowLimit());</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span> </div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>  <span class="comment">//{ Multiplier</span></div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>  <span class="keyword">auto</span> multipliersNode = AppendNode(doc, elementsNode, <span class="stringliteral">"MultiplierList"</span>);</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>  <span class="keyword">auto</span> multiplierList = ctrlContainer->GetMultiplierList();</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</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="l01959"></a><span class="lineno"> 1959</span>  <a class="code" href="class_multiplier.html">Multiplier</a>* multiplier = *it;</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>  <span class="keyword">auto</span> multiplierNode = AppendNode(doc, multipliersNode, <span class="stringliteral">"Multiplier"</span>);</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</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="l01962"></a><span class="lineno"> 1962</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, multiplierNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>  SetNodeValue(doc, posX, multiplier-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>  SetNodeValue(doc, posY, multiplier-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>  SetNodeValue(doc, width, multiplier-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>  SetNodeValue(doc, height, multiplier-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>  SetNodeValue(doc, angle, multiplier-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span> </div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, multiplierNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>  SaveControlNodes(doc, nodeList, multiplier->GetNodeList());</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span> </div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>  <span class="comment">//{ Rate limiter</span></div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>  <span class="keyword">auto</span> rateLimitersNode = AppendNode(doc, elementsNode, <span class="stringliteral">"RateLimiterList"</span>);</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>  <span class="keyword">auto</span> rateLimiterList = ctrlContainer->GetRateLimiterList();</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</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="l01985"></a><span class="lineno"> 1985</span>  <a class="code" href="class_rate_limiter.html">RateLimiter</a>* rateLimiter = *it;</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>  <span class="keyword">auto</span> rateLimiterNode = AppendNode(doc, rateLimitersNode, <span class="stringliteral">"RateLimiter"</span>);</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</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="l01988"></a><span class="lineno"> 1988</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, rateLimiterNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>  SetNodeValue(doc, posX, rateLimiter-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>  SetNodeValue(doc, posY, rateLimiter-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>  SetNodeValue(doc, width, rateLimiter-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>  SetNodeValue(doc, height, rateLimiter-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>  SetNodeValue(doc, angle, rateLimiter-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span> </div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, rateLimiterNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>  SaveControlNodes(doc, nodeList, rateLimiter->GetNodeList());</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span> </div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>  <span class="comment">// Control properties</span></div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>  <span class="keyword">auto</span> upLimit = AppendNode(doc, rateLimiterNode, <span class="stringliteral">"UpperLimit"</span>);</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>  SetNodeValue(doc, upLimit, rateLimiter->GetUpLimit());</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>  <span class="keyword">auto</span> lowLimit = AppendNode(doc, rateLimiterNode, <span class="stringliteral">"LowerLimit"</span>);</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>  SetNodeValue(doc, lowLimit, rateLimiter->GetLowLimit());</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>  } <span class="comment">//}</span></div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span> </div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>  <span class="comment">//{ Sum</span></div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>  <span class="keyword">auto</span> sumsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"SumList"</span>);</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>  <span class="keyword">auto</span> sumList = ctrlContainer->GetSumList();</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</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="l02017"></a><span class="lineno"> 2017</span>  <a class="code" href="class_sum.html">Sum</a>* sum = *it;</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>  <span class="keyword">auto</span> sumNode = AppendNode(doc, sumsNode, <span class="stringliteral">"Sum"</span>);</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</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="l02020"></a><span class="lineno"> 2020</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, sumNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>  SetNodeValue(doc, posX, sum-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>  SetNodeValue(doc, posY, sum-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>  SetNodeValue(doc, width, sum-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>  SetNodeValue(doc, height, sum-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>  SetNodeValue(doc, angle, sum-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span> </div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, sumNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>  SaveControlNodes(doc, nodeList, sum->GetNodeList());</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span> </div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>  <span class="comment">// Control properties</span></div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>  <span class="keyword">auto</span> signsNode = AppendNode(doc, sumNode, <span class="stringliteral">"Signs"</span>);</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>  <span class="keyword">auto</span> signs = sum->GetSignalList();</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)signs.size(); ++i) {</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>  <span class="keyword">auto</span> value = AppendNode(doc, signsNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>  SetNodeValue(doc, value, static_cast<int>(signs[i]));</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>  }</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span> </div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>  } <span class="comment">//}</span></div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span> </div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>  <span class="comment">//{ Transfer function</span></div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>  <span class="keyword">auto</span> tfsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"TransferFunctionList"</span>);</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>  <span class="keyword">auto</span> tfList = ctrlContainer->GetTFList();</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</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="l02052"></a><span class="lineno"> 2052</span>  <a class="code" href="class_transfer_function.html">TransferFunction</a>* tf = *it;</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>  <span class="keyword">auto</span> tfNode = AppendNode(doc, tfsNode, <span class="stringliteral">"TransferFunction"</span>);</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</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="l02055"></a><span class="lineno"> 2055</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, tfNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>  SetNodeValue(doc, posX, tf-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>  SetNodeValue(doc, posY, tf-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>  SetNodeValue(doc, width, tf-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>  SetNodeValue(doc, height, tf-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>  SetNodeValue(doc, angle, tf-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span> </div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, tfNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>  SaveControlNodes(doc, nodeList, tf->GetNodeList());</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span> </div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>  <span class="comment">// Control properties</span></div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>  <span class="keyword">auto</span> numeratorNode = AppendNode(doc, tfNode, <span class="stringliteral">"Numerator"</span>);</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>  <span class="keyword">auto</span> numerator = tf->GetNumerator();</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)numerator.size(); ++i) {</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>  <span class="keyword">auto</span> value = AppendNode(doc, numeratorNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>  SetNodeValue(doc, value, numerator[i]);</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>  }</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>  <span class="keyword">auto</span> denominatorNode = AppendNode(doc, tfNode, <span class="stringliteral">"Denominator"</span>);</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>  <span class="keyword">auto</span> denominator = tf->GetDenominator();</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)denominator.size(); ++i) {</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>  <span class="keyword">auto</span> value = AppendNode(doc, denominatorNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>  SetNodeValue(doc, value, denominator[i]);</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">//}</span></div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span> </div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>  <span class="comment">//{ Connection line</span></div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>  <span class="keyword">auto</span> cLinesNode = AppendNode(doc, elementsNode, <span class="stringliteral">"ConnectionList"</span>);</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>  <span class="keyword">auto</span> connLineList = ctrlContainer->GetConnectionLineList();</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</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="l02092"></a><span class="lineno"> 2092</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>  <span class="keyword">auto</span> cLineNode = AppendNode(doc, cLinesNode, <span class="stringliteral">"Connection"</span>);</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</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="l02095"></a><span class="lineno"> 2095</span> </div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>  <span class="comment">// CAD properties</span></div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, cLineNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>  <span class="keyword">auto</span> offset = AppendNode(doc, cadProp, <span class="stringliteral">"Offset"</span>);</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>  SetNodeValue(doc, offset, cLine->GetOffset());</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span> </div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>  <span class="comment">// Parent list</span></div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>  <span class="keyword">auto</span> parentsNode = AppendNode(doc, cLineNode, <span class="stringliteral">"ParentList"</span>);</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>  <span class="keyword">auto</span> parentList = cLine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>  <span class="keywordtype">int</span> nodeIndex = 0;</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</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="l02106"></a><span class="lineno"> 2106</span>  <a class="code" href="class_element.html">Element</a>* parent = *itP;</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>  <span class="keyword">auto</span> parentNode = AppendNode(doc, parentsNode, <span class="stringliteral">"Parent"</span>);</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>  <span class="keyword">auto</span> elementID = AppendNode(doc, parentNode, <span class="stringliteral">"ElementID"</span>);</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>  SetNodeValue(doc, elementID, parent-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>());</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>  <span class="keyword">auto</span> nodeID = AppendNode(doc, parentNode, <span class="stringliteral">"NodeID"</span>);</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>  SetNodeValue(doc, nodeID, cLine->GetNodeList()[nodeIndex]->GetID());</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>  nodeIndex++;</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>  }</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span> </div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>  <span class="keyword">auto</span> parentLine = AppendNode(doc, cLineNode, <span class="stringliteral">"ParentLine"</span>);</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>  <span class="keywordflow">if</span>(cLine->GetParentLine()) {</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* parent = cLine->GetParentLine();</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</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="l02119"></a><span class="lineno"> 2119</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>  SetNodeAttribute(doc, parentLine, <span class="stringliteral">"ID"</span>, -1);</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>  }</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>  } <span class="comment">//}</span></div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span> }</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span> </div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span> <span class="keywordtype">bool</span> FileHanding::OpenControlElements(rapidxml::xml_document<>& doc,</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>  rapidxml::xml_node<>* elementsNode,</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* ctrlContainer)</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span> {</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>  std::vector<ControlElement*> elementList;</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>  std::vector<ConnectionLine*> connectionList;</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="comment">//{ Constant</span></div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>  <span class="keyword">auto</span> constListNode = elementsNode->first_node(<span class="stringliteral">"ConstantList"</span>);</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>  <span class="keywordflow">if</span>(!constListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>  <span class="keyword">auto</span> constNode = constListNode->first_node(<span class="stringliteral">"Constant"</span>);</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>  <span class="keywordflow">while</span>(constNode) {</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(constNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</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="l02139"></a><span class="lineno"> 2139</span> </div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>  <span class="keyword">auto</span> cadPropNode = constNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span> </div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span> </div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>  <span class="keywordtype">double</span> value = GetNodeValueDouble(constNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span> </div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>  constant-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>  constant-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>  constant-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>  constant-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</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="l02158"></a><span class="lineno"> 2158</span> </div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>  constant->SetValue(value);</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span> </div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</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="l02163"></a><span class="lineno"> 2163</span> </div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>  constant->SetNodeList(nodeVector);</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>  constant->UpdatePoints();</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>  elementList.push_back(constant);</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>  constNode = constNode->next_sibling(<span class="stringliteral">"Constant"</span>);</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>  } <span class="comment">//}</span></div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span> </div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>  <span class="comment">//{ Exponential</span></div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>  <span class="keyword">auto</span> expListNode = elementsNode->first_node(<span class="stringliteral">"ExponentialList"</span>);</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>  <span class="keywordflow">if</span>(!expListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>  <span class="keyword">auto</span> expNode = expListNode->first_node(<span class="stringliteral">"Exponential"</span>);</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>  <span class="keywordflow">while</span>(expNode) {</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(expNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</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="l02178"></a><span class="lineno"> 2178</span> </div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>  <span class="keyword">auto</span> cadPropNode = expNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span> </div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span> </div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>  <span class="keyword">auto</span> value = expNode->first_node(<span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>  <span class="keywordtype">double</span> a = GetNodeValueDouble(value, <span class="stringliteral">"A"</span>);</div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>  <span class="keywordtype">double</span> b = GetNodeValueDouble(value, <span class="stringliteral">"B"</span>);</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span> </div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>  exponential-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>  exponential-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>  exponential-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>  exponential-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</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="l02199"></a><span class="lineno"> 2199</span> </div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>  exponential->SetValues(a, b);</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span> </div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</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="l02204"></a><span class="lineno"> 2204</span> </div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>  exponential->SetNodeList(nodeVector);</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>  exponential->UpdatePoints();</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>  elementList.push_back(exponential);</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span> </div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>  expNode = expNode->next_sibling(<span class="stringliteral">"Exponential"</span>);</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>  } <span class="comment">//}</span></div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span> </div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>  <span class="comment">//{ Gain</span></div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>  <span class="keyword">auto</span> gainListNode = elementsNode->first_node(<span class="stringliteral">"GainList"</span>);</div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>  <span class="keywordflow">if</span>(!gainListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>  <span class="keyword">auto</span> gainNode = gainListNode->first_node(<span class="stringliteral">"Gain"</span>);</div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>  <span class="keywordflow">while</span>(gainNode) {</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(gainNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</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="l02219"></a><span class="lineno"> 2219</span> </div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>  <span class="keyword">auto</span> cadPropNode = gainNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span> </div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span> </div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>  <span class="keywordtype">double</span> value = GetNodeValueDouble(gainNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span> </div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>  gain-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>  gain-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>  gain-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>  gain-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>  gain->SetValue(value);</div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</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="l02239"></a><span class="lineno"> 2239</span> </div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</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="l02242"></a><span class="lineno"> 2242</span> </div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>  gain->SetNodeList(nodeVector);</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>  gain->UpdatePoints();</div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>  elementList.push_back(gain);</div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span> </div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>  gainNode = gainNode->next_sibling(<span class="stringliteral">"Gain"</span>);</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>  }</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>  <span class="comment">//}</span></div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span> </div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>  <span class="comment">//{ IO</span></div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>  <span class="keyword">auto</span> ioListNode = elementsNode->first_node(<span class="stringliteral">"IOList"</span>);</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>  <span class="keywordflow">if</span>(!ioListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>  <span class="keyword">auto</span> ioNode = ioListNode->first_node(<span class="stringliteral">"IO"</span>);</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>  <span class="keywordflow">while</span>(ioNode) {</div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(ioNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span> </div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>  <span class="keyword">auto</span> cadPropNode = ioNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span> </div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span> </div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</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="l02271"></a><span class="lineno"> 2271</span> </div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</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="l02273"></a><span class="lineno"> 2273</span>  <span class="keywordtype">int</span> ioFlags = GetNodeValueInt(ioNode, <span class="stringliteral">"IOFlags"</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>  <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="l02276"></a><span class="lineno"> 2276</span> </div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>  io-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>  io-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>  io-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>  io-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>  io->SetValue(value);</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</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="l02283"></a><span class="lineno"> 2283</span>  io->SetNodeList(nodeVector);</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>  io->UpdatePoints();</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>  elementList.push_back(io);</div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span> </div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>  ioNode = ioNode->next_sibling(<span class="stringliteral">"IO"</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>  <span class="comment">//}</span></div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span> </div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>  <span class="comment">//{ Limiter</span></div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>  <span class="keyword">auto</span> limiterListNode = elementsNode->first_node(<span class="stringliteral">"LimiterList"</span>);</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>  <span class="keywordflow">if</span>(!limiterListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>  <span class="keyword">auto</span> limiterNode = limiterListNode->first_node(<span class="stringliteral">"Limiter"</span>);</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>  <span class="keywordflow">while</span>(limiterNode) {</div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(limiterNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</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="l02298"></a><span class="lineno"> 2298</span> </div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>  <span class="keyword">auto</span> cadPropNode = limiterNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span> </div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span> </div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>  <span class="keywordtype">double</span> upLimit = GetNodeValueDouble(limiterNode, <span class="stringliteral">"UpperLimit"</span>);</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>  <span class="keywordtype">double</span> lowLimit = GetNodeValueDouble(limiterNode, <span class="stringliteral">"LowerLimit"</span>);</div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span> </div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</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="l02315"></a><span class="lineno"> 2315</span> </div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>  limiter-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>  limiter-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>  limiter-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>  limiter-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>  limiter->SetUpLimit(upLimit);</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>  limiter->SetLowLimit(lowLimit);</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span> </div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</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="l02324"></a><span class="lineno"> 2324</span>  limiter->SetNodeList(nodeVector);</div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>  limiter->UpdatePoints();</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>  elementList.push_back(limiter);</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span> </div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>  limiterNode = limiterNode->next_sibling(<span class="stringliteral">"Limiter"</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>  <span class="comment">//}</span></div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span> </div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>  <span class="comment">//{ Multiplier</span></div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>  <span class="keyword">auto</span> multiplierListNode = elementsNode->first_node(<span class="stringliteral">"MultiplierList"</span>);</div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>  <span class="keywordflow">if</span>(!multiplierListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>  <span class="keyword">auto</span> multiplierNode = multiplierListNode->first_node(<span class="stringliteral">"Multiplier"</span>);</div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>  <span class="keywordflow">while</span>(multiplierNode) {</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(multiplierNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</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="l02339"></a><span class="lineno"> 2339</span> </div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>  <span class="keyword">auto</span> cadPropNode = multiplierNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span> </div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span> </div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</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="l02353"></a><span class="lineno"> 2353</span> </div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>  multiplier-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>  multiplier-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>  multiplier-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>  multiplier-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span> </div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</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="l02360"></a><span class="lineno"> 2360</span>  multiplier->SetNodeList(nodeVector);</div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>  multiplier->UpdatePoints();</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>  elementList.push_back(multiplier);</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span> </div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>  multiplierNode = multiplierNode->next_sibling(<span class="stringliteral">"Multiplier"</span>);</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>  }</div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>  <span class="comment">//}</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>  <span class="comment">//{ Rate limiter</span></div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>  <span class="keyword">auto</span> rateLimiterListNode = elementsNode->first_node(<span class="stringliteral">"RateLimiterList"</span>);</div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>  <span class="keywordflow">if</span>(!rateLimiterListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>  <span class="keyword">auto</span> rateLimiterNode = rateLimiterListNode->first_node(<span class="stringliteral">"RateLimiter"</span>);</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>  <span class="keywordflow">while</span>(rateLimiterNode) {</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(rateLimiterNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</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="l02375"></a><span class="lineno"> 2375</span> </div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>  <span class="keyword">auto</span> cadPropNode = rateLimiterNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span> </div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span> </div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>  <span class="keywordtype">double</span> upLimit = GetNodeValueDouble(rateLimiterNode, <span class="stringliteral">"UpperLimit"</span>);</div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>  <span class="keywordtype">double</span> lowLimit = GetNodeValueDouble(rateLimiterNode, <span class="stringliteral">"LowerLimit"</span>);</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span> </div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</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="l02392"></a><span class="lineno"> 2392</span> </div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>  limiter-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>  limiter-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>  limiter-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>  limiter-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>  limiter->SetUpLimit(upLimit);</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>  limiter->SetLowLimit(lowLimit);</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span> </div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</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="l02401"></a><span class="lineno"> 2401</span>  limiter->SetNodeList(nodeVector);</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>  limiter->UpdatePoints();</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>  elementList.push_back(limiter);</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span> </div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>  rateLimiterNode = rateLimiterNode->next_sibling(<span class="stringliteral">"RateLimiter"</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>  <span class="comment">//}</span></div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span> </div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>  <span class="comment">//{ Sum</span></div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>  <span class="keyword">auto</span> sumListNode = elementsNode->first_node(<span class="stringliteral">"SumList"</span>);</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>  <span class="keywordflow">if</span>(!sumListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>  <span class="keyword">auto</span> sumNode = sumListNode->first_node(<span class="stringliteral">"Sum"</span>);</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>  <span class="keywordflow">while</span>(sumNode) {</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(sumNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</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="l02416"></a><span class="lineno"> 2416</span> </div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>  <span class="keyword">auto</span> cadPropNode = sumNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span> </div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span> </div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>  std::vector<Sum::Signal> signs;</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>  <span class="keyword">auto</span> signsNode = sumNode->first_node(<span class="stringliteral">"Signs"</span>);</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>  <span class="keyword">auto</span> sign = signsNode->first_node(<span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>  <span class="keywordflow">while</span>(sign) {</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>  <span class="keywordtype">long</span> value;</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>  wxString(sign->value()).ToCLong(&value);</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>  signs.push_back(static_cast<Sum::Signal>(value));</div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>  sign = sign->next_sibling(<span class="stringliteral">"Value"</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>  sum->SetSignalList(signs);</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span> </div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</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="l02441"></a><span class="lineno"> 2441</span> </div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>  sum-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>  sum-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>  sum-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>  sum-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span> </div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</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="l02448"></a><span class="lineno"> 2448</span>  sum->SetNodeList(nodeVector);</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>  sum->UpdatePoints();</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>  elementList.push_back(sum);</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span> </div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>  sumNode = sumNode->next_sibling(<span class="stringliteral">"Sum"</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>  <span class="comment">//}</span></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>  <span class="comment">//{ Transfer function</span></div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>  <span class="keyword">auto</span> tfListNode = elementsNode->first_node(<span class="stringliteral">"TransferFunctionList"</span>);</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>  <span class="keywordflow">if</span>(!tfListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>  <span class="keyword">auto</span> tfNode = tfListNode->first_node(<span class="stringliteral">"TransferFunction"</span>);</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>  <span class="keywordflow">while</span>(tfNode) {</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(tfNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</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="l02463"></a><span class="lineno"> 2463</span> </div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>  <span class="keyword">auto</span> cadPropNode = tfNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span> </div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span> </div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>  std::vector<double> numerator, denominator;</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>  <span class="keyword">auto</span> numeratorNode = tfNode->first_node(<span class="stringliteral">"Numerator"</span>);</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>  <span class="keyword">auto</span> nValue = numeratorNode->first_node(<span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>  <span class="keywordflow">while</span>(nValue) {</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>  <span class="keywordtype">double</span> value = 0.0;</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>  wxString(nValue->value()).ToCDouble(&value);</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>  numerator.push_back(value);</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>  nValue = nValue->next_sibling(<span class="stringliteral">"Value"</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> denominatorNode = tfNode->first_node(<span class="stringliteral">"Denominator"</span>);</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>  <span class="keyword">auto</span> dValue = denominatorNode->first_node(<span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>  <span class="keywordflow">while</span>(dValue) {</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>  <span class="keywordtype">double</span> value = 0.0;</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>  wxString(dValue->value()).ToCDouble(&value);</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>  denominator.push_back(value);</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>  dValue = dValue->next_sibling(<span class="stringliteral">"Value"</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> </div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</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="l02495"></a><span class="lineno"> 2495</span> </div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>  tf-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>  tf-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>  tf-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>  tf-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</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>  tf->SetNumerator(numerator);</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>  tf->SetDenominator(denominator);</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span> </div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</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="l02505"></a><span class="lineno"> 2505</span>  tf->SetNodeList(nodeVector);</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span> </div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>  tf->UpdateTFText();</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>  elementList.push_back(tf);</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span> </div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>  tfNode = tfNode->next_sibling(<span class="stringliteral">"TransferFunction"</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>  <span class="comment">//}</span></div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span> </div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>  <span class="comment">// Connection line</span></div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>  <span class="keyword">auto</span> connectionListNode = elementsNode->first_node(<span class="stringliteral">"ConnectionList"</span>);</div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>  <span class="keywordflow">if</span>(!connectionListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>  <span class="keyword">auto</span> connNode = connectionListNode->first_node(<span class="stringliteral">"Connection"</span>);</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>  <span class="keywordflow">while</span>(connNode) {</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = NULL;</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(connNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span> </div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>  <span class="keyword">auto</span> cadPropNode = connNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>  <span class="keywordtype">double</span> offset = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Offset"</span>);</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span> </div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>  <span class="keyword">auto</span> parentList = connNode->first_node(<span class="stringliteral">"ParentList"</span>);</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>  <span class="keywordflow">if</span>(!parentList) <span class="keywordflow">return</span> <span class="keyword">false</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="keyword">auto</span> parentNode = parentList->first_node(<span class="stringliteral">"Parent"</span>);</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>  <span class="keywordtype">bool</span> firstNode = <span class="keyword">true</span>;</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>  <span class="keywordflow">while</span>(parentNode) {</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>  <span class="keywordtype">int</span> elementID = GetNodeValueInt(parentNode, <span class="stringliteral">"ElementID"</span>);</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>  <span class="keywordtype">int</span> nodeID = GetNodeValueInt(parentNode, <span class="stringliteral">"NodeID"</span>);</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span> </div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = GetControlElementFromID(elementList, elementID);</div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>  <a class="code" href="class_node.html">Node</a>* node = element->GetNodeList()[nodeID];</div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span> </div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</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="l02540"></a><span class="lineno"> 2540</span>  cLine-><a class="code" href="class_element.html#a569178e9138490a981511a644536c0f9">AddParent</a>(element);</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>  element-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(cLine);</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>  <span class="keywordflow">if</span>(!firstNode) cLine->AppendNode(node, element);</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="keywordflow">if</span>(firstNode) firstNode = <span class="keyword">false</span>;</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>  parentNode = parentNode->next_sibling(<span class="stringliteral">"Parent"</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> </div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>  <span class="keyword">auto</span> parentLine = connNode->first_node(<span class="stringliteral">"ParentLine"</span>);</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>  <span class="keywordflow">if</span>(!parentLine) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>  <span class="keywordtype">int</span> parentLineID = GetAttributeValueInt(parentLine, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>  <span class="keywordflow">if</span>(parentLineID != -1) {</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</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="l02553"></a><span class="lineno"> 2553</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* parent = *it;</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>() == parentLineID) {</div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>  cLine->SetParentLine(parent);</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(cLine);</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>  }</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>  }</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>  }</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>  cLine->SetOffset(offset);</div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>  cLine->UpdatePoints();</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>  connectionList.push_back(cLine);</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>  connNode = connNode->next_sibling(<span class="stringliteral">"Connection"</span>);</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>  }</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>  ctrlContainer->FillContainer(elementList, connectionList);</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span> }</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span> </div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span> <span class="keywordtype">void</span> FileHanding::SaveControlNodes(rapidxml::xml_document<>& doc,</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>  rapidxml::xml_node<>* nodesN,</div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>  std::vector<Node*> nodeList)</div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span> {</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = 0;</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</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="l02576"></a><span class="lineno"> 2576</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>  node->SetID(<span class="keywordtype">id</span>);</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>  <span class="keyword">auto</span> nodeN = AppendNode(doc, nodesN, <span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>  SetNodeAttribute(doc, nodeN, <span class="stringliteral">"ID"</span>, <span class="keywordtype">id</span>);</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>  <span class="keyword">auto</span> nodePosition = AppendNode(doc, nodeN, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>  <span class="keyword">auto</span> posNodeX = AppendNode(doc, nodePosition, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>  SetNodeValue(doc, posNodeX, node->GetPosition().m_x);</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>  <span class="keyword">auto</span> posNodeY = AppendNode(doc, nodePosition, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>  SetNodeValue(doc, posNodeY, node->GetPosition().m_y);</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>  <span class="keyword">auto</span> angle = AppendNode(doc, nodeN, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>  SetNodeValue(doc, angle, node->GetAngle());</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>  <span class="keyword">auto</span> nodeType = AppendNode(doc, nodeN, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>  SetNodeValue(doc, nodeType, node->GetNodeType());</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>  <span class="keywordtype">id</span>++;</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> }</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span> </div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</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="l02594"></a><span class="lineno"> 2594</span> {</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</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="l02596"></a><span class="lineno"> 2596</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</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="l02598"></a><span class="lineno"> 2598</span>  }</div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span> }</div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span> </div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span> <span class="keywordtype">bool</span> FileHanding::OpenControlNodeList(rapidxml::xml_node<>* elementNode, std::vector<Node*>& nodeVector)</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span> {</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>  <span class="keyword">auto</span> nodeList = elementNode->first_node(<span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>  <span class="keywordflow">if</span>(!nodeList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>  <span class="keyword">auto</span> nodeN = nodeList->first_node(<span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>  <span class="keywordflow">while</span>(nodeN) {</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>  <span class="keyword">auto</span> nodePosition = nodeN->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePosition, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePosition, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>  <span class="keywordtype">double</span> nodeAngle = GetNodeValueDouble(nodeN, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>  Node::NodeType nodeType = (Node::NodeType)GetNodeValueInt(nodeN, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</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="l02614"></a><span class="lineno"> 2614</span>  node->SetAngle(nodeAngle);</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>  nodeVector.push_back(node);</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>  nodeN = nodeN->next_sibling(<span class="stringliteral">"Node"</span>);</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>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span> }</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> rapidxml::xml_node<>* FileHanding::AppendNode(rapidxml::xml_document<>& doc,</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>  rapidxml::xml_node<>* parentNode,</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* name,</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>  rapidxml::node_type nodeType)</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span> {</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>  rapidxml::xml_node<>* node = doc.allocate_node(nodeType, name);</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>  parentNode->append_node(node);</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>  <span class="keywordflow">return</span> node;</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span> }</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span> </div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span> <span class="keywordtype">void</span> FileHanding::SetNodeValue(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, wxString value)</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span> {</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>  node->value(doc.allocate_string(value.mb_str()));</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> </div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</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="l02637"></a><span class="lineno"> 2637</span> {</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>  node->value(doc.allocate_string(wxString::Format(<span class="stringliteral">"%d"</span>, value).mb_str()));</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span> }</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span> </div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</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="l02642"></a><span class="lineno"> 2642</span> {</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>  node->value(doc.allocate_string(wxString::FromCDouble(value, 13).mb_str()));</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span> }</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span> </div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span> <span class="keywordtype">void</span> FileHanding::SetNodeAttribute(rapidxml::xml_document<>& doc,</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>  rapidxml::xml_node<>* node,</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName,</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>  wxString value)</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span> {</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>  node->append_attribute(doc.allocate_attribute(atrName, doc.allocate_string(value.mb_str())));</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> </div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span> <span class="keywordtype">void</span> FileHanding::SetNodeAttribute(rapidxml::xml_document<>& doc,</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>  rapidxml::xml_node<>* node,</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName,</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>  <span class="keywordtype">int</span> value)</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span> {</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>  node->append_attribute(</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>  doc.allocate_attribute(atrName, doc.allocate_string(wxString::Format(<span class="stringliteral">"%d"</span>, value).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>  <span class="keywordtype">double</span> 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(</div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>  doc.allocate_attribute(atrName, doc.allocate_string(wxString::FromCDouble(value, 13).mb_str())));</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> </div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</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="l02673"></a><span class="lineno"> 2673</span> {</div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>  <span class="keywordtype">double</span> dValue = 0.0;</div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>  <span class="keyword">auto</span> node = parent->first_node(nodeName);</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>  <span class="keywordflow">if</span>(node) wxString(node->value()).ToCDouble(&dValue);</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>  <span class="keywordflow">return</span> dValue;</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span> }</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span> </div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</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="l02683"></a><span class="lineno"> 2683</span> {</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>  <span class="keywordtype">long</span> iValue = -1;</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>  <span class="keyword">auto</span> node = parent->first_node(nodeName);</div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>  <span class="keywordflow">if</span>(node) wxString(node->value()).ToCLong(&iValue);</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="keywordflow">return</span> (<span class="keywordtype">int</span>)iValue;</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> </div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</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="l02693"></a><span class="lineno"> 2693</span> {</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>  <span class="keywordtype">long</span> iValue = -1;</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>  <span class="keyword">auto</span> node = parent->first_node(nodeName);</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>  <span class="keywordflow">if</span>(node) {</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>  <span class="keyword">auto</span> atr = node->first_attribute(atrName);</div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>  <span class="keywordflow">if</span>(atr) wxString(atr->value()).ToCLong(&iValue);</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>  }</div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>  <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)iValue;</div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span> }</div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span> </div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</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="l02706"></a><span class="lineno"> 2706</span> {</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>  <span class="keywordtype">long</span> intValue;</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>  <span class="keyword">auto</span> atr = node->first_attribute(atrName);</div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>  <span class="keywordflow">if</span>(!atr) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>  wxString(atr->value()).ToCLong(&intValue);</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>  <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)intValue;</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</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#l00201">Element.h:201</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#l00048">Text.h:48</a></div></div> -<div class="ttc" id="class_multiplier_html"><div class="ttname"><a href="class_multiplier.html">Multiplier</a></div><div class="ttdef"><b>Definition:</b> <a href="_multiplier_8h_source.html#l00008">Multiplier.h:8</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#l00078">PowerElement.h:78</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#l00129">Machines.cpp:129</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#l00008">IndMotor.h:8</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#l00008">SyncGenerator.h:8</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#l00090">Branch.cpp:90</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#l00088">Element.h:88</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#l00168">ElectricCalculation.h:168</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#l00145">Text.cpp:145</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#l00009">Sum.h:9</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#l00517">Element.h:517</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#l00129">Element.h:129</a></div></div> -<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00011">Gain.h:11</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#l00038">PowerElement.h:38</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#l00098">Capacitor.cpp:98</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</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#l00138">ElectricCalculation.h:138</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#l00218">Element.cpp:218</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#l00179">Transformer.cpp:179</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#l00057">Shunt.cpp:57</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#l00104">Load.cpp:104</a></div></div> -<div class="ttc" id="class_limiter_html"><div class="ttname"><a href="class_limiter.html">Limiter</a></div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8h_source.html#l00008">Limiter.h:8</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#l00096">Inductor.cpp:96</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#l00008">Inductor.h:8</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#l00110">SyncGenerator.h:110</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#l00100">ControlElement.cpp:100</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#l00094">Machines.cpp:94</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#l00128">ElectricCalculation.h:128</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#l00007">Bus.h:7</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#l00077">PowerElement.h:77</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#l00011">PowerElement.h:11</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="ttdef"><b>Definition:</b> <a href="_i_o_control_8h_source.html#l00011">IOControl.h:11</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#l00191">PowerElement.h:191</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#l00158">ElectricCalculation.h:158</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#l00195">Transformer.cpp:195</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#l00143">ElectricCalculation.h:143</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#l00234">Element.h:234</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#l00045">Bus.h:45</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#l00007">Inductor.cpp:7</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#l00219">Element.h:219</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#l00076">PowerElement.h:76</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#l00015">Shunt.cpp:15</a></div></div> -<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00008">Exponential.h:8</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#l00135">Element.h:135</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#l00195">Element.h:195</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#l00119">Line.cpp:119</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#l00010">Element.cpp:10</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#l00133">ElectricCalculation.h:133</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#l00008">Machines.cpp:8</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#l00333">Element.cpp:333</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#l00035">Line.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="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00023">Load.h:23</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#l00183">Element.h:183</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#l00225">Element.h:225</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="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00008">RateLimiter.h:8</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="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00020">ControlElementContainer.h:20</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#l00007">Line.h:7</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#l00153">ElectricCalculation.h:153</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#l00013">Load.h:13</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#l00110">SyncMotor.h:110</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#l00215">Machines.cpp:215</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#l00472">Line.cpp:472</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#l00167">Bus.cpp:167</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#l00165">PowerElement.h:165</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="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00006">ConnectionLine.h:6</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#l00050">Shunt.cpp:50</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#l00052">PowerElement.h:52</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#l00011">TransferFunction.h:11</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#l00017">IndMotor.h:17</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#l00067">ControlEditor.h:67</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#l00022">Transformer.cpp:22</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#l00163">ElectricCalculation.h:163</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#l00270">Element.h:270</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#l00014">Capacitor.h:14</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#l00249">Transformer.cpp:249</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#l00006">Load.cpp:6</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#l00148">Machines.cpp:148</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#l00171">Element.h:171</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#l00014">Inductor.h:14</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#l00008">ElectricCalculation.cpp:8</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#l00053">ControlElement.h:53</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#l00049">ElectricCalculation.h:49</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#l00020">Transformer.h:20</a></div></div> -<div class="ttc" id="class_constant_html"><div class="ttname"><a href="class_constant.html">Constant</a></div><div class="ttdef"><b>Definition:</b> <a href="_constant_8h_source.html#l00011">Constant.h:11</a></div></div> -<div class="ttc" id="class_workspace_html"><div class="ttname"><a href="class_workspace.html">Workspace</a></div><div class="ttdef"><b>Definition:</b> <a href="_workspace_8h_source.html#l00056">Workspace.h:56</a></div></div> -<div class="ttc" id="class_power_element_html_a08d2e84b91ab7443b20a9d7eb6ab441f"><div class="ttname"><a href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">PowerElement::SetSwitchingData</a></div><div class="ttdeci">virtual void SetSwitchingData(SwitchingData data)</div><div class="ttdoc">Set the switching data of the element. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00160">PowerElement.h:160</a></div></div> -<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#l00207">Element.h:207</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#l00148">ElectricCalculation.h:148</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#l00007">Capacitor.cpp:7</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#l00054">Transformer.h:54</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#l00111">Element.h:111</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#l00008">Capacitor.h:8</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#l00008">SyncMotor.h:8</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"> * (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_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_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_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="_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> +<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="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="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_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_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="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_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> +<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="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="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_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="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_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_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="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_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> +<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_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="_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_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> +<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="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_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> +<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_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_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_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_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="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> +<div class="ttc" id="class_power_element_html_a08d2e84b91ab7443b20a9d7eb6ab441f"><div class="ttname"><a href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">PowerElement::SetSwitchingData</a></div><div class="ttdeci">virtual void SetSwitchingData(SwitchingData data)</div><div class="ttdoc">Set the switching data of the element. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00177">PowerElement.h:177</a></div></div> +<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_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> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_file_handing_8h.html b/docs/doxygen/html/_file_handing_8h.html new file mode 100644 index 0000000..12d632c --- /dev/null +++ b/docs/doxygen/html/_file_handing_8h.html @@ -0,0 +1,125 @@ +<!-- 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/FileHanding.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('_file_handing_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">FileHanding.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include <wx/string.h></code><br /> +<code>#include <fstream></code><br /> +<code>#include <sstream></code><br /> +<code>#include "<a class="el" href="_workspace_8h_source.html">Workspace.h</a>"</code><br /> +<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 "rapidXML/rapidxml.hpp"</code><br /> +<code>#include "rapidXML/rapidxml_print.hpp"</code><br /> +<code>#include "rapidXML/rapidxml_utils.hpp"</code><br /> +</div> +<p><a href="_file_handing_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_file_handing.html">FileHanding</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Save and opens the projects created on disk. <a href="class_file_handing.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="_file_handing_8h.html">FileHanding.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/_file_handing_8h_source.html b/docs/doxygen/html/_file_handing_8h_source.html index 7bfa9ba..4f8f3ab 100644 --- a/docs/doxygen/html/_file_handing_8h_source.html +++ b/docs/doxygen/html/_file_handing_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,18 +88,21 @@ $(document).ready(function(){initNavTree('_file_handing_8h_source.html','');}); <div class="title">FileHanding.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="preprocessor">#ifndef FILEHANDING_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define FILEHANDING_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <wx/string.h></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <fstream></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <sstream></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 "Workspace.h"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "ControlEditor.h"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include "ControlElementContainer.h"</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "Text.h"</span></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="preprocessor">#include "rapidXML/rapidxml.hpp"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// Modified: http://stackoverflow.com/questions/14113923/rapidxml-print-header-has-undefined-methods</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "rapidXML/rapidxml_print.hpp"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "rapidXML/rapidxml_utils.hpp"</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="class_file_handing.html"> 19</a></span> <span class="keyword">class </span><a class="code" href="class_file_handing.html">FileHanding</a></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="keyword">public</span>:</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <a class="code" href="class_file_handing.html">FileHanding</a>();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</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="l00024"></a><span class="lineno"> 24</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="l00025"></a><span class="lineno"> 25</span>  ~<a class="code" href="class_file_handing.html">FileHanding</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="keywordtype">void</span> SetWorkspace(<a class="code" href="class_workspace.html">Workspace</a>* workspace) { m_workspace = workspace; }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</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="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">void</span> SaveProject(wxFileName path);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">bool</span> OpenProject(wxFileName path);</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="keywordtype">void</span> SaveControl(wxFileName path);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">bool</span> OpenControl(wxFileName path, std::vector<ControlElement*>& ctrlElementList, std::vector<ConnectionLine*>& ctrlConnectionList);</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">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="l00037"></a><span class="lineno"> 37</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="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>  <a class="code" href="class_workspace.html">Workspace</a>* m_workspace = NULL;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="class_control_editor.html">ControlEditor</a>* m_controlEditor = NULL;</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>  rapidxml::xml_node<>* AppendNode(rapidxml::xml_document<>& doc,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  rapidxml::xml_node<>* parentNode,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* name,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  rapidxml::node_type nodeType = rapidxml::node_element);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">void</span> SetNodeValue(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, wxString value);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</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="l00049"></a><span class="lineno"> 49</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="l00050"></a><span class="lineno"> 50</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="l00051"></a><span class="lineno"> 51</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="l00052"></a><span class="lineno"> 52</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="l00053"></a><span class="lineno"> 53</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="l00054"></a><span class="lineno"> 54</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="l00055"></a><span class="lineno"> 55</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="l00056"></a><span class="lineno"> 56</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="l00057"></a><span class="lineno"> 57</span>  </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</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="l00059"></a><span class="lineno"> 59</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="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">bool</span> OpenControlNodeList(rapidxml::xml_node<>* elementNode, std::vector<Node*>& nodeVector);</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 // FILEHANDING_H</span></div><div class="ttc" id="class_file_handing_html"><div class="ttname"><a href="class_file_handing.html">FileHanding</a></div><div class="ttdef"><b>Definition:</b> <a href="_file_handing_8h_source.html#l00019">FileHanding.h:19</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 "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> +<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="class_control_element_container_html"><div class="ttname"><a href="class_control_element_container.html">ControlElementContainer</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00020">ControlElementContainer.h:20</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#l00067">ControlEditor.h:67</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#l00053">ControlElement.h:53</a></div></div> -<div class="ttc" id="class_workspace_html"><div class="ttname"><a href="class_workspace.html">Workspace</a></div><div class="ttdef"><b>Definition:</b> <a href="_workspace_8h_source.html#l00056">Workspace.h:56</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="_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> +<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 --> <!-- 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>FileHanding.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_file_handing_8h.html">FileHanding.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/_formulas.tex b/docs/doxygen/html/_formulas.tex new file mode 100644 index 0000000..7aacf93 --- /dev/null +++ b/docs/doxygen/html/_formulas.tex @@ -0,0 +1,8 @@ +\documentclass{article} +\usepackage{epsfig} +\pagestyle{empty} +\begin{document} +$ output = A\cdot e^{B\cdot input} $ +\pagebreak + +\end{document} diff --git a/docs/doxygen/html/_gain_8cpp_source.html b/docs/doxygen/html/_gain_8cpp_source.html index 32d8803..853f21f 100644 --- a/docs/doxygen/html/_gain_8cpp_source.html +++ b/docs/doxygen/html/_gain_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,16 +88,18 @@ $(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="preprocessor">#include "Gain.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "GainForm.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</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="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  m_triPts.resize(3);</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  SetValue(m_value);</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>  nodeIn->StartMove(m_position);</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</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="l00011"></a><span class="lineno"> 11</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_nodeList.push_back(nodeIn);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> }</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> Gain::~Gain() {}</div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="class_gain.html#a42f48bfdfb3d6f593fcc599504dd2264"> 18</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="l00019"></a><span class="lineno"> 19</span> <span class="keyword"></span>{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  std::vector<wxPoint2DDouble> m_triSelectedPts;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_triSelectedPts.push_back(m_triPts[0] - wxPoint2DDouble(borderSize / 2, borderSize / 1.5));</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_triSelectedPts.push_back(m_triPts[1] - wxPoint2DDouble(borderSize / 2, -borderSize / 1.5));</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_triSelectedPts.push_back(m_triPts[2] - wxPoint2DDouble(-borderSize, 0));</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_triSelectedPts.push_back(m_triPts[0] - wxPoint2DDouble(borderSize / 1.5, borderSize / 2));</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_triSelectedPts.push_back(m_triPts[1] - wxPoint2DDouble(-borderSize / 1.5, borderSize / 2));</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_triSelectedPts.push_back(m_triPts[2] - wxPoint2DDouble(0, -borderSize));</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_triSelectedPts.push_back(m_triPts[0] - wxPoint2DDouble(borderSize, 0));</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_triSelectedPts.push_back(m_triPts[1] - wxPoint2DDouble(-borderSize / 2, borderSize / 1.5));</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_triSelectedPts.push_back(m_triPts[2] - wxPoint2DDouble(-borderSize / 2, -borderSize / 1.5));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_triSelectedPts.push_back(m_triPts[0] - wxPoint2DDouble(0, borderSize));</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_triSelectedPts.push_back(m_triPts[1] - wxPoint2DDouble(-borderSize / 1.5, -borderSize / 2));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_triSelectedPts.push_back(m_triPts[2] - wxPoint2DDouble(borderSize / 1.5, -borderSize / 2));</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>  DrawTriangle(m_triSelectedPts);</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>  glLineWidth(1.0);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  DrawTriangle(m_triPts);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  DrawTriangle(m_triPts, GL_LINE_LOOP);</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">// Plot number.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_glStringValue->bind();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span>(m_angle == 0.0)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_glStringValue->render(m_position.m_x - m_width / 2 + m_glStringValue->getWidth() / 2 + 2 + m_borderSize,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_position.m_y);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_glStringValue->render(m_position.m_x,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_position.m_y - m_height / 2 + m_glStringValue->getheight() / 2 + 2 + m_borderSize);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_glStringValue->render(m_position.m_x + m_width / 2 - m_glStringValue->getWidth() / 2 - 2 - m_borderSize,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_position.m_y);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_glStringValue->render(m_position.m_x,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_position.m_y + m_height / 2 - m_glStringValue->getheight() / 2 - 2 - m_borderSize);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  glDisable(GL_TEXTURE_2D);</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>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  DrawNodes();</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_gain.html#a6b98027cbf545302867ad75f7ab84b93"> 71</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="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_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="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span>(form->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  form->Destroy();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> <span class="keyword">true</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>  form->Destroy();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <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> </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="class_gain.html#ae19d739112c3aad30c58bdfd98f442e7"> 82</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="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>(clockwise)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_angle += 90.0;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">else</span></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">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_angle = 0.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_angle < 0)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_angle = 270.0;</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>  UpdatePoints();</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="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="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  node->Rotate(clockwise);</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> Gain::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 = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span>(std::abs(m_value) > 1e3 || std::abs(m_value) < 1e-3)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  text = wxString::Format(<span class="stringliteral">"%g"</span>, m_value);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  text = StringFromDouble(m_value);</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>  wxFont font(m_fontSize, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  wxScreenDC dc;</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">if</span>(m_glStringValue) {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">delete</span> m_glStringValue;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_glStringValue = NULL;</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_glStringValue = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string.html">wxGLString</a>(text);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_glStringValue->setFont(font);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_glStringValue->consolidate(&dc);</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_width = m_glStringValue->getWidth() + 18 + 2 * m_borderSize;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_height = m_glStringValue->getheight() + 18 + 2 * m_borderSize;</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>(m_width > m_height)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_height = m_width;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_width = m_height;</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>  SetPosition(m_position); <span class="comment">// Update rectangle.</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>  UpdatePoints();</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">void</span> Gain::UpdatePoints()</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_nodeList.size() != 0) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  m_triPts[0] = m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize, m_borderSize);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  m_triPts[1] = m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize, -m_borderSize);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  m_triPts[2] = m_position + wxPoint2DDouble(m_width / 2 - m_borderSize, 0);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(m_width / 2 - 2, 0));</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  m_triPts[0] = m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize, m_borderSize);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  m_triPts[1] = m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize, m_borderSize);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  m_triPts[2] = m_position + wxPoint2DDouble(0, m_height / 2 - m_borderSize);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2 - 2));</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 == 180.0) {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_triPts[0] = m_position + wxPoint2DDouble(-m_width / 2 + m_borderSize, 0);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_triPts[1] = m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize, m_borderSize);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  m_triPts[2] = m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize, -m_borderSize);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2 + 2, 0));</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_triPts[0] = m_position + wxPoint2DDouble(0, -m_height / 2 + m_borderSize);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_triPts[1] = m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize, -m_borderSize);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  m_triPts[2] = m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize, -m_borderSize);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2 + 2));</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> </div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="class_gain.html#aa303bcc736ac5fad1f89c6cc87e859db"> 165</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="l00166"></a><span class="lineno"> 166</span> {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  SetPosition(m_movePos + position - m_moveStartPt);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  UpdatePoints();</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> Gain::Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</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_output = input * m_value;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">return</span> <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> </div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="class_gain.html#a489572e289935d7256c037af682b9351"> 177</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="l00178"></a><span class="lineno"> 178</span> {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</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="l00180"></a><span class="lineno"> 180</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  m_glStringValue = NULL;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  SetValue(m_value);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</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#l00165">Gain.cpp:165</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#l00088">Element.h:88</a></div></div> -<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00011">Gain.h:11</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</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#l00177">Gain.cpp:177</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#l00071">Gain.cpp:71</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#l00082">Gain.cpp:82</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="ttdef"><b>Definition:</b> <a href="_gain_form_8h_source.html#l00007">GainForm.h:7</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#l00018">Gain.cpp:18</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#l00053">ControlElement.h:53</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"> 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="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_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_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> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_gain_8h.html b/docs/doxygen/html/_gain_8h.html new file mode 100644 index 0000000..0f255cc --- /dev/null +++ b/docs/doxygen/html/_gain_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/Gain.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('_gain_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">Gain.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="_gain_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_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="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="_gain_8h.html">Gain.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/_gain_8h_source.html b/docs/doxygen/html/_gain_8h_source.html index 26b1090..41069c4 100644 --- a/docs/doxygen/html/_gain_8h_source.html +++ b/docs/doxygen/html/_gain_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,24 +88,25 @@ $(document).ready(function(){initNavTree('_gain_8h_source.html','');}); <div class="title">Gain.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="preprocessor">#ifndef GAIN_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define GAIN_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ControlElement.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <wx/dcscreen.h></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "wxGLString.h"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="keyword">class </span><a class="code" href="class_gain_form.html">GainForm</a>;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="class_gain.html"> 11</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="l00012"></a><span class="lineno"> 12</span> {</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</span>  ~<a class="code" href="class_gain.html">Gain</a>();</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</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="l00018"></a><span class="lineno"><a class="line" href="class_gain.html#a9d80d49f5123cf4859bf15a251e3923f"> 18</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="l00019"></a><span class="lineno"><a class="line" href="class_gain.html#a8768490f9cb20a6a8c9148d1c893e980"> 19</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="l00020"></a><span class="lineno"> 20</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="l00021"></a><span class="lineno"> 21</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="l00022"></a><span class="lineno"> 22</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="l00023"></a><span class="lineno"> 23</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText() { SetValue(m_value); }</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetValue(<span class="keywordtype">double</span> value);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</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="l00026"></a><span class="lineno"> 26</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</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">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="l00029"></a><span class="lineno"> 29</span>  </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</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="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">double</span> m_value = 1.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>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glStringValue = NULL;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">int</span> m_fontSize = 10;</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<wxPoint2DDouble> m_triPts;</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="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#l00165">Gain.cpp:165</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#l00088">Element.h:88</a></div></div> -<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00011">Gain.h:11</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#l00177">Gain.cpp:177</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#l00019">Gain.h:19</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#l00071">Gain.cpp:71</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#l00082">Gain.cpp:82</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="ttdef"><b>Definition:</b> <a href="_gain_form_8h_source.html#l00007">GainForm.h:7</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#l00018">Gain.h:18</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#l00018">Gain.cpp:18</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#l00053">ControlElement.h:53</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="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> +<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_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_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> </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>Gain.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_gain_8h.html">Gain.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/_gain_form_8cpp_source.html b/docs/doxygen/html/_gain_form_8cpp_source.html index ea14794..92381b2 100644 --- a/docs/doxygen/html/_gain_form_8cpp_source.html +++ b/docs/doxygen/html/_gain_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,8 +88,10 @@ $(document).ready(function(){initNavTree('_gain_form_8cpp_source.html','');}); <div class="title">GainForm.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 "GainForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "Gain.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</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="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  SetSize(GetBestSize());</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>  m_parent = parent;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  m_gain = gain;</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>  m_textCtrlValue->SetValue(m_gain->StringFromDouble(m_gain->GetValue()));</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> }</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> GainForm::~GainForm() {}</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="keywordtype">void</span> GainForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> {</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</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> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="keywordtype">bool</span> GainForm::ValidateData()</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="keywordtype">double</span> value;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">if</span>(!m_gain->DoubleFromString(<span class="keyword">this</span>, m_textCtrlValue->GetValue(), value,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Gain value\"."</span>)))</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">return</span> <span class="keyword">false</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_gain->SetValue(value);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> }</div><div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00011">Gain.h:11</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_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_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 --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_gain_form_8h.html b/docs/doxygen/html/_gain_form_8h.html new file mode 100644 index 0000000..d7db441 --- /dev/null +++ b/docs/doxygen/html/_gain_form_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/GainForm.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('_gain_form_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">GainForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +</div> +<p><a href="_gain_form_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_gain_form.html">GainForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the gain control data. <a href="class_gain_form.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="_gain_form_8h.html">GainForm.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/_gain_form_8h_source.html b/docs/doxygen/html/_gain_form_8h_source.html index f61892a..e0eb282 100644 --- a/docs/doxygen/html/_gain_form_8h_source.html +++ b/docs/doxygen/html/_gain_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,15 @@ $(document).ready(function(){initNavTree('_gain_form_8h_source.html','');}); <div class="title">GainForm.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="preprocessor">#ifndef GAINFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define GAINFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="keyword">class </span><a class="code" href="class_gain.html">Gain</a>;</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="class_gain_form.html"> 7</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="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</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="l00011"></a><span class="lineno"> 11</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_gain_form.html">GainForm</a>();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</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>  wxWindow* m_parent;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <a class="code" href="class_gain.html">Gain</a>* m_gain;</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">#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="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00011">Gain.h:11</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#l00036">Gain.h:36</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="ttdef"><b>Definition:</b> <a href="_gain_form_8h_source.html#l00007">GainForm.h:7</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 --> </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>GainForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_gain_form_8h.html">GainForm.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/_general_properties_form_8cpp_source.html b/docs/doxygen/html/_general_properties_form_8cpp_source.html index e3e569f..0eacf1c 100644 --- a/docs/doxygen/html/_general_properties_form_8cpp_source.html +++ b/docs/doxygen/html/_general_properties_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,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="preprocessor">#include "GeneralPropertiesForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "PropertiesData.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> GeneralPropertiesForm::GeneralPropertiesForm(wxWindow* parent, <a class="code" href="class_properties_data.html">PropertiesData</a>* properties)</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  : <a class="code" href="class_general_properties_form_base.html">GeneralPropertiesFormBase</a>(parent)</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  m_properties = properties;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  <span class="keyword">auto</span> data = m_properties->GetGeneralPropertiesData();</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <span class="comment">// Clear the choices and rebuild to set the correct translations.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  m_choiceLanguage->Clear();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_choiceLanguage->Insert(_(<span class="stringliteral">"English"</span>), 0);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_choiceLanguage->Insert(_(<span class="stringliteral">"Portuguese"</span>), 1);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  m_choiceTheme->Clear();</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_choiceTheme->Insert(_(<span class="stringliteral">"Light"</span>), 0);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_choiceTheme->Insert(_(<span class="stringliteral">"Dark"</span>), 1);</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="keywordflow">switch</span>(data.language) {</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keywordflow">case</span> wxLANGUAGE_ENGLISH: {</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  m_choiceLanguage->SetSelection(0);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keywordflow">case</span> wxLANGUAGE_PORTUGUESE_BRAZILIAN: {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_choiceLanguage->SetSelection(1);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_choiceLanguage->SetSelection(wxNOT_FOUND);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  } <span class="keywordflow">break</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="keywordflow">switch</span>(data.theme) {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">case</span> THEME_LIGHT: {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_choiceTheme->SetSelection(0);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">case</span> THEME_DARK: {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_choiceTheme->SetSelection(1);</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>  }</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> GeneralPropertiesForm::~GeneralPropertiesForm() {}</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keywordtype">void</span> GeneralPropertiesForm::OnButtonOKClick(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>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</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="keywordtype">bool</span> GeneralPropertiesForm::ValidateData()</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> data = m_properties->GetGeneralPropertiesData();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">auto</span> checkData = m_properties->GetGeneralPropertiesData();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">bool</span> hasChanges = <span class="keyword">false</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>  wxTextFile file(<span class="stringliteral">"config.ini"</span>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span>(!file.Create()) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span>(!file.Open()) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// Fail to access the file.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</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="l00057"></a><span class="lineno"> 57</span>  _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  msgDialog.ShowModal();</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>  file.Clear();</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>  wxString line = <span class="stringliteral">"lang="</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">switch</span>(m_choiceLanguage->GetSelection()) {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  line += <span class="stringliteral">"en"</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  data.language = wxLANGUAGE_ENGLISH;</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> 1: {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  line += <span class="stringliteral">"pt-br"</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  data.language = wxLANGUAGE_PORTUGUESE_BRAZILIAN;</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>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  file.AddLine(line);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span>(data.language != checkData.language) hasChanges = <span class="keyword">true</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>  line = <span class="stringliteral">"theme="</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">switch</span>(m_choiceTheme->GetSelection()) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  line += <span class="stringliteral">"light"</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  data.theme = THEME_LIGHT;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  line += <span class="stringliteral">"dark"</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  data.theme = THEME_DARK;</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>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  file.AddLine(line);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span>(data.theme != checkData.theme) hasChanges = <span class="keyword">true</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.Write();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  file.Close();</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>(hasChanges) {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</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="l00096"></a><span class="lineno"> 96</span>  _(<span class="stringliteral">"Info"</span>), wxOK | wxCENTRE | wxICON_INFORMATION);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  msgDialog.ShowModal();</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>  m_properties->SetGeneralPropertiesData(data);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</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#l00040">PropertiesData.h:40</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 "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="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 --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_general_properties_form_8h.html b/docs/doxygen/html/_general_properties_form_8h.html new file mode 100644 index 0000000..86aa7a7 --- /dev/null +++ b/docs/doxygen/html/_general_properties_form_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/GeneralPropertiesForm.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('_general_properties_form_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">GeneralPropertiesForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "PropertiesForm.h"</code><br /> +<code>#include <wx/textfile.h></code><br /> +<code>#include <wx/msgdlg.h></code><br /> +</div> +<p><a href="_general_properties_form_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_general_properties_form.html">GeneralPropertiesForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the software's general data. <a href="class_general_properties_form.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="_general_properties_form_8h.html">GeneralPropertiesForm.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/_general_properties_form_8h_source.html b/docs/doxygen/html/_general_properties_form_8h_source.html index f4bbdd7..63f2c24 100644 --- a/docs/doxygen/html/_general_properties_form_8h_source.html +++ b/docs/doxygen/html/_general_properties_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,15 @@ $(document).ready(function(){initNavTree('_general_properties_form_8h_source.htm <div class="title">GeneralPropertiesForm.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="preprocessor">#ifndef GENERALPROPERTIESFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define GENERALPROPERTIESFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "PropertiesForm.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <wx/textfile.h></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include <wx/msgdlg.h></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="keyword">class </span><a class="code" href="class_properties_data.html">PropertiesData</a>;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="class_general_properties_form.html"> 11</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="l00012"></a><span class="lineno"> 12</span> {</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_general_properties_form.html">GeneralPropertiesForm</a>();</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonCancelClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonOKClick(wxCommandEvent& event);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</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>  <a class="code" href="class_properties_data.html">PropertiesData</a>* m_properties = NULL;</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">#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#l00040">PropertiesData.h:40</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="ttdef"><b>Definition:</b> <a href="_general_properties_form_8h_source.html#l00011">GeneralPropertiesForm.h:11</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="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00057">PropertiesData.h:57</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 --> </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>GeneralPropertiesForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_general_properties_form_8h.html">GeneralPropertiesForm.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/_generator_stab_form_8cpp_source.html b/docs/doxygen/html/_generator_stab_form_8cpp_source.html index e4c2d65..bfb4afc 100644 --- a/docs/doxygen/html/_generator_stab_form_8cpp_source.html +++ b/docs/doxygen/html/_generator_stab_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,13 +88,17 @@ $(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="preprocessor">#include "GeneratorStabForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "SwitchingForm.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "SyncGenerator.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ControlEditor.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "ControlElementContainer.h"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</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="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_syncGenerator = syncGenerator;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  m_parent = parent;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_checkBoxPlotSyncMachine->SetValue(data.plotSyncMachine);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  m_textCtrlInertia->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.inertia));</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  m_textCtrlDamping->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.damping));</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>  m_checkBoxUseAVR->SetValue(data.useAVR);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  m_buttonEditAVR->Enable(data.useAVR);</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_checkBoxUseSG->SetValue(data.useSpeedGovernor);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_buttonEditSG->Enable(data.useSpeedGovernor);</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_textCtrlRa->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.armResistance));</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_textCtrlXp->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.potierReactance));</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_textCtrlSat->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.satFactor));</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_textCtrlSyncXd->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.syncXd));</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_textCtrlSyncXq->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.syncXq));</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_textCtrlTranXd->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.transXd));</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_textCtrlTranXq->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.transXq));</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_textCtrlTranTd0->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.transTd0));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_textCtrlTranTq0->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.transTq0));</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_textCtrlSubXd->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.subXd));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_textCtrlSubXq->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.subXq));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_textCtrlSubTd0->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.subTd0));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_textCtrlSubTq0->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.subTq0));</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> GeneratorStabForm::~GeneratorStabForm() {}</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keywordtype">void</span> GeneratorStabForm::OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keywordtype">void</span> GeneratorStabForm::OnEditAVRButtonClick(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>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = m_syncGenerator->GetElectricalData();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span>(!data.avr) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</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="l00051"></a><span class="lineno"> 51</span>  m_syncGenerator->SetElectricalData(data);</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="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="l00054"></a><span class="lineno"> 54</span>  cEditor->SetElementsList(data.avr->GetControlElementsList());</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  cEditor->SetConnectionsList(data.avr->GetConnectionLineList());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  cEditor->SetControlContainer(data.avr);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  cEditor->Show();</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="keywordtype">void</span> GeneratorStabForm::OnOKButtonClick(wxCommandEvent& event)</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="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</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="keywordtype">void</span> GeneratorStabForm::OnSpeedGovernorButtonClick(wxCommandEvent& event)</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>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = m_syncGenerator->GetElectricalData();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">if</span>(!data.speedGov) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</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="l00070"></a><span class="lineno"> 70</span>  m_syncGenerator->SetElectricalData(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>  <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="l00073"></a><span class="lineno"> 73</span>  cEditor->SetElementsList(data.speedGov->GetControlElementsList());</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  cEditor->SetConnectionsList(data.speedGov->GetConnectionLineList());</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  cEditor->SetControlContainer(data.speedGov);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  cEditor->Show();</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">void</span> GeneratorStabForm::OnSwitchingButtonClick(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()) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_syncGenerator);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  swForm.SetTitle(_(<span class="stringliteral">"Synchronous generator: Switching"</span>));</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  swForm.ShowModal();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  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> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keywordtype">bool</span> GeneratorStabForm::ValidateData()</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>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = m_syncGenerator->GetElectricalData();</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.plotSyncMachine = m_checkBoxPlotSyncMachine->GetValue();</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="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlInertia->GetValue(), data.inertia,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Inertia\"."</span>)))</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlDamping->GetValue(), data.damping,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Damping factor\"."</span>)))</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  data.useAVR = m_checkBoxUseAVR->GetValue();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  data.useSpeedGovernor = m_checkBoxUseSG->GetValue();</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="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlRa->GetValue(), data.armResistance,</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Armature resistance\"."</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> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlXp->GetValue(), data.potierReactance,</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Potier reactance\"."</span>)))</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlSat->GetValue(), data.satFactor,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Saturation factor\"."</span>)))</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">return</span> <span class="keyword">false</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_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_parent, m_textCtrlSyncXd->GetValue(), data.syncXd,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Synchronous direct-axis reactance\"."</span>)))</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">return</span> <span class="keyword">false</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="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  m_parent, m_textCtrlSyncXq->GetValue(), data.syncXq,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Synchronous quadrature-axis reactance\"."</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> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_parent, m_textCtrlTranXd->GetValue(), data.transXd,</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Transitory direct-axis reactance\"."</span>)))</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_parent, m_textCtrlTranXq->GetValue(), data.transXq,</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Transitory quadrature-axis reactance\"."</span>)))</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">return</span> <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>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  m_parent, m_textCtrlTranTd0->GetValue(), data.transTd0,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Transitory direct-axis time constant\"."</span>)))</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> <span class="keyword">false</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">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  m_parent, m_textCtrlTranTq0->GetValue(), data.transTq0,</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Transitory quadrature-axis time constant\"."</span>)))</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> <span class="keyword">false</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="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  m_parent, m_textCtrlSubXd->GetValue(), data.subXd,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Subtransitory direct-axis reactance\"."</span>)))</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">return</span> <span class="keyword">false</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_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  m_parent, m_textCtrlSubXq->GetValue(), data.subXq,</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Subtransitory quadrature-axis reactance\"."</span>)))</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">return</span> <span class="keyword">false</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="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_parent, m_textCtrlSubTd0->GetValue(), data.subTd0,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Subtransitory direct-axis time constant\"."</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> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  m_parent, m_textCtrlSubTq0->GetValue(), data.subTq0,</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Subtransitory quadrature-axis time constant\"."</span>)))</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  m_syncGenerator->SetElectricalData(data);</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">return</span> <span class="keyword">true</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> GeneratorStabForm::UseAVRClick(wxCommandEvent& event) { m_buttonEditAVR->Enable(m_checkBoxUseAVR->GetValue()); }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</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#l00008">SyncGenerator.h:8</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="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00008">SwitchingForm.h:8</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#l00110">SyncGenerator.h:110</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="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00020">ControlElementContainer.h:20</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 "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="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="_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> +<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="_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_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> -<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#l00067">ControlEditor.h:67</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#l00300">Element.cpp:300</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_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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_generator_stab_form_8h.html b/docs/doxygen/html/_generator_stab_form_8h.html new file mode 100644 index 0000000..780c73c --- /dev/null +++ b/docs/doxygen/html/_generator_stab_form_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/GeneratorStabForm.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('_generator_stab_form_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">GeneratorStabForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +</div> +<p><a href="_generator_stab_form_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_generator_stab_form.html">GeneratorStabForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the synchronous generator data for electromechanical studies. <a href="class_generator_stab_form.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="_generator_stab_form_8h.html">GeneratorStabForm.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/_generator_stab_form_8h_source.html b/docs/doxygen/html/_generator_stab_form_8h_source.html index bdea5a8..3469265 100644 --- a/docs/doxygen/html/_generator_stab_form_8h_source.html +++ b/docs/doxygen/html/_generator_stab_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,18 +88,18 @@ $(document).ready(function(){initNavTree('_generator_stab_form_8h_source.html',' <div class="title">GeneratorStabForm.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="preprocessor">#ifndef GENERATORSTABFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define GENERATORSTABFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_switching_form.html">SwitchingForm</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="keyword">class </span><a class="code" href="class_sync_generator.html">SyncGenerator</a>;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="keyword">class </span><a class="code" href="class_control_editor.html">ControlEditor</a>;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="keyword">class </span><a class="code" href="class_control_element_container.html">ControlElementContainer</a>;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="class_generator_stab_form.html"> 11</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="l00012"></a><span class="lineno"> 12</span> {</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_generator_stab_form.html">GeneratorStabForm</a>();</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UseAVRClick(wxCommandEvent& event);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UseSGClick(wxCommandEvent& event);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnEditAVRButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSpeedGovernorButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSwitchingButtonClick(wxCommandEvent& event);</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">virtual</span> <span class="keywordtype">bool</span> ValidateData();</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>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* m_syncGenerator = NULL;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  wxWindow* m_parent = NULL;</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">#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="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00008">SwitchingForm.h:8</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#l00110">SyncGenerator.h:110</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="ttdef"><b>Definition:</b> <a href="_generator_stab_form_8h_source.html#l00011">GeneratorStabForm.h:11</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="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00020">ControlElementContainer.h:20</a></div></div> +<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_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> -<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#l00067">ControlEditor.h:67</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><!-- 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>GeneratorStabForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_generator_stab_form_8h.html">GeneratorStabForm.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/_graphical_element_8cpp_source.html b/docs/doxygen/html/_graphical_element_8cpp_source.html index 8418df9..a434513 100644 --- a/docs/doxygen/html/_graphical_element_8cpp_source.html +++ b/docs/doxygen/html/_graphical_element_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,7 +88,7 @@ $(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="preprocessor">#include "GraphicalElement.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> GraphicalElement::GraphicalElement() : <a class="code" href="class_element.html">Element</a>()</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> {</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> }</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> GraphicalElement::~GraphicalElement()</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> }</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</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#l00088">Element.h:88</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 "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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_graphical_element_8h_source.html b/docs/doxygen/html/_graphical_element_8h_source.html index a6fb132..3331a7f 100644 --- a/docs/doxygen/html/_graphical_element_8h_source.html +++ b/docs/doxygen/html/_graphical_element_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,8 +88,8 @@ $(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="preprocessor">#ifndef GRAPHICALELEMENT_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define GRAPHICALELEMENT_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"><a class="line" href="class_graphical_element.html"> 6</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="l00007"></a><span class="lineno"> 7</span> {</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <a class="code" href="class_graphical_element.html">GraphicalElement</a>();</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  ~<a class="code" href="class_graphical_element.html">GraphicalElement</a>();</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> };</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="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#l00006">GraphicalElement.h:6</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#l00088">Element.h:88</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">#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> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_i_o_control_8cpp_source.html b/docs/doxygen/html/_i_o_control_8cpp_source.html index b0d035a..8e9be8b 100644 --- a/docs/doxygen/html/_i_o_control_8cpp_source.html +++ b/docs/doxygen/html/_i_o_control_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,19 +88,21 @@ $(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="preprocessor">#include "IOControl.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "IOControlForm.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</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="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  m_ioFlags = ioFlags;</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>  <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="l00009"></a><span class="lineno"> 9</span>  m_nodeList.push_back(node);</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="keywordflow">if</span>(ioFlags & IN_TERMINAL_VOLTAGE)</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  SetValue(IN_TERMINAL_VOLTAGE);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ioFlags & IN_VELOCITY)</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  SetValue(IN_VELOCITY);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  node->StartMove(m_position);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</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> IOControl::~IOControl() {}</div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="class_i_o_control.html#aa6aab56f8936a87f099241d9bad9fee4"> 19</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="l00020"></a><span class="lineno"> 20</span> <span class="keyword"></span>{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  std::vector<wxPoint2DDouble> pts;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  pts.push_back(m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize, m_borderSize));</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  pts.push_back(m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize - 10, m_borderSize));</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  pts.push_back(m_position + wxPoint2DDouble(m_width / 2 - m_borderSize, 0));</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  pts.push_back(m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize - 10, -m_borderSize));</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  pts.push_back(m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize, -m_borderSize));</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  pts.push_back(m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize, m_borderSize));</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  pts.push_back(m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize, m_borderSize));</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  pts.push_back(m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize, -m_borderSize - 10));</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  pts.push_back(m_position + wxPoint2DDouble(0, m_height / 2 - m_borderSize));</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  pts.push_back(m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize, -m_borderSize - 10));</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  pts.push_back(m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize + 10, m_borderSize));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  pts.push_back(m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize, m_borderSize));</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  pts.push_back(m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize, -m_borderSize));</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  pts.push_back(m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize + 10, -m_borderSize));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  pts.push_back(m_position + wxPoint2DDouble(-m_width / 2 + m_borderSize, 0));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  pts.push_back(m_position + wxPoint2DDouble(0, -m_height / 2 + m_borderSize));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  pts.push_back(m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize, m_borderSize + 10));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  pts.push_back(m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize, -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>  pts.push_back(m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize, m_borderSize + 10));</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="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  glColor4dv(m_selectionColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  std::vector<wxPoint2DDouble> selPts = pts;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  selPts[0] += wxPoint2DDouble(-borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  selPts[1] += wxPoint2DDouble(borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  selPts[2] += wxPoint2DDouble(1.5 * borderSize / 2, 0);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  selPts[3] += wxPoint2DDouble(borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  selPts[4] += wxPoint2DDouble(-borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  selPts[0] += wxPoint2DDouble(-borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  selPts[1] += wxPoint2DDouble(borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  selPts[2] += wxPoint2DDouble(borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  selPts[3] += wxPoint2DDouble(0, 1.5 * borderSize / 2);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  selPts[4] += wxPoint2DDouble(-borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  selPts[0] += wxPoint2DDouble(-borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  selPts[1] += wxPoint2DDouble(borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  selPts[2] += wxPoint2DDouble(borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  selPts[3] += wxPoint2DDouble(-borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  selPts[4] += wxPoint2DDouble(-1.5 * borderSize / 2, 0);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  selPts[0] += wxPoint2DDouble(0, -1.5 * borderSize / 2);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  selPts[1] += wxPoint2DDouble(borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  selPts[2] += wxPoint2DDouble(borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  selPts[3] += wxPoint2DDouble(-borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  selPts[4] += wxPoint2DDouble(-borderSize / 2, -borderSize / 2);</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_element.html#a103b3cb2670012b2695940b094f63ab3">DrawLine</a>(selPts, GL_POLYGON);</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>  glLineWidth(1.0);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_element.html#a103b3cb2670012b2695940b094f63ab3">DrawLine</a>(pts, GL_POLYGON);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="class_element.html#a103b3cb2670012b2695940b094f63ab3">DrawLine</a>(pts, GL_LINE_LOOP);</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">// Plot number.</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  m_glStringValue->bind();</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_glStringValue->render(m_position.m_x - 5, m_position.m_y);</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_glStringValue->render(m_position.m_x, m_position.m_y - 5);</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_glStringValue->render(m_position.m_x + 5, m_position.m_y);</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_glStringValue->render(m_position.m_x, m_position.m_y + 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> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  glDisable(GL_TEXTURE_2D);</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>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  DrawNodes();</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_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439"> 105</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="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_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="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span>(form->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  form->Destroy();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> <span class="keyword">true</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>  form->Destroy();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">return</span> <span class="keyword">false</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_i_o_control.html#a47a5633ed68ef0648623b9733dc5dab9"> 116</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="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>(clockwise)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_angle += 90.0;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_angle -= 90.0;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_angle = 0.0;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_angle = 270.0;</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>  UpdatePoints();</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">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  node->Rotate(clockwise);</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> wxString IOControl::GenerateText()</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>  wxString omega = wxString::FromUTF8(<span class="stringliteral">"\xCF\x89"</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">switch</span>(m_value) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">case</span> IN_TERMINAL_VOLTAGE: {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_ioNodeType = Node::NODE_OUT;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> _(<span class="stringliteral">"Vt"</span>);</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> IN_VELOCITY: {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  m_ioNodeType = Node::NODE_OUT;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> omega;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">case</span> IN_ACTIVE_POWER: {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  m_ioNodeType = Node::NODE_OUT;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> _(<span class="stringliteral">"Pe"</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> IN_REACTIVE_POWER: {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  m_ioNodeType = Node::NODE_OUT;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">return</span> _(<span class="stringliteral">"Qe"</span>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">case</span> OUT_FIELD_VOLTAGE: {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_ioNodeType = Node::NODE_IN;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> _(<span class="stringliteral">"Vf"</span>);</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> OUT_MEC_POWER: {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_ioNodeType = Node::NODE_IN;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">return</span> _(<span class="stringliteral">"Pm"</span>);</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>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> <span class="stringliteral">""</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="keywordtype">void</span> IOControl::SetValue(IOFlags value)</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>  m_value = value;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  wxString text = GenerateText();</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>  wxFont font(m_fontSize, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  wxScreenDC dc;</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>(m_glStringValue) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">delete</span> m_glStringValue;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  m_glStringValue = NULL;</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_glStringValue = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string.html">wxGLString</a>(text);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  m_glStringValue->setFont(font);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  m_glStringValue->consolidate(&dc);</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>  m_width = m_glStringValue->getWidth() + 10 + 2 * m_borderSize;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  m_height = m_glStringValue->getheight() + 10 + 2 * m_borderSize;</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_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(m_position); <span class="comment">// Update rectangle.</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>  UpdatePoints();</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="keywordtype">void</span> IOControl::UpdatePoints()</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_nodeList.size() != 0) {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="class_node.html">Node</a>* node = m_nodeList[0];</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span>(node->GetNodeType() != m_ioNodeType) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// Rotate 180 degrees</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  node->Rotate();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  node->Rotate();</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>  node->SetNodeType(m_ioNodeType);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span>(m_ioNodeType == Node::NODE_IN)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  node->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  node->SetPosition(m_position + wxPoint2DDouble(m_width / 2 - 2, 0));</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span>(m_ioNodeType == Node::NODE_IN)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  node->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</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>  node->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2 - 2));</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span>(m_ioNodeType == Node::NODE_IN)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  node->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  node->SetPosition(m_position + wxPoint2DDouble(2 - m_width / 2, 0));</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span>(m_ioNodeType == Node::NODE_IN)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  node->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  node->SetPosition(m_position + wxPoint2DDouble(0, 2 - 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_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7"> 226</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="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_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="l00229"></a><span class="lineno"> 229</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  m_glStringValue = NULL;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  SetValue(m_value);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</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#l00088">Element.h:88</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#l00073">Element.cpp:73</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</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#l00116">IOControl.cpp:116</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="ttdef"><b>Definition:</b> <a href="_i_o_control_8h_source.html#l00011">IOControl.h:11</a></div></div> -<div class="ttc" id="class_i_o_control_html_a99303b5e9bd32affaed8f4e4084fc9f7"><div class="ttname"><a href="class_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7">IOControl::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="_i_o_control_8cpp_source.html#l00226">IOControl.cpp:226</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#l00010">Element.cpp:10</a></div></div> -<div class="ttc" id="class_i_o_control_html_abbd3054700825f9c4ac1b7c813f7b439"><div class="ttname"><a href="class_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439">IOControl::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="_i_o_control_8cpp_source.html#l00105">IOControl.cpp:105</a></div></div> -<div class="ttc" id="class_i_o_control_html_aa6aab56f8936a87f099241d9bad9fee4"><div class="ttname"><a href="class_i_o_control.html#aa6aab56f8936a87f099241d9bad9fee4">IOControl::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="_i_o_control_8cpp_source.html#l00019">IOControl.cpp:19</a></div></div> -<div class="ttc" id="class_i_o_control_form_html"><div class="ttname"><a href="class_i_o_control_form.html">IOControlForm</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_o_control_form_8h_source.html#l00007">IOControlForm.h:7</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#l00053">ControlElement.h:53</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="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> +<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="_i_o_control_form_8h_html"><div class="ttname"><a href="_i_o_control_form_8h.html">IOControlForm.h</a></div></div> +<div class="ttc" id="class_i_o_control_html_a99303b5e9bd32affaed8f4e4084fc9f7"><div class="ttname"><a href="class_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7">IOControl::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="_i_o_control_8cpp_source.html#l00243">IOControl.cpp:243</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_i_o_control_html_abbd3054700825f9c4ac1b7c813f7b439"><div class="ttname"><a href="class_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439">IOControl::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="_i_o_control_8cpp_source.html#l00122">IOControl.cpp:122</a></div></div> +<div class="ttc" id="class_i_o_control_html_aa6aab56f8936a87f099241d9bad9fee4"><div class="ttname"><a href="class_i_o_control.html#aa6aab56f8936a87f099241d9bad9fee4">IOControl::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="_i_o_control_8cpp_source.html#l00036">IOControl.cpp:36</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_i_o_control_form_html"><div class="ttname"><a href="class_i_o_control_form.html">IOControlForm</a></div><div class="ttdoc">Form to edit the input/output control data. </div><div class="ttdef"><b>Definition:</b> <a href="_i_o_control_form_8h_source.html#l00031">IOControlForm.h:31</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> -<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#l00083">Element.h:83</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 --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_i_o_control_8h.html b/docs/doxygen/html/_i_o_control_8h.html new file mode 100644 index 0000000..e4a200a --- /dev/null +++ b/docs/doxygen/html/_i_o_control_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/IOControl.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('_i_o_control_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">IOControl.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="_i_o_control_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_i_o_control.html">IOControl</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Provides the communication with the power element. <a href="class_i_o_control.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="_i_o_control_8h.html">IOControl.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/_i_o_control_8h_source.html b/docs/doxygen/html/_i_o_control_8h_source.html index ab97414..ae24203 100644 --- a/docs/doxygen/html/_i_o_control_8h_source.html +++ b/docs/doxygen/html/_i_o_control_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,23 +88,24 @@ $(document).ready(function(){initNavTree('_i_o_control_8h_source.html','');}); <div class="title">IOControl.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="preprocessor">#ifndef IOCONTROL_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define IOCONTROL_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ControlElement.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <wx/dcscreen.h></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "wxGLString.h"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="keyword">class </span><a class="code" href="class_i_o_control_form.html">IOControlForm</a>;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="class_i_o_control.html"> 11</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="l00012"></a><span class="lineno"> 12</span> {</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <span class="keyword">enum</span> IOFlags {</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  IN_TERMINAL_VOLTAGE = 1 << 0,</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  IN_VELOCITY = 1 << 1,</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  IN_ACTIVE_POWER = 1 << 2,</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  IN_REACTIVE_POWER = 1 << 3,</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  OUT_FIELD_VOLTAGE = 1 << 4,</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  OUT_MEC_POWER = 1 << 5</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>  <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="l00024"></a><span class="lineno"> 24</span>  ~<a class="code" href="class_i_o_control.html">IOControl</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">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="l00027"></a><span class="lineno"><a class="line" href="class_i_o_control.html#aa064c5d70e562334e2b374f919f42ef1"> 27</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="l00028"></a><span class="lineno"><a class="line" href="class_i_o_control.html#adebd59a32fd699ba4dff4dff44dfbf90"> 28</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="l00029"></a><span class="lineno"> 29</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="l00030"></a><span class="lineno"> 30</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="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText() { SetValue(m_value); }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">virtual</span> wxString GenerateText();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</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">virtual</span> IOFlags GetValue()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_value; }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetValue(IOFlags value);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</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="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> Node::NodeType GetType() { <span class="keywordflow">return</span> m_ioNodeType; }</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>* <a class="code" href="class_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7">GetCopy</a>();</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>  IOFlags m_value;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">int</span> m_ioFlags;</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>  Node::NodeType m_ioNodeType = Node::NODE_IN;</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="classwx_g_l_string.html">wxGLString</a>* m_glStringValue = NULL;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">int</span> m_fontSize = 10;</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 // 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#l00088">Element.h:88</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#l00027">IOControl.h:27</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#l00116">IOControl.cpp:116</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="ttdef"><b>Definition:</b> <a href="_i_o_control_8h_source.html#l00011">IOControl.h:11</a></div></div> -<div class="ttc" id="class_i_o_control_html_adebd59a32fd699ba4dff4dff44dfbf90"><div class="ttname"><a href="class_i_o_control.html#adebd59a32fd699ba4dff4dff44dfbf90">IOControl::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="_i_o_control_8h_source.html#l00028">IOControl.h:28</a></div></div> -<div class="ttc" id="class_i_o_control_html_a99303b5e9bd32affaed8f4e4084fc9f7"><div class="ttname"><a href="class_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7">IOControl::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="_i_o_control_8cpp_source.html#l00226">IOControl.cpp:226</a></div></div> -<div class="ttc" id="class_i_o_control_html_abbd3054700825f9c4ac1b7c813f7b439"><div class="ttname"><a href="class_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439">IOControl::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="_i_o_control_8cpp_source.html#l00105">IOControl.cpp:105</a></div></div> -<div class="ttc" id="class_i_o_control_html_aa6aab56f8936a87f099241d9bad9fee4"><div class="ttname"><a href="class_i_o_control.html#aa6aab56f8936a87f099241d9bad9fee4">IOControl::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="_i_o_control_8cpp_source.html#l00019">IOControl.cpp:19</a></div></div> -<div class="ttc" id="class_i_o_control_form_html"><div class="ttname"><a href="class_i_o_control_form.html">IOControlForm</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_o_control_form_8h_source.html#l00007">IOControlForm.h:7</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#l00053">ControlElement.h:53</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="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> +<div class="ttc" id="class_i_o_control_html_adebd59a32fd699ba4dff4dff44dfbf90"><div class="ttname"><a href="class_i_o_control.html#adebd59a32fd699ba4dff4dff44dfbf90">IOControl::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="_i_o_control_8h_source.html#l00052">IOControl.h:52</a></div></div> +<div class="ttc" id="class_i_o_control_html_a99303b5e9bd32affaed8f4e4084fc9f7"><div class="ttname"><a href="class_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7">IOControl::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="_i_o_control_8cpp_source.html#l00243">IOControl.cpp:243</a></div></div> +<div class="ttc" id="class_i_o_control_html_abbd3054700825f9c4ac1b7c813f7b439"><div class="ttname"><a href="class_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439">IOControl::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="_i_o_control_8cpp_source.html#l00122">IOControl.cpp:122</a></div></div> +<div class="ttc" id="class_i_o_control_html_aa6aab56f8936a87f099241d9bad9fee4"><div class="ttname"><a href="class_i_o_control.html#aa6aab56f8936a87f099241d9bad9fee4">IOControl::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="_i_o_control_8cpp_source.html#l00036">IOControl.cpp:36</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_i_o_control_form_html"><div class="ttname"><a href="class_i_o_control_form.html">IOControlForm</a></div><div class="ttdoc">Form to edit the input/output control data. </div><div class="ttdef"><b>Definition:</b> <a href="_i_o_control_form_8h_source.html#l00031">IOControlForm.h:31</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> </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>IOControl.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_i_o_control_8h.html">IOControl.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_form_8cpp_source.html b/docs/doxygen/html/_i_o_control_form_8cpp_source.html index ef71759..7f17159 100644 --- a/docs/doxygen/html/_i_o_control_form_8cpp_source.html +++ b/docs/doxygen/html/_i_o_control_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,8 +88,9 @@ $(document).ready(function(){initNavTree('_i_o_control_form_8cpp_source.html','' <div class="title">IOControlForm.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 "IOControlForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> IOControlForm::IOControlForm(wxWindow* parent, <a class="code" href="class_i_o_control.html">IOControl</a>* ioControl) : <a class="code" href="class_i_o_control_form_base.html">IOControlFormBase</a>(parent)</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> {</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  m_parent = parent;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  m_ioControl = ioControl;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <span class="keywordtype">int</span> ioFlags = m_ioControl->GetIOFlags();</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keywordtype">int</span> inChoiceNumber = -1;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keywordtype">int</span> outChoiceNumber = -1;</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="keywordflow">if</span>(ioFlags & IOControl::IN_TERMINAL_VOLTAGE) {</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_choiceInput->Append(_(<span class="stringliteral">"Terminal voltage"</span>));</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_inputFlags.push_back(IOControl::IN_TERMINAL_VOLTAGE);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordflow">if</span>(m_ioControl->GetValue() == IOControl::IN_TERMINAL_VOLTAGE) inChoiceNumber = (<span class="keywordtype">int</span>)m_inputFlags.size() - 1;</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>  <span class="keywordflow">if</span>(ioFlags & IOControl::IN_VELOCITY) {</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  m_choiceInput->Append(_(<span class="stringliteral">"Velocity"</span>));</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  m_inputFlags.push_back(IOControl::IN_VELOCITY);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keywordflow">if</span>(m_ioControl->GetValue() == IOControl::IN_VELOCITY) inChoiceNumber = (<span class="keywordtype">int</span>)m_inputFlags.size() - 1;</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>(ioFlags & IOControl::IN_ACTIVE_POWER) {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_choiceInput->Append(_(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_inputFlags.push_back(IOControl::IN_ACTIVE_POWER);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">if</span>(m_ioControl->GetValue() == IOControl::IN_ACTIVE_POWER) inChoiceNumber = (<span class="keywordtype">int</span>)m_inputFlags.size() - 1;</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="keywordflow">if</span>(ioFlags & IOControl::IN_REACTIVE_POWER) {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_choiceInput->Append(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_inputFlags.push_back(IOControl::IN_REACTIVE_POWER);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">if</span>(m_ioControl->GetValue() == IOControl::IN_REACTIVE_POWER) inChoiceNumber = (<span class="keywordtype">int</span>)m_inputFlags.size() - 1;</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>(ioFlags & IOControl::OUT_FIELD_VOLTAGE) {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_choiceOutput->Append(_(<span class="stringliteral">"Field voltage"</span>));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_outputFlags.push_back(IOControl::OUT_FIELD_VOLTAGE);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">if</span>(m_ioControl->GetValue() == IOControl::OUT_FIELD_VOLTAGE) outChoiceNumber = (<span class="keywordtype">int</span>)m_outputFlags.size() - 1;</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="keywordflow">if</span>(ioFlags & IOControl::OUT_MEC_POWER) {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_choiceOutput->Append(_(<span class="stringliteral">"Mechanical power"</span>));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_outputFlags.push_back(IOControl::OUT_MEC_POWER);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span>(m_ioControl->GetValue() == IOControl::OUT_MEC_POWER) outChoiceNumber = (<span class="keywordtype">int</span>)m_outputFlags.size() - 1;</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="keywordflow">if</span>(inChoiceNumber != -1) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_choiceInput->SetSelection(inChoiceNumber);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_checkBoxInput->SetValue(<span class="keyword">true</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_checkBoxOutput->SetValue(<span class="keyword">false</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_choiceOutput->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_choiceOutput->SetSelection(outChoiceNumber);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_checkBoxInput->SetValue(<span class="keyword">false</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_checkBoxOutput->SetValue(<span class="keyword">true</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_choiceInput->Enable(<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> }</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> IOControlForm::~IOControlForm() {}</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keywordtype">void</span> IOControlForm::OnOKButtonClick(wxCommandEvent& event)</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="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</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> IOControlForm::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>  <span class="keywordflow">if</span>(m_checkBoxInput->GetValue() && m_choiceInput->GetSelection() != -1) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_ioControl->SetValue(m_inputFlags[m_choiceInput->GetSelection()]);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_checkBoxOutput->GetValue() && m_choiceOutput->GetSelection() != -1) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_ioControl->SetValue(m_outputFlags[m_choiceOutput->GetSelection()]);</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> </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"> 77</span> <span class="keywordtype">void</span> IOControlForm::OnInputChecked(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>  m_checkBoxInput->SetValue(<span class="keyword">true</span>);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_checkBoxOutput->SetValue(<span class="keyword">false</span>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_choiceOutput->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_choiceInput->Enable(<span class="keyword">true</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> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="keywordtype">void</span> IOControlForm::OnOutputChecked(wxCommandEvent& event)</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>  m_checkBoxOutput->SetValue(<span class="keyword">true</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  m_checkBoxInput->SetValue(<span class="keyword">false</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_choiceOutput->Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_choiceInput->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> }</div><div class="ttc" id="class_i_o_control_form_base_html"><div class="ttname"><a href="class_i_o_control_form_base.html">IOControlFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00975">ElementForm.h:975</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="ttdef"><b>Definition:</b> <a href="_i_o_control_8h_source.html#l00011">IOControl.h:11</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_form_8h.html">IOControlForm.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> IOControlForm::IOControlForm(wxWindow* parent, <a class="code" href="class_i_o_control.html">IOControl</a>* ioControl) : <a class="code" href="class_i_o_control_form_base.html">IOControlFormBase</a>(parent)</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>  SetSize(GetBestSize());</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_parent = parent;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_ioControl = ioControl;</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="keywordtype">int</span> ioFlags = m_ioControl->GetIOFlags();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">int</span> inChoiceNumber = -1;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordtype">int</span> outChoiceNumber = -1;</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">if</span>(ioFlags & IOControl::IN_TERMINAL_VOLTAGE) {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_choiceInput->Append(_(<span class="stringliteral">"Terminal voltage"</span>));</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_inputFlags.push_back(IOControl::IN_TERMINAL_VOLTAGE);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">if</span>(m_ioControl->GetValue() == IOControl::IN_TERMINAL_VOLTAGE) inChoiceNumber = (<span class="keywordtype">int</span>)m_inputFlags.size() - 1;</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>(ioFlags & IOControl::IN_VELOCITY) {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_choiceInput->Append(_(<span class="stringliteral">"Velocity"</span>));</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_inputFlags.push_back(IOControl::IN_VELOCITY);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span>(m_ioControl->GetValue() == IOControl::IN_VELOCITY) inChoiceNumber = (<span class="keywordtype">int</span>)m_inputFlags.size() - 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>  <span class="keywordflow">if</span>(ioFlags & IOControl::IN_ACTIVE_POWER) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_choiceInput->Append(_(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_inputFlags.push_back(IOControl::IN_ACTIVE_POWER);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span>(m_ioControl->GetValue() == IOControl::IN_ACTIVE_POWER) inChoiceNumber = (<span class="keywordtype">int</span>)m_inputFlags.size() - 1;</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">if</span>(ioFlags & IOControl::IN_REACTIVE_POWER) {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_choiceInput->Append(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_inputFlags.push_back(IOControl::IN_REACTIVE_POWER);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span>(m_ioControl->GetValue() == IOControl::IN_REACTIVE_POWER) inChoiceNumber = (<span class="keywordtype">int</span>)m_inputFlags.size() - 1;</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">if</span>(ioFlags & IOControl::OUT_FIELD_VOLTAGE) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_choiceOutput->Append(_(<span class="stringliteral">"Field voltage"</span>));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_outputFlags.push_back(IOControl::OUT_FIELD_VOLTAGE);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">if</span>(m_ioControl->GetValue() == IOControl::OUT_FIELD_VOLTAGE) outChoiceNumber = (<span class="keywordtype">int</span>)m_outputFlags.size() - 1;</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">if</span>(ioFlags & IOControl::OUT_MEC_POWER) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_choiceOutput->Append(_(<span class="stringliteral">"Mechanical power"</span>));</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_outputFlags.push_back(IOControl::OUT_MEC_POWER);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span>(m_ioControl->GetValue() == IOControl::OUT_MEC_POWER) outChoiceNumber = (<span class="keywordtype">int</span>)m_outputFlags.size() - 1;</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="keywordflow">if</span>(inChoiceNumber != -1) {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_choiceInput->SetSelection(inChoiceNumber);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_checkBoxInput->SetValue(<span class="keyword">true</span>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_checkBoxOutput->SetValue(<span class="keyword">false</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_choiceOutput->Enable(<span class="keyword">false</span>);</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>  m_choiceOutput->SetSelection(outChoiceNumber);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_checkBoxInput->SetValue(<span class="keyword">false</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_checkBoxOutput->SetValue(<span class="keyword">true</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_choiceInput->Enable(<span class="keyword">false</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> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> IOControlForm::~IOControlForm() {}</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keywordtype">void</span> IOControlForm::OnOKButtonClick(wxCommandEvent& event)</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="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</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">bool</span> IOControlForm::ValidateData()</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="keywordflow">if</span>(m_checkBoxInput->GetValue() && m_choiceInput->GetSelection() != -1) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_ioControl->SetValue(m_inputFlags[m_choiceInput->GetSelection()]);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_checkBoxOutput->GetValue() && m_choiceOutput->GetSelection() != -1) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_ioControl->SetValue(m_outputFlags[m_choiceOutput->GetSelection()]);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> <span class="keyword">true</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="keywordflow">return</span> <span class="keyword">false</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">void</span> IOControlForm::OnInputChecked(wxCommandEvent& event)</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_checkBoxInput->SetValue(<span class="keyword">true</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_checkBoxOutput->SetValue(<span class="keyword">false</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_choiceOutput->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  m_choiceInput->Enable(<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="keywordtype">void</span> IOControlForm::OnOutputChecked(wxCommandEvent& event)</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>  m_checkBoxOutput->SetValue(<span class="keyword">true</span>);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_checkBoxInput->SetValue(<span class="keyword">false</span>);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_choiceOutput->Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  m_choiceInput->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> }</div><div class="ttc" id="class_i_o_control_form_base_html"><div class="ttname"><a href="class_i_o_control_form_base.html">IOControlFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00975">ElementForm.h:975</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="_i_o_control_form_8h_html"><div class="ttname"><a href="_i_o_control_form_8h.html">IOControlForm.h</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_i_o_control_form_8h.html b/docs/doxygen/html/_i_o_control_form_8h.html new file mode 100644 index 0000000..dac7afb --- /dev/null +++ b/docs/doxygen/html/_i_o_control_form_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/IOControlForm.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('_i_o_control_form_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">IOControlForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +<code>#include "<a class="el" href="_i_o_control_8h_source.html">IOControl.h</a>"</code><br /> +</div> +<p><a href="_i_o_control_form_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_i_o_control_form.html">IOControlForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the input/output control data. <a href="class_i_o_control_form.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="_i_o_control_form_8h.html">IOControlForm.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/_i_o_control_form_8h_source.html b/docs/doxygen/html/_i_o_control_form_8h_source.html index d9e71ff..f24ff47 100644 --- a/docs/doxygen/html/_i_o_control_form_8h_source.html +++ b/docs/doxygen/html/_i_o_control_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,16 @@ $(document).ready(function(){initNavTree('_i_o_control_form_8h_source.html',''); <div class="title">IOControlForm.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="preprocessor">#ifndef IOCONTROLFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define IOCONTROLFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "IOControl.h"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="class_i_o_control_form.html"> 7</a></span> <span class="keyword">class </span><a class="code" href="class_i_o_control_form.html">IOControlForm</a> : <span class="keyword">public</span> <a class="code" href="class_i_o_control_form_base.html">IOControlFormBase</a></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <a class="code" href="class_i_o_control_form.html">IOControlForm</a>(wxWindow* parent, <a class="code" href="class_i_o_control.html">IOControl</a>* ioControl);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_i_o_control_form.html">IOControlForm</a>();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnInputChecked(wxCommandEvent& event);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOutputChecked(wxCommandEvent& event);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); };</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</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>  wxWindow* m_parent;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <a class="code" href="class_i_o_control.html">IOControl</a>* m_ioControl;</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>  std::vector<IOControl::IOFlags> m_inputFlags;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  std::vector<IOControl::IOFlags> m_outputFlags; </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="preprocessor">#endif // IOCONTROLFORM_H</span></div><div class="ttc" id="class_i_o_control_form_base_html"><div class="ttname"><a href="class_i_o_control_form_base.html">IOControlFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00975">ElementForm.h:975</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="ttdef"><b>Definition:</b> <a href="_i_o_control_8h_source.html#l00011">IOControl.h:11</a></div></div> -<div class="ttc" id="class_i_o_control_form_html"><div class="ttname"><a href="class_i_o_control_form.html">IOControlForm</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_o_control_form_8h_source.html#l00007">IOControlForm.h:7</a></div></div> +<a href="_i_o_control_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 IOCONTROLFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define IOCONTROLFORM_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="preprocessor">#include "<a class="code" href="_i_o_control_8h.html">IOControl.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_i_o_control_form.html"> 31</a></span> <span class="keyword">class </span><a class="code" href="class_i_o_control_form.html">IOControlForm</a> : <span class="keyword">public</span> <a class="code" href="class_i_o_control_form_base.html">IOControlFormBase</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_i_o_control_form.html">IOControlForm</a>(wxWindow* parent, <a class="code" href="class_i_o_control.html">IOControl</a>* ioControl);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_i_o_control_form.html">IOControlForm</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> OnInputChecked(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> OnOutputChecked(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> 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> OnOKButtonClick(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;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_i_o_control.html">IOControl</a>* m_ioControl;</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>  std::vector<IOControl::IOFlags> m_inputFlags;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::vector<IOControl::IOFlags> m_outputFlags;</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 // IOCONTROLFORM_H</span></div><div class="ttc" id="class_i_o_control_form_base_html"><div class="ttname"><a href="class_i_o_control_form_base.html">IOControlFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00975">ElementForm.h:975</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="_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_i_o_control_form_html"><div class="ttname"><a href="class_i_o_control_form.html">IOControlForm</a></div><div class="ttdoc">Form to edit the input/output control data. </div><div class="ttdef"><b>Definition:</b> <a href="_i_o_control_form_8h_source.html#l00031">IOControlForm.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>IOControlForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_i_o_control_form_8h.html">IOControlForm.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_8cpp_source.html b/docs/doxygen/html/_ind_motor_8cpp_source.html index 09512aa..d690c6f 100644 --- a/docs/doxygen/html/_ind_motor_8cpp_source.html +++ b/docs/doxygen/html/_ind_motor_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,25 +88,26 @@ $(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="preprocessor">#include "IndMotorForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "IndMotor.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> IndMotor::IndMotor()</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  : <a class="code" href="class_machines.html">Machines</a>()</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</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> IndMotor::IndMotor(wxString name)</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  : <a class="code" href="class_machines.html">Machines</a>()</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>  m_electricalData.name = name;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> }</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> IndMotor::~IndMotor() {}</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="keywordtype">void</span> IndMotor::DrawSymbol()<span class="keyword"> const</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="keyword"></span>{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  std::vector<wxPoint2DDouble> mPts;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  mPts.push_back(wxPoint2DDouble(-10, 13) + m_position);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  mPts.push_back(wxPoint2DDouble(-10, -13) + m_position);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  mPts.push_back(wxPoint2DDouble(0, 2) + m_position);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  mPts.push_back(wxPoint2DDouble(10, -13) + m_position);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  mPts.push_back(wxPoint2DDouble(10, 13) + m_position);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <a class="code" href="class_element.html#a103b3cb2670012b2695940b094f63ab3">DrawLine</a>(mPts);</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"><a class="line" href="class_ind_motor.html#a87666565ae1380993d94e7886e9a1f59"> 25</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="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 induction motor"</span>));</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="class_element.html#a35f55626a29d5256f8dc07cf92655e64">GeneralMenuItens</a>(menu);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">return</span> <span class="keyword">true</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> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_ind_motor.html#add48c9a03d197a6279ca2e33af0fe286"> 32</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="l00033"></a><span class="lineno"> 33</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>* 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="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">if</span>(indMotorForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  indMotorForm->Destroy();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">return</span> <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>  indMotorForm->Destroy();</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"> 43</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="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> data = m_electricalData;</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">switch</span>(data.activePowerUnit) {</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#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  data.activePower = data.activePower / systemPowerBase;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  data.activePowerUnit = <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>  } <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#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  data.activePower = (data.activePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  data.activePower = (data.activePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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>(data.reactivePowerUnit) {</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#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  data.reactivePower = data.reactivePower / systemPowerBase;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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>  data.reactivePower = (data.reactivePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  data.reactivePower = (data.reactivePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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>  <span class="keywordflow">default</span>:</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> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">return</span> data;</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"><a class="line" href="class_ind_motor.html#ace3ce34ba500ec33bf37b9216ad636a8"> 83</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="l00084"></a><span class="lineno"> 84</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</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="l00086"></a><span class="lineno"> 86</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> copy;</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"><a class="line" href="class_ind_motor.html#ae785c4055db23b4ae1ef03f00468a532"> 90</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="l00091"></a><span class="lineno"> 91</span> <span class="keyword"></span>{</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">double</span> activePower = m_electricalData.activePower;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">if</span>(!m_online) activePower = 0.0;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  tipText += _(<span class="stringliteral">"\nP = "</span>) + wxString::FromDouble(activePower, 5);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">switch</span>(m_electricalData.activePowerUnit) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  tipText += _(<span class="stringliteral">" p.u."</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  tipText += _(<span class="stringliteral">" W"</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  tipText += _(<span class="stringliteral">" kW"</span>);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  tipText += _(<span class="stringliteral">" MW"</span>);</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">default</span>:</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">break</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">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">if</span>(!m_online) reactivePower = 0.0;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  tipText += _(<span class="stringliteral">" p.u."</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">case</span> <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>  tipText += _(<span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">case</span> <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>  tipText += _(<span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">case</span> <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>  tipText += _(<span class="stringliteral">" MVAr"</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>  <span class="keywordflow">default</span>:</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>  }</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> tipText;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</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#l00008">IndMotor.h:8</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#l00088">Element.h:88</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#l00073">Element.cpp:73</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#l00033">Element.h:33</a></div></div> -<div class="ttc" id="class_ind_motor_html_ae785c4055db23b4ae1ef03f00468a532"><div class="ttname"><a href="class_ind_motor.html#ae785c4055db23b4ae1ef03f00468a532">IndMotor::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="_ind_motor_8cpp_source.html#l00090">IndMotor.cpp:90</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#l00019">PowerElement.h:19</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#l00012">PowerElement.h:12</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#l00228">Element.cpp:228</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#l00018">PowerElement.h:18</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#l00025">PowerElement.h:25</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#l00024">PowerElement.h:24</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#l00083">IndMotor.cpp:83</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#l00017">IndMotor.h:17</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#l00023">PowerElement.h:23</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#l00009">Machines.h:9</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="ttdef"><b>Definition:</b> <a href="_ind_motor_form_8h_source.html#l00007">IndMotorForm.h:7</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#l00032">IndMotor.cpp:32</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#l00025">IndMotor.cpp: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#l00017">PowerElement.h:17</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 "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="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> +<div class="ttc" id="class_ind_motor_html_ae785c4055db23b4ae1ef03f00468a532"><div class="ttname"><a href="class_ind_motor.html#ae785c4055db23b4ae1ef03f00468a532">IndMotor::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="_ind_motor_8cpp_source.html#l00100">IndMotor.cpp:100</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_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="_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="_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_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> +<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 --> <!-- start footer part --> diff --git a/docs/doxygen/html/_ind_motor_8h_source.html b/docs/doxygen/html/_ind_motor_8h_source.html index ee9f487..c81f671 100644 --- a/docs/doxygen/html/_ind_motor_8h_source.html +++ b/docs/doxygen/html/_ind_motor_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,14 +88,14 @@ $(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="preprocessor">#ifndef INDMOTOR_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define INDMOTOR_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "Machines.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_ind_motor_form.html">IndMotorForm</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="struct_ind_motor_electrical_data.html"> 8</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="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  wxString name;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keywordtype">double</span> activePower = 100.0;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</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="l00013"></a><span class="lineno"> 13</span>  <span class="keywordtype">double</span> reactivePower = 0.0;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</span> };</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="class_ind_motor.html"> 17</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="l00018"></a><span class="lineno"> 18</span> {</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>();</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>(wxString name);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</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="l00024"></a><span class="lineno"> 24</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawSymbol() <span class="keyword">const</span>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</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="l00029"></a><span class="lineno"> 29</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="l00030"></a><span class="lineno"> 30</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="l00031"></a><span class="lineno"> 31</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="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> m_electricalData;</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> <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#l00008">IndMotor.h:8</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#l00088">Element.h:88</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#l00019">PowerElement.h:19</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#l00011">PowerElement.h:11</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#l00025">PowerElement.h:25</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#l00017">IndMotor.h:17</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#l00009">Machines.h:9</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="ttdef"><b>Definition:</b> <a href="_ind_motor_form_8h_source.html#l00007">IndMotorForm.h:7</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">#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> +<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_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 --> diff --git a/docs/doxygen/html/_ind_motor_form_8cpp_source.html b/docs/doxygen/html/_ind_motor_form_8cpp_source.html index 6d7b442..c8007c6 100644 --- a/docs/doxygen/html/_ind_motor_form_8cpp_source.html +++ b/docs/doxygen/html/_ind_motor_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,17 +88,18 @@ $(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="preprocessor">#include "IndMotorForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "IndMotor.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</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="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  m_buttonStabButton->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> data = indMotor->GetElectricalData();</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_textCtrlActivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">IndMotor::StringFromDouble</a>(data.activePower));</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_choiceActivePower->SetSelection(0);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  m_choiceActivePower->SetSelection(1);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  m_choiceActivePower->SetSelection(2);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_choiceActivePower->SetSelection(3);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">break</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> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">IndMotor::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_choiceReactivePower->SetSelection(0);</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#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_choiceReactivePower->SetSelection(1);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_choiceReactivePower->SetSelection(2);</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>  <span class="keywordflow">case</span> <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>  m_choiceReactivePower->SetSelection(3);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">break</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>  m_parent = parent;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_indMotor = indMotor;</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> IndMotorForm::~IndMotorForm() {}</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keywordtype">void</span> IndMotorForm::OnOKButtonClick(wxCommandEvent& event)</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="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</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> IndMotorForm::OnStabilityButtonClick(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="comment">// TODO: Induction motor stability form</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="keywordtype">bool</span> IndMotorForm::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>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> data;</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>  data.name = m_textCtrlName->GetValue();</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="keywordflow">if</span>(!m_indMotor->DoubleFromString(m_parent, m_textCtrlActivePower->GetValue(), data.activePower,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Active power\"."</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>  <span class="keywordflow">switch</span>(m_choiceActivePower->GetSelection()) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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> 1: {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</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> 2: {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>;</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> 3: {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</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>  }</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_indMotor->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</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>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</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> 2: {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</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> 3: {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</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> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_indMotor->SetElectricalData(data);</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="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#l00008">IndMotor.h:8</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#l00019">PowerElement.h:19</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#l00012">PowerElement.h:12</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 "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="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#l00018">PowerElement.h:18</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#l00025">PowerElement.h:25</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#l00024">PowerElement.h:24</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#l00017">IndMotor.h:17</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#l00023">PowerElement.h:23</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#l00300">Element.cpp:300</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#l00017">PowerElement.h:17</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="_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="_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> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_ind_motor_form_8h.html b/docs/doxygen/html/_ind_motor_form_8h.html new file mode 100644 index 0000000..404c7ed --- /dev/null +++ b/docs/doxygen/html/_ind_motor_form_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/IndMotorForm.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_form_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">IndMotorForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +</div> +<p><a href="_ind_motor_form_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_ind_motor_form.html">IndMotorForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the induction motor power data. <a href="class_ind_motor_form.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_form_8h.html">IndMotorForm.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_form_8h_source.html b/docs/doxygen/html/_ind_motor_form_8h_source.html index 8c0868c..526fa6a 100644 --- a/docs/doxygen/html/_ind_motor_form_8h_source.html +++ b/docs/doxygen/html/_ind_motor_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,15 @@ $(document).ready(function(){initNavTree('_ind_motor_form_8h_source.html','');}) <div class="title">IndMotorForm.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="preprocessor">#ifndef INDMOTORFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define INDMOTORFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="keyword">class </span><a class="code" href="class_ind_motor.html">IndMotor</a>;</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="class_ind_motor_form.html"> 7</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="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</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="l00011"></a><span class="lineno"> 11</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_ind_motor_form.html">IndMotorForm</a>();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</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">protected</span>:</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); };</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnStabilityButtonClick(wxCommandEvent& event);</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>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* m_indMotor = NULL;</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">#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#l00017">IndMotor.h:17</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="ttdef"><b>Definition:</b> <a href="_ind_motor_form_8h_source.html#l00007">IndMotorForm.h:7</a></div></div> +<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_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>IndMotorForm.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_form_8h.html">IndMotorForm.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/_inductor_8cpp_source.html b/docs/doxygen/html/_inductor_8cpp_source.html index 6c47f4d..9977b24 100644 --- a/docs/doxygen/html/_inductor_8cpp_source.html +++ b/docs/doxygen/html/_inductor_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,32 +88,33 @@ $(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="preprocessor">#include "ReactiveShuntElementForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "Inductor.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> Inductor::Inductor() : <a class="code" href="class_shunt.html">Shunt</a>() {}</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> Inductor::Inductor(wxString name) : <a class="code" href="class_shunt.html">Shunt</a>() { m_electricalData.name = name; }</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> Inductor::~Inductor() {}</div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="class_inductor.html#a4e404c6e15f206fe0f5de06fc19dedf5"> 7</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="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</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="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</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="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</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="l00018"></a><span class="lineno"> 18</span>  m_width = 20.0;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  m_height = 70.0;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</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="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_pointList.push_back(parentPt);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -m_height / 2.0 - 10.0));</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -m_height / 2.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>  m_inserted = <span class="keyword">true</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>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_switchRect.push_back(genRect); <span class="comment">// Push a general rectangle.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  UpdateSwitches();</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="keywordflow">return</span> <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="keywordflow">return</span> <span class="keyword">false</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> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_inductor.html#a97761292fac4f0da7ae3dc6ca4b4de54"> 38</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="l00039"></a><span class="lineno"> 39</span> <span class="keyword"></span>{</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  elementColour = m_offlineElementColour;</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>(m_inserted) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  glColor4dv(m_selectionColour.GetRGBA());</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(m_pointList);</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>  glPushMatrix();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.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>  DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 10.0), 10, 45, 270, 30, GL_LINE_STRIP);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</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="l00063"></a><span class="lineno"> 63</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="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  DrawGround(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 50.0));</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>  glPopMatrix();</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">// Draw node selection.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  DrawCircle(m_pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</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 Load (layer 2).</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  glLineWidth(1.5);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  DrawLine(m_pointList);</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>  DrawSwitches();</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>  glPushMatrix();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</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> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</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="l00087"></a><span class="lineno"> 87</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="l00088"></a><span class="lineno"> 88</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="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  DrawGround(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 50.0));</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>  glPopMatrix();</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"><a class="line" href="class_inductor.html#a801bb445c01059558902c0eca4d38cdd"> 96</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="l00097"></a><span class="lineno"> 97</span> {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</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_angle += rotAngle;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_pointList[2] = RotateAtPosition(m_pointList[2], rotAngle);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_pointList[3] = RotateAtPosition(m_pointList[3], rotAngle);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  UpdateSwitchesPosition();</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"><a class="line" href="class_inductor.html#aa0ae00d91b40307141a8bd3aebf1a0c2"> 108</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="l00109"></a><span class="lineno"> 109</span> {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</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="l00111"></a><span class="lineno"> 111</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> <span class="keyword">true</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_inductor.html#ac3ba7de94a328b20ff86e968a6228f60"> 115</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="l00116"></a><span class="lineno"> 116</span> <span class="keyword"></span>{</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  wxPoint2DDouble ptR = RotateAtPosition(position, -m_angle);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> m_rect.Contains(ptR);</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_inductor.html#a3d331d2a725275a12489401180d4c1d1"> 121</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="l00122"></a><span class="lineno"><a class="line" href="class_inductor.html#abfaf28fc70a71f3f85940eef7d1551c9"> 122</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="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_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="l00125"></a><span class="lineno"> 125</span>  capacitorForm->SetTitle(_(<span class="stringliteral">"Inductor"</span>));</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span>(capacitorForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  capacitorForm->Destroy();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">return</span> <span class="keyword">true</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>  capacitorForm->Destroy();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <span class="keyword">false</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> <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="l00135"></a><span class="lineno"> 135</span> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  data.reactivePower = data.reactivePower / systemPowerBase;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  data.reactivePowerUnit = <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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  data.reactivePower = (data.reactivePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  data.reactivePower = (data.reactivePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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>  <span class="keywordflow">default</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>  }</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">return</span> 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> </div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="class_inductor.html#a4241ebd43388ebe88ec5888a15bc22d9"> 157</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="l00158"></a><span class="lineno"> 158</span> {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</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="l00160"></a><span class="lineno"> 160</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">return</span> copy;</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_inductor.html#ac16663899a076f0e84722b27193fe530"> 164</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="l00165"></a><span class="lineno"> 165</span> <span class="keyword"></span>{</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  wxString tipText = m_electricalData.name;</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">// TODO: Avoid reactive power calculation.</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordtype">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span>(!m_online)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  reactivePower = 0.0;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</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="l00174"></a><span class="lineno"> 174</span>  reactivePower *= std::pow(std::abs(v), 2);</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>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  tipText += _(<span class="stringliteral">" VAr"</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  tipText += _(<span class="stringliteral">" kVAr"</span>);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  tipText += _(<span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">default</span>:</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>  }</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">return</span> tipText;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</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#l00201">Element.h:201</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#l00122">Inductor.cpp:122</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#l00088">Element.h:88</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#l00033">Element.h:33</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#l00164">Inductor.cpp:164</a></div></div> -<div class="ttc" id="class_inductor_html_ac3ba7de94a328b20ff86e968a6228f60"><div class="ttname"><a href="class_inductor.html#ac3ba7de94a328b20ff86e968a6228f60">Inductor::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="_inductor_8cpp_source.html#l00115">Inductor.cpp:115</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#l00096">Inductor.cpp:96</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#l00008">Inductor.h:8</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#l00091">Element.cpp:91</a></div></div> -<div class="ttc" id="class_inductor_html_a4241ebd43388ebe88ec5888a15bc22d9"><div class="ttname"><a href="class_inductor.html#a4241ebd43388ebe88ec5888a15bc22d9">Inductor::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="_inductor_8cpp_source.html#l00157">Inductor.cpp:157</a></div></div> -<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#l00108">Inductor.cpp:108</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#l00012">PowerElement.h:12</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#l00038">Inductor.cpp:38</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#l00045">Bus.h:45</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#l00007">Inductor.cpp:7</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#l00025">PowerElement.h: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#l00333">Element.cpp:333</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#l00024">PowerElement.h:24</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#l00023">PowerElement.h:23</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#l00048">Element.h:48</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#l00121">Inductor.cpp:121</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#l00171">Element.h:171</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#l00014">Inductor.h:14</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#l00007">Shunt.h:7</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="ttdef"><b>Definition:</b> <a href="_reactive_shunt_element_form_8h_source.html#l00010">ReactiveShuntElementForm.h:10</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#l00083">Element.h:83</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 "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="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="_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> +<div class="ttc" id="class_inductor_html_ac3ba7de94a328b20ff86e968a6228f60"><div class="ttname"><a href="class_inductor.html#ac3ba7de94a328b20ff86e968a6228f60">Inductor::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="_inductor_8cpp_source.html#l00132">Inductor.cpp:132</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_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_inductor_html_a4241ebd43388ebe88ec5888a15bc22d9"><div class="ttname"><a href="class_inductor.html#a4241ebd43388ebe88ec5888a15bc22d9">Inductor::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="_inductor_8cpp_source.html#l00174">Inductor.cpp:174</a></div></div> +<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_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_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_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 --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_inductor_8h_source.html b/docs/doxygen/html/_inductor_8h_source.html index cabc03d..6c82c0b 100644 --- a/docs/doxygen/html/_inductor_8h_source.html +++ b/docs/doxygen/html/_inductor_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,13 +88,13 @@ $(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="preprocessor">#ifndef INDUCTOR_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define INDUCTOR_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "Shunt.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="struct_inductor_electrical_data.html"> 8</a></span> <span class="keyword">struct </span><a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  wxString name;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <span class="keywordtype">double</span> reactivePower = 100.0;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span> };</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00014"></a><span class="lineno"><a class="line" href="class_inductor.html"> 14</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="l00015"></a><span class="lineno"> 15</span> {</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <a class="code" href="class_inductor.html">Inductor</a>();</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <a class="code" href="class_inductor.html">Inductor</a>(wxString name);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  ~<a class="code" href="class_inductor.html">Inductor</a>();</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="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</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="l00023"></a><span class="lineno"> 23</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="l00024"></a><span class="lineno"> 24</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="l00025"></a><span class="lineno"> 25</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="l00026"></a><span class="lineno"> 26</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="l00027"></a><span class="lineno"> 27</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</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="l00030"></a><span class="lineno"> 30</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="l00031"></a><span class="lineno"> 31</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="l00032"></a><span class="lineno"> 32</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="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> m_electricalData;</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 // 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#l00088">Element.h:88</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#l00008">Inductor.h:8</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#l00011">PowerElement.h:11</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#l00025">PowerElement.h:25</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#l00014">Inductor.h:14</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#l00007">Shunt.h:7</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="ttdef"><b>Definition:</b> <a href="_reactive_shunt_element_form_8h_source.html#l00010">ReactiveShuntElementForm.h:10</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">#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> +<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_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 --> diff --git a/docs/doxygen/html/_limiter_8cpp_source.html b/docs/doxygen/html/_limiter_8cpp_source.html index 912af4c..2edb03e 100644 --- a/docs/doxygen/html/_limiter_8cpp_source.html +++ b/docs/doxygen/html/_limiter_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,17 @@ $(document).ready(function(){initNavTree('_limiter_8cpp_source.html','');}); <div class="title">Limiter.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 "Limiter.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "LimiterForm.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</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="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  m_width = m_height = 36.0;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</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="l00008"></a><span class="lineno"> 8</span>  nodeIn->StartMove(m_position);</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</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="l00010"></a><span class="lineno"> 10</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_nodeList.push_back(nodeIn);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> }</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> Limiter::~Limiter() {}</div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="class_limiter.html#a2e2960936ebfcc6589181b7948fba242"> 17</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="l00018"></a><span class="lineno"> 18</span> <span class="keyword"></span>{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  glLineWidth(1.0);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  DrawRectangle(m_position, m_width + borderSize, m_height + 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>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  DrawRectangle(m_position, m_width, m_height);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  DrawRectangle(m_position, m_width, m_height, GL_LINE_LOOP);</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="comment">// Plot symbol.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  glLineWidth(2.0);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  std::vector<wxPoint2DDouble> limSymbol;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  limSymbol.push_back(m_position + wxPoint2DDouble(10, -10));</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  limSymbol.push_back(m_position + wxPoint2DDouble(2, -10));</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  limSymbol.push_back(m_position + wxPoint2DDouble(-2, 10));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  limSymbol.push_back(m_position + wxPoint2DDouble(-10, 10));</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  glColor4d(0.0, 0.3, 1.0, 1.0);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  DrawLine(limSymbol);</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(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  DrawNodes();</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"><a class="line" href="class_limiter.html#a31fd227e010e7d39f1435a70709b14e3"> 44</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="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_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="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span>(limiter->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  limiter->Destroy();</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>  limiter->Destroy();</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_limiter.html#ab9c3aa47fd2fd4903be2dd600f658d25"> 55</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="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>(clockwise)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_angle += 90.0;</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>  m_angle -= 90.0;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  m_angle = 0.0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_angle = 270.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>  UpdatePoints();</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="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="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  node->Rotate(clockwise);</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> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keywordtype">void</span> Limiter::UpdatePoints()</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_angle == 0.0) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-18, 0));</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(18, 0));</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 == 90.0) {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -18));</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, 18));</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(18, 0));</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-18, 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 == 270.0) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, 18));</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -18));</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">bool</span> Limiter::Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</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_output = input;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span>(m_output > m_upLimit) m_output = m_upLimit;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_output < m_lowLimit) m_output = m_lowLimit;</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">return</span> <span class="keyword">true</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"><a class="line" href="class_limiter.html#a6071e2308baa7b42f189f09fd1878245"> 100</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="l00101"></a><span class="lineno"> 101</span> {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</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="l00103"></a><span class="lineno"> 103</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</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#l00017">Limiter.cpp:17</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#l00100">Limiter.cpp:100</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#l00088">Element.h:88</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</a></div></div> -<div class="ttc" id="class_limiter_html"><div class="ttname"><a href="class_limiter.html">Limiter</a></div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8h_source.html#l00008">Limiter.h:8</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="ttdef"><b>Definition:</b> <a href="_limiter_form_8h_source.html#l00007">LimiterForm.h:7</a></div></div> -<div class="ttc" id="class_limiter_html_ab9c3aa47fd2fd4903be2dd600f658d25"><div class="ttname"><a href="class_limiter.html#ab9c3aa47fd2fd4903be2dd600f658d25">Limiter::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="_limiter_8cpp_source.html#l00055">Limiter.cpp:55</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#l00053">ControlElement.h:53</a></div></div> -<div class="ttc" id="class_limiter_html_a31fd227e010e7d39f1435a70709b14e3"><div class="ttname"><a href="class_limiter.html#a31fd227e010e7d39f1435a70709b14e3">Limiter::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="_limiter_8cpp_source.html#l00044">Limiter.cpp:44</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="_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_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> +<div class="ttc" id="class_limiter_html_ab9c3aa47fd2fd4903be2dd600f658d25"><div class="ttname"><a href="class_limiter.html#ab9c3aa47fd2fd4903be2dd600f658d25">Limiter::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="_limiter_8cpp_source.html#l00072">Limiter.cpp:72</a></div></div> +<div class="ttc" id="_limiter_form_8h_html"><div class="ttname"><a href="_limiter_form_8h.html">LimiterForm.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="class_limiter_html_a31fd227e010e7d39f1435a70709b14e3"><div class="ttname"><a href="class_limiter.html#a31fd227e010e7d39f1435a70709b14e3">Limiter::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="_limiter_8cpp_source.html#l00061">Limiter.cpp:61</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_limiter_8h.html b/docs/doxygen/html/_limiter_8h.html new file mode 100644 index 0000000..41e6b15 --- /dev/null +++ b/docs/doxygen/html/_limiter_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/Limiter.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('_limiter_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">Limiter.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="_limiter_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_limiter.html">Limiter</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Limits the input value by superior and inferior values. <a href="class_limiter.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="_limiter_8h.html">Limiter.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/_limiter_8h_source.html b/docs/doxygen/html/_limiter_8h_source.html index 48280f2..4373c00 100644 --- a/docs/doxygen/html/_limiter_8h_source.html +++ b/docs/doxygen/html/_limiter_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,22 +88,23 @@ $(document).ready(function(){initNavTree('_limiter_8h_source.html','');}); <div class="title">Limiter.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="preprocessor">#ifndef LIMITER_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define LIMITER_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ControlElement.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_limiter_form.html">LimiterForm</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_limiter.html"> 8</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="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span>  ~<a class="code" href="class_limiter.html">Limiter</a>();</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">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="l00015"></a><span class="lineno"><a class="line" href="class_limiter.html#ac6506d59da4ea682d9e556564ec3ad11"> 15</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="l00016"></a><span class="lineno"><a class="line" href="class_limiter.html#ac9c1858dfc3b4d30b2eca0c4767a9f0e"> 16</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="l00017"></a><span class="lineno"> 17</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="l00018"></a><span class="lineno"> 18</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="l00019"></a><span class="lineno"> 19</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="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</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="keywordtype">double</span> GetUpLimit()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_upLimit; }</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</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="l00025"></a><span class="lineno"> 25</span>  </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordtype">void</span> SetUpLimit(<span class="keywordtype">double</span> upLimit) { m_upLimit = upLimit; }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">void</span> SetLowLimit(<span class="keywordtype">double</span> lowLimit) { m_lowLimit = lowLimit; }</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">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="l00030"></a><span class="lineno"> 30</span>  </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">double</span> m_upLimit = 5.0;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">double</span> m_lowLimit = -5.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> <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#l00017">Limiter.cpp:17</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#l00100">Limiter.cpp:100</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#l00088">Element.h:88</a></div></div> -<div class="ttc" id="class_limiter_html"><div class="ttname"><a href="class_limiter.html">Limiter</a></div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8h_source.html#l00008">Limiter.h:8</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#l00015">Limiter.h:15</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="ttdef"><b>Definition:</b> <a href="_limiter_form_8h_source.html#l00007">LimiterForm.h:7</a></div></div> -<div class="ttc" id="class_limiter_html_ac9c1858dfc3b4d30b2eca0c4767a9f0e"><div class="ttname"><a href="class_limiter.html#ac9c1858dfc3b4d30b2eca0c4767a9f0e">Limiter::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="_limiter_8h_source.html#l00016">Limiter.h:16</a></div></div> -<div class="ttc" id="class_limiter_html_ab9c3aa47fd2fd4903be2dd600f658d25"><div class="ttname"><a href="class_limiter.html#ab9c3aa47fd2fd4903be2dd600f658d25">Limiter::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="_limiter_8cpp_source.html#l00055">Limiter.cpp:55</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#l00053">ControlElement.h:53</a></div></div> -<div class="ttc" id="class_limiter_html_a31fd227e010e7d39f1435a70709b14e3"><div class="ttname"><a href="class_limiter.html#a31fd227e010e7d39f1435a70709b14e3">Limiter::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="_limiter_8cpp_source.html#l00044">Limiter.cpp:44</a></div></div> +<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_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> +<div class="ttc" id="class_limiter_html_ac9c1858dfc3b4d30b2eca0c4767a9f0e"><div class="ttname"><a href="class_limiter.html#ac9c1858dfc3b4d30b2eca0c4767a9f0e">Limiter::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="_limiter_8h_source.html#l00040">Limiter.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_limiter_html_ab9c3aa47fd2fd4903be2dd600f658d25"><div class="ttname"><a href="class_limiter.html#ab9c3aa47fd2fd4903be2dd600f658d25">Limiter::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="_limiter_8cpp_source.html#l00072">Limiter.cpp:72</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_limiter_html_a31fd227e010e7d39f1435a70709b14e3"><div class="ttname"><a href="class_limiter.html#a31fd227e010e7d39f1435a70709b14e3">Limiter::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="_limiter_8cpp_source.html#l00061">Limiter.cpp:61</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>Limiter.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_limiter_8h.html">Limiter.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_form_8cpp_source.html b/docs/doxygen/html/_limiter_form_8cpp_source.html index 4637d2b..df9af8c 100644 --- a/docs/doxygen/html/_limiter_form_8cpp_source.html +++ b/docs/doxygen/html/_limiter_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,8 +88,10 @@ $(document).ready(function(){initNavTree('_limiter_form_8cpp_source.html','');}) <div class="title">LimiterForm.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 "LimiterForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "Limiter.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> LimiterForm::LimiterForm(wxWindow* parent, <a class="code" href="class_limiter.html">Limiter</a>* limiter) : <a class="code" href="class_limiter_form_base.html">LimiterFormBase</a>(parent)</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  SetSize(GetBestSize());</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>  m_limiter = limiter;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  m_parent = parent;</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>  m_textCtrlUpLimit->SetValue(m_limiter->StringFromDouble(m_limiter->GetUpLimit()));</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_textCtrlLowLimit->SetValue(m_limiter->StringFromDouble(m_limiter->GetLowLimit()));</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> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> LimiterForm::~LimiterForm() {}</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keywordtype">void</span> LimiterForm::OnOKButtonClick(wxCommandEvent& event)</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="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</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> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="keywordtype">bool</span> LimiterForm::ValidateData()</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="keywordtype">double</span> upLimit;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordtype">double</span> lowLimit;</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>(!m_limiter->DoubleFromString(<span class="keyword">this</span>, m_textCtrlUpLimit->GetValue(), upLimit,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Upper limit\"."</span>)))</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">if</span>(!m_limiter->DoubleFromString(<span class="keyword">this</span>, m_textCtrlLowLimit->GetValue(), lowLimit,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Lower limit\"."</span>)))</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">return</span> <span class="keyword">false</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_limiter->SetUpLimit(upLimit);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_limiter->SetLowLimit(lowLimit);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> }</div><div class="ttc" id="class_limiter_html"><div class="ttname"><a href="class_limiter.html">Limiter</a></div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8h_source.html#l00008">Limiter.h:8</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="_limiter_form_8h.html">LimiterForm.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_8h.html">Limiter.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> LimiterForm::LimiterForm(wxWindow* parent, <a class="code" href="class_limiter.html">Limiter</a>* limiter) : <a class="code" href="class_limiter_form_base.html">LimiterFormBase</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_limiter = limiter;</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> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_textCtrlUpLimit->SetValue(m_limiter->StringFromDouble(m_limiter->GetUpLimit()));</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_textCtrlLowLimit->SetValue(m_limiter->StringFromDouble(m_limiter->GetLowLimit()));</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> LimiterForm::~LimiterForm() {}</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keywordtype">void</span> LimiterForm::OnOKButtonClick(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">bool</span> LimiterForm::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="keywordtype">double</span> upLimit;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">double</span> lowLimit;</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="keywordflow">if</span>(!m_limiter->DoubleFromString(<span class="keyword">this</span>, m_textCtrlUpLimit->GetValue(), upLimit,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Upper limit\"."</span>)))</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <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_limiter->DoubleFromString(<span class="keyword">this</span>, m_textCtrlLowLimit->GetValue(), lowLimit,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Lower limit\"."</span>)))</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  m_limiter->SetUpLimit(upLimit);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_limiter->SetLowLimit(lowLimit);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</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_base_html"><div class="ttname"><a href="class_limiter_form_base.html">LimiterFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00831">ElementForm.h:831</a></div></div> +<div class="ttc" id="_limiter_form_8h_html"><div class="ttname"><a href="_limiter_form_8h.html">LimiterForm.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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_limiter_form_8h.html b/docs/doxygen/html/_limiter_form_8h.html new file mode 100644 index 0000000..cca1910 --- /dev/null +++ b/docs/doxygen/html/_limiter_form_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/LimiterForm.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('_limiter_form_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">LimiterForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +</div> +<p><a href="_limiter_form_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_limiter_form.html">LimiterForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the limit control data. <a href="class_limiter_form.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="_limiter_form_8h.html">LimiterForm.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/_limiter_form_8h_source.html b/docs/doxygen/html/_limiter_form_8h_source.html index b79f2ed..e5f60e9 100644 --- a/docs/doxygen/html/_limiter_form_8h_source.html +++ b/docs/doxygen/html/_limiter_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,15 @@ $(document).ready(function(){initNavTree('_limiter_form_8h_source.html','');}); <div class="title">LimiterForm.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="preprocessor">#ifndef LIMITERFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define LIMITERFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="keyword">class </span><a class="code" href="class_limiter.html">Limiter</a>;</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="class_limiter_form.html"> 7</a></span> <span class="keyword">class </span><a class="code" href="class_limiter_form.html">LimiterForm</a> : <span class="keyword">public</span> <a class="code" href="class_limiter_form_base.html">LimiterFormBase</a></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <a class="code" href="class_limiter_form.html">LimiterForm</a>(wxWindow* parent, <a class="code" href="class_limiter.html">Limiter</a>* limiter);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_limiter_form.html">LimiterForm</a>();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</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">protected</span>:</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</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>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <a class="code" href="class_limiter.html">Limiter</a>* m_limiter = NULL;</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">#endif // LIMITERFORM_H</span></div><div class="ttc" id="class_limiter_html"><div class="ttname"><a href="class_limiter.html">Limiter</a></div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8h_source.html#l00008">Limiter.h:8</a></div></div> +<a href="_limiter_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 LIMITERFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define LIMITERFORM_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_limiter.html">Limiter</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_limiter_form.html"> 31</a></span> <span class="keyword">class </span><a class="code" href="class_limiter_form.html">LimiterForm</a> : <span class="keyword">public</span> <a class="code" href="class_limiter_form_base.html">LimiterFormBase</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_limiter_form.html">LimiterForm</a>(wxWindow* parent, <a class="code" href="class_limiter.html">Limiter</a>* limiter);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_limiter_form.html">LimiterForm</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_limiter.html">Limiter</a>* m_limiter = 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 // LIMITERFORM_H</span></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_base_html"><div class="ttname"><a href="class_limiter_form_base.html">LimiterFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00831">ElementForm.h:831</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="ttdef"><b>Definition:</b> <a href="_limiter_form_8h_source.html#l00007">LimiterForm.h:7</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> </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>LimiterForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_limiter_form_8h.html">LimiterForm.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_8cpp_source.html b/docs/doxygen/html/_line_8cpp_source.html index 93b0605..94a9fdd 100644 --- a/docs/doxygen/html/_line_8cpp_source.html +++ b/docs/doxygen/html/_line_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,50 +88,50 @@ $(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="preprocessor">#include "Line.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> Line::Line() : <a class="code" href="class_branch.html">Branch</a>()</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> {</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; i++) {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 3; j++) {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  }</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</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> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> Line::Line(wxString name) : <a class="code" href="class_branch.html">Branch</a>()</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="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; i++) {</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 3; j++) {</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);</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>  }</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  m_electricalData.name = name;</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> Line::~Line() {}</div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="class_line.html#a05eb3761f198a058045f85d6e685ca97"> 22</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="l00023"></a><span class="lineno"> 23</span> <span class="keyword"></span>{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordflow">if</span>(PointToLineDistance(position) < 5.0) {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">return</span> <span class="keyword">true</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="keywordflow">return</span> <span class="keyword">false</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> </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="class_line.html#a297e12aa8ff0be5d344e245732487bdd"> 30</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="l00031"></a><span class="lineno"> 31</span> <span class="keyword"></span>{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  elementColour = m_onlineElementColour;</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="keywordflow">else</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  elementColour = m_offlineElementColour;</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>  std::vector<wxPoint2DDouble> pointList = m_pointList;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span>(!m_inserted && pointList.size() > 0) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  wxPoint2DDouble secondPoint = m_position;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span>(pointList.size() > 2) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  secondPoint = pointList[2];</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>  pointList[1] = GetSwitchPoint(m_parentList[0], pointList[0], secondPoint);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  pointList.push_back(m_position);</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="comment">// Line selected (Layer 1).</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  DrawLine(pointList);</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">// Draw nodes selection.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span>(pointList.size() > 0) {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  DrawCircle(pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  DrawCircle(pointList[pointList.size() - 1], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</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>  }</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="comment">// Draw line (Layer 2)</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  glLineWidth(1.5);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  DrawLine(pointList);</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_inserted) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  DrawSwitches();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  DrawPowerFlowPts();</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 nodes.</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>(pointList.size() > 0) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  glColor4dv(elementColour.<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>  DrawCircle(pointList[0], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  DrawCircle(pointList[pointList.size() - 1], 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>  }</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 pickboxes (Layer 3).</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span>(m_showPickbox) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  glPushMatrix();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  glLoadIdentity();</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="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  DrawPickbox(WorldToScreen(m_pointList[i], translation, scale));</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>  glPopMatrix();</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> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="class_line.html#a3eabf6de2af4ee71f72ce4f091c69978"> 99</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="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>(!m_parentList[0]) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  UpdatePowerFlowArrowsPosition();</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="keywordflow">if</span>(!m_parentList[1]) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  UpdatePowerFlowArrowsPosition();</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="keywordflow">if</span>(!m_parentList[0] && !m_parentList[1]) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</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="l00114"></a><span class="lineno"> 114</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</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> </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="class_line.html#a26c69f7f703dca718edc28d5093934a3"> 119</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="l00120"></a><span class="lineno"> 120</span> {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">// First bus.</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">if</span>(m_parentList.size() == 0) {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  m_position = position;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</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="l00129"></a><span class="lineno"> 129</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="l00130"></a><span class="lineno"> 130</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="l00131"></a><span class="lineno"> 131</span>  m_pointList.push_back(parentPt); <span class="comment">// First point</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</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>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_switchRect.push_back(genRect);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  UpdateSwitches();</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_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="l00139"></a><span class="lineno"> 139</span>  m_electricalData.nominalVoltage = parentBus->GetElectricalData().nominalVoltage;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  m_electricalData.nominalVoltageUnit = parentBus->GetElectricalData().nominalVoltageUnit;</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>  <span class="comment">// Second bus.</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent != m_parentList[0]) {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</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="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">if</span>(m_electricalData.nominalVoltage != parentBus->GetElectricalData().nominalVoltage ||</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_electricalData.nominalVoltageUnit != parentBus->GetElectricalData().nominalVoltageUnit) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  wxMessageDialog msgDialog(NULL, _(<span class="stringliteral">"Unable to connect two buses with different nominal voltages.\n"</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="stringliteral">"Use a transformer or edit the bus properties."</span>),</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  msgDialog.ShowModal();</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> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</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="l00160"></a><span class="lineno"> 160</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="l00161"></a><span class="lineno"> 161</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="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// Set first switch point.</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  wxPoint2DDouble secondPoint = parentPt;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span>(m_pointList.size() > 2) {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  secondPoint = m_pointList[2];</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>  m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], secondPoint);</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">// Set the second switch point.</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_pointList[m_pointList.size() - 1]));</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_pointList.push_back(parentPt); <span class="comment">// Last point.</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>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_switchRect.push_back(genRect);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  UpdateSwitches();</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_inserted = <span class="keyword">true</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> <span class="keyword">true</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>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> <span class="keyword">false</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"><a class="line" href="class_line.html#a125581fc6d21c83565b902751af331dc"> 186</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="l00187"></a><span class="lineno"> 187</span> <span class="keyword"></span>{</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</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="l00189"></a><span class="lineno"> 189</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="l00190"></a><span class="lineno"> 190</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> }</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="class_line.html#afa67498961416e645e0aa5358959ef1d"> 193</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="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>(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="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</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="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span>(m_activePickboxID == i) {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  UpdatePowerFlowArrowsPosition();</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> }</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="class_line.html#acac760d9d67d9c4d007e03592d0e96b4"> 205</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="l00206"></a><span class="lineno"> 206</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</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="l00208"></a><span class="lineno"> 208</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="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span>(rect.Contains(position)) {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  m_activePickboxID = i;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">return</span> <span class="keyword">true</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>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">return</span> <span class="keyword">false</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"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="class_line.html#a046a7b2ebff50f237f73dbc182f7ff6f"> 217</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="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_parentList.size() != 0) {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  m_pointList.push_back(point);</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"><a class="line" href="class_line.html#abb812387508a9971570bfa1d38e41041"> 224</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="l00225"></a><span class="lineno"> 225</span> {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  m_moveStartPt = position;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  m_movePts = m_pointList;</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_line.html#ac8be7d7136d86830c262280f51b79ea4"> 230</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="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>(parent) {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="comment">// First bus.</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</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">// Second bus.</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent == m_parentList[1]) {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</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>  <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="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</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="l00245"></a><span class="lineno"> 245</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</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>  }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</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="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  m_online = <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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">if</span>(m_parentList[1]) {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  m_parentList[1]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  m_parentList[1] = NULL;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  m_online = <span class="keyword">false</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>  }</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>  <span class="comment">// Recalculate switches positions</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  UpdatePowerFlowArrowsPosition();</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"><a class="line" href="class_line.html#a978de0ff06b6f57401ade84045e1a55f"> 272</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="l00273"></a><span class="lineno"> 273</span> {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</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="l00275"></a><span class="lineno"> 275</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="l00276"></a><span class="lineno"> 276</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="l00277"></a><span class="lineno"> 277</span>  addNodeItem->SetBitmap(wxImage(<span class="stringliteral">"..\\data\\images\\menu\\addNode16.png"</span>));</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  menu.Append(addNodeItem);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</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="l00281"></a><span class="lineno"> 281</span>  addNodeItem->SetBitmap(wxImage(<span class="stringliteral">"..\\data\\images\\menu\\removeNode16.png"</span>));</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  menu.Append(addNodeItem);</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>  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="l00285"></a><span class="lineno"> 285</span>  deleteItem->SetBitmap(wxImage(<span class="stringliteral">"..\\data\\images\\menu\\delete16.png"</span>));</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  menu.Append(deleteItem);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">return</span> <span class="keyword">true</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"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="keywordtype">void</span> Line::RemoveNode(wxPoint2DDouble point)</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="keywordflow">if</span>(PickboxContains(point)) {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</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="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span>(m_activePickboxID == i) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  m_pointList.erase(m_pointList.begin() + i);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">break</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>  UpdateSwitchesPosition();</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  UpdatePowerFlowArrowsPosition();</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> Line::AddNode(wxPoint2DDouble point)</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>  <span class="keywordtype">int</span> segmentNumber = 0;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  PointToLineDistance(point, &segmentNumber);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">if</span>(segmentNumber > 0 && segmentNumber < (<span class="keywordtype">int</span>)m_pointList.size() - 2) {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  m_pointList.insert(m_pointList.begin() + segmentNumber + 1, point);</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>  UpdateSwitchesPosition();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  UpdatePowerFlowArrowsPosition();</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"><a class="line" href="class_line.html#aa146d6b0c7f3b74204f2c88dcbd7f4b0"> 315</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="l00316"></a><span class="lineno"> 316</span> <span class="keyword"></span>{</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">if</span>(m_pointList.size() > 0) {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="comment">// Check points list boundaries.</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  leftUp = m_pointList[0];</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  rightBottom = m_pointList[0];</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</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="l00322"></a><span class="lineno"> 322</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="l00323"></a><span class="lineno"> 323</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="l00324"></a><span class="lineno"> 324</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="l00325"></a><span class="lineno"> 325</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="l00326"></a><span class="lineno"> 326</span>  }</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> </div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="class_line.html#a24c6a659148f063c78e080a18f4517a1"> 330</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="l00331"></a><span class="lineno"> 331</span> {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</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="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">if</span>(lineForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  lineForm->Destroy();</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">return</span> <span class="keyword">true</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>  lineForm->Destroy();</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">return</span> <span class="keyword">false</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"><a class="line" href="class_line.html#a1f3ef94716c52a357ecbcbdf00b0e072"> 341</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="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>(nominalVoltage.size() > 0) {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  m_electricalData.nominalVoltage = nominalVoltage[0];</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  m_electricalData.nominalVoltageUnit = nominalVoltageUnit[0];</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"><a class="line" href="class_line.html#a6d35082da4d30bd432b73b72dd86fadb"> 349</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="l00350"></a><span class="lineno"> 350</span> {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</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="l00352"></a><span class="lineno"> 352</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="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>(parent && m_activeNodeID != 0) {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  wxRect2DDouble nodeRect(0, 0, 0, 0);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</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="l00358"></a><span class="lineno"> 358</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</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>  <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</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>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(nodeRect)) {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</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="l00368"></a><span class="lineno"> 368</span>  <span class="comment">// two different voltages buses</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</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="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">if</span>(!m_parentList[0] && !m_parentList[1]) {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  m_electricalData.nominalVoltage = parentBus->GetElectricalData().nominalVoltage;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  m_electricalData.nominalVoltageUnit = parentBus->GetElectricalData().nominalVoltageUnit;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_electricalData.nominalVoltage != parentBus->GetElectricalData().nominalVoltage ||</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  m_electricalData.nominalVoltageUnit != parentBus->GetElectricalData().nominalVoltageUnit) {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  wxMessageDialog msgDialog(NULL, _(<span class="stringliteral">"Unable to connect two buses with different nominal voltages.\n"</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="stringliteral">"Use a transformer or edit the bus properties."</span>),</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">return</span> <span class="keyword">false</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="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="comment">// Check if the user is trying to connect the same bus.</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">if</span>(m_parentList[1] == parent) {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">return</span> <span class="keyword">false</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> </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  m_parentList[0] = parent;</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>  <span class="comment">// Centralize the node on bus.</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  wxPoint2DDouble parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</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="l00395"></a><span class="lineno"> 395</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="l00396"></a><span class="lineno"> 396</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="l00397"></a><span class="lineno"> 397</span>  m_pointList[0] = parentPt;</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>  UpdateSwitchesPosition();</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">return</span> <span class="keyword">true</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 == 2) {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">if</span>(m_parentList[0] == parent) {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">return</span> <span class="keyword">false</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> </div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  m_parentList[1] = parent;</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>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</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="l00413"></a><span class="lineno"> 413</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</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="l00415"></a><span class="lineno"> 415</span>  m_pointList[m_pointList.size() - 1] = parentPt;</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>  UpdateSwitchesPosition();</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">return</span> <span class="keyword">true</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">else</span> {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) m_parentList[0] = NULL;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) m_parentList[1] = NULL;</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="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"><a class="line" href="class_line.html#a400c8d0397ecdfe6c0a8380ee6bc7e1e"> 429</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="l00430"></a><span class="lineno"> 430</span> {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  m_pfDirection = pfDirection;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  UpdatePowerFlowArrowsPosition();</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="keywordtype">void</span> Line::UpdatePowerFlowArrowsPosition()</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>  std::vector<wxPoint2DDouble> edges;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">switch</span>(m_pfDirection) {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a>: {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  m_powerFlowArrow.clear();</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> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523">PF_BUS1_TO_BUS2</a>: {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</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="l00444"></a><span class="lineno"> 444</span>  edges.push_back(m_pointList[i]);</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">break</span>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</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="l00448"></a><span class="lineno"> 448</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="l00449"></a><span class="lineno"> 449</span>  edges.push_back(m_pointList[i]);</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">default</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>  }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  CalculatePowerFlowPts(edges);</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> </div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="class_line.html#ab73d74778b5aa9807d21f156d15fadf7"> 458</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="l00459"></a><span class="lineno"> 459</span> {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</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>(parent == m_parentList[0]) {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</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="l00465"></a><span class="lineno"> 465</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent == m_parentList[1]) {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</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="l00467"></a><span class="lineno"> 467</span>  }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  UpdatePowerFlowArrowsPosition();</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"><a class="line" href="class_line.html#af9a931bdb7e0693cacae010a19b744e6"> 472</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="l00473"></a><span class="lineno"> 473</span> {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  m_pointList = pointList;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  UpdatePowerFlowArrowsPosition();</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> </div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="class_line.html#afc4916268d2a32014e4ab0f8308165a1"> 479</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="l00480"></a><span class="lineno"> 480</span> {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</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="l00482"></a><span class="lineno"> 482</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">return</span> copy;</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> </div><div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="class_line.html#a51e7bff578cd280464a70200fc323efc"> 486</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="l00487"></a><span class="lineno"> 487</span> <span class="keyword"></span>{</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> </div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordtype">int</span> busNumber[2];</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</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="l00494"></a><span class="lineno"> 494</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="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00496"></a><span class="lineno"> 496</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="l00497"></a><span class="lineno"> 497</span>  wxString::FromDouble(m_electricalData.powerFlow[0].real(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</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="l00499"></a><span class="lineno"> 499</span>  wxString::FromDouble(m_electricalData.powerFlow[0].imag(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</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="l00501"></a><span class="lineno"> 501</span>  wxString::FromDouble(m_electricalData.powerFlow[1].real(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</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="l00503"></a><span class="lineno"> 503</span>  wxString::FromDouble(m_electricalData.powerFlow[1].imag(), 5) + _(<span class="stringliteral">" p.u."</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> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">return</span> tipText;</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> <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="l00510"></a><span class="lineno"> 510</span> {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordtype">double</span> lineBasePower = GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordtype">double</span> baseVoltage = GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordtype">double</span> systemBaseImpedance = (baseVoltage * baseVoltage) / systemBasePower;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordtype">double</span> lineBaseImpedance = (baseVoltage * baseVoltage) / lineBasePower;</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="comment">// Resistance</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordtype">double</span> r = data.resistance;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</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="l00520"></a><span class="lineno"> 520</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="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">if</span>(data.useLinePower) data.resistance = (r * lineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  data.resistance = r / systemBaseImpedance;</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.resistanceUnit = <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> </div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="comment">// Inductive reactance</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordtype">double</span> x = data.indReactance;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</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="l00530"></a><span class="lineno"> 530</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="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">if</span>(data.useLinePower) data.indReactance = (x * lineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  data.indReactance = x / systemBaseImpedance;</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>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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">// Capacitive susceptance</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordtype">double</span> b = data.capSusceptance;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</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="l00540"></a><span class="lineno"> 540</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="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">if</span>(data.useLinePower) data.capSusceptance = (b * 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.capSusceptance = b / 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.capSusceptanceUnit = <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">// Fault</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> </div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="comment">// Zero seq. resistance</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordtype">double</span> r0 = data.zeroResistance;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">if</span>(data.useLinePower) data.zeroResistance = (r0 * lineBaseImpedance) / systemBaseImpedance;</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>  <span class="comment">// Zero seq. ind. reactance</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordtype">double</span> x0 = data.zeroIndReactance;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordflow">if</span>(data.useLinePower) data.zeroIndReactance = (x0 * lineBaseImpedance) / systemBaseImpedance;</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">// Zero seq. cap. susceptance</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordtype">double</span> b0 = data.zeroCapSusceptance;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">if</span>(data.useLinePower) data.zeroCapSusceptance = (b0 * lineBaseImpedance) / systemBaseImpedance;</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>  <span class="keywordflow">if</span>(!m_online) {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  data.powerFlow[0] = std::complex<double>(0,0);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  data.powerFlow[1] = std::complex<double>(0,0);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  data.faultCurrent[0][0] = std::complex<double>(0,0);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  data.faultCurrent[0][1] = std::complex<double>(0,0);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  data.faultCurrent[0][2] = std::complex<double>(0,0);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  data.faultCurrent[1][0] = std::complex<double>(0,0);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  data.faultCurrent[1][1] = std::complex<double>(0,0);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  data.faultCurrent[1][2] = std::complex<double>(0,0);</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> </div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</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#l00201">Element.h:201</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#l00088">Element.h:88</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#l00193">Line.cpp:193</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#l00033">Element.h:33</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="ttdef"><b>Definition:</b> <a href="_line_form_8h_source.html#l00008">LineForm.h:8</a></div></div> -<div class="ttc" id="class_line_html_abb812387508a9971570bfa1d38e41041"><div class="ttname"><a href="class_line.html#abb812387508a9971570bfa1d38e41041">Line::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="_line_8cpp_source.html#l00224">Line.cpp:224</a></div></div> -<div class="ttc" id="class_line_html_a05eb3761f198a058045f85d6e685ca97"><div class="ttname"><a href="class_line.html#a05eb3761f198a058045f85d6e685ca97">Line::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="_line_8cpp_source.html#l00022">Line.cpp:22</a></div></div> -<div class="ttc" id="class_line_html_a6d35082da4d30bd432b73b72dd86fadb"><div class="ttname"><a href="class_line.html#a6d35082da4d30bd432b73b72dd86fadb">Line::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="_line_8cpp_source.html#l00349">Line.cpp:349</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#l00091">Element.cpp:91</a></div></div> -<div class="ttc" id="class_line_html_ac8be7d7136d86830c262280f51b79ea4"><div class="ttname"><a href="class_line.html#ac8be7d7136d86830c262280f51b79ea4">Line::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="_line_8cpp_source.html#l00230">Line.cpp:230</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 "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="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> +<div class="ttc" id="class_line_html_abb812387508a9971570bfa1d38e41041"><div class="ttname"><a href="class_line.html#abb812387508a9971570bfa1d38e41041">Line::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="_line_8cpp_source.html#l00241">Line.cpp:241</a></div></div> +<div class="ttc" id="class_line_html_a05eb3761f198a058045f85d6e685ca97"><div class="ttname"><a href="class_line.html#a05eb3761f198a058045f85d6e685ca97">Line::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="_line_8cpp_source.html#l00039">Line.cpp:39</a></div></div> +<div class="ttc" id="class_line_html_a6d35082da4d30bd432b73b72dd86fadb"><div class="ttname"><a href="class_line.html#a6d35082da4d30bd432b73b72dd86fadb">Line::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="_line_8cpp_source.html#l00369">Line.cpp:369</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_line_html_ac8be7d7136d86830c262280f51b79ea4"><div class="ttname"><a href="class_line.html#ac8be7d7136d86830c262280f51b79ea4">Line::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="_line_8cpp_source.html#l00247">Line.cpp:247</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="_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#l00012">PowerElement.h:12</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#l00034">Element.h:34</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#l00205">Line.cpp:205</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#l00045">Bus.h:45</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#l00119">Line.cpp:119</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#l00330">Line.cpp:330</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#l00315">Line.cpp:315</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#l00027">PowerElement.h:27</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#l00038">Element.h:38</a></div></div> -<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#l00099">Line.cpp:99</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#l00030">Line.cpp:30</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#l00333">Element.cpp:333</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#l00035">Line.h:35</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#l00458">Line.cpp:458</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#l00066">PowerElement.h:66</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#l00035">Element.h:35</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#l00007">Line.h:7</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#l00472">Line.cpp:472</a></div></div> -<div class="ttc" id="class_line_html_a125581fc6d21c83565b902751af331dc"><div class="ttname"><a href="class_line.html#a125581fc6d21c83565b902751af331dc">Line::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="_line_8cpp_source.html#l00186">Line.cpp:186</a></div></div> -<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#l00272">Line.cpp:272</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#l00062">PowerElement.h:62</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#l00341">Line.cpp:341</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#l00048">Element.h:48</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#l00061">PowerElement.h:61</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#l00479">Line.cpp:479</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#l00171">Element.h:171</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#l00065">PowerElement.h:65</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#l00429">Line.cpp:429</a></div></div> -<div class="ttc" id="class_line_html_a046a7b2ebff50f237f73dbc182f7ff6f"><div class="ttname"><a href="class_line.html#a046a7b2ebff50f237f73dbc182f7ff6f">Line::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="_line_8cpp_source.html#l00217">Line.cpp:217</a></div></div> -<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#l00486">Line.cpp:486</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#l00019">Element.h:19</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#l00083">Element.h:83</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#l00007">Branch.h:7</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="_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_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> +<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="_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="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_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> +<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_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_line_html_a125581fc6d21c83565b902751af331dc"><div class="ttname"><a href="class_line.html#a125581fc6d21c83565b902751af331dc">Line::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="_line_8cpp_source.html#l00203">Line.cpp:203</a></div></div> +<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="_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> +<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_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_line_html_a046a7b2ebff50f237f73dbc182f7ff6f"><div class="ttname"><a href="class_line.html#a046a7b2ebff50f237f73dbc182f7ff6f">Line::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="_line_8cpp_source.html#l00234">Line.cpp:234</a></div></div> +<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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_line_8h_source.html b/docs/doxygen/html/_line_8h_source.html index 82d22e5..5c484ac 100644 --- a/docs/doxygen/html/_line_8h_source.html +++ b/docs/doxygen/html/_line_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,16 +88,17 @@ $(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="preprocessor">#ifndef LINE_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define LINE_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "LineForm.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "Branch.h"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="struct_line_electrical_data.html"> 7</a></span> <span class="keyword">struct </span><a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> {</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  <span class="comment">// General</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  wxString name = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <span class="keywordtype">double</span> nominalVoltage = 138.0;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span>  <span class="keywordtype">double</span> nominalPower = 100.0;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</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="l00014"></a><span class="lineno"> 14</span>  <span class="keywordtype">double</span> resistance = 0.0;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</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="l00016"></a><span class="lineno"> 16</span>  <span class="keywordtype">double</span> indReactance = 1.0;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</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="l00018"></a><span class="lineno"> 18</span>  <span class="keywordtype">double</span> capSusceptance = 0.0;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</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="l00020"></a><span class="lineno"> 20</span>  <span class="keywordtype">double</span> lineSize = 100.0;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keywordtype">bool</span> useLinePower = <span class="keyword">false</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="comment">// Power flow (p.u.)</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</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="l00025"></a><span class="lineno"> 25</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="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">double</span> zeroResistance = 0.0;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordtype">double</span> zeroIndReactance = 1.0;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> zeroCapSusceptance = 0.0;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="comment">// p.u. fault data</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  std::complex<double> faultCurrent[2][3];</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_line.html"> 35</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="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_line.html">Line</a>();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_line.html">Line</a>(wxString name);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  ~<a class="code" href="class_line.html">Line</a>();</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">void</span> Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <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> Move(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> StartMove(wxPoint2DDouble position);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</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="l00046"></a><span class="lineno"> 46</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="l00047"></a><span class="lineno"><a class="line" href="class_line.html#a7c72fc585eb96bf9565cca0ce300cfd9"> 47</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="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</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="l00050"></a><span class="lineno"> 50</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="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> MovePickbox(wxPoint2DDouble position);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> PickboxContains(wxPoint2DDouble position);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AddPoint(wxPoint2DDouble point);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RemoveNode(wxPoint2DDouble point);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AddNode(wxPoint2DDouble point);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</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="l00059"></a><span class="lineno"> 59</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="l00060"></a><span class="lineno"> 60</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="l00061"></a><span class="lineno"> 61</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="l00062"></a><span class="lineno"> 62</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="l00063"></a><span class="lineno"> 63</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="l00064"></a><span class="lineno"> 64</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="l00065"></a><span class="lineno"> 65</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="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetPointList(std::vector<wxPoint2DDouble> pointList);</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> UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> m_electricalData;</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 // 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#l00088">Element.h:88</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#l00014">PowerElement.h:14</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#l00011">PowerElement.h:11</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#l00012">PowerElement.h:12</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#l00047">Line.h:47</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#l00022">PowerElement.h:22</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#l00035">Line.h:35</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#l00007">Line.h:7</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#l00061">PowerElement.h:61</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#l00007">Branch.h:7</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">#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> +<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="_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="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="_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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_line_form_8cpp_source.html b/docs/doxygen/html/_line_form_8cpp_source.html index 8a4aac0..f0eab08 100644 --- a/docs/doxygen/html/_line_form_8cpp_source.html +++ b/docs/doxygen/html/_line_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,21 +88,23 @@ $(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="preprocessor">#include "LineForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "SwitchingForm.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "Line.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</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="l00006"></a><span class="lineno"> 6</span> {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  m_choiceResistance->SetString(1, L<span class="stringliteral">'\u03A9'</span>);</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  m_choiceResistance->SetString(2, (wxString)L<span class="stringliteral">'\u03A9'</span> + <span class="stringliteral">"/km"</span>);</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_choiceResistance->SetInitialSize();</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  m_textCtrlResistance->SetInitialSize();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_choiceReactance->SetString(1, L<span class="stringliteral">'\u03A9'</span>);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  m_choiceReactance->SetString(2, (wxString)L<span class="stringliteral">'\u03A9'</span> + <span class="stringliteral">"/km"</span>);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_choiceReactance->SetInitialSize();</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_textCtrlReactance->SetInitialSize();</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>  ReplaceStaticTextLabelChar(m_staticTextZeroResistance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  ReplaceStaticTextLabelChar(m_staticTextZeroReactance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  ReplaceStaticTextLabelChar(m_staticTextZeroSusceptance, L<span class="stringliteral">'\u2080'</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>  SetSize(GetBestSize());</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  Layout();</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_line = line;</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="struct_line_electrical_data.html">LineElectricalData</a> data = line->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>  wxString nominalVoltageStr = <a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.nominalVoltage);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">switch</span>(data.nominalVoltageUnit) {</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#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  nominalVoltageStr += <span class="stringliteral">" V"</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  nominalVoltageStr += <span class="stringliteral">" kV"</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>  <span class="keywordflow">default</span>:</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_staticTextNominalVoltageValue->SetLabel(nominalVoltageStr);</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_textCtrlNominalPower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.nominalPower));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">switch</span>(data.nominalPowerUnit) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>: {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_choiceNominalPower->SetSelection(0);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  } <span class="keywordflow">break</span>;</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#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_choiceNominalPower->SetSelection(1);</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#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_choiceNominalPower->SetSelection(2);</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">default</span>:</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>  }</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_textCtrlResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.resistance));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">switch</span>(data.resistanceUnit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  m_choiceResistance->SetSelection(0);</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#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>: {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_choiceResistance->SetSelection(1);</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#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>: {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_choiceResistance->SetSelection(2);</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> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_textCtrlReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.indReactance));</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">switch</span>(data.indReactanceUnit) {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">case</span> <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>  m_choiceReactance->SetSelection(0);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>: {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_choiceReactance->SetSelection(1);</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#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>: {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_choiceReactance->SetSelection(2);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">default</span>:</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>  }</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_textCtrlSusceptance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.capSusceptance));</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">switch</span>(data.capSusceptanceUnit) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_choiceSusceptance->SetSelection(0);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  } <span class="keywordflow">break</span>;</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#a398e3da742a726a8f2bacd8149220ccaa7c0341915f48c889a8885b72199f2a11">UNIT_S</a>: {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_choiceSusceptance->SetSelection(1);</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#a398e3da742a726a8f2bacd8149220ccaaf5ad31fee4a7f5843527be386033de65">UNIT_S_km</a>: {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_choiceSusceptance->SetSelection(2);</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">default</span>:</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> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_textCtrlLineSize->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.lineSize));</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_checkUseLinePower->SetValue(data.useLinePower);</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>  m_textCtrlZeroResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.zeroResistance));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  m_textCtrlZeroReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.zeroIndReactance));</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_textCtrlZeroSusceptance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.zeroCapSusceptance));</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> LineForm::~LineForm() {}</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keywordtype">void</span> LineForm::OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keywordtype">void</span> LineForm::OnOKButtonClick(wxCommandEvent& event)</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>(ValidateData()) EndModal(wxID_OK);</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> <span class="keywordtype">void</span> LineForm::OnStabilityButtonClick(wxCommandEvent& event)</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="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_line);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  swForm.SetTitle(_(<span class="stringliteral">"Line: Switching"</span>));</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  swForm.ShowModal();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  EndModal(wxID_OK);</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> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="keywordtype">void</span> LineForm::ReplaceStaticTextLabelChar(wxStaticText* staticText, <span class="keywordtype">wchar_t</span> newChar)</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>  wxString label = staticText->GetLabel();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  label[label.length() - 2] = newChar;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  staticText->SetLabel(label);</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">bool</span> LineForm::ValidateData()</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="struct_line_electrical_data.html">LineElectricalData</a> data = m_line->GetElectricalData();</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>  data.name = m_textCtrlName->GetValue();</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_line->DoubleFromString(m_parent, m_textCtrlNominalPower->GetValue(), data.nominalPower,</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Nominal power\"."</span>)))</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <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">switch</span>(m_choiceNominalPower->GetSelection()) {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</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> 1: {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</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>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  } <span class="keywordflow">break</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>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlResistance->GetValue(), data.resistance,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Resistance\"."</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>  <span class="keywordflow">switch</span>(m_choiceResistance->GetSelection()) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  data.resistanceUnit = <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> 1: {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</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">case</span> 2: {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>;</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> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlReactance->GetValue(), data.indReactance,</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Indutive Reactance\"."</span>)))</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">switch</span>(m_choiceReactance->GetSelection()) {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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> 1: {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>;</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> 2: {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>;</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> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlSusceptance->GetValue(), data.capSusceptance,</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Capacitive Susceptance\"."</span>)))</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">switch</span>(m_choiceSusceptance->GetSelection()) {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  data.capSusceptanceUnit = <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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  data.capSusceptanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7c0341915f48c889a8885b72199f2a11">UNIT_S</a>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  data.capSusceptanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaaf5ad31fee4a7f5843527be386033de65">UNIT_S_km</a>;</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>  }</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="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlLineSize->GetValue(), data.lineSize,</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Line size\"."</span>)))</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  data.useLinePower = m_checkUseLinePower->GetValue();</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">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlZeroResistance->GetValue(), data.zeroResistance,</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero-sequence resistance\"."</span>)))</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlZeroReactance->GetValue(), data.zeroIndReactance,</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero-sequence indutive reactance\"."</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>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlZeroSusceptance->GetValue(), data.zeroCapSusceptance,</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero-sequence capacitive susceptance\"."</span>)))</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  m_line->SetElectricalData(data);</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>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</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#l00026">PowerElement.h:26</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#l00013">PowerElement.h:13</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="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00008">SwitchingForm.h:8</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 "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="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#l00014">PowerElement.h:14</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#l00012">PowerElement.h:12</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#l00022">PowerElement.h:22</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#l00027">PowerElement.h:27</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#l00028">PowerElement.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#l00035">Line.h:35</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#l00007">Line.h:7</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#l00300">Element.cpp:300</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#l00029">PowerElement.h:29</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#l00020">PowerElement.h:20</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#l00021">PowerElement.h:21</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="_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="_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> +<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_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_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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_line_form_8h.html b/docs/doxygen/html/_line_form_8h.html new file mode 100644 index 0000000..10dd01f --- /dev/null +++ b/docs/doxygen/html/_line_form_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/LineForm.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_form_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">LineForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +</div> +<p><a href="_line_form_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_line_form.html">LineForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the line power data. <a href="class_line_form.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_form_8h.html">LineForm.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_form_8h_source.html b/docs/doxygen/html/_line_form_8h_source.html index dc850a8..df9f02e 100644 --- a/docs/doxygen/html/_line_form_8h_source.html +++ b/docs/doxygen/html/_line_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,16 +88,16 @@ $(document).ready(function(){initNavTree('_line_form_8h_source.html','');}); <div class="title">LineForm.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="preprocessor">#ifndef LINEFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define LINEFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="keyword">class </span><a class="code" href="class_line.html">Line</a>;</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_switching_form.html">SwitchingForm</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_line_form.html"> 8</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="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_line_form.html">LineForm</a>();</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnStabilityButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</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="l00018"></a><span class="lineno"> 18</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</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>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <a class="code" href="class_line.html">Line</a>* m_line = NULL;</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> <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="ttdef"><b>Definition:</b> <a href="_line_form_8h_source.html#l00008">LineForm.h:8</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="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00008">SwitchingForm.h:8</a></div></div> +<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#l00035">Line.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="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00052">Line.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>LineForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_line_form_8h.html">LineForm.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_8cpp_source.html b/docs/doxygen/html/_load_8cpp_source.html index 4c8752f..9b7b909 100644 --- a/docs/doxygen/html/_load_8cpp_source.html +++ b/docs/doxygen/html/_load_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,34 +88,34 @@ $(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="preprocessor">#include "Load.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> Load::Load() : <a class="code" href="class_shunt.html">Shunt</a>() {}</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> Load::Load(wxString name) : <a class="code" href="class_shunt.html">Shunt</a>() { m_electricalData.name = name; }</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> Load::~Load() {}</div><div class="line"><a name="l00006"></a><span class="lineno"><a class="line" href="class_load.html#ac9f449be9b919b36924a844324bf37ee"> 6</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="l00007"></a><span class="lineno"> 7</span> {</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</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="l00013"></a><span class="lineno"> 13</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="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</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="l00017"></a><span class="lineno"> 17</span>  m_width = m_height = 20.0;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</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="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  m_pointList.push_back(parentPt);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -20.0));</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -10.0));</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_triangPts.push_back(wxPoint2DDouble(-m_width / 2.0, -m_height / 2.0));</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_triangPts.push_back(wxPoint2DDouble(m_width / 2.0, -m_height / 2.0));</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_triangPts.push_back(wxPoint2DDouble(0.0, m_height / 2.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>  m_inserted = <span class="keyword">true</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>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_switchRect.push_back(genRect); <span class="comment">// Push a general rectangle.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  UpdateSwitches();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_pfDirection = <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  UpdatePowerFlowArrowsPosition();</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">return</span> <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="keywordflow">return</span> <span class="keyword">false</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_load.html#aaef52b18cc53fa2db996fb9cad5db181"> 42</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="l00043"></a><span class="lineno"> 43</span> <span class="keyword"></span>{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  elementColour = m_dynamicEventColour;</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>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  elementColour = m_offlineElementColour;</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="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// Draw Selection (layer 1).</span></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>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  std::vector<wxPoint2DDouble> selTriangPts;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  selTriangPts.push_back(m_triangPts[0] + m_position +</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  wxPoint2DDouble(-m_borderSize / scale, -m_borderSize / scale));</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  selTriangPts.push_back(m_triangPts[1] + m_position +</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  wxPoint2DDouble(m_borderSize / scale, -m_borderSize / scale));</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  selTriangPts.push_back(m_triangPts[2] + m_position + wxPoint2DDouble(0.0, m_borderSize / scale));</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>  glPushMatrix();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  DrawTriangle(selTriangPts);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  glPopMatrix();</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>  DrawLine(m_pointList);</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">// Draw node selection.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  DrawCircle(m_pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</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="comment">// Draw Load (layer 2).</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  glLineWidth(1.5);</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">// Draw node.</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);</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>  DrawLine(m_pointList);</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>  DrawSwitches();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  DrawPowerFlowPts();</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>  std::vector<wxPoint2DDouble> triangPts;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 3; i++) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  triangPts.push_back(m_triangPts[i] + m_position);</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_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  DrawTriangle(triangPts);</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_load.html#a46e9f2e0935ecca77b3a46568404d8e3"> 104</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="l00105"></a><span class="lineno"> 105</span> {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</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_angle += rotAngle;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  m_pointList[2] = RotateAtPosition(m_pointList[2], rotAngle);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_pointList[3] = RotateAtPosition(m_pointList[3], rotAngle);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  UpdatePowerFlowArrowsPosition();</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_load.html#a25b4a3e553f8400114ac8effa11287da"> 117</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="l00118"></a><span class="lineno"> 118</span> {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</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="l00120"></a><span class="lineno"> 120</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">return</span> <span class="keyword">true</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"><a class="line" href="class_load.html#a792367f35c97324328816fee156e5ecf"> 124</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="l00125"></a><span class="lineno"> 125</span> {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</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="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>(loadForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  loadForm->Destroy();</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>  loadForm->Destroy();</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> }</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="struct_load_electrical_data.html">LoadElectricalData</a> Load::GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase)</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>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  data.activePower = data.activePower / systemPowerBase;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  data.activePowerUnit = <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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  data.activePower = (data.activePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  data.activePower = (data.activePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">break</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">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_load.html#a27309c24b2c70bde37ba6afbb9679da2"> 174</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="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_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="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_load.html#a00acfbf7dc907e5de79ceb4803632279"> 181</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="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 power calculation.</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordtype">double</span> activePower = m_electricalData.activePower;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordtype">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span>(!m_online) {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  activePower = 0.0;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  reactivePower = 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>  <span class="keywordflow">if</span>(m_online && m_electricalData.loadType == CONST_IMPEDANCE) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</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="l00194"></a><span class="lineno"> 194</span>  reactivePower *= std::pow(std::abs(v), 2);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  activePower *= std::pow(std::abs(v), 2);</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>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  tipText += _(<span class="stringliteral">"\nP = "</span>) + wxString::FromDouble(activePower, 5);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">switch</span>(m_electricalData.activePowerUnit) {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  tipText += _(<span class="stringliteral">" p.u."</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  tipText += _(<span class="stringliteral">" W"</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#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  tipText += _(<span class="stringliteral">" kW"</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#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  tipText += _(<span class="stringliteral">" MW"</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>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</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#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  tipText += _(<span class="stringliteral">" VAr"</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#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  tipText += _(<span class="stringliteral">" kVAr"</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#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  tipText += _(<span class="stringliteral">" MVAr"</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> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</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#l00201">Element.h:201</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#l00088">Element.h:88</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#l00033">Element.h:33</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#l00104">Load.cpp:104</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#l00019">PowerElement.h:19</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#l00091">Element.cpp:91</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#l00012">PowerElement.h:12</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#l00064">PowerElement.h:64</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#l00018">PowerElement.h:18</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#l00045">Bus.h:45</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#l00174">Load.cpp:174</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#l00025">PowerElement.h:25</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#l00117">Load.cpp:117</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#l00333">Element.cpp:333</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#l00023">Load.h:23</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#l00024">PowerElement.h:24</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#l00042">Load.cpp: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#l00013">Load.h:13</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#l00023">PowerElement.h:23</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#l00048">Element.h:48</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="ttdef"><b>Definition:</b> <a href="_load_form_8h_source.html#l00008">LoadForm.h:8</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#l00181">Load.cpp:181</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#l00006">Load.cpp:6</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#l00171">Element.h:171</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#l00007">Shunt.h:7</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#l00017">PowerElement.h:17</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#l00124">Load.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#l00083">Element.h:83</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 "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="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> +<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="_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_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="_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="_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_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="_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> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_load_8h_source.html b/docs/doxygen/html/_load_8h_source.html index 307dd3e..05f39b3 100644 --- a/docs/doxygen/html/_load_8h_source.html +++ b/docs/doxygen/html/_load_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,13 +88,14 @@ $(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="preprocessor">#ifndef LOAD_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define LOAD_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "LoadForm.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "Shunt.h"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="keyword">enum</span> LoadType</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  CONST_POWER = 0,</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  CONST_IMPEDANCE</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> };</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"><a class="line" href="struct_load_electrical_data.html"> 13</a></span> <span class="keyword">struct </span><a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> {</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  wxString name;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keywordtype">double</span> activePower = 100.0;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</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="l00018"></a><span class="lineno"> 18</span>  <span class="keywordtype">double</span> reactivePower = 0.0;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</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="l00020"></a><span class="lineno"> 20</span>  LoadType loadType = CONST_POWER;</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"><a class="line" href="class_load.html"> 23</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="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_load.html">Load</a>();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <a class="code" href="class_load.html">Load</a>(wxString name);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  ~<a class="code" href="class_load.html">Load</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">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</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="l00032"></a><span class="lineno"> 32</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="l00033"></a><span class="lineno"> 33</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="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</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="l00037"></a><span class="lineno"> 37</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="l00038"></a><span class="lineno"> 38</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="l00039"></a><span class="lineno"> 39</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="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>  std::vector<wxPoint2DDouble> m_triangPts;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> m_electricalData;</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> <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#l00088">Element.h:88</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#l00019">PowerElement.h:19</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#l00011">PowerElement.h:11</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#l00025">PowerElement.h:25</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#l00023">Load.h:23</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#l00013">Load.h:13</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#l00007">Shunt.h:7</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">#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> +<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="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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_load_form_8cpp_source.html b/docs/doxygen/html/_load_form_8cpp_source.html index 2cce217..fe5a754 100644 --- a/docs/doxygen/html/_load_form_8cpp_source.html +++ b/docs/doxygen/html/_load_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,18 +88,20 @@ $(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="preprocessor">#include "LoadForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "SwitchingForm.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "Load.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</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="l00006"></a><span class="lineno"> 6</span> {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data = load->GetElectricalData();</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_textCtrlActivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Load::StringFromDouble</a>(data.activePower));</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_choiceActivePower->SetSelection(0);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  m_choiceActivePower->SetSelection(1);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  m_choiceActivePower->SetSelection(2);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_choiceActivePower->SetSelection(3);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">break</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> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Load::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_choiceReactivePower->SetSelection(0);</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#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_choiceReactivePower->SetSelection(1);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_choiceReactivePower->SetSelection(2);</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>  <span class="keywordflow">case</span> <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>  m_choiceReactivePower->SetSelection(3);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">break</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="keywordflow">switch</span>(data.loadType) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">case</span> CONST_POWER: {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_choiceType->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> CONST_IMPEDANCE: {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_choiceType->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>  }</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_parent = parent;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_load = load;</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> LoadForm::~LoadForm() {}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keywordtype">void</span> LoadForm::OnOnButtonClick(wxCommandEvent& event)</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="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</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> LoadForm::OnStabilityButtonClick(wxCommandEvent& event)</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>(ValidateData()) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_load);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  swForm.SetTitle(_(<span class="stringliteral">"Load: Switching"</span>));</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  swForm.ShowModal();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  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> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keywordtype">bool</span> LoadForm::ValidateData()</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>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data;</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.name = m_textCtrlName->GetValue();</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="keywordflow">if</span>(!m_load->DoubleFromString(m_parent, m_textCtrlActivePower->GetValue(), data.activePower,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Active power\"."</span>)))</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">switch</span>(m_choiceActivePower->GetSelection()) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>;</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> 3: {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</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>  }</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>(!m_load->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  data.reactivePowerUnit = <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">break</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</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> 2: {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</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> 3: {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</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>  }</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">switch</span>(m_choiceType->GetSelection()) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  data.loadType = CONST_POWER;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  data.loadType = CONST_IMPEDANCE;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  } <span class="keywordflow">break</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_load->SetElectricalData(data);</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="ttc" id="class_switching_form_html"><div class="ttname"><a href="class_switching_form.html">SwitchingForm</a></div><div class="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00008">SwitchingForm.h:8</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#l00019">PowerElement.h:19</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#l00012">PowerElement.h:12</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#l00018">PowerElement.h:18</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#l00025">PowerElement.h:25</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#l00023">Load.h:23</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#l00024">PowerElement.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#l00013">Load.h:13</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 "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="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="_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="_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> -<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#l00023">PowerElement.h:23</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#l00300">Element.cpp:300</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#l00017">PowerElement.h:17</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> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_load_form_8h.html b/docs/doxygen/html/_load_form_8h.html new file mode 100644 index 0000000..8e881d7 --- /dev/null +++ b/docs/doxygen/html/_load_form_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/LoadForm.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_form_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">LoadForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +</div> +<p><a href="_load_form_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_load_form.html">LoadForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the load power data. <a href="class_load_form.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="_load_form_8h.html">LoadForm.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_form_8h_source.html b/docs/doxygen/html/_load_form_8h_source.html index 210e4ca..284ad8b 100644 --- a/docs/doxygen/html/_load_form_8h_source.html +++ b/docs/doxygen/html/_load_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,16 +88,16 @@ $(document).ready(function(){initNavTree('_load_form_8h_source.html','');}); <div class="title">LoadForm.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="preprocessor">#ifndef LOADFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define LOADFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="keyword">class </span><a class="code" href="class_load.html">Load</a>;</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_switching_form.html">SwitchingForm</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_load_form.html"> 8</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="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_load_form.html">LoadForm</a>();</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">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); };</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOnButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnStabilityButtonClick(wxCommandEvent& event);</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>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <a class="code" href="class_load.html">Load</a>* m_load = NULL;</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">#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="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00008">SwitchingForm.h:8</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#l00023">Load.h:23</a></div></div> +<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_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="ttdef"><b>Definition:</b> <a href="_load_form_8h_source.html#l00008">LoadForm.h:8</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 --> </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>LoadForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_load_form_8h.html">LoadForm.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/_machines_8cpp_source.html b/docs/doxygen/html/_machines_8cpp_source.html index b7899fe..b780cef 100644 --- a/docs/doxygen/html/_machines_8cpp_source.html +++ b/docs/doxygen/html/_machines_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,31 +88,33 @@ $(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="preprocessor">#include "Machines.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "ControlElementContainer.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ControlElementSolver.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> Machines::Machines() : <a class="code" href="class_power_element.html">PowerElement</a>() {}</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> Machines::~Machines() {}</div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3"> 8</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="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</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="l00016"></a><span class="lineno"> 16</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="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</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="l00019"></a><span class="lineno"> 19</span>  m_width = m_height = 50.0;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</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="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_pointList.push_back(parentPt);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_pointList.push_back(m_position + wxPoint2DDouble(35.0, 0.0));</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_pointList.push_back(m_position + wxPoint2DDouble(25.0, 0.0));</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_inserted = <span class="keyword">true</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>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_switchRect.push_back(genRect); <span class="comment">// Push a general rectangle.</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  UpdateSwitches();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  UpdatePowerFlowArrowsPosition();</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">return</span> <span class="keyword">false</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> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_machines.html#af3279663c82de88e12f0487bfc633f7c"> 37</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="l00038"></a><span class="lineno"> 38</span> <span class="keyword"></span>{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  elementColour = m_offlineElementColour;</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>(m_inserted) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// Draw Selection (layer 1).</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  DrawCircle(m_position, 25.0 + (m_borderSize + 1.5) / scale, 20, GL_POLYGON);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  DrawLine(m_pointList);</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">// Draw node selection.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  DrawCircle(m_pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</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="comment">// Draw Machines (layer 2).</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  glLineWidth(1.5);</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="comment">// Draw node.</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);</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>  DrawLine(m_pointList);</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>  DrawSwitches();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  DrawPowerFlowPts();</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>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  DrawCircle(m_position, 25.0, 20, GL_POLYGON);</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>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  DrawCircle(m_position, 25.0, 20);</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="comment">// Draw machine symbol.</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  glLineWidth(2.0);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  DrawSymbol();</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="keywordtype">void</span> Machines::UpdateSwitchesPosition()</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_parentList[0]) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], m_pointList[2]);</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_pointList[1] = m_pointList[0];</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>  UpdateSwitches();</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"><a class="line" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44"> 94</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="l00095"></a><span class="lineno"> 95</span> {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  SetPosition(m_movePos + position - m_moveStartPt);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</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="l00098"></a><span class="lineno"> 98</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</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_parentList[0]) {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</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>  UpdateSwitchesPosition();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  UpdatePowerFlowArrowsPosition();</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_machines.html#aeab8436c33f74a10e252b418028ec491"> 107</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="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>(element) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span>(element == m_parentList[0]) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</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">else</span> {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</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>  }</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="comment">// Recalculate switches positions</span></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"><a class="line" href="class_machines.html#acbefe76cd5161b5684a27205b155e797"> 129</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="l00130"></a><span class="lineno"> 130</span> {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_moveStartPt = position;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_movePts = m_pointList;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  m_movePos = m_position;</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_machines.html#a914faa054440402cad74c3b70f62ad92"> 136</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="l00137"></a><span class="lineno"> 137</span> {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</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>(parent == m_parentList[0]) {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</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="l00143"></a><span class="lineno"> 143</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  UpdatePowerFlowArrowsPosition();</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"><a class="line" href="class_machines.html#a002d852ddd0d73502a6bd819b5545026"> 148</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="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>(parent == m_parentList[0]) {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  m_online = <span class="keyword">false</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>  UpdatePowerFlowArrowsPosition();</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> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="class_machines.html#a63597b82a1db17a9e4aac9f1058d7dff"> 158</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="l00159"></a><span class="lineno"> 159</span> {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</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="l00161"></a><span class="lineno"> 161</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</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>(nodeRect.Contains(position)) {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  m_activeNodeID = 1;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> <span class="keyword">true</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>  m_activeNodeID = 0;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">return</span> <span class="keyword">false</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"><a class="line" href="class_machines.html#aed7664d5b85585fc13f4a1ad48457901"> 172</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="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>(parent && m_activeNodeID != 0) {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</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="l00176"></a><span class="lineno"> 176</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</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>(parent-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(nodeRect)) {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  m_parentList[0] = parent;</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">// Centralize the node on bus.</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</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="l00184"></a><span class="lineno"> 184</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="l00185"></a><span class="lineno"> 185</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="l00186"></a><span class="lineno"> 186</span>  m_pointList[0] = parentPt;</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>  UpdateSwitchesPosition();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">return</span> <span class="keyword">true</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>  m_parentList[0] = NULL;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  m_online = <span class="keyword">false</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>  <span class="keywordflow">return</span> <span class="keyword">false</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_machines.html#a51d79bffa4471eb29c223aaa180839f7"> 199</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a51d79bffa4471eb29c223aaa180839f7">Machines::UpdateNodes</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>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</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="l00203"></a><span class="lineno"> 203</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</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>  <span class="keywordflow">if</span>(!m_parentList[0]->Intersects(nodeRect)) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  UpdatePowerFlowArrowsPosition();</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> }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="class_machines.html#acff264f0c80d97a966ff97401f2f142a"> 215</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="l00216"></a><span class="lineno"> 216</span> {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</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_angle += rotAngle;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  m_pointList[2] = RotateAtPosition(m_pointList[2], rotAngle);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  m_pointList[3] = RotateAtPosition(m_pointList[3], rotAngle);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  UpdatePowerFlowArrowsPosition();</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> Machines::UpdatePowerFlowArrowsPosition()</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>  std::vector<wxPoint2DDouble> edges;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">switch</span>(m_pfDirection) {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a>: {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  m_powerFlowArrow.clear();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</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="l00236"></a><span class="lineno"> 236</span>  edges.push_back(m_pointList[2]);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  edges.push_back(m_pointList[1]);</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">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a>: {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  edges.push_back(m_pointList[1]);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  edges.push_back(m_pointList[2]);</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">default</span>:</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>  }</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>  CalculatePowerFlowPts(edges);</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"><a class="line" href="class_machines.html#a293cb955dcacaaebca564b8a91ce57d3"> 250</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="l00251"></a><span class="lineno"> 251</span> {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  m_pfDirection = pfDirection;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</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#l00201">Element.h:201</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#l00129">Machines.cpp:129</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#l00088">Element.h:88</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#l00094">Machines.cpp:94</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#l00091">Element.cpp:91</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 "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="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_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> -<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#l00158">Machines.cpp:158</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#l00064">PowerElement.h:64</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#l00250">Machines.cpp:250</a></div></div> -<div class="ttc" id="class_machines_html_a914faa054440402cad74c3b70f62ad92"><div class="ttname"><a href="class_machines.html#a914faa054440402cad74c3b70f62ad92">Machines::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="_machines_8cpp_source.html#l00136">Machines.cpp:136</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#l00008">Machines.cpp:8</a></div></div> -<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#l00172">Machines.cpp:172</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#l00199">Machines.cpp:199</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#l00333">Element.cpp:333</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#l00215">Machines.cpp:215</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#l00037">Machines.cpp:37</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#l00063">PowerElement.h:63</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#l00062">PowerElement.h:62</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#l00048">Element.h:48</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#l00061">PowerElement.h:61</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#l00148">Machines.cpp:148</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#l00100">PowerElement.h:100</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#l00171">Element.h:171</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#l00107">Machines.cpp:107</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#l00083">Element.h:83</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> +<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="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_machines_html_a914faa054440402cad74c3b70f62ad92"><div class="ttname"><a href="class_machines.html#a914faa054440402cad74c3b70f62ad92">Machines::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="_machines_8cpp_source.html#l00153">Machines.cpp:153</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_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_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_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="_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="_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_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> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_machines_8h_source.html b/docs/doxygen/html/_machines_8h_source.html index ea9370b..9b7c76c 100644 --- a/docs/doxygen/html/_machines_8h_source.html +++ b/docs/doxygen/html/_machines_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,27 +88,27 @@ $(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="preprocessor">#ifndef MACHINES_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define MACHINES_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_control_element_container.html">ControlElementContainer</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="keyword">class </span><a class="code" href="class_control_element_solver.html">ControlElementSolver</a>;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"><a class="line" href="class_machines.html"> 9</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="l00010"></a><span class="lineno"> 10</span> {</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</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="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <a class="code" href="class_machines.html">Machines</a>();</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  ~<a class="code" href="class_machines.html">Machines</a>();</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</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="l00018"></a><span class="lineno"><a class="line" href="class_machines.html#acda27b0ea8a7b0fb00d647d8744f346e"> 18</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="l00019"></a><span class="lineno"> 19</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="l00020"></a><span class="lineno"><a class="line" href="class_machines.html#a0a825ccdbd5059f9ae9f869d4b6e3ec4"> 20</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="l00021"></a><span class="lineno"> 21</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="l00022"></a><span class="lineno"> 22</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="l00023"></a><span class="lineno"> 23</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="l00024"></a><span class="lineno"> 24</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="l00025"></a><span class="lineno"> 25</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="l00026"></a><span class="lineno"> 26</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="l00027"></a><span class="lineno"> 27</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="l00028"></a><span class="lineno"> 28</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="l00029"></a><span class="lineno"> 29</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="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawSymbol()<span class="keyword"> const </span>{}</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</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="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">void</span> UpdateSwitchesPosition();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">void</span> UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">bool</span> m_inserted = <span class="keyword">false</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> <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#l00018">Machines.h:18</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#l00129">Machines.cpp:129</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#l00088">Element.h:88</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="ttdef"><b>Definition:</b> <a href="_control_element_solver_8h_source.html#l00020">ControlElementSolver.h:20</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#l00094">Machines.cpp:94</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#l00158">Machines.cpp:158</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#l00250">Machines.cpp:250</a></div></div> -<div class="ttc" id="class_machines_html_a914faa054440402cad74c3b70f62ad92"><div class="ttname"><a href="class_machines.html#a914faa054440402cad74c3b70f62ad92">Machines::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="_machines_8cpp_source.html#l00136">Machines.cpp:136</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#l00008">Machines.cpp:8</a></div></div> -<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#l00172">Machines.cpp:172</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#l00199">Machines.cpp:199</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="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00020">ControlElementContainer.h:20</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">#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> +<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_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> +<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_machines_html_a914faa054440402cad74c3b70f62ad92"><div class="ttname"><a href="class_machines.html#a914faa054440402cad74c3b70f62ad92">Machines::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="_machines_8cpp_source.html#l00153">Machines.cpp:153</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_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="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#l00215">Machines.cpp:215</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#l00037">Machines.cpp:37</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#l00020">Machines.h:20</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#l00009">Machines.h:9</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#l00061">PowerElement.h:61</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#l00148">Machines.cpp:148</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#l00100">PowerElement.h:100</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#l00107">Machines.cpp:107</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="_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_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 --> diff --git a/docs/doxygen/html/_main_frame_8cpp_source.html b/docs/doxygen/html/_main_frame_8cpp_source.html index a371fc9..224579e 100644 --- a/docs/doxygen/html/_main_frame_8cpp_source.html +++ b/docs/doxygen/html/_main_frame_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,31 +88,41 @@ $(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="preprocessor">#include "MainFrame.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "ArtMetro.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "Workspace.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "Bus.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "Line.h"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include "Transformer.h"</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "SyncGenerator.h"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "IndMotor.h"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "SyncMotor.h"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include "Load.h"</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "Inductor.h"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "Capacitor.h"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "FileHanding.h"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "GeneralPropertiesForm.h"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "SimulationsSettingsForm.h"</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "PropertiesData.h"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "ChartView.h"</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "DataReport.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "AboutForm.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> MainFrame::MainFrame() : <a class="code" href="class_main_frame_base.html">MainFrameBase</a>(NULL) {}</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> MainFrame::MainFrame(wxWindow* parent, wxLocale* locale, <a class="code" href="class_properties_data.html">PropertiesData</a>* initProperties) : <a class="code" href="class_main_frame_base.html">MainFrameBase</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_locale = locale;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_generalProperties = initProperties;</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>  Init();</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> MainFrame::~MainFrame()</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="comment">// if(m_artMetro) delete m_artMetro;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">if</span>(m_addElementsMenu) {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_addElementsMenu->Disconnect(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MainFrame::OnAddElementsClick),</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">delete</span> m_addElementsMenu;</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_locale) <span class="keyword">delete</span> m_locale;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span>(m_generalProperties) <span class="keyword">delete</span> m_generalProperties;</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="keywordtype">void</span> MainFrame::Init()</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>  this->SetSize(800, 600);</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>  CreateAddElementsMenu();</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>  EnableCurrentProjectRibbon(<span class="keyword">false</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>  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="l00051"></a><span class="lineno"> 51</span>  m_ribbonBar->SetArtProvider(m_artMetro);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_ribbonBar->Realize();</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>  this->Layout();</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="keywordtype">void</span> MainFrame::EnableCurrentProjectRibbon(<span class="keywordtype">bool</span> enable)</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_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_ADDELEMENT, enable);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_ribbonButtonBarReports->EnableButton(ID_RIBBON_CHARTS, enable);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_ribbonButtonBarCProject->EnableButton(ID_RIBBON_CLOSE, enable);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  m_ribbonButtonBarClipboard->EnableButton(ID_RIBBON_COPY, enable);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_ribbonButtonBarReports->EnableButton(ID_RIBBON_DATAREPORT, enable);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_DELETE, enable);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_ribbonButtonBarContinuous->EnableButton(ID_RIBBON_DISABLESOL, enable);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_DRAG, enable);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_ribbonButtonBarContinuous->EnableButton(ID_RIBBON_ENABLESOL, enable);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_ribbonButtonBarSimulations->EnableButton(ID_RIBBON_FAULT, enable);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_FIT, enable);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_MOVE, enable);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_ribbonButtonBarClipboard->EnableButton(ID_RIBBON_PASTE, enable);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_ribbonButtonBarSimulations->EnableButton(ID_RIBBON_POWERFLOW, enable);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_ribbonButtonBarClipboard->EnableButton(ID_RIBBON_REDO, enable);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_ribbonButtonBarContinuous->EnableButton(ID_RIBBON_RESETVOLT, enable);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_ribbonButtonBarSimulations->EnableButton(ID_RIBBON_RUNSTAB, enable);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_ribbonButtonBarCProject->EnableButton(ID_RIBBON_SAVE, enable);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_ribbonButtonBarCProject->EnableButton(ID_RIBBON_SAVEAS, enable);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_ribbonButtonBarSimulations->EnableButton(ID_RIBBON_SCPOWER, enable);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_PROJSETTINGS, enable);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_ribbonButtonBarReports->EnableButton(ID_RIBBON_SNAPSHOT, enable);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_ribbonButtonBarSimulations->EnableButton(ID_RIBBON_SIMULSETTINGS, enable);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_ribbonButtonBarClipboard->EnableButton(ID_RIBBON_UNDO, enable);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_ROTATEC, enable);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_ROTATECC, enable);</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="keywordtype">void</span> MainFrame::CreateAddElementsMenu()</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_addElementsMenu = <span class="keyword">new</span> wxMenu();</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>  wxMenuItem* busElement =</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</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="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// busElement->SetBitmap(wxArtProvider::GetBitmap(wxART_WARNING));</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  wxMenuItem* lineElement =</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</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="l00096"></a><span class="lineno"> 96</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="l00097"></a><span class="lineno"> 97</span>  _(<span class="stringliteral">"Adds a transformer at the circuit"</span>));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</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="l00099"></a><span class="lineno"> 99</span>  _(<span class="stringliteral">"Adds a generator at the circuit"</span>));</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</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="l00101"></a><span class="lineno"> 101</span>  _(<span class="stringliteral">"Adds an induction motor at the circuit"</span>));</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  wxMenuItem* syncCompElement =</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</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="l00104"></a><span class="lineno"> 104</span>  _(<span class="stringliteral">"Adds an induction motor at the circuit"</span>));</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  wxMenuItem* loadElement =</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</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="l00107"></a><span class="lineno"> 107</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="l00108"></a><span class="lineno"> 108</span>  _(<span class="stringliteral">"Adds a shunt capacitor at the circuit"</span>));</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</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="l00110"></a><span class="lineno"> 110</span>  _(<span class="stringliteral">"Adds a shunt inductor at the circuit"</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>  m_addElementsMenu->Append(busElement);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_addElementsMenu->Append(lineElement);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  m_addElementsMenu->Append(transformerElement);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_addElementsMenu->Append(generatorElement);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  m_addElementsMenu->Append(indMotorElement);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_addElementsMenu->Append(syncCompElement);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_addElementsMenu->Append(loadElement);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_addElementsMenu->Append(capacitorElement);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_addElementsMenu->Append(inductorElement);</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_addElementsMenu->Bind(wxEVT_COMMAND_MENU_SELECTED, &MainFrame::OnAddElementsClick, <span class="keyword">this</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> <span class="keywordtype">void</span> MainFrame::OnNewClick(wxRibbonButtonBarEvent& 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>  EnableCurrentProjectRibbon();</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>  <a class="code" href="class_workspace.html">Workspace</a>* newWorkspace =</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</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="l00131"></a><span class="lineno"> 131</span>  m_workspaceList.push_back(newWorkspace);</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_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_DISABLESOL, <span class="keyword">true</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_ENABLESOL, <span class="keyword">false</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>  m_auiNotebook->AddPage(newWorkspace, newWorkspace->GetName(), <span class="keyword">true</span>);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  newWorkspace->Redraw();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  m_projectNumber++;</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="keywordtype">void</span> MainFrame::OnAboutClick(wxRibbonButtonBarEvent& event)</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_about_form.html">AboutForm</a> about(<span class="keyword">this</span>);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  about.ShowModal();</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> <span class="keywordtype">void</span> MainFrame::OnAddElementDropdown(wxRibbonButtonBarEvent& event) { <span class="keyword">event</span>.PopupMenu(m_addElementsMenu); }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="keywordtype">void</span> MainFrame::OnChartsClick(wxRibbonButtonBarEvent& event)</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>(<a class="code" href="class_workspace.html">Workspace</a>* workspace = dynamic_cast<Workspace*>(m_auiNotebook->GetCurrentPage())) {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  std::vector<ElementPlotData> plotDataList;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">auto</span> elementList = workspace->GetElementList();</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</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="l00154"></a><span class="lineno"> 154</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="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a> plotData;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span>(powerElement->GetPlotData(plotData)) plotDataList.push_back(plotData);</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>  <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="l00160"></a><span class="lineno"> 160</span>  cView->Show();</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">void</span> MainFrame::OnCloseClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="keywordtype">void</span> MainFrame::OnCopyClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="keywordtype">void</span> MainFrame::OnDataReportClick(wxRibbonButtonBarEvent& event)</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>(<a class="code" href="class_workspace.html">Workspace</a>* workspace = dynamic_cast<Workspace*>(m_auiNotebook->GetCurrentPage())) {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</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="l00170"></a><span class="lineno"> 170</span>  dataReport->Show();</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="keywordtype">void</span> MainFrame::OnDeleteClick(wxRibbonButtonBarEvent& event)</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>  <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="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  workspace->DeleteSelectedElements();</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::OnDisableSolutionClick(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>  <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="l00183"></a><span class="lineno"> 183</span>  workspace->SetContinuousCalculationActive(<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_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_DISABLESOL, <span class="keyword">true</span>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_ENABLESOL, <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"> 189</span> <span class="keywordtype">void</span> MainFrame::OnDragClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="keywordtype">void</span> MainFrame::OnEnableSolutionClick(wxRibbonButtonBarEvent& event)</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">if</span>(<a class="code" href="class_workspace.html">Workspace</a>* workspace = dynamic_cast<Workspace*>(m_auiNotebook->GetCurrentPage())) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  workspace->SetContinuousCalculationActive(<span class="keyword">true</span>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  workspace->RunStaticStudies();</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_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_ENABLESOL, <span class="keyword">true</span>);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_DISABLESOL, <span class="keyword">false</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"> 200</span> <span class="keywordtype">void</span> MainFrame::OnExpImpClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="keywordtype">void</span> MainFrame::OnFaultClick(wxRibbonButtonBarEvent& event)</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="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="l00204"></a><span class="lineno"> 204</span>  workspace->RunFault();</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> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="keywordtype">void</span> MainFrame::OnFitClick(wxRibbonButtonBarEvent& event)</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>  <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="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  workspace->Fit();</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> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="keywordtype">void</span> MainFrame::OnMoveClick(wxRibbonButtonBarEvent& event)</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>  <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="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">auto</span> elementList = workspace->GetAllElements();</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="comment">// Calculate the average position of selected elements.</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  wxPoint2DDouble averagePos(0, 0);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordtype">int</span> numSelElements = 0;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</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="l00225"></a><span class="lineno"> 225</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  averagePos += element-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  numSelElements++;</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>  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="l00232"></a><span class="lineno"> 232</span>  <span class="comment">// Set the move position to the average of selected elements.</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</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="l00234"></a><span class="lineno"> 234</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  element-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(averagePos);</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>  workspace->SetWorkspaceMode(Workspace::MODE_MOVE_ELEMENT);</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"> 243</span> <span class="keywordtype">void</span> MainFrame::OnOpenClick(wxRibbonButtonBarEvent& event)</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>  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="l00246"></a><span class="lineno"> 246</span>  wxFD_OPEN | wxFD_FILE_MUST_EXIST);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">if</span>(openFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</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>  wxFileName fileName(openFileDialog.GetPath());</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>  EnableCurrentProjectRibbon();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</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="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(newWorkspace);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">if</span>(fileHandling.OpenProject(fileName)) {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  newWorkspace->SetSavedPath(fileName);</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>  m_workspaceList.push_back(newWorkspace);</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_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_DISABLESOL, <span class="keyword">true</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_ENABLESOL, <span class="keyword">false</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>  m_auiNotebook->AddPage(newWorkspace, newWorkspace->GetName(), <span class="keyword">true</span>);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  m_auiNotebook->Layout();</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  newWorkspace->Redraw();</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  newWorkspace->SetJustOpened(<span class="keyword">true</span>);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  m_projectNumber++;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</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="l00270"></a><span class="lineno"> 270</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keyword">delete</span> newWorkspace;</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> }</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> MainFrame::OnPSPGuideClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="keywordtype">void</span> MainFrame::OnPasteClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="keywordtype">void</span> MainFrame::OnPowerFlowClick(wxRibbonButtonBarEvent& event)</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>  <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="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  workspace->RunPowerFlow();</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> </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="keywordtype">void</span> MainFrame::OnRedoClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="keywordtype">void</span> MainFrame::OnResetVoltagesClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="keywordtype">void</span> MainFrame::OnRunStabilityClick(wxRibbonButtonBarEvent& event)</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>  <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="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  workspace->RunStability();</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> <span class="keywordtype">void</span> MainFrame::OnSCPowerClick(wxRibbonButtonBarEvent& event)</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>  <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="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  workspace->RunSCPower();</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> MainFrame::OnSaveAsClick(wxRibbonButtonBarEvent& event)</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>  <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="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(workspace);</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>  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="l00311"></a><span class="lineno"> 311</span>  wxFD_SAVE | wxFD_OVERWRITE_PROMPT);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">if</span>(saveFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</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>  fileHandling.SaveProject(saveFileDialog.GetPath());</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  wxFileName fileName(saveFileDialog.GetPath());</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  workspace->SetName(fileName.GetName());</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  m_auiNotebook->SetPageText(m_auiNotebook->GetPageIndex(workspace), workspace->GetName());</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  workspace->SetSavedPath(fileName);</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> }</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">void</span> MainFrame::OnSaveClick(wxRibbonButtonBarEvent& event)</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>  <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="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(workspace);</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>  <span class="keywordflow">if</span>(workspace->GetSavedPath().IsOk()) {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  fileHandling.SaveProject(workspace->GetSavedPath());</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</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="l00332"></a><span class="lineno"> 332</span>  wxFD_SAVE | wxFD_OVERWRITE_PROMPT);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">if</span>(saveFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</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>  fileHandling.SaveProject(saveFileDialog.GetPath());</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  wxFileName fileName(saveFileDialog.GetPath());</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  workspace->SetName(fileName.GetName());</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  m_auiNotebook->SetPageText(m_auiNotebook->GetPageIndex(workspace), workspace->GetName());</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  workspace->SetSavedPath(fileName);</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> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="keywordtype">void</span> MainFrame::OnSnapshotClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="keywordtype">void</span> MainFrame::OnUndoClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="keywordtype">void</span> MainFrame::OnAddElementsClick(wxCommandEvent& event)</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>  <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="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>(workspace) {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">if</span>(workspace->GetWorkspaceMode() != Workspace::MODE_INSERT) {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keyword">auto</span> elementList = workspace->GetElementList();</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  wxString statusBarText = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordtype">bool</span> newElement = <span class="keyword">false</span>;</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">switch</span>(event.GetId()) {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">case</span> ID_ADDMENU_BUS: {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</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="l00359"></a><span class="lineno"> 359</span>  wxString::Format(_(<span class="stringliteral">"Bus %d"</span>), workspace->GetElementNumber(ID_BUS)));</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  workspace->IncrementElementNumber(ID_BUS);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  elementList.push_back(newBus);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  statusBarText = _(<span class="stringliteral">"Insert Bus: Click to insert, ESC to cancel."</span>);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  newElement = <span class="keyword">true</span>;</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> ID_ADDMENU_LINE: {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</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="l00367"></a><span class="lineno"> 367</span>  elementList.push_back(newLine);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  workspace->IncrementElementNumber(ID_LINE);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  statusBarText = _(<span class="stringliteral">"Insert Line: Click on two buses, ESC to cancel."</span>);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  newElement = <span class="keyword">true</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">case</span> ID_ADDMENU_TRANSFORMER: {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</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="l00374"></a><span class="lineno"> 374</span>  wxString::Format(_(<span class="stringliteral">"Transformer %d"</span>), workspace->GetElementNumber(ID_TRANSFORMER)));</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  workspace->IncrementElementNumber(ID_TRANSFORMER);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  elementList.push_back(newTransformer);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  statusBarText = _(<span class="stringliteral">"Insert Transformer: Click on two buses, ESC to cancel."</span>);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">case</span> ID_ADDMENU_GENERATOR: {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</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="l00382"></a><span class="lineno"> 382</span>  wxString::Format(_(<span class="stringliteral">"Generator %d"</span>), workspace->GetElementNumber(ID_SYNCGENERATOR)));</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  workspace->IncrementElementNumber(ID_SYNCGENERATOR);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  elementList.push_back(newGenerator);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  statusBarText = _(<span class="stringliteral">"Insert Generator: Click on a buses, ESC to cancel."</span>);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  newElement = <span class="keyword">true</span>;</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> ID_ADDMENU_LOAD: {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</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="l00390"></a><span class="lineno"> 390</span>  workspace->IncrementElementNumber(ID_LOAD);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  elementList.push_back(newLoad);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  statusBarText = _(<span class="stringliteral">"Insert Load: Click on a buses, ESC to cancel."</span>);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">case</span> ID_ADDMENU_CAPACITOR: {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* newCapacitor =</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</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="l00398"></a><span class="lineno"> 398</span>  workspace->IncrementElementNumber(ID_CAPACITOR);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  elementList.push_back(newCapacitor);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  statusBarText = _(<span class="stringliteral">"Insert Capacitor: Click on a buses, ESC to cancel."</span>);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">case</span> ID_ADDMENU_INDUCTOR: {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="class_inductor.html">Inductor</a>* newInductor =</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</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="l00406"></a><span class="lineno"> 406</span>  workspace->IncrementElementNumber(ID_INDUCTOR);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  elementList.push_back(newInductor);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  statusBarText = _(<span class="stringliteral">"Insert Inductor: Click on a 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_INDMOTOR: {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</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="l00413"></a><span class="lineno"> 413</span>  wxString::Format(_(<span class="stringliteral">"Induction motor %d"</span>), workspace->GetElementNumber(ID_INDMOTOR)));</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  workspace->IncrementElementNumber(ID_INDMOTOR);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  elementList.push_back(newIndMotor);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  statusBarText = _(<span class="stringliteral">"Insert Induction Motor: Click on a 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_SYNCCOMP: {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</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="l00421"></a><span class="lineno"> 421</span>  wxString::Format(_(<span class="stringliteral">"Synchronous condenser %d"</span>), workspace->GetElementNumber(ID_SYNCMOTOR)));</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  workspace->IncrementElementNumber(ID_SYNCMOTOR);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  elementList.push_back(newSyncCondenser);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  statusBarText = _(<span class="stringliteral">"Insert Synchronous Condenser: 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>  }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">if</span>(newElement) {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  workspace->SetElementList(elementList);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  workspace->SetWorkspaceMode(Workspace::MODE_INSERT);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  workspace->SetStatusBarText(statusBarText);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  workspace->Redraw();</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> }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="keywordtype">void</span> MainFrame::NotebookPageClosed(wxAuiNotebookEvent& event)</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="keywordflow">if</span>(m_auiNotebook->GetPageCount() == 0) EnableCurrentProjectRibbon(<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> </div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> <span class="keywordtype">void</span> MainFrame::NotebookPageClosing(wxAuiNotebookEvent& event)</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>  <span class="keyword">auto</span> it = m_workspaceList.begin();</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">while</span>(it != m_workspaceList.end()) {</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">if</span>(*it == m_auiNotebook->GetCurrentPage()) {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  m_workspaceList.erase(it);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">break</span>;</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>  it++;</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>  <span class="keyword">event</span>.Skip();</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> MainFrame::OnRotClockClick(wxRibbonButtonBarEvent& event)</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>  <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="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  workspace->RotateSelectedElements();</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="keywordtype">void</span> MainFrame::OnRotCounterClockClick(wxRibbonButtonBarEvent& event)</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="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="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  workspace->RotateSelectedElements(<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> <span class="keywordtype">void</span> MainFrame::OnGeneralSettingsClick(wxRibbonButtonBarEvent& event)</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>  <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="l00474"></a><span class="lineno"> 474</span>  genPropForm.SetInitialSize();</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  genPropForm.ShowModal();</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"> 478</span> <span class="keywordtype">void</span> MainFrame::OnSimulationSettingsClick(wxRibbonButtonBarEvent& event)</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>  <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="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</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="l00483"></a><span class="lineno"> 483</span>  simulSettingsForm.SetInitialSize();</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  simulSettingsForm.ShowModal();</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="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#l00040">PropertiesData.h:40</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 "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="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#l00088">Element.h:88</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="ttdef"><b>Definition:</b> <a href="_file_handing_8h_source.html#l00019">FileHanding.h:19</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="ttdef"><b>Definition:</b> <a href="_general_properties_form_8h_source.html#l00011">GeneralPropertiesForm.h:11</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#l00110">SyncGenerator.h:110</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#l00045">Bus.h:45</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#l00039">ElementPlotData.h:39</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="_workspace_8h_html"><div class="ttname"><a href="_workspace_8h.html">Workspace.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> +<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_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="_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="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#l00035">Line.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="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00023">Load.h:23</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="ttdef"><b>Definition:</b> <a href="_chart_view_8h_source.html#l00016">ChartView.h:16</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#l00110">SyncMotor.h:110</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="ttdef"><b>Definition:</b> <a href="_simulations_settings_form_8h_source.html#l00008">SimulationsSettingsForm.h:8</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#l00017">IndMotor.h:17</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#l00189">Element.h:189</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#l00014">Capacitor.h:14</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="ttdef"><b>Definition:</b> <a href="_data_report_8h_source.html#l00009">DataReport.h:9</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#l00101">Element.cpp:101</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#l00100">PowerElement.h:100</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#l00171">Element.h:171</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#l00014">Inductor.h:14</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="ttdef"><b>Definition:</b> <a href="_about_form_8h_source.html#l00007">AboutForm.h:7</a></div></div> -<div class="ttc" id="class_workspace_html"><div class="ttname"><a href="class_workspace.html">Workspace</a></div><div class="ttdef"><b>Definition:</b> <a href="_workspace_8h_source.html#l00056">Workspace.h:56</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#l00054">Transformer.h:54</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="_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_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_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_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="_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_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_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_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="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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_main_frame_8h.html b/docs/doxygen/html/_main_frame_8h.html new file mode 100644 index 0000000..0239390 --- /dev/null +++ b/docs/doxygen/html/_main_frame_8h.html @@ -0,0 +1,137 @@ +<!-- 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/MainFrame.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('_main_frame_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">MainFrame.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include <wx/menu.h></code><br /> +<code>#include <wx/msgdlg.h></code><br /> +<code>#include <wx/filedlg.h></code><br /> +<code>#include "MainFrameBase.h"</code><br /> +</div> +<p><a href="_main_frame_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_main_frame.html">MainFrame</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Main frame of the program. This class manage the ribbon menu and the notebook behavior. <a href="class_main_frame.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:adf764cbdea00d65edcd07bb9953ad2b7"><td class="memItemLeft" align="right" valign="top"><a id="adf764cbdea00d65edcd07bb9953ad2b7"></a>enum  </td><td class="memItemRight" valign="bottom">{ <br /> +  <b>ID_ADDMENU_BUS</b> = 20000, +<b>ID_ADDMENU_LINE</b>, +<b>ID_ADDMENU_TRANSFORMER</b>, +<b>ID_ADDMENU_GENERATOR</b>, +<br /> +  <b>ID_ADDMENU_LOAD</b>, +<b>ID_ADDMENU_CAPACITOR</b>, +<b>ID_ADDMENU_INDUCTOR</b>, +<b>ID_ADDMENU_INDMOTOR</b>, +<br /> +  <b>ID_ADDMENU_SYNCCOMP</b> +<br /> + }</td></tr> +<tr class="separator:adf764cbdea00d65edcd07bb9953ad2b7"><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="_main_frame_8h.html">MainFrame.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/_main_frame_8h.js b/docs/doxygen/html/_main_frame_8h.js new file mode 100644 index 0000000..f2a8e51 --- /dev/null +++ b/docs/doxygen/html/_main_frame_8h.js @@ -0,0 +1,13 @@ +var _main_frame_8h = +[ + [ "MainFrame", "class_main_frame.html", "class_main_frame" ], + [ "ID_ADDMENU_BUS", "_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a972a4490c2c106d50fad31bf61c954ee", null ], + [ "ID_ADDMENU_LINE", "_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a8f622d047e7be05ca22e68cf3c495891", null ], + [ "ID_ADDMENU_TRANSFORMER", "_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7ac723eda89da3d08df66556102f04fb3f", null ], + [ "ID_ADDMENU_GENERATOR", "_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a78ef6f7d5925a2d3f66fb4b985cde4c8", null ], + [ "ID_ADDMENU_LOAD", "_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a0448f71ade0850cce41f666113d61646", null ], + [ "ID_ADDMENU_CAPACITOR", "_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a19b41804a810ff58604d9a2e98a12d9b", null ], + [ "ID_ADDMENU_INDUCTOR", "_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7ae8447bb338d69f233187fa7ecddb269b", null ], + [ "ID_ADDMENU_INDMOTOR", "_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a88478f64002d3686cd141ab42431c654", null ], + [ "ID_ADDMENU_SYNCCOMP", "_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a713348ad9d91573d5729b0a8b8e66e04", null ] +];
\ No newline at end of file diff --git a/docs/doxygen/html/_main_frame_8h_source.html b/docs/doxygen/html/_main_frame_8h_source.html index 18f8eb9..2396190 100644 --- a/docs/doxygen/html/_main_frame_8h_source.html +++ b/docs/doxygen/html/_main_frame_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,23 +88,25 @@ $(document).ready(function(){initNavTree('_main_frame_8h_source.html','');}); <div class="title">MainFrame.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="preprocessor">#ifndef MAINFRAME_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define MAINFRAME_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <wx/menu.h></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <wx/msgdlg.h></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <wx/filedlg.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 "MainFrameBase.h"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="keyword">class </span><a class="code" href="class_main_frame_base.html">MainFrameBase</a>;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="keyword">class </span><a class="code" href="classwx_ribbon_metro_art_provider.html">wxRibbonMetroArtProvider</a>;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="keyword">class </span><a class="code" href="class_workspace.html">Workspace</a>;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="keyword">class </span><a class="code" href="class_file_handing.html">FileHanding</a>;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="keyword">class </span><a class="code" href="class_general_properties_form.html">GeneralPropertiesForm</a>;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="keyword">class </span><a class="code" href="class_simulations_settings_form.html">SimulationsSettingsForm</a>;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keyword">class </span><a class="code" href="class_properties_data.html">PropertiesData</a>;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="keyword">class </span><a class="code" href="class_chart_view.html">ChartView</a>;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">class </span><a class="code" href="class_data_report.html">DataReport</a>;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">class </span><a class="code" href="class_about_form.html">AboutForm</a>;</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="keyword">enum</span> {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  ID_ADDMENU_BUS = 20000,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  ID_ADDMENU_LINE,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  ID_ADDMENU_TRANSFORMER,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  ID_ADDMENU_GENERATOR,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  ID_ADDMENU_LOAD,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  ID_ADDMENU_CAPACITOR,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  ID_ADDMENU_INDUCTOR,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  ID_ADDMENU_INDMOTOR,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  ID_ADDMENU_SYNCCOMP</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_main_frame.html"> 33</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="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_main_frame.html">MainFrame</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="class_main_frame.html">MainFrame</a>(wxWindow* parent, wxLocale* locale, <a class="code" href="class_properties_data.html">PropertiesData</a>* initProperties);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  ~<a class="code" href="class_main_frame.html">MainFrame</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">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> OnGeneralSettingsClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSimulationSettingsClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRotClockClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRotCounterClockClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> NotebookPageClosed(wxAuiNotebookEvent& event);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> NotebookPageClosing(wxAuiNotebookEvent& event);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnAboutClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnAddElementDropdown(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnChartsClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCloseClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCopyClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnDataReportClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnDeleteClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnDisableSolutionClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnDragClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnEnableSolutionClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnExitClick(wxRibbonButtonBarEvent& event) { this->Close(); };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnExpImpClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFaultClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFitClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMoveClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOpenClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPSPGuideClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPasteClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPowerFlowClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRedoClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnResetVoltagesClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRunStabilityClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSCPowerClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSaveAsClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSaveClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSnapshotClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnUndoClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnNewClick(wxRibbonButtonBarEvent& 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="keyword">protected</span>:</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  std::vector<Workspace*> m_workspaceList;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">int</span> m_projectNumber = 1;</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>  <a class="code" href="classwx_ribbon_metro_art_provider.html">wxRibbonMetroArtProvider</a>* m_artMetro = NULL;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  wxMenu* m_addElementsMenu = NULL;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  wxLocale* m_locale = NULL;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="class_properties_data.html">PropertiesData</a>* m_generalProperties = NULL;</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">void</span> Init();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">void</span> EnableCurrentProjectRibbon(<span class="keywordtype">bool</span> enable = <span class="keyword">true</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> CreateAddElementsMenu();</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="keywordtype">void</span> OnAddElementsClick(wxCommandEvent& event);</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="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#l00040">PropertiesData.h:40</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="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00057">PropertiesData.h:57</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_file_handing_html"><div class="ttname"><a href="class_file_handing.html">FileHanding</a></div><div class="ttdef"><b>Definition:</b> <a href="_file_handing_8h_source.html#l00019">FileHanding.h:19</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="ttdef"><b>Definition:</b> <a href="_general_properties_form_8h_source.html#l00011">GeneralPropertiesForm.h:11</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="ttdef"><b>Definition:</b> <a href="_main_frame_8h_source.html#l00033">MainFrame.h:33</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> +<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="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="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_chart_view_html"><div class="ttname"><a href="class_chart_view.html">ChartView</a></div><div class="ttdef"><b>Definition:</b> <a href="_chart_view_8h_source.html#l00016">ChartView.h:16</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="ttdef"><b>Definition:</b> <a href="_simulations_settings_form_8h_source.html#l00008">SimulationsSettingsForm.h:8</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="ttdef"><b>Definition:</b> <a href="_data_report_8h_source.html#l00009">DataReport.h:9</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="ttdef"><b>Definition:</b> <a href="_about_form_8h_source.html#l00007">AboutForm.h:7</a></div></div> -<div class="ttc" id="class_workspace_html"><div class="ttname"><a href="class_workspace.html">Workspace</a></div><div class="ttdef"><b>Definition:</b> <a href="_workspace_8h_source.html#l00056">Workspace.h:56</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_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_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_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="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 --> <!-- 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>MainFrame.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_main_frame_8h.html">MainFrame.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_base_8cpp_source.html b/docs/doxygen/html/_main_frame_base_8cpp_source.html index 1f18727..70a4db0 100644 --- a/docs/doxygen/html/_main_frame_base_8cpp_source.html +++ b/docs/doxygen/html/_main_frame_base_8cpp_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_main_frame_base_8h_source.html b/docs/doxygen/html/_main_frame_base_8h_source.html index 69cf43c..703d9fc 100644 --- a/docs/doxygen/html/_main_frame_base_8h_source.html +++ b/docs/doxygen/html/_main_frame_base_8h_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_main_frame_bitmaps_8cpp_source.html b/docs/doxygen/html/_main_frame_bitmaps_8cpp_source.html index d9903d8..61747d5 100644 --- a/docs/doxygen/html/_main_frame_bitmaps_8cpp_source.html +++ b/docs/doxygen/html/_main_frame_bitmaps_8cpp_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_multiplier_8cpp_source.html b/docs/doxygen/html/_multiplier_8cpp_source.html index f6f18f7..f60bfff 100644 --- a/docs/doxygen/html/_multiplier_8cpp_source.html +++ b/docs/doxygen/html/_multiplier_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,14 +88,16 @@ $(document).ready(function(){initNavTree('_multiplier_8cpp_source.html','');}); <div class="title">Multiplier.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 "Multiplier.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "ConnectionLine.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</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="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  m_width = m_height = 36.0;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</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="l00008"></a><span class="lineno"> 8</span>  nodeIn1->StartMove(m_position);</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</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="l00010"></a><span class="lineno"> 10</span>  nodeIn2->StartMove(m_position);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  m_nodeList.push_back(nodeIn1);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_nodeList.push_back(nodeIn2);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_nodeList.push_back(nodeOut);</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> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> Multiplier::~Multiplier() {}</div><div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="class_multiplier.html#ae854fd981a98aca93b286081cc9c19f3"> 20</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="l00021"></a><span class="lineno"> 21</span> <span class="keyword"></span>{</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  glLineWidth(1.0);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  DrawRectangle(m_position, m_width + borderSize, m_height + borderSize);</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>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  DrawRectangle(m_position, m_width, m_height);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  DrawRectangle(m_position, m_width, m_height, GL_LINE_LOOP);</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">// Plot x.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  glLineWidth(2.0);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  std::vector<wxPoint2DDouble> xSymbol;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  xSymbol.push_back(m_position + wxPoint2DDouble(-5, -5));</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  xSymbol.push_back(m_position + wxPoint2DDouble(5, 5));</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  xSymbol.push_back(m_position + wxPoint2DDouble(-5, 5));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  xSymbol.push_back(m_position + wxPoint2DDouble(5, -5));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  glColor4d(0.0, 0.3, 1.0, 1.0);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  DrawLine(xSymbol, GL_LINES);</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>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  DrawNodes();</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_multiplier.html#ae01f155ed56925cb87d71a860882a3a1"> 47</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="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>(clockwise)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_angle += 90.0;</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>  m_angle -= 90.0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_angle = 0.0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_angle = 270.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>  UpdatePoints();</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">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  node->Rotate(clockwise);</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> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keywordtype">void</span> Multiplier::UpdatePoints()</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="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-18, -9));</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-18, 9));</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_nodeList[2]->SetPosition(m_position + wxPoint2DDouble(18, 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 == 90.0) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(9, -18));</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-9, -18));</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_nodeList[2]->SetPosition(m_position + wxPoint2DDouble(0, 18));</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_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(18, 9));</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(18, -9));</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_nodeList[2]->SetPosition(m_position + wxPoint2DDouble(-18, 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 == 270.0) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-9, 18));</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(9, 18));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_nodeList[2]->SetPosition(m_position + wxPoint2DDouble(0, -18));</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> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</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="l00088"></a><span class="lineno"> 88</span> {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  std::vector<double> inputVector;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</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="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">if</span>(node->GetNodeType() != Node::NODE_OUT) {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span>(!node->IsConnected()) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  inputVector.push_back(1.0);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</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="l00097"></a><span class="lineno"> 97</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="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">auto</span> nodeList = cLine->GetNodeList();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</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="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="class_node.html">Node</a>* childNode = *itCN;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span>(childNode == node) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  inputVector.push_back(cLine->GetValue());</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>  }</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"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  m_output = 1.0;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</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="l00113"></a><span class="lineno"> 113</span>  m_output *= inputVector[i];</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>  <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_multiplier.html#ab487232a96ed3c3f3a7c3628ddaa4c77"> 119</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="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_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="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_multiplier_html"><div class="ttname"><a href="class_multiplier.html">Multiplier</a></div><div class="ttdef"><b>Definition:</b> <a href="_multiplier_8h_source.html#l00008">Multiplier.h:8</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#l00088">Element.h:88</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#l00047">Multiplier.cpp:47</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</a></div></div> -<div class="ttc" id="class_multiplier_html_ae854fd981a98aca93b286081cc9c19f3"><div class="ttname"><a href="class_multiplier.html#ae854fd981a98aca93b286081cc9c19f3">Multiplier::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="_multiplier_8cpp_source.html#l00020">Multiplier.cpp:20</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="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00006">ConnectionLine.h:6</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#l00053">ControlElement.h:53</a></div></div> -<div class="ttc" id="class_multiplier_html_ab487232a96ed3c3f3a7c3628ddaa4c77"><div class="ttname"><a href="class_multiplier.html#ab487232a96ed3c3f3a7c3628ddaa4c77">Multiplier::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="_multiplier_8cpp_source.html#l00119">Multiplier.cpp:119</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="_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_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> +<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="class_multiplier_html_ae854fd981a98aca93b286081cc9c19f3"><div class="ttname"><a href="class_multiplier.html#ae854fd981a98aca93b286081cc9c19f3">Multiplier::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="_multiplier_8cpp_source.html#l00037">Multiplier.cpp:37</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_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_multiplier_html_ab487232a96ed3c3f3a7c3628ddaa4c77"><div class="ttname"><a href="class_multiplier.html#ab487232a96ed3c3f3a7c3628ddaa4c77">Multiplier::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="_multiplier_8cpp_source.html#l00136">Multiplier.cpp:136</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_multiplier_8h.html b/docs/doxygen/html/_multiplier_8h.html new file mode 100644 index 0000000..cddba01 --- /dev/null +++ b/docs/doxygen/html/_multiplier_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/Multiplier.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('_multiplier_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">Multiplier.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="_multiplier_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_multiplier.html">Multiplier</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Multiplies two inputs. <a href="class_multiplier.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="_multiplier_8h.html">Multiplier.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/_multiplier_8h_source.html b/docs/doxygen/html/_multiplier_8h_source.html index 3077bd1..7588220 100644 --- a/docs/doxygen/html/_multiplier_8h_source.html +++ b/docs/doxygen/html/_multiplier_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,22 +88,23 @@ $(document).ready(function(){initNavTree('_multiplier_8h_source.html','');}); <div class="title">Multiplier.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="preprocessor">#ifndef MULTIPLIER_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define MULTIPLIER_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ControlElement.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_connection_line.html">ConnectionLine</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_multiplier.html"> 8</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="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span>  ~<a class="code" href="class_multiplier.html">Multiplier</a>();</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">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="l00015"></a><span class="lineno"><a class="line" href="class_multiplier.html#acee6216a03b550f3a9cad2bef3963a18"> 15</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="l00016"></a><span class="lineno"><a class="line" href="class_multiplier.html#aba53ef763812fbff891cdf0b89c7fcca"> 16</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="l00017"></a><span class="lineno"><a class="line" href="class_multiplier.html#a4fa1206b47c626930db753a70e01680d"> 17</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="l00018"></a><span class="lineno"> 18</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="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</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">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="l00023"></a><span class="lineno"> 23</span>  </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</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="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> <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="ttdef"><b>Definition:</b> <a href="_multiplier_8h_source.html#l00008">Multiplier.h:8</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#l00088">Element.h:88</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#l00047">Multiplier.cpp:47</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#l00017">Multiplier.h:17</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#l00015">Multiplier.h:15</a></div></div> -<div class="ttc" id="class_multiplier_html_ae854fd981a98aca93b286081cc9c19f3"><div class="ttname"><a href="class_multiplier.html#ae854fd981a98aca93b286081cc9c19f3">Multiplier::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="_multiplier_8cpp_source.html#l00020">Multiplier.cpp:20</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="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00006">ConnectionLine.h:6</a></div></div> -<div class="ttc" id="class_multiplier_html_aba53ef763812fbff891cdf0b89c7fcca"><div class="ttname"><a href="class_multiplier.html#aba53ef763812fbff891cdf0b89c7fcca">Multiplier::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="_multiplier_8h_source.html#l00016">Multiplier.h:16</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#l00053">ControlElement.h:53</a></div></div> -<div class="ttc" id="class_multiplier_html_ab487232a96ed3c3f3a7c3628ddaa4c77"><div class="ttname"><a href="class_multiplier.html#ab487232a96ed3c3f3a7c3628ddaa4c77">Multiplier::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="_multiplier_8cpp_source.html#l00119">Multiplier.cpp:119</a></div></div> +<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_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> +<div class="ttc" id="class_multiplier_html_ae854fd981a98aca93b286081cc9c19f3"><div class="ttname"><a href="class_multiplier.html#ae854fd981a98aca93b286081cc9c19f3">Multiplier::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="_multiplier_8cpp_source.html#l00037">Multiplier.cpp:37</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_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_multiplier_html_aba53ef763812fbff891cdf0b89c7fcca"><div class="ttname"><a href="class_multiplier.html#aba53ef763812fbff891cdf0b89c7fcca">Multiplier::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="_multiplier_8h_source.html#l00040">Multiplier.h:40</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_multiplier_html_ab487232a96ed3c3f3a7c3628ddaa4c77"><div class="ttname"><a href="class_multiplier.html#ab487232a96ed3c3f3a7c3628ddaa4c77">Multiplier::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="_multiplier_8cpp_source.html#l00136">Multiplier.cpp:136</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>Multiplier.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_multiplier_8h.html">Multiplier.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/_power_element_8cpp_source.html b/docs/doxygen/html/_power_element_8cpp_source.html index 0dd4bf7..1ca65f6 100644 --- a/docs/doxygen/html/_power_element_8cpp_source.html +++ b/docs/doxygen/html/_power_element_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,33 +88,33 @@ $(document).ready(function(){initNavTree('_power_element_8cpp_source.html','');} <div class="title">PowerElement.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 "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"><a class="line" href="class_power_element.html#a382cdc0897802eb0a89692483fa7043e"> 6</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="l00007"></a><span class="lineno"> 7</span> {</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</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="l00010"></a><span class="lineno"> 10</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="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</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="l00013"></a><span class="lineno"> 13</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="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</span> }</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="class_power_element.html#a39be7c8e3bdb96b16c26ea7f7d6e6cbf"> 17</a></span> <a class="code" href="class_power_element.html#a39be7c8e3bdb96b16c26ea7f7d6e6cbf">PowerElement::~PowerElement</a>() {}</div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="class_power_element.html#a0730506d0417089d69f7ce64b05daed4"> 18</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="l00019"></a><span class="lineno"> 19</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> </div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="class_power_element.html#aef6392c211caf557bdac287b174a1ea8"> 22</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="l00023"></a><span class="lineno"> 23</span>  wxPoint2DDouble parentPoint,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  wxPoint2DDouble secondPoint)<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>  <span class="keywordtype">double</span> swLineSize = 25.0;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  wxPoint2DDouble swPoint = wxPoint2DDouble(parentPoint.m_x, parentPoint.m_y - swLineSize);</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">// Rotate the second point (to compare).</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> angle = parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</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>  secondPoint =</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  wxPoint2DDouble(std::cos(wxDegToRad(-angle)) * (secondPoint.m_x - parentPoint.m_x) -</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  std::sin(wxDegToRad(-angle)) * (secondPoint.m_y - parentPoint.m_y) + parentPoint.m_x,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  std::sin(wxDegToRad(-angle)) * (secondPoint.m_x - parentPoint.m_x) +</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  std::cos(wxDegToRad(-angle)) * (secondPoint.m_y - parentPoint.m_y) + parentPoint.m_y);</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">// Rotate</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span>(secondPoint.m_y > parentPoint.m_y) angle -= 180.0;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">return</span> wxPoint2DDouble(std::cos(wxDegToRad(angle)) * (swPoint.m_x - parentPoint.m_x) -</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  std::sin(wxDegToRad(angle)) * (swPoint.m_y - parentPoint.m_y) + parentPoint.m_x,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  std::sin(wxDegToRad(angle)) * (swPoint.m_x - parentPoint.m_x) +</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  std::cos(wxDegToRad(angle)) * (swPoint.m_y - parentPoint.m_y) + parentPoint.m_y);</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"><a class="line" href="class_power_element.html#a789105cc7c170330e7daf2a0453fde6d"> 46</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="l00047"></a><span class="lineno"> 47</span> <span class="keyword"></span>{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</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="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span>(m_parentList[i]) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</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="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="keywordflow">return</span> <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"><a class="line" href="class_power_element.html#abd2cee52270374e17951782bdb571dce"> 56</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="l00057"></a><span class="lineno"> 57</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// General method, to one switch only.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  wxPoint2DDouble swCenter = wxPoint2DDouble((m_pointList[0].m_x + m_pointList[1].m_x) / 2.0,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  (m_pointList[0].m_y + m_pointList[1].m_y) / 2.0);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</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="l00062"></a><span class="lineno"> 62</span>  m_switchSize);</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_power_element.html#ab5799bdf1bff481670285d763572453c"> 65</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="l00066"></a><span class="lineno"> 66</span> <span class="keyword"></span>{</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">int</span> i = 0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</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="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="class_element.html">Element</a>* parent = *it;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  glColor4dv(m_closedSwitchColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  glColor4dv(m_openedSwitchColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</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>  glPushMatrix();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</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="l00079"></a><span class="lineno"> 79</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="l00080"></a><span class="lineno"> 80</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="l00081"></a><span class="lineno"> 81</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="l00082"></a><span class="lineno"> 82</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="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</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="l00085"></a><span class="lineno"> 85</span>  m_switchSize, m_switchSize);</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>  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>  i++;</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> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="class_power_element.html#a6c656ef223d36e96b19b0a9ec2115e9e"> 93</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="l00094"></a><span class="lineno"> 94</span> {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</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="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span>(edges.size() < 2) <span class="keywordflow">return</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="comment">// Clear all power flow points</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</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="l00101"></a><span class="lineno"> 101</span>  m_powerFlowArrow.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="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < (int)edges.size(); i++) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  wxPoint2DDouble pt1 = edges[i - 1];</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  wxPoint2DDouble pt2 = edges[i];</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">double</span> angle = std::atan2(pt2.m_y - pt1.m_y, pt2.m_x - pt1.m_x);</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>  wxPoint2DDouble rotPt2(</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</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="l00111"></a><span class="lineno"> 111</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="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordtype">int</span> numArrows = std::abs(pt1.m_x - rotPt2.m_x) / arrowRate;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">if</span>(numArrows == 0) numArrows = 1;</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">for</span>(<span class="keywordtype">int</span> i = 0; i < numArrows; i++) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</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="l00118"></a><span class="lineno"> 118</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="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  std::vector<wxPoint2DDouble> triPts;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  triPts.push_back(arrowCenter + wxPoint2DDouble(5.0, 0.0));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  triPts.push_back(arrowCenter + wxPoint2DDouble(-5.0, 5.0));</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  triPts.push_back(arrowCenter + wxPoint2DDouble(-5.0, -5.0));</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="comment">// Rotate back.</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 3; i++) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  triPts[i] = wxPoint2DDouble(</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</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="l00129"></a><span class="lineno"> 129</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="l00130"></a><span class="lineno"> 130</span>  pt1.m_y);</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>  m_powerFlowArrow.push_back(triPts);</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"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="class_power_element.html#a8d6e92147c46501f592f67accc1af866"> 137</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="l00138"></a><span class="lineno"> 138</span> <span class="keyword"></span>{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  glColor4dv(m_powerFlowArrowColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</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="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="class_element.html#ae425d7e4f94bf7280d7d68c577d2019e">DrawTriangle</a>(m_powerFlowArrow[i]);</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> <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="l00148"></a><span class="lineno"> 148</span> {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">switch</span>(valueUnit) {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>:</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>:</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>:</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>:</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> value * 1e3;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>:</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>:</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#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">return</span> value * 1e6;</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="keywordflow">default</span>:</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>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> value;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</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#l00201">Element.h:201</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#l00088">Element.h:88</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#l00044">Element.cpp:44</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#l00056">PowerElement.cpp:56</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#l00018">PowerElement.cpp:18</a></div></div> -<div class="ttc" id="class_open_g_l_colour_html_a0193e7fb5730b0e543ba826201568f94"><div class="ttname"><a href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94">OpenGLColour::SetRGBA</a></div><div class="ttdeci">void SetRGBA(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)</div><div class="ttdoc">Set the colour in RGBA. The colour values must be between 0.0 and 1.0. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00350">Element.cpp:350</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#l00019">PowerElement.h:19</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#l00014">PowerElement.h:14</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#l00011">PowerElement.h:11</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#l00053">Element.cpp:53</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#l00018">PowerElement.h:18</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#l00022">PowerElement.h:22</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#l00016">PowerElement.h:16</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#l00025">PowerElement.h:25</a></div></div> -<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#l00093">PowerElement.cpp:93</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#l00024">PowerElement.h:24</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#l00137">PowerElement.cpp:137</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_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_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> +<div class="ttc" id="class_open_g_l_colour_html_a0193e7fb5730b0e543ba826201568f94"><div class="ttname"><a href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94">OpenGLColour::SetRGBA</a></div><div class="ttdeci">void SetRGBA(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)</div><div class="ttdoc">Set the colour in RGBA. The colour values must be between 0.0 and 1.0. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00369">Element.cpp:369</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="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="_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="_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_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="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#l00006">PowerElement.cpp:6</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#l00017">PowerElement.cpp:17</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#l00065">PowerElement.cpp:65</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#l00046">PowerElement.cpp:46</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> +<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> <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_power_element_html_aef6392c211caf557bdac287b174a1ea8"><div class="ttname"><a href="class_power_element.html#aef6392c211caf557bdac287b174a1ea8">PowerElement::GetSwitchPoint</a></div><div class="ttdeci">virtual wxPoint2DDouble GetSwitchPoint(Element *parent, wxPoint2DDouble parentPoint, wxPoint2DDouble secondPoint) const</div><div class="ttdoc">Get the correct switch position. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8cpp_source.html#l00022">PowerElement.cpp:22</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#l00171">Element.h:171</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#l00021">PowerElement.h:21</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#l00083">Element.h:83</a></div></div> +<div class="ttc" id="class_power_element_html_aef6392c211caf557bdac287b174a1ea8"><div class="ttname"><a href="class_power_element.html#aef6392c211caf557bdac287b174a1ea8">PowerElement::GetSwitchPoint</a></div><div class="ttdeci">virtual wxPoint2DDouble GetSwitchPoint(Element *parent, wxPoint2DDouble parentPoint, wxPoint2DDouble secondPoint) const</div><div class="ttdoc">Get the correct switch position. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8cpp_source.html#l00039">PowerElement.cpp:39</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="_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_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 --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_power_element_8h.html b/docs/doxygen/html/_power_element_8h.html index 9c299bf..de32ed6 100644 --- a/docs/doxygen/html/_power_element_8h.html +++ b/docs/doxygen/html/_power_element_8h.html @@ -21,6 +21,12 @@ <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> @@ -226,7 +232,7 @@ Enumerations</h2></td></tr> </td></tr> </table> -<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00011">11</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00028">28</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> </div> </div> @@ -260,7 +266,7 @@ Enumerations</h2></td></tr> </td></tr> </table> -<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00038">38</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00055">55</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> </div> </div> @@ -290,7 +296,7 @@ Enumerations</h2></td></tr> </td></tr> </table> -<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00061">61</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00078">78</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> </div> </div> @@ -314,7 +320,7 @@ Enumerations</h2></td></tr> </td></tr> </table> -<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00052">52</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00069">69</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> </div> </div> diff --git a/docs/doxygen/html/_power_element_8h_source.html b/docs/doxygen/html/_power_element_8h_source.html index 5570e28..abd7623 100644 --- a/docs/doxygen/html/_power_element_8h_source.html +++ b/docs/doxygen/html/_power_element_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,62 +88,62 @@ $(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="preprocessor">#ifndef POWERELEMENT_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define POWERELEMENT_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "ElementPlotData.h"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca"> 11</a></span> <span class="keyword">enum</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> {</div><div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"> 12</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a> = 0, </div><div class="line"><a name="l00013"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027"> 13</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>, </div><div class="line"><a name="l00014"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da"> 14</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>, </div><div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c"> 15</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>, </div><div class="line"><a name="l00016"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392"> 16</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>, </div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c"> 17</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>, </div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b"> 18</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>, </div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990"> 19</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>, </div><div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9"> 20</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>, </div><div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5"> 21</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>, </div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae"> 22</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>, </div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c"> 23</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>, </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"> 24</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>, </div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"> 25</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>, </div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec"> 26</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>, </div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1"> 27</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>, </div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7c0341915f48c889a8885b72199f2a11"> 28</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7c0341915f48c889a8885b72199f2a11">UNIT_S</a>, </div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaaf5ad31fee4a7f5843527be386033de65"> 29</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaaf5ad31fee4a7f5843527be386033de65">UNIT_S_km</a>, </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3"> 30</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3">UNIT_DEGREE</a>, </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5"> 31</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5">UNIT_RADIAN</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> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb"> 38</a></span> <span class="keyword">enum</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb">FaultData</a> {</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0"> 39</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a> = 0, </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512"> 40</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512">FAULT_2LINE</a>, </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e"> 41</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e">FAULT_2LINE_GROUND</a>, </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d"> 42</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d">FAULT_LINE_GROUND</a>, </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd"> 43</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a>, </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245"> 44</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245">FAULT_LINE_B</a>, </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315"> 45</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315">FAULT_LINE_C</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> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1b"> 52</a></span> <span class="keyword">enum</span> <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1b">SwitchingType</a> {</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7"> 53</a></span>  <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7">SW_INSERT</a> = 0, </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776"> 54</a></span>  <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776">SW_REMOVE</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> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740"> 61</a></span> <span class="keyword">enum</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> {</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3"> 62</a></span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a> = 0, </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869"> 63</a></span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869">PF_TO_BUS</a>, </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81"> 64</a></span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a>, </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523"> 65</a></span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523">PF_BUS1_TO_BUS2</a>, </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095"> 66</a></span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095">PF_BUS2_TO_BUS1</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> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="struct_switching_data.html"> 76</a></span> <span class="keyword">struct </span><a class="code" href="struct_switching_data.html">SwitchingData</a> {</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574"> 77</a></span>  std::vector<SwitchingType> <a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>; </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df"> 78</a></span>  std::vector<double> <a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</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> </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="struct_integration_constant.html"> 88</a></span> <span class="keyword">struct </span><a class="code" href="struct_integration_constant.html">IntegrationConstant</a> {</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="struct_integration_constant.html#afc3598097377951b84492d087a06b455"> 89</a></span>  <span class="keywordtype">double</span> <a class="code" href="struct_integration_constant.html#afc3598097377951b84492d087a06b455">c</a>; </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="struct_integration_constant.html#adafabd0d37a52d4ed054a800cbce3d65"> 90</a></span>  <span class="keywordtype">double</span> <a class="code" href="struct_integration_constant.html#adafabd0d37a52d4ed054a800cbce3d65">m</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> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="class_power_element.html"> 100</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="l00101"></a><span class="lineno"> 101</span> {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="class_power_element.html">PowerElement</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  ~<a class="code" href="class_power_element.html">PowerElement</a>();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">virtual</span> wxPoint2DDouble GetSwitchPoint(<a class="code" href="class_element.html">Element</a>* parent,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  wxPoint2DDouble parentPoint,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  wxPoint2DDouble secondPoint) <span class="keyword">const</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</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="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateSwitches();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawSwitches() <span class="keyword">const</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CalculatePowerFlowPts(std::vector<wxPoint2DDouble> edges);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawPowerFlowPts() <span class="keyword">const</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</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="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f"> 160</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="l00165"></a><span class="lineno"><a class="line" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1"> 165</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="l00170"></a><span class="lineno"><a class="line" href="class_power_element.html#a2ee71f9eb90beadf5439ce9f70469b49"> 170</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="l00175"></a><span class="lineno"><a class="line" href="class_power_element.html#a8ffa0f79241bd21ad5dd501d26fed933"> 175</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="l00181"></a><span class="lineno"><a class="line" href="class_power_element.html#acadf6712b430f9fadfbd7015903eaeaf"> 181</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="l00186"></a><span class="lineno"><a class="line" href="class_power_element.html#aefa43fe646e90428b1ed9884a7e499ae"> 186</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="l00191"></a><span class="lineno"><a class="line" href="class_power_element.html#a4dbd26d0a7987c30729efffa860debc4"> 191</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="l00192"></a><span class="lineno"> 192</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="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> m_swData;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  std::vector<std::vector<wxPoint2DDouble> > m_powerFlowArrow;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</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="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_busColour;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_onlineElementColour;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_offlineElementColour;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_closedSwitchColour;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_openedSwitchColour;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_powerFlowArrowColour;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_dynamicEventColour;</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">bool</span> m_dynEvent = <span class="keyword">false</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> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</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#l00026">PowerElement.h:26</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#l00045">PowerElement.h:45</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#l00078">PowerElement.h:78</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#l00015">PowerElement.h:15</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#l00088">Element.h:88</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#l00042">PowerElement.h:42</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#l00013">PowerElement.h:13</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#l00030">PowerElement.h:30</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#l00038">PowerElement.h:38</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#l00170">PowerElement.h:170</a></div></div> -<div class="ttc" id="class_power_element_html_aefa43fe646e90428b1ed9884a7e499ae"><div class="ttname"><a href="class_power_element.html#aefa43fe646e90428b1ed9884a7e499ae">PowerElement::HaveDynamicEvent</a></div><div class="ttdeci">virtual bool HaveDynamicEvent() const</div><div class="ttdoc">Check if the power element have dynamic event. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00186">PowerElement.h:186</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#l00019">PowerElement.h:19</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#l00014">PowerElement.h:14</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#l00077">PowerElement.h:77</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#l00011">PowerElement.h:11</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#l00012">PowerElement.h:12</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#l00088">PowerElement.h:88</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#l00191">PowerElement.h:191</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#l00054">PowerElement.h:54</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#l00064">PowerElement.h:64</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 "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> +<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="_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> +<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_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="class_power_element_html_aefa43fe646e90428b1ed9884a7e499ae"><div class="ttname"><a href="class_power_element.html#aefa43fe646e90428b1ed9884a7e499ae">PowerElement::HaveDynamicEvent</a></div><div class="ttdeci">virtual bool HaveDynamicEvent() const</div><div class="ttdoc">Check if the power element have dynamic event. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00203">PowerElement.h:203</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="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="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="_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#l00018">PowerElement.h:18</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#l00090">PowerElement.h:90</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#l00181">PowerElement.h:181</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#l00076">PowerElement.h:76</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#l00043">PowerElement.h:43</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#l00039">ElementPlotData.h:39</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#l00022">PowerElement.h:22</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#l00016">PowerElement.h:16</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#l00040">PowerElement.h:40</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#l00027">PowerElement.h:27</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#l00025">PowerElement.h:25</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#l00039">PowerElement.h:39</a></div></div> -<div class="ttc" id="struct_integration_constant_html_afc3598097377951b84492d087a06b455"><div class="ttname"><a href="struct_integration_constant.html#afc3598097377951b84492d087a06b455">IntegrationConstant::c</a></div><div class="ttdeci">double c</div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00089">PowerElement.h:89</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#l00028">PowerElement.h:28</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#l00066">PowerElement.h:66</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#l00024">PowerElement.h:24</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#l00175">PowerElement.h:175</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#l00041">PowerElement.h:41</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#l00165">PowerElement.h:165</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#l00063">PowerElement.h:63</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#l00052">PowerElement.h:52</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#l00062">PowerElement.h:62</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#l00023">PowerElement.h:23</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#l00048">Element.h:48</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#l00061">PowerElement.h:61</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#l00100">PowerElement.h:100</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#l00029">PowerElement.h:29</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#l00065">PowerElement.h:65</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#l00020">PowerElement.h:20</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#l00044">PowerElement.h:44</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#l00031">PowerElement.h:31</a></div></div> -<div class="ttc" id="class_power_element_html_a08d2e84b91ab7443b20a9d7eb6ab441f"><div class="ttname"><a href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">PowerElement::SetSwitchingData</a></div><div class="ttdeci">virtual void SetSwitchingData(SwitchingData data)</div><div class="ttdoc">Set the switching data of the element. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00160">PowerElement.h:160</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#l00053">PowerElement.h:53</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#l00021">PowerElement.h:21</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#l00017">PowerElement.h:17</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="_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="_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> +<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_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_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="struct_integration_constant_html_afc3598097377951b84492d087a06b455"><div class="ttname"><a href="struct_integration_constant.html#afc3598097377951b84492d087a06b455">IntegrationConstant::c</a></div><div class="ttdeci">double c</div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00106">PowerElement.h:106</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="_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="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> +<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_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="_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="_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> +<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="_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="class_power_element_html_a08d2e84b91ab7443b20a9d7eb6ab441f"><div class="ttname"><a href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">PowerElement::SetSwitchingData</a></div><div class="ttdeci">virtual void SetSwitchingData(SwitchingData data)</div><div class="ttdoc">Set the switching data of the element. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00177">PowerElement.h:177</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="_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="_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 --> <!-- start footer part --> diff --git a/docs/doxygen/html/_power_flow_8cpp_source.html b/docs/doxygen/html/_power_flow_8cpp_source.html index d05c53d..7143bea 100644 --- a/docs/doxygen/html/_power_flow_8cpp_source.html +++ b/docs/doxygen/html/_power_flow_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,19 +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="preprocessor">#include "PowerFlow.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> PowerFlow::PowerFlow()</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>  : <a class="code" href="class_electric_calculation.html">ElectricCalculation</a>()</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</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> PowerFlow::PowerFlow(std::vector<Element*> elementList)</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  : <a class="code" href="class_electric_calculation.html">ElectricCalculation</a>()</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>  GetElementsFromList(elementList);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> }</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> PowerFlow::~PowerFlow() {}</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keywordtype">bool</span> PowerFlow::RunGaussSeidel(<span class="keywordtype">double</span> systemPowerBase,</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordtype">int</span> maxIteration,</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keywordtype">double</span> error,</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keywordtype">double</span> initAngle,</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordtype">double</span> accFactor)</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="comment">// Calculate the Ybus.</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">if</span>(!GetYBus(m_yBus, systemPowerBase)) {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_errorMsg = _(<span class="stringliteral">"No buses found on the system."</span>);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  <span class="comment">// Number of buses on the system.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</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="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  std::vector<BusType> busType; <span class="comment">// Bus type</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  std::vector<std::complex<double> > voltage; <span class="comment">// Voltage of buses</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  std::vector<std::complex<double> > power; <span class="comment">// Injected power</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  std::vector<std::complex<double> > loadPower; <span class="comment">// Only the load power</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  std::vector<ReactiveLimits> reactiveLimit; <span class="comment">// Limit of reactive power on PV buses</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>  reactiveLimit.resize(numberOfBuses);</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">int</span> busNumber = 0;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</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="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *itb;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</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">// Fill the bus type</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span>(data.slackBus) busType.push_back(BUS_SLACK);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</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="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// bus type.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(data.isVoltageControlled) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">bool</span> hasSyncMachine = <span class="keyword">false</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// Synchronous generator</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</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="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *itsg;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</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="l00054"></a><span class="lineno"> 54</span>  }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// Synchronous motor</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</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="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = *itsm;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</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="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>(hasSyncMachine)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  busType.push_back(BUS_PV);</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>  busType.push_back(BUS_PQ);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  busType.push_back(BUS_PQ);</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="comment">// Fill the voltages array</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">if</span>(data.isVoltageControlled && busType[busNumber] != BUS_PQ) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  voltage.push_back(std::complex<double>(data.controlledVoltage, 0.0));</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  voltage.push_back(std::complex<double>(1.0, 0.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="comment">// Fill the power array</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  power.push_back(std::complex<double>(0.0, 0.0)); <span class="comment">// Initial value</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  loadPower.push_back(std::complex<double>(0.0, 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>  <span class="comment">// Synchronous generator</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</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="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *itsg;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</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="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> childData = syncGenerator->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  power[busNumber] += std::complex<double>(childData.activePower, childData.reactivePower);</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>(busType[busNumber] == BUS_PV) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span>(childData.haveMaxReactive && reactiveLimit[busNumber].maxLimitType != RL_UNLIMITED_SOURCE) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  reactiveLimit[busNumber].maxLimitType = RL_LIMITED;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  reactiveLimit[busNumber].maxLimit += childData.maxReactive;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!childData.haveMaxReactive)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  reactiveLimit[busNumber].maxLimitType = RL_UNLIMITED_SOURCE;</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>(childData.haveMinReactive && reactiveLimit[busNumber].minLimitType != RL_UNLIMITED_SOURCE) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  reactiveLimit[busNumber].minLimitType = RL_LIMITED;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  reactiveLimit[busNumber].minLimit += childData.minReactive;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!childData.haveMinReactive)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  reactiveLimit[busNumber].minLimitType = RL_UNLIMITED_SOURCE;</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>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// Synchronous motor</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</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="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = *itsm;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span>(syncMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</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="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> childData = syncMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  power[busNumber] += std::complex<double>(-childData.activePower, childData.reactivePower);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  loadPower[busNumber] += std::complex<double>(-childData.activePower, 0.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>  <span class="keywordflow">if</span>(busType[busNumber] == BUS_PV) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span>(childData.haveMaxReactive && reactiveLimit[busNumber].maxLimitType != RL_UNLIMITED_SOURCE) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  reactiveLimit[busNumber].maxLimitType = RL_LIMITED;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  reactiveLimit[busNumber].maxLimit += childData.maxReactive;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!childData.haveMaxReactive)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  reactiveLimit[busNumber].maxLimitType = RL_UNLIMITED_SOURCE;</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>(childData.haveMinReactive && reactiveLimit[busNumber].minLimitType != RL_UNLIMITED_SOURCE) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  reactiveLimit[busNumber].minLimitType = RL_LIMITED;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  reactiveLimit[busNumber].minLimit += childData.minReactive;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!childData.haveMinReactive)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  reactiveLimit[busNumber].minLimitType = RL_UNLIMITED_SOURCE;</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>  <span class="comment">// Load</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</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="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="class_load.html">Load</a>* load = *itl;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span>(load-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</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="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> childData = load->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span>(childData.loadType == CONST_POWER) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  power[busNumber] += std::complex<double>(-childData.activePower, -childData.reactivePower);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  loadPower[busNumber] += std::complex<double>(-childData.activePower, -childData.reactivePower);</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>  }</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">// Induction motor</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</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="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = *itim;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>(indMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</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="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> childData = indMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  power[busNumber] += std::complex<double>(-childData.activePower, -childData.reactivePower);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  loadPower[busNumber] += std::complex<double>(-childData.activePower, -childData.reactivePower);</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> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  busNumber++;</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="comment">// Check if have slack bus and if have generation on the slack bus</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordtype">bool</span> haveSlackBus = <span class="keyword">false</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordtype">bool</span> slackBusHaveGeneration = <span class="keyword">false</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)busType.size(); i++) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span>(busType[i] == BUS_SLACK) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">auto</span> itb = m_busList.begin();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  std::advance(itb, i);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *itb;</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">for</span>(<span class="keyword">auto</span> itsg = m_syncGeneratorList.begin(); itsg != m_syncGeneratorList.end(); itsg++) {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *itsg;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</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="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  haveSlackBus = <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="keywordflow">if</span>(!haveSlackBus) {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_errorMsg = _(<span class="stringliteral">"There is no slack bus on the system."</span>);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <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>  <span class="keywordflow">if</span>(!slackBusHaveGeneration) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_errorMsg = _(<span class="stringliteral">"The slack bus don't have generation."</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> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// Gauss-Seidel method</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  std::vector<std::complex<double> > oldVoltage; <span class="comment">// Old voltage array.</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  oldVoltage.resize(voltage.size());</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="keyword">auto</span> oldBusType = busType;</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="keywordtype">int</span> iteration = 0; <span class="comment">// Current itaration number.</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">while</span>(<span class="keyword">true</span>) {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="comment">// Reach the max number of iterations.</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span>(iteration >= maxIteration) {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  m_errorMsg = _(<span class="stringliteral">"The maximum number of iterations was reached."</span>);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  <span class="comment">// Update the old voltage array to current iteration values.</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</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="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordtype">double</span> iterationError = 0.0;</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">for</span>(<span class="keywordtype">int</span> i = 0; i < numberOfBuses; i++) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span>(busType[i] == BUS_PQ) {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  std::complex<double> yeSum(0.0, 0.0);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < numberOfBuses; k++) {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span>(i != k) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// Sum { Y[i,k] * E[k] } | k = 1->n; k diff i</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  yeSum += m_yBus[i][k] * voltage[k];</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> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</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="l00212"></a><span class="lineno"> 212</span>  std::complex<double> newVolt =</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  (1.0 / m_yBus[i][i]) * (std::conj(power[i]) / std::conj(voltage[i]) - yeSum);</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="comment">// Apply the acceleration factor.</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  newVolt = std::complex<double>(accFactor * (newVolt.real() - voltage[i].real()) + voltage[i].real(),</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  accFactor * (newVolt.imag() - voltage[i].imag()) + voltage[i].imag());</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>  voltage[i] = newVolt;</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>(busType[i] == BUS_PV) {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  std::complex<double> yeSum(0.0, 0.0);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < numberOfBuses; k++) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span>(i != k) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="comment">// Sum { Y[i,k] * E[k] } | k = 1->n; k diff i</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  yeSum += m_yBus[i][k] * voltage[k];</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>  std::complex<double> yeSumT = yeSum + (m_yBus[i][i] * voltage[i]);</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="comment">// Q[i] = - Im( E*[i] * Sum { Y[i,k] * E[k] } )</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  std::complex<double> qCalc = std::conj(voltage[i]) * yeSumT;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  power[i] = std::complex<double>(power[i].real(), -qCalc.imag());</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="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="l00236"></a><span class="lineno"> 236</span>  std::complex<double> newVolt =</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  (1.0 / m_yBus[i][i]) * (std::conj(power[i]) / std::conj(voltage[i]) - yeSum);</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">// Apply the acceleration factor.</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  newVolt = std::complex<double>(accFactor * (newVolt.real() - voltage[i].real()) + voltage[i].real(),</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  accFactor * (newVolt.imag() - voltage[i].imag()) + voltage[i].imag());</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="comment">// Keep the same voltage magnitude.</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  voltage[i] = std::complex<double>(std::abs(voltage[i]) * std::cos(std::arg(newVolt)),</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  std::abs(voltage[i]) * std::sin(std::arg(newVolt)));</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> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordtype">double</span> busError = std::max(</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  std::abs(voltage[i].real() - oldVoltage[i].real()), std::abs(voltage[i].imag() - oldVoltage[i].imag()));</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">if</span>(busError > iterationError) iterationError = busError;</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>(iterationError < error) {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordtype">bool</span> limitReach = <span class="keyword">false</span>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numberOfBuses; i++) {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">if</span>(busType[i] == BUS_PV) {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">if</span>(reactiveLimit[i].maxLimitType == RL_LIMITED) {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">if</span>(power[i].imag() - loadPower[i].imag() > reactiveLimit[i].maxLimit) {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  power[i] =</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  std::complex<double>(power[i].real(), reactiveLimit[i].maxLimit + loadPower[i].imag());</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  busType[i] = BUS_PQ;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  reactiveLimit[i].limitReached = RL_MAX_REACHED;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  limitReach = <span class="keyword">true</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"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">if</span>(reactiveLimit[i].minLimitType == RL_LIMITED) {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span>(power[i].imag() - loadPower[i].imag() < reactiveLimit[i].minLimit) {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  power[i] =</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  std::complex<double>(power[i].real(), reactiveLimit[i].minLimit + loadPower[i].imag());</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  busType[i] = BUS_PQ;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  reactiveLimit[i].limitReached = RL_MIN_REACHED;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  limitReach = <span class="keyword">true</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>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">if</span>(!limitReach) <span class="keywordflow">break</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"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  iteration++;</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">// Adjust the power array.</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">// TODO: Only the slack bus??</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numberOfBuses; i++) {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  std::complex<double> sBus = std::complex<double>(0.0, 0.0);</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 < numberOfBuses; j++) sBus += voltage[i] * std::conj(voltage[j]) * std::conj(m_yBus[i][j]);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  power[i] = sBus;</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>  UpdateElementsPowerFlow(voltage, power, oldBusType, reactiveLimit, systemPowerBase);</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="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</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#l00008">IndMotor.h:8</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#l00008">SyncGenerator.h:8</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#l00517">Element.h:517</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#l00110">SyncGenerator.h:110</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#l00007">Bus.h:7</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#l00045">Bus.h:45</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#l00219">Element.h:219</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#l00023">Load.h:23</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#l00013">Load.h:13</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#l00110">SyncMotor.h:110</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#l00017">IndMotor.h:17</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#l00049">ElectricCalculation.h:49</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#l00008">SyncMotor.h:8</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 "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="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="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_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="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="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 --> diff --git a/docs/doxygen/html/_power_flow_8h_source.html b/docs/doxygen/html/_power_flow_8h_source.html index c66b86a..677dd50 100644 --- a/docs/doxygen/html/_power_flow_8h_source.html +++ b/docs/doxygen/html/_power_flow_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,9 +88,9 @@ $(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="preprocessor">#ifndef POWERFLOW_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define POWERFLOW_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <wx/string.h></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include <wx/intl.h></span> <span class="comment">//_()</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"><a class="line" href="class_power_flow.html"> 9</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="l00010"></a><span class="lineno"> 10</span> {</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <a class="code" href="class_power_flow.html">PowerFlow</a>();</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <a class="code" href="class_power_flow.html">PowerFlow</a>(std::vector<Element*> elementList);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  ~<a class="code" href="class_power_flow.html">PowerFlow</a>();</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</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="l00016"></a><span class="lineno"> 16</span>  <span class="keywordtype">int</span> maxIteration = 5000,</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordtype">double</span> error = 1e-6,</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keywordtype">double</span> initAngle = 0.0,</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keywordtype">double</span> accFactor = 1.0);</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="keyword">virtual</span> wxString GetErrorMessage() { <span class="keywordflow">return</span> m_errorMsg; }</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">protected</span>:</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  std::vector<std::vector<std::complex<double> > > m_yBus;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  wxString m_errorMsg = <span class="stringliteral">""</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> <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#l00009">PowerFlow.h:9</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">#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#l00049">ElectricCalculation.h:49</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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_properties_data_8cpp_source.html b/docs/doxygen/html/_properties_data_8cpp_source.html index 9fa7f45..768b0fb 100644 --- a/docs/doxygen/html/_properties_data_8cpp_source.html +++ b/docs/doxygen/html/_properties_data_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,7 +88,7 @@ $(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="preprocessor">#include "PropertiesData.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> PropertiesData::PropertiesData()</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> {</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> }</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> PropertiesData::~PropertiesData()</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> }</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </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 "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><!-- 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_source.html b/docs/doxygen/html/_properties_data_8h_source.html index 567c792..d475685 100644 --- a/docs/doxygen/html/_properties_data_8h_source.html +++ b/docs/doxygen/html/_properties_data_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,13 +88,13 @@ $(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="preprocessor">#ifndef PROPERTIESDATA_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define PROPERTIESDATA_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "wx/language.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</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="keyword">enum</span> PowerFlowMethod { GAUSS_SEIDEL = 0, NEWTON_RAPHSON };</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="keyword">enum</span> GUITheme { THEME_LIGHT = 0, THEME_DARK };</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="struct_simulation_data.html"> 11</a></span> <span class="keyword">struct </span><a class="code" href="struct_simulation_data.html">SimulationData</a> {</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="comment">// General simulation data</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keywordtype">double</span> basePower = 100.0;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</span>  <span class="keywordtype">bool</span> faultAfterPowerFlow = <span class="keyword">true</span>;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keywordtype">bool</span> scPowerAfterPowerFlow = <span class="keyword">true</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="comment">// Power flow</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  PowerFlowMethod powerFlowMethod = GAUSS_SEIDEL;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordtype">double</span> accFator = 1.0;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keywordtype">double</span> powerFlowTolerance = 1e-7;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keywordtype">int</span> powerFlowMaxIterations = 5000;</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="comment">// Stability</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">double</span> stabilityFrequency = 60.0;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordtype">double</span> timeStep = 1e-2;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">double</span> stabilitySimulationTime = 10.0;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">double</span> stabilityTolerance = 1e-8;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordtype">int</span> stabilityMaxIterations = 100;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">int</span> controlTimeStepRatio = 10;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">double</span> plotTime = 1e-2;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">bool</span> useCOI = <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> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="struct_general_data.html"> 35</a></span> <span class="keyword">struct </span><a class="code" href="struct_general_data.html">GeneralData</a> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  wxLanguage language = wxLANGUAGE_ENGLISH;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  GUITheme theme = THEME_LIGHT;</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"><a class="line" href="class_properties_data.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_properties_data.html">PropertiesData</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_properties_data.html">PropertiesData</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  ~<a class="code" href="class_properties_data.html">PropertiesData</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>  <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="l00047"></a><span class="lineno"> 47</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="l00048"></a><span class="lineno"> 48</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="l00049"></a><span class="lineno"> 49</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="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_simulation_data.html">SimulationData</a> m_simulData;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="struct_general_data.html">GeneralData</a> m_genData;</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 // 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#l00040">PropertiesData.h:40</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#l00011">PowerElement.h:11</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">#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> +<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="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#l00011">PropertiesData.h:11</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#l00022">PowerElement.h:22</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="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#l00035">PropertiesData.h:35</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 --> diff --git a/docs/doxygen/html/_properties_form_8cpp_source.html b/docs/doxygen/html/_properties_form_8cpp_source.html index df50ee0..82cfe31 100644 --- a/docs/doxygen/html/_properties_form_8cpp_source.html +++ b/docs/doxygen/html/_properties_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,7 +88,7 @@ $(document).ready(function(){initNavTree('_properties_form_8cpp_source.html','') <div class="title">PropertiesForm.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">// This file was auto-generated by codelite's wxCrafter Plugin</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// wxCrafter project file: PropertiesForm.wxcp</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Do not modify this file by hand!</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "PropertiesForm.h"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Declare the bitmap loading function</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="keyword">extern</span> <span class="keywordtype">void</span> wxCDAD0InitBitmapResources();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> bBitmapLoaded = <span class="keyword">false</span>;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> GeneralPropertiesFormBase::GeneralPropertiesFormBase(wxWindow* parent, wxWindowID <span class="keywordtype">id</span>, <span class="keyword">const</span> wxString& title, <span class="keyword">const</span> wxPoint& pos, <span class="keyword">const</span> wxSize& size, <span class="keywordtype">long</span> style)</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  : wxDialog(parent, id, title, pos, size, style)</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>  <span class="keywordflow">if</span> ( !bBitmapLoaded ) {</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="comment">// We need to initialise the default bitmap handler</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  wxXmlResource::Get()->AddHandler(<span class="keyword">new</span> wxBitmapXmlHandler);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  wxCDAD0InitBitmapResources();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  bBitmapLoaded = <span class="keyword">true</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>  </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxBoxSizer* boxSizer_lvl1_1 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  this->SetSizer(boxSizer_lvl1_1);</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_notebook = <span class="keyword">new</span> wxNotebook(<span class="keyword">this</span>, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), wxBK_DEFAULT);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_notebook->SetName(wxT(<span class="stringliteral">"m_notebook"</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>  boxSizer_lvl1_1->Add(m_notebook, 1, wxALL|wxEXPAND, WXC_FROM_DIP(5));</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_panelGeneral = <span class="keyword">new</span> wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook, wxSize(-1,-1)), wxTAB_TRAVERSAL);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_notebook->AddPage(m_panelGeneral, _(<span class="stringliteral">"General"</span>), <span class="keyword">false</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>  wxBoxSizer* boxSizerLvl2_1 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_panelGeneral->SetSizer(boxSizerLvl2_1);</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>  wxBoxSizer* boxSizerLvl3_1 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  boxSizerLvl2_1->Add(boxSizerLvl3_1, 0, wxEXPAND, WXC_FROM_DIP(5));</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_staticTextLanguage = <span class="keyword">new</span> wxStaticText(m_panelGeneral, wxID_ANY, _(<span class="stringliteral">"Language"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), 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>  boxSizerLvl3_1->Add(m_staticTextLanguage, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxArrayString m_choiceLanguageArr;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_choiceLanguageArr.Add(wxT(<span class="stringliteral">"English"</span>));</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_choiceLanguageArr.Add(wxT(<span class="stringliteral">"Portuguese"</span>));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_choiceLanguage = <span class="keyword">new</span> wxChoice(m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), m_choiceLanguageArr, 0);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_choiceLanguage->SetSelection(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>  boxSizerLvl3_1->Add(m_choiceLanguage, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl3_2 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  boxSizerLvl2_1->Add(boxSizerLvl3_2, 0, wxEXPAND, WXC_FROM_DIP(5));</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_staticTextTheme = <span class="keyword">new</span> wxStaticText(m_panelGeneral, wxID_ANY, _(<span class="stringliteral">"Theme"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), 0);</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>  boxSizerLvl3_2->Add(m_staticTextTheme, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxArrayString m_choiceThemeArr;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_choiceThemeArr.Add(wxT(<span class="stringliteral">"Light"</span>));</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_choiceThemeArr.Add(wxT(<span class="stringliteral">"Dark"</span>));</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_choiceTheme = <span class="keyword">new</span> wxChoice(m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), m_choiceThemeArr, 0);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_choiceTheme->SetSelection(0);</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>  boxSizerLvl3_2->Add(m_choiceTheme, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizer_bottonButtons = <span class="keyword">new</span> wxBoxSizer(wxHORIZONTAL);</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>  boxSizer_lvl1_1->Add(boxSizer_bottonButtons, 0, wxALL|wxEXPAND, WXC_FROM_DIP(5));</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>  boxSizer_bottonButtons->Add(0, 0, 1, wxALL, WXC_FROM_DIP(5));</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_buttonOK = <span class="keyword">new</span> wxButton(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"OK"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), 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>  boxSizer_bottonButtons->Add(m_buttonOK, 0, wxALL|wxALIGN_RIGHT, WXC_FROM_DIP(5));</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>  m_buttonCancel = <span class="keyword">new</span> wxButton(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"Cancel"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), 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>  boxSizer_bottonButtons->Add(m_buttonCancel, 0, wxALL|wxALIGN_RIGHT, WXC_FROM_DIP(5));</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"> #if wxVERSION_NUMBER >= 2900</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">if</span>(!wxPersistenceManager::Get().Find(m_notebook)){</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  wxPersistenceManager::Get().RegisterAndRestore(m_notebook);</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>  wxPersistenceManager::Get().Restore(m_notebook);</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="preprocessor"> #endif</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>  SetName(wxT(<span class="stringliteral">"GeneralPropertiesFormBase"</span>));</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  SetSize(-1,-1);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span> (GetSizer()) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  GetSizer()->Fit(<span class="keyword">this</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>  <span class="keywordflow">if</span>(GetParent()) {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  CentreOnParent(wxBOTH);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  CentreOnScreen(wxBOTH);</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="preprocessor">#if wxVERSION_NUMBER >= 2900</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span>(!wxPersistenceManager::Get().Find(<span class="keyword">this</span>)) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  wxPersistenceManager::Get().RegisterAndRestore(<span class="keyword">this</span>);</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>  wxPersistenceManager::Get().Restore(<span class="keyword">this</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="preprocessor">#endif</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// Connect events</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(GeneralPropertiesFormBase::OnButtonOKClick), NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(GeneralPropertiesFormBase::OnButtonCancelClick), NULL, <span class="keyword">this</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> GeneralPropertiesFormBase::~GeneralPropertiesFormBase()</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_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(GeneralPropertiesFormBase::OnButtonOKClick), NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(GeneralPropertiesFormBase::OnButtonCancelClick), NULL, <span class="keyword">this</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> SimulationsSettingsFormBase::SimulationsSettingsFormBase(wxWindow* parent, wxWindowID <span class="keywordtype">id</span>, <span class="keyword">const</span> wxString& title, <span class="keyword">const</span> wxPoint& pos, <span class="keyword">const</span> wxSize& size, <span class="keywordtype">long</span> style)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  : wxDialog(parent, id, title, pos, size, style)</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="keywordflow">if</span> ( !bBitmapLoaded ) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// We need to initialise the default bitmap handler</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  wxXmlResource::Get()->AddHandler(<span class="keyword">new</span> wxBitmapXmlHandler);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  wxCDAD0InitBitmapResources();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  bBitmapLoaded = <span class="keyword">true</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>  wxBoxSizer* boxSizer_lvl1_1 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  this->SetSizer(boxSizer_lvl1_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>  m_notebook = <span class="keyword">new</span> wxNotebook(<span class="keyword">this</span>, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), wxBK_DEFAULT);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  m_notebook->SetName(wxT(<span class="stringliteral">"m_notebook"</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>  boxSizer_lvl1_1->Add(m_notebook, 1, wxALL|wxEXPAND, WXC_FROM_DIP(5));</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>  m_panelGeneral = <span class="keyword">new</span> wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook, wxSize(-1,-1)), wxTAB_TRAVERSAL);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  m_notebook->AddPage(m_panelGeneral, _(<span class="stringliteral">"General"</span>), <span class="keyword">false</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>  wxBoxSizer* boxSizerLvl2_1 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  m_panelGeneral->SetSizer(boxSizerLvl2_1);</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>  wxBoxSizer* boxSizerLvl3_1 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  boxSizerLvl2_1->Add(boxSizerLvl3_1, 0, wxEXPAND, WXC_FROM_DIP(5));</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_staticTextBasePower = <span class="keyword">new</span> wxStaticText(m_panelGeneral, wxID_ANY, _(<span class="stringliteral">"Base power"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), 0);</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>  boxSizerLvl3_1->Add(m_staticTextBasePower, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl4_1 = <span class="keyword">new</span> wxBoxSizer(wxHORIZONTAL);</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>  boxSizerLvl3_1->Add(boxSizerLvl4_1, 0, wxEXPAND, WXC_FROM_DIP(5));</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_textCtrlbasePower = <span class="keyword">new</span> wxTextCtrl(m_panelGeneral, wxID_ANY, wxT(<span class="stringliteral">"100,0"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  m_textCtrlbasePower->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor"> #endif</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>  boxSizerLvl4_1->Add(m_textCtrlbasePower, 1, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxArrayString m_choiceBasePowerArr;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  m_choiceBasePowerArr.Add(wxT(<span class="stringliteral">"VA"</span>));</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  m_choiceBasePowerArr.Add(wxT(<span class="stringliteral">"kVA"</span>));</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  m_choiceBasePowerArr.Add(wxT(<span class="stringliteral">"MVA"</span>));</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  m_choiceBasePower = <span class="keyword">new</span> wxChoice(m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), m_choiceBasePowerArr, 0);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_choiceBasePower->SetSelection(2);</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>  boxSizerLvl4_1->Add(m_choiceBasePower, 0, wxLEFT|wxRIGHT|wxBOTTOM, WXC_FROM_DIP(5));</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>  wxStaticBoxSizer* staticBoxSizerLvl3_2 = <span class="keyword">new</span> wxStaticBoxSizer( <span class="keyword">new</span> wxStaticBox(m_panelGeneral, wxID_ANY, _(<span class="stringliteral">"Continuous calculation"</span>)), wxVERTICAL);</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>  boxSizerLvl2_1->Add(staticBoxSizerLvl3_2, 0, wxALL|wxEXPAND, WXC_FROM_DIP(5));</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>  m_checkBoxFaultAfterPF = <span class="keyword">new</span> wxCheckBox(m_panelGeneral, wxID_ANY, _(<span class="stringliteral">"Calculate fault after power flow"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  m_checkBoxFaultAfterPF->SetValue(<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>  staticBoxSizerLvl3_2->Add(m_checkBoxFaultAfterPF, 0, wxALL, WXC_FROM_DIP(5));</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>  m_checkBoxSCPowerAfterPF = <span class="keyword">new</span> wxCheckBox(m_panelGeneral, wxID_ANY, _(<span class="stringliteral">"Calculate short-circuit power after power flow"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  m_checkBoxSCPowerAfterPF->SetValue(<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>  staticBoxSizerLvl3_2->Add(m_checkBoxSCPowerAfterPF, 0, wxALL, WXC_FROM_DIP(5));</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_panelPF = <span class="keyword">new</span> wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook, wxSize(-1,-1)), wxTAB_TRAVERSAL);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  m_notebook->AddPage(m_panelPF, _(<span class="stringliteral">"Power flow"</span>), <span class="keyword">false</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>  wxBoxSizer* boxSizerLvl2_2 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  m_panelPF->SetSizer(boxSizerLvl2_2);</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>  wxBoxSizer* boxSizerLvl3_3 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  boxSizerLvl2_2->Add(boxSizerLvl3_3, 0, wxEXPAND, WXC_FROM_DIP(5));</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_staticTextPFMethod = <span class="keyword">new</span> wxStaticText(m_panelPF, wxID_ANY, _(<span class="stringliteral">"Solution method"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelPF, wxSize(-1,-1)), 0);</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>  boxSizerLvl3_3->Add(m_staticTextPFMethod, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxArrayString m_choicePFMethodArr;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  m_choicePFMethodArr.Add(wxT(<span class="stringliteral">"Gauss-Seidel"</span>));</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  m_choicePFMethodArr.Add(wxT(<span class="stringliteral">"Newton-Raphson"</span>));</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  m_choicePFMethod = <span class="keyword">new</span> wxChoice(m_panelPF, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelPF, wxSize(-1,-1)), m_choicePFMethodArr, 0);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  m_choicePFMethod->SetSelection(0);</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>  boxSizerLvl3_3->Add(m_choicePFMethod, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND, WXC_FROM_DIP(5));</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>  wxGridSizer* gridSizerLvl_3_4 = <span class="keyword">new</span> wxGridSizer(0, 2, 0, 0);</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>  boxSizerLvl2_2->Add(gridSizerLvl_3_4, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl4_2 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_3_4->Add(boxSizerLvl4_2, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_staticTextAccFactor = <span class="keyword">new</span> wxStaticText(m_panelPF, wxID_ANY, _(<span class="stringliteral">"Acceleration factor"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelPF, wxSize(-1,-1)), 0);</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>  boxSizerLvl4_2->Add(m_staticTextAccFactor, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_textCtrlAccFactor = <span class="keyword">new</span> wxTextCtrl(m_panelPF, wxID_ANY, wxT(<span class="stringliteral">"1,0"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelPF, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  m_textCtrlAccFactor->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="preprocessor"> #endif</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>  boxSizerLvl4_2->Add(m_textCtrlAccFactor, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl4_3 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_3_4->Add(boxSizerLvl4_3, 0, wxEXPAND, WXC_FROM_DIP(5));</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_staticTextPFTolerance = <span class="keyword">new</span> wxStaticText(m_panelPF, wxID_ANY, _(<span class="stringliteral">"Tolerance"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelPF, wxSize(-1,-1)), 0);</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>  boxSizerLvl4_3->Add(m_staticTextPFTolerance, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_textCtrlPFTolerance = <span class="keyword">new</span> wxTextCtrl(m_panelPF, wxID_ANY, wxT(<span class="stringliteral">"1e-7"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelPF, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  m_textCtrlPFTolerance->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="preprocessor"> #endif</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>  boxSizerLvl4_3->Add(m_textCtrlPFTolerance, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl4_4 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_3_4->Add(boxSizerLvl4_4, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_staticTextPFMaxIterations = <span class="keyword">new</span> wxStaticText(m_panelPF, wxID_ANY, _(<span class="stringliteral">"Max. iterations"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelPF, wxSize(-1,-1)), 0);</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>  boxSizerLvl4_4->Add(m_staticTextPFMaxIterations, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_textCtrlPFMaxIterations = <span class="keyword">new</span> wxTextCtrl(m_panelPF, wxID_ANY, wxT(<span class="stringliteral">"5000"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelPF, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  m_textCtrlPFMaxIterations->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="preprocessor"> #endif</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>  boxSizerLvl4_4->Add(m_textCtrlPFMaxIterations, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_panelStability = <span class="keyword">new</span> wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook, wxSize(-1,-1)), wxTAB_TRAVERSAL);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  m_notebook->AddPage(m_panelStability, _(<span class="stringliteral">"Stability"</span>), <span class="keyword">false</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>  wxBoxSizer* boxSizerLvl2_232 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  m_panelStability->SetSizer(boxSizerLvl2_232);</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>  wxGridSizer* gridSizerLvl_2_3 = <span class="keyword">new</span> wxGridSizer(0, 2, 0, 0);</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>  boxSizerLvl2_232->Add(gridSizerLvl_2_3, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl3_6 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_2_3->Add(boxSizerLvl3_6, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_staticTextTimeStep = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"Time step"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</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>  boxSizerLvl3_6->Add(m_staticTextTimeStep, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl4_6 = <span class="keyword">new</span> wxBoxSizer(wxHORIZONTAL);</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>  boxSizerLvl3_6->Add(boxSizerLvl4_6, 0, wxEXPAND, WXC_FROM_DIP(5));</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_textCtrlTimeStep = <span class="keyword">new</span> wxTextCtrl(m_panelStability, wxID_ANY, wxT(<span class="stringliteral">"0,01"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  m_textCtrlTimeStep->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="preprocessor"> #endif</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"> 289</span>  boxSizerLvl4_6->Add(m_textCtrlTimeStep, 1, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_staticTextSec_1 = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"s"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</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>  boxSizerLvl4_6->Add(m_staticTextSec_1, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl3_7 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_2_3->Add(boxSizerLvl3_7, 0, wxEXPAND, WXC_FROM_DIP(5));</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_staticTextTSimTime = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"Simulation time"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 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>  boxSizerLvl3_7->Add(m_staticTextTSimTime, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl4_7 = <span class="keyword">new</span> wxBoxSizer(wxHORIZONTAL);</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>  boxSizerLvl3_7->Add(boxSizerLvl4_7, 0, wxEXPAND, WXC_FROM_DIP(5));</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_textCtrlSimTime = <span class="keyword">new</span> wxTextCtrl(m_panelStability, wxID_ANY, wxT(<span class="stringliteral">"10"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  m_textCtrlSimTime->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="preprocessor"> #endif</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>  boxSizerLvl4_7->Add(m_textCtrlSimTime, 1, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_staticTextSec_2 = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"s"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</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>  boxSizerLvl4_7->Add(m_staticTextSec_2, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl3_5 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_2_3->Add(boxSizerLvl3_5, 0, wxEXPAND, WXC_FROM_DIP(5));</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_staticTextFreq = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"System frequency"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</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>  boxSizerLvl3_5->Add(m_staticTextFreq, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl4_5 = <span class="keyword">new</span> wxBoxSizer(wxHORIZONTAL);</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>  boxSizerLvl3_5->Add(boxSizerLvl4_5, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_textCtrlFreq = <span class="keyword">new</span> wxTextCtrl(m_panelStability, wxID_ANY, wxT(<span class="stringliteral">"60,0"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  m_textCtrlFreq->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="preprocessor"> #endif</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>  boxSizerLvl4_5->Add(m_textCtrlFreq, 1, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_staticTextFreqUnit = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"Hz"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</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>  boxSizerLvl4_5->Add(m_staticTextFreqUnit, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl3_8 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_2_3->Add(boxSizerLvl3_8, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_staticTextTStabTolerance = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"Tolerance"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</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>  boxSizerLvl3_8->Add(m_staticTextTStabTolerance, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_textCtrlStabTolerance = <span class="keyword">new</span> wxTextCtrl(m_panelStability, wxID_ANY, wxT(<span class="stringliteral">"1e-8"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  m_textCtrlStabTolerance->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="preprocessor"> #endif</span></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>  boxSizerLvl3_8->Add(m_textCtrlStabTolerance, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl3_9 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_2_3->Add(boxSizerLvl3_9, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_staticTextTStabMaxIterations = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"Max. Iterations"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  boxSizerLvl3_9->Add(m_staticTextTStabMaxIterations, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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_textCtrlStabMaxIterations = <span class="keyword">new</span> wxTextCtrl(m_panelStability, wxID_ANY, wxT(<span class="stringliteral">"100"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  m_textCtrlStabMaxIterations->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="preprocessor"> #endif</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>  boxSizerLvl3_9->Add(m_textCtrlStabMaxIterations, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl3_10 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_2_3->Add(boxSizerLvl3_10, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_staticTextCtrlStepRation = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"Controls step ratio"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</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>  boxSizerLvl3_10->Add(m_staticTextCtrlStepRation, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_textCtrlCtrlStepRatio = <span class="keyword">new</span> wxTextCtrl(m_panelStability, wxID_ANY, wxT(<span class="stringliteral">"10"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  m_textCtrlCtrlStepRatio->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> <span class="preprocessor"> #endif</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>  boxSizerLvl3_10->Add(m_textCtrlCtrlStepRatio, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl3_11 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_2_3->Add(boxSizerLvl3_11, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_staticTextPrintTime = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"Plot time"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 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>  boxSizerLvl3_11->Add(m_staticTextPrintTime, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl4_8 = <span class="keyword">new</span> wxBoxSizer(wxHORIZONTAL);</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>  boxSizerLvl3_11->Add(boxSizerLvl4_8, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_textCtrlPrintTime = <span class="keyword">new</span> wxTextCtrl(m_panelStability, wxID_ANY, wxT(<span class="stringliteral">"0,01"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  m_textCtrlPrintTime->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="preprocessor"> #endif</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>  boxSizerLvl4_8->Add(m_textCtrlPrintTime, 1, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_staticTextSec_4 = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"s"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</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>  boxSizerLvl4_8->Add(m_staticTextSec_4, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_checkBoxUseCOI = <span class="keyword">new</span> wxCheckBox(m_panelStability, wxID_ANY, _(<span class="stringliteral">"Use center of inertia as reference"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  m_checkBoxUseCOI->SetValue(<span class="keyword">true</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>  boxSizerLvl2_232->Add(m_checkBoxUseCOI, 0, wxALL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizer_bottonButtons = <span class="keyword">new</span> wxBoxSizer(wxHORIZONTAL);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  </div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  boxSizer_lvl1_1->Add(boxSizer_bottonButtons, 0, wxALL|wxEXPAND, WXC_FROM_DIP(5));</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>  boxSizer_bottonButtons->Add(0, 0, 1, wxALL, WXC_FROM_DIP(5));</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>  m_buttonOK = <span class="keyword">new</span> wxButton(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"OK"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), 0);</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>  boxSizer_bottonButtons->Add(m_buttonOK, 0, wxALL|wxALIGN_RIGHT, WXC_FROM_DIP(5));</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>  m_buttonCancel = <span class="keyword">new</span> wxButton(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"Cancel"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), 0);</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>  boxSizer_bottonButtons->Add(m_buttonCancel, 0, wxALL|wxALIGN_RIGHT, WXC_FROM_DIP(5));</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> <span class="preprocessor"> #if wxVERSION_NUMBER >= 2900</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">if</span>(!wxPersistenceManager::Get().Find(m_notebook)){</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  wxPersistenceManager::Get().RegisterAndRestore(m_notebook);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  wxPersistenceManager::Get().Restore(m_notebook);</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="preprocessor"> #endif</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>  SetName(wxT(<span class="stringliteral">"SimulationsSettingsFormBase"</span>));</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  SetSize(-1,-1);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">if</span> (GetSizer()) {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  GetSizer()->Fit(<span class="keyword">this</span>);</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>  <span class="keywordflow">if</span>(GetParent()) {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  CentreOnParent(wxBOTH);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  CentreOnScreen(wxBOTH);</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="preprocessor">#if wxVERSION_NUMBER >= 2900</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span>(!wxPersistenceManager::Get().Find(<span class="keyword">this</span>)) {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  wxPersistenceManager::Get().RegisterAndRestore(<span class="keyword">this</span>);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  wxPersistenceManager::Get().Restore(<span class="keyword">this</span>);</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="preprocessor">#endif</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="comment">// Connect events</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  m_choicePFMethod->Connect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(SimulationsSettingsFormBase::OnPFMethodChoiceSelected), NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SimulationsSettingsFormBase::OnButtonOKClick), NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SimulationsSettingsFormBase::OnButtonCancelClick), NULL, <span class="keyword">this</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> SimulationsSettingsFormBase::~SimulationsSettingsFormBase()</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>  m_choicePFMethod->Disconnect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(SimulationsSettingsFormBase::OnPFMethodChoiceSelected), NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SimulationsSettingsFormBase::OnButtonOKClick), NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SimulationsSettingsFormBase::OnButtonCancelClick), NULL, <span class="keyword">this</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> }</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> AboutFormBase::AboutFormBase(wxWindow* parent, wxWindowID <span class="keywordtype">id</span>, <span class="keyword">const</span> wxString& title, <span class="keyword">const</span> wxPoint& pos, <span class="keyword">const</span> wxSize& size, <span class="keywordtype">long</span> style)</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  : wxDialog(parent, id, title, pos, size, style)</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>  <span class="keywordflow">if</span> ( !bBitmapLoaded ) {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="comment">// We need to initialise the default bitmap handler</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  wxXmlResource::Get()->AddHandler(<span class="keyword">new</span> wxBitmapXmlHandler);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  wxCDAD0InitBitmapResources();</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  bBitmapLoaded = <span class="keyword">true</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"> 478</span>  </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  wxBoxSizer* boxSizerMain = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  this->SetSizer(boxSizerMain);</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_notebook = <span class="keyword">new</span> wxNotebook(<span class="keyword">this</span>, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), wxBK_DEFAULT);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  m_notebook->SetName(wxT(<span class="stringliteral">"m_notebook"</span>));</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>  boxSizerMain->Add(m_notebook, 1, wxALL|wxEXPAND, WXC_FROM_DIP(5));</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>  m_panelLogo = <span class="keyword">new</span> wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook, wxSize(-1,-1)), wxTAB_TRAVERSAL);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  m_notebook->AddPage(m_panelLogo, _(<span class="stringliteral">"About"</span>), <span class="keyword">false</span>);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  </div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  wxBoxSizer* boxSizerLvl1_1 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  m_panelLogo->SetSizer(boxSizerLvl1_1);</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>  m_staticBitmapLogo = <span class="keyword">new</span> wxStaticBitmap(m_panelLogo, wxID_ANY, wxXmlResource::Get()->LoadBitmap(wxT(<span class="stringliteral">"About2017"</span>)), wxDefaultPosition, wxDLG_UNIT(m_panelLogo, wxSize(-1,-1)), 0 );</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>  boxSizerLvl1_1->Add(m_staticBitmapLogo, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, WXC_FROM_DIP(5));</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>  m_panelCredits = <span class="keyword">new</span> wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook, wxSize(-1,-1)), wxTAB_TRAVERSAL);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  m_notebook->AddPage(m_panelCredits, _(<span class="stringliteral">"Credits"</span>), <span class="keyword">false</span>);</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>  wxBoxSizer* boxSizerLvl1_2 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  m_panelCredits->SetSizer(boxSizerLvl1_2);</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>  m_gridCredits = <span class="keyword">new</span> wxGrid(m_panelCredits, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelCredits, wxSize(-1,-1)), wxWANTS_CHARS);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  m_gridCredits->CreateGrid(0, 0);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  m_gridCredits->SetRowLabelAlignment(wxALIGN_RIGHT, wxALIGN_CENTRE);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  m_gridCredits->SetColLabelAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 2904</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  m_gridCredits->UseNativeColHeader(<span class="keyword">true</span>);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  m_gridCredits->EnableEditing(<span class="keyword">false</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>  boxSizerLvl1_2->Add(m_gridCredits, 1, wxEXPAND, WXC_FROM_DIP(5));</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>  m_panelLicense = <span class="keyword">new</span> wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook, wxSize(-1,-1)), wxTAB_TRAVERSAL);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  m_notebook->AddPage(m_panelLicense, _(<span class="stringliteral">"License"</span>), <span class="keyword">false</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>  wxBoxSizer* boxSizerLvl1_3 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  m_panelLicense->SetSizer(boxSizerLvl1_3);</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>  m_richTextCtrlLicense = <span class="keyword">new</span> wxRichTextCtrl(m_panelLicense, wxID_ANY, wxT(<span class="stringliteral">""</span>), wxDefaultPosition, wxDLG_UNIT(m_panelLicense, wxSize(-1,-1)), wxTE_MULTILINE|wxTE_PROCESS_TAB|wxTE_PROCESS_ENTER|wxWANTS_CHARS);</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>  boxSizerLvl1_3->Add(m_richTextCtrlLicense, 1, wxALL|wxEXPAND, WXC_FROM_DIP(5));</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  wxFlexGridSizer* flexGridSizer247 = <span class="keyword">new</span> wxFlexGridSizer(2, 2, 0, 0);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  flexGridSizer247->SetFlexibleDirection( wxBOTH );</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  flexGridSizer247->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  flexGridSizer247->AddGrowableCol(1);</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>  boxSizerMain->Add(flexGridSizer247, 0, wxALL|wxEXPAND, WXC_FROM_DIP(5));</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>  m_staticTextVersionLabel = <span class="keyword">new</span> wxStaticText(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"Version:"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), 0);</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>  flexGridSizer247->Add(m_staticTextVersionLabel, 0, wxALL, WXC_FROM_DIP(5));</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>  m_staticTextVersion = <span class="keyword">new</span> wxStaticText(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"Alpha 2017w37a"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), 0);</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>  flexGridSizer247->Add(m_staticTextVersion, 0, wxALL, WXC_FROM_DIP(5));</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>  m_staticTextHome = <span class="keyword">new</span> wxStaticText(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"Home page:"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), 0);</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>  flexGridSizer247->Add(m_staticTextHome, 0, wxALL, WXC_FROM_DIP(5));</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>  m_hyperLinkPSP = <span class="keyword">new</span> wxHyperlinkCtrl(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"https://thales1330.github.io/PSP/"</span>), wxT(<span class="stringliteral">"https://thales1330.github.io/PSP/"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), wxHL_DEFAULT_STYLE);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  m_hyperLinkPSP->SetNormalColour(wxColour(wxT(<span class="stringliteral">"#0000FF"</span>)));</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  m_hyperLinkPSP->SetHoverColour(wxColour(wxT(<span class="stringliteral">"#0000FF"</span>)));</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  m_hyperLinkPSP->SetVisitedColour(wxColour(wxT(<span class="stringliteral">"#FF0000"</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>  flexGridSizer247->Add(m_hyperLinkPSP, 0, wxALL, WXC_FROM_DIP(5));</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>  m_buttonOK = <span class="keyword">new</span> wxButton(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"OK"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), 0);</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>  boxSizerMain->Add(m_buttonOK, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, WXC_FROM_DIP(5));</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> <span class="preprocessor"> #if wxVERSION_NUMBER >= 2900</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">if</span>(!wxPersistenceManager::Get().Find(m_notebook)){</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  wxPersistenceManager::Get().RegisterAndRestore(m_notebook);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  wxPersistenceManager::Get().Restore(m_notebook);</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> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  </div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  SetName(wxT(<span class="stringliteral">"AboutFormBase"</span>));</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  SetSize(-1,-1);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keywordflow">if</span> (GetSizer()) {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  GetSizer()->Fit(<span class="keyword">this</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="keywordflow">if</span>(GetParent()) {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  CentreOnParent(wxBOTH);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  CentreOnScreen(wxBOTH);</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="preprocessor">#if wxVERSION_NUMBER >= 2900</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordflow">if</span>(!wxPersistenceManager::Get().Find(<span class="keyword">this</span>)) {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  wxPersistenceManager::Get().RegisterAndRestore(<span class="keyword">this</span>);</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>  wxPersistenceManager::Get().Restore(<span class="keyword">this</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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="comment">// Connect events</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(AboutFormBase::OnOKButtonClick), NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</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> </div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> AboutFormBase::~AboutFormBase()</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>  m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(AboutFormBase::OnOKButtonClick), NULL, <span class="keyword">this</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"> 589</span> }</div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// This file was auto-generated by codelite's wxCrafter Plugin</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// wxCrafter project file: PropertiesForm.wxcp</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Do not modify this file by hand!</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "PropertiesForm.h"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Declare the bitmap loading function</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="keyword">extern</span> <span class="keywordtype">void</span> wxCDAD0InitBitmapResources();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> bBitmapLoaded = <span class="keyword">false</span>;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> GeneralPropertiesFormBase::GeneralPropertiesFormBase(wxWindow* parent, wxWindowID <span class="keywordtype">id</span>, <span class="keyword">const</span> wxString& title, <span class="keyword">const</span> wxPoint& pos, <span class="keyword">const</span> wxSize& size, <span class="keywordtype">long</span> style)</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  : wxDialog(parent, id, title, pos, size, style)</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>  <span class="keywordflow">if</span> ( !bBitmapLoaded ) {</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="comment">// We need to initialise the default bitmap handler</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  wxXmlResource::Get()->AddHandler(<span class="keyword">new</span> wxBitmapXmlHandler);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  wxCDAD0InitBitmapResources();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  bBitmapLoaded = <span class="keyword">true</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>  </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxBoxSizer* boxSizer_lvl1_1 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  this->SetSizer(boxSizer_lvl1_1);</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_notebook = <span class="keyword">new</span> wxNotebook(<span class="keyword">this</span>, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), wxBK_DEFAULT);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_notebook->SetName(wxT(<span class="stringliteral">"m_notebook"</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>  boxSizer_lvl1_1->Add(m_notebook, 1, wxALL|wxEXPAND, WXC_FROM_DIP(5));</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_panelGeneral = <span class="keyword">new</span> wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook, wxSize(-1,-1)), wxTAB_TRAVERSAL);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_notebook->AddPage(m_panelGeneral, _(<span class="stringliteral">"General"</span>), <span class="keyword">false</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>  wxBoxSizer* boxSizerLvl2_1 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_panelGeneral->SetSizer(boxSizerLvl2_1);</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>  wxBoxSizer* boxSizerLvl3_1 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  boxSizerLvl2_1->Add(boxSizerLvl3_1, 0, wxEXPAND, WXC_FROM_DIP(5));</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_staticTextLanguage = <span class="keyword">new</span> wxStaticText(m_panelGeneral, wxID_ANY, _(<span class="stringliteral">"Language"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), 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>  boxSizerLvl3_1->Add(m_staticTextLanguage, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxArrayString m_choiceLanguageArr;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_choiceLanguageArr.Add(wxT(<span class="stringliteral">"English"</span>));</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_choiceLanguageArr.Add(wxT(<span class="stringliteral">"Portuguese"</span>));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_choiceLanguage = <span class="keyword">new</span> wxChoice(m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), m_choiceLanguageArr, 0);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_choiceLanguage->SetSelection(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>  boxSizerLvl3_1->Add(m_choiceLanguage, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl3_2 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  boxSizerLvl2_1->Add(boxSizerLvl3_2, 0, wxEXPAND, WXC_FROM_DIP(5));</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_staticTextTheme = <span class="keyword">new</span> wxStaticText(m_panelGeneral, wxID_ANY, _(<span class="stringliteral">"Theme"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), 0);</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>  boxSizerLvl3_2->Add(m_staticTextTheme, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxArrayString m_choiceThemeArr;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_choiceThemeArr.Add(wxT(<span class="stringliteral">"Light"</span>));</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_choiceThemeArr.Add(wxT(<span class="stringliteral">"Dark"</span>));</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_choiceTheme = <span class="keyword">new</span> wxChoice(m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), m_choiceThemeArr, 0);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_choiceTheme->SetSelection(0);</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>  boxSizerLvl3_2->Add(m_choiceTheme, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizer_bottonButtons = <span class="keyword">new</span> wxBoxSizer(wxHORIZONTAL);</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>  boxSizer_lvl1_1->Add(boxSizer_bottonButtons, 0, wxALL|wxEXPAND, WXC_FROM_DIP(5));</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>  boxSizer_bottonButtons->Add(0, 0, 1, wxALL, WXC_FROM_DIP(5));</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_buttonOK = <span class="keyword">new</span> wxButton(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"OK"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), 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>  boxSizer_bottonButtons->Add(m_buttonOK, 0, wxALL|wxALIGN_RIGHT, WXC_FROM_DIP(5));</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>  m_buttonCancel = <span class="keyword">new</span> wxButton(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"Cancel"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), 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>  boxSizer_bottonButtons->Add(m_buttonCancel, 0, wxALL|wxALIGN_RIGHT, WXC_FROM_DIP(5));</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"> #if wxVERSION_NUMBER >= 2900</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">if</span>(!wxPersistenceManager::Get().Find(m_notebook)){</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  wxPersistenceManager::Get().RegisterAndRestore(m_notebook);</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>  wxPersistenceManager::Get().Restore(m_notebook);</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="preprocessor"> #endif</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>  SetName(wxT(<span class="stringliteral">"GeneralPropertiesFormBase"</span>));</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  SetSize(-1,-1);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span> (GetSizer()) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  GetSizer()->Fit(<span class="keyword">this</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>  <span class="keywordflow">if</span>(GetParent()) {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  CentreOnParent(wxBOTH);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  CentreOnScreen(wxBOTH);</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="preprocessor">#if wxVERSION_NUMBER >= 2900</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span>(!wxPersistenceManager::Get().Find(<span class="keyword">this</span>)) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  wxPersistenceManager::Get().RegisterAndRestore(<span class="keyword">this</span>);</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>  wxPersistenceManager::Get().Restore(<span class="keyword">this</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="preprocessor">#endif</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// Connect events</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(GeneralPropertiesFormBase::OnButtonOKClick), NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(GeneralPropertiesFormBase::OnButtonCancelClick), NULL, <span class="keyword">this</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> GeneralPropertiesFormBase::~GeneralPropertiesFormBase()</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_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(GeneralPropertiesFormBase::OnButtonOKClick), NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(GeneralPropertiesFormBase::OnButtonCancelClick), NULL, <span class="keyword">this</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> SimulationsSettingsFormBase::SimulationsSettingsFormBase(wxWindow* parent, wxWindowID <span class="keywordtype">id</span>, <span class="keyword">const</span> wxString& title, <span class="keyword">const</span> wxPoint& pos, <span class="keyword">const</span> wxSize& size, <span class="keywordtype">long</span> style)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  : wxDialog(parent, id, title, pos, size, style)</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="keywordflow">if</span> ( !bBitmapLoaded ) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// We need to initialise the default bitmap handler</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  wxXmlResource::Get()->AddHandler(<span class="keyword">new</span> wxBitmapXmlHandler);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  wxCDAD0InitBitmapResources();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  bBitmapLoaded = <span class="keyword">true</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>  wxBoxSizer* boxSizer_lvl1_1 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  this->SetSizer(boxSizer_lvl1_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>  m_notebook = <span class="keyword">new</span> wxNotebook(<span class="keyword">this</span>, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), wxBK_DEFAULT);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  m_notebook->SetName(wxT(<span class="stringliteral">"m_notebook"</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>  boxSizer_lvl1_1->Add(m_notebook, 1, wxALL|wxEXPAND, WXC_FROM_DIP(5));</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>  m_panelGeneral = <span class="keyword">new</span> wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook, wxSize(-1,-1)), wxTAB_TRAVERSAL);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  m_notebook->AddPage(m_panelGeneral, _(<span class="stringliteral">"General"</span>), <span class="keyword">false</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>  wxBoxSizer* boxSizerLvl2_1 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  m_panelGeneral->SetSizer(boxSizerLvl2_1);</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>  wxBoxSizer* boxSizerLvl3_1 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  boxSizerLvl2_1->Add(boxSizerLvl3_1, 0, wxEXPAND, WXC_FROM_DIP(5));</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_staticTextBasePower = <span class="keyword">new</span> wxStaticText(m_panelGeneral, wxID_ANY, _(<span class="stringliteral">"Base power"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), 0);</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>  boxSizerLvl3_1->Add(m_staticTextBasePower, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl4_1 = <span class="keyword">new</span> wxBoxSizer(wxHORIZONTAL);</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>  boxSizerLvl3_1->Add(boxSizerLvl4_1, 0, wxEXPAND, WXC_FROM_DIP(5));</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_textCtrlbasePower = <span class="keyword">new</span> wxTextCtrl(m_panelGeneral, wxID_ANY, wxT(<span class="stringliteral">"100,0"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  m_textCtrlbasePower->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor"> #endif</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>  boxSizerLvl4_1->Add(m_textCtrlbasePower, 1, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxArrayString m_choiceBasePowerArr;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  m_choiceBasePowerArr.Add(wxT(<span class="stringliteral">"VA"</span>));</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  m_choiceBasePowerArr.Add(wxT(<span class="stringliteral">"kVA"</span>));</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  m_choiceBasePowerArr.Add(wxT(<span class="stringliteral">"MVA"</span>));</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  m_choiceBasePower = <span class="keyword">new</span> wxChoice(m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), m_choiceBasePowerArr, 0);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_choiceBasePower->SetSelection(2);</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>  boxSizerLvl4_1->Add(m_choiceBasePower, 0, wxLEFT|wxRIGHT|wxBOTTOM, WXC_FROM_DIP(5));</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>  wxStaticBoxSizer* staticBoxSizerLvl3_2 = <span class="keyword">new</span> wxStaticBoxSizer( <span class="keyword">new</span> wxStaticBox(m_panelGeneral, wxID_ANY, _(<span class="stringliteral">"Continuous calculation"</span>)), wxVERTICAL);</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>  boxSizerLvl2_1->Add(staticBoxSizerLvl3_2, 0, wxALL|wxEXPAND, WXC_FROM_DIP(5));</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>  m_checkBoxFaultAfterPF = <span class="keyword">new</span> wxCheckBox(m_panelGeneral, wxID_ANY, _(<span class="stringliteral">"Calculate fault after power flow"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  m_checkBoxFaultAfterPF->SetValue(<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>  staticBoxSizerLvl3_2->Add(m_checkBoxFaultAfterPF, 0, wxALL, WXC_FROM_DIP(5));</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>  m_checkBoxSCPowerAfterPF = <span class="keyword">new</span> wxCheckBox(m_panelGeneral, wxID_ANY, _(<span class="stringliteral">"Calculate short-circuit power after power flow"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  m_checkBoxSCPowerAfterPF->SetValue(<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>  staticBoxSizerLvl3_2->Add(m_checkBoxSCPowerAfterPF, 0, wxALL, WXC_FROM_DIP(5));</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_panelPF = <span class="keyword">new</span> wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook, wxSize(-1,-1)), wxTAB_TRAVERSAL);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  m_notebook->AddPage(m_panelPF, _(<span class="stringliteral">"Power flow"</span>), <span class="keyword">false</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>  wxBoxSizer* boxSizerLvl2_2 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  m_panelPF->SetSizer(boxSizerLvl2_2);</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>  wxBoxSizer* boxSizerLvl3_3 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  boxSizerLvl2_2->Add(boxSizerLvl3_3, 0, wxEXPAND, WXC_FROM_DIP(5));</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_staticTextPFMethod = <span class="keyword">new</span> wxStaticText(m_panelPF, wxID_ANY, _(<span class="stringliteral">"Solution method"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelPF, wxSize(-1,-1)), 0);</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>  boxSizerLvl3_3->Add(m_staticTextPFMethod, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxArrayString m_choicePFMethodArr;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  m_choicePFMethodArr.Add(wxT(<span class="stringliteral">"Gauss-Seidel"</span>));</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  m_choicePFMethodArr.Add(wxT(<span class="stringliteral">"Newton-Raphson"</span>));</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  m_choicePFMethod = <span class="keyword">new</span> wxChoice(m_panelPF, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelPF, wxSize(-1,-1)), m_choicePFMethodArr, 0);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  m_choicePFMethod->SetSelection(0);</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>  boxSizerLvl3_3->Add(m_choicePFMethod, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND, WXC_FROM_DIP(5));</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>  wxGridSizer* gridSizerLvl_3_4 = <span class="keyword">new</span> wxGridSizer(0, 2, 0, 0);</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>  boxSizerLvl2_2->Add(gridSizerLvl_3_4, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl4_2 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_3_4->Add(boxSizerLvl4_2, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_staticTextAccFactor = <span class="keyword">new</span> wxStaticText(m_panelPF, wxID_ANY, _(<span class="stringliteral">"Acceleration factor"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelPF, wxSize(-1,-1)), 0);</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>  boxSizerLvl4_2->Add(m_staticTextAccFactor, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_textCtrlAccFactor = <span class="keyword">new</span> wxTextCtrl(m_panelPF, wxID_ANY, wxT(<span class="stringliteral">"1,0"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelPF, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  m_textCtrlAccFactor->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="preprocessor"> #endif</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>  boxSizerLvl4_2->Add(m_textCtrlAccFactor, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl4_3 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_3_4->Add(boxSizerLvl4_3, 0, wxEXPAND, WXC_FROM_DIP(5));</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_staticTextPFTolerance = <span class="keyword">new</span> wxStaticText(m_panelPF, wxID_ANY, _(<span class="stringliteral">"Tolerance"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelPF, wxSize(-1,-1)), 0);</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>  boxSizerLvl4_3->Add(m_staticTextPFTolerance, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_textCtrlPFTolerance = <span class="keyword">new</span> wxTextCtrl(m_panelPF, wxID_ANY, wxT(<span class="stringliteral">"1e-7"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelPF, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  m_textCtrlPFTolerance->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="preprocessor"> #endif</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>  boxSizerLvl4_3->Add(m_textCtrlPFTolerance, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl4_4 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_3_4->Add(boxSizerLvl4_4, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_staticTextPFMaxIterations = <span class="keyword">new</span> wxStaticText(m_panelPF, wxID_ANY, _(<span class="stringliteral">"Max. iterations"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelPF, wxSize(-1,-1)), 0);</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>  boxSizerLvl4_4->Add(m_staticTextPFMaxIterations, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_textCtrlPFMaxIterations = <span class="keyword">new</span> wxTextCtrl(m_panelPF, wxID_ANY, wxT(<span class="stringliteral">"5000"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelPF, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  m_textCtrlPFMaxIterations->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="preprocessor"> #endif</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>  boxSizerLvl4_4->Add(m_textCtrlPFMaxIterations, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_panelStability = <span class="keyword">new</span> wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook, wxSize(-1,-1)), wxTAB_TRAVERSAL);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  m_notebook->AddPage(m_panelStability, _(<span class="stringliteral">"Stability"</span>), <span class="keyword">false</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>  wxBoxSizer* boxSizerLvl2_232 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  m_panelStability->SetSizer(boxSizerLvl2_232);</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>  wxGridSizer* gridSizerLvl_2_3 = <span class="keyword">new</span> wxGridSizer(0, 2, 0, 0);</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>  boxSizerLvl2_232->Add(gridSizerLvl_2_3, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl3_6 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_2_3->Add(boxSizerLvl3_6, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_staticTextTimeStep = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"Time step"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</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>  boxSizerLvl3_6->Add(m_staticTextTimeStep, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl4_6 = <span class="keyword">new</span> wxBoxSizer(wxHORIZONTAL);</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>  boxSizerLvl3_6->Add(boxSizerLvl4_6, 0, wxEXPAND, WXC_FROM_DIP(5));</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_textCtrlTimeStep = <span class="keyword">new</span> wxTextCtrl(m_panelStability, wxID_ANY, wxT(<span class="stringliteral">"0,01"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  m_textCtrlTimeStep->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="preprocessor"> #endif</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"> 289</span>  boxSizerLvl4_6->Add(m_textCtrlTimeStep, 1, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_staticTextSec_1 = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"s"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</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>  boxSizerLvl4_6->Add(m_staticTextSec_1, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl3_7 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_2_3->Add(boxSizerLvl3_7, 0, wxEXPAND, WXC_FROM_DIP(5));</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_staticTextTSimTime = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"Simulation time"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 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>  boxSizerLvl3_7->Add(m_staticTextTSimTime, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl4_7 = <span class="keyword">new</span> wxBoxSizer(wxHORIZONTAL);</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>  boxSizerLvl3_7->Add(boxSizerLvl4_7, 0, wxEXPAND, WXC_FROM_DIP(5));</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_textCtrlSimTime = <span class="keyword">new</span> wxTextCtrl(m_panelStability, wxID_ANY, wxT(<span class="stringliteral">"10"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  m_textCtrlSimTime->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="preprocessor"> #endif</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>  boxSizerLvl4_7->Add(m_textCtrlSimTime, 1, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_staticTextSec_2 = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"s"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</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>  boxSizerLvl4_7->Add(m_staticTextSec_2, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl3_5 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_2_3->Add(boxSizerLvl3_5, 0, wxEXPAND, WXC_FROM_DIP(5));</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_staticTextFreq = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"System frequency"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</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>  boxSizerLvl3_5->Add(m_staticTextFreq, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl4_5 = <span class="keyword">new</span> wxBoxSizer(wxHORIZONTAL);</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>  boxSizerLvl3_5->Add(boxSizerLvl4_5, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_textCtrlFreq = <span class="keyword">new</span> wxTextCtrl(m_panelStability, wxID_ANY, wxT(<span class="stringliteral">"60,0"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  m_textCtrlFreq->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="preprocessor"> #endif</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>  boxSizerLvl4_5->Add(m_textCtrlFreq, 1, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_staticTextFreqUnit = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"Hz"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</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>  boxSizerLvl4_5->Add(m_staticTextFreqUnit, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl3_8 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_2_3->Add(boxSizerLvl3_8, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_staticTextTStabTolerance = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"Tolerance"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</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>  boxSizerLvl3_8->Add(m_staticTextTStabTolerance, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_textCtrlStabTolerance = <span class="keyword">new</span> wxTextCtrl(m_panelStability, wxID_ANY, wxT(<span class="stringliteral">"1e-8"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  m_textCtrlStabTolerance->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="preprocessor"> #endif</span></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>  boxSizerLvl3_8->Add(m_textCtrlStabTolerance, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl3_9 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_2_3->Add(boxSizerLvl3_9, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_staticTextTStabMaxIterations = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"Max. Iterations"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  boxSizerLvl3_9->Add(m_staticTextTStabMaxIterations, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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_textCtrlStabMaxIterations = <span class="keyword">new</span> wxTextCtrl(m_panelStability, wxID_ANY, wxT(<span class="stringliteral">"100"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  m_textCtrlStabMaxIterations->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="preprocessor"> #endif</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>  boxSizerLvl3_9->Add(m_textCtrlStabMaxIterations, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl3_10 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_2_3->Add(boxSizerLvl3_10, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_staticTextCtrlStepRation = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"Controls step ratio"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</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>  boxSizerLvl3_10->Add(m_staticTextCtrlStepRation, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_textCtrlCtrlStepRatio = <span class="keyword">new</span> wxTextCtrl(m_panelStability, wxID_ANY, wxT(<span class="stringliteral">"10"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  m_textCtrlCtrlStepRatio->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> <span class="preprocessor"> #endif</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>  boxSizerLvl3_10->Add(m_textCtrlCtrlStepRatio, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl3_11 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</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>  gridSizerLvl_2_3->Add(boxSizerLvl3_11, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_staticTextPrintTime = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"Plot time"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 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>  boxSizerLvl3_11->Add(m_staticTextPrintTime, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizerLvl4_8 = <span class="keyword">new</span> wxBoxSizer(wxHORIZONTAL);</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>  boxSizerLvl3_11->Add(boxSizerLvl4_8, 0, wxEXPAND, WXC_FROM_DIP(5));</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>  m_textCtrlPrintTime = <span class="keyword">new</span> wxTextCtrl(m_panelStability, wxID_ANY, wxT(<span class="stringliteral">"0,01"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 3000</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  m_textCtrlPrintTime->SetHint(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="preprocessor"> #endif</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>  boxSizerLvl4_8->Add(m_textCtrlPrintTime, 1, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_staticTextSec_4 = <span class="keyword">new</span> wxStaticText(m_panelStability, wxID_ANY, _(<span class="stringliteral">"s"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</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>  boxSizerLvl4_8->Add(m_staticTextSec_4, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER_VERTICAL, WXC_FROM_DIP(5));</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>  m_checkBoxUseCOI = <span class="keyword">new</span> wxCheckBox(m_panelStability, wxID_ANY, _(<span class="stringliteral">"Use center of inertia as reference"</span>), wxDefaultPosition, wxDLG_UNIT(m_panelStability, wxSize(-1,-1)), 0);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  m_checkBoxUseCOI->SetValue(<span class="keyword">true</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>  boxSizerLvl2_232->Add(m_checkBoxUseCOI, 0, wxALL, WXC_FROM_DIP(5));</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>  wxBoxSizer* boxSizer_bottonButtons = <span class="keyword">new</span> wxBoxSizer(wxHORIZONTAL);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  </div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  boxSizer_lvl1_1->Add(boxSizer_bottonButtons, 0, wxALL|wxEXPAND, WXC_FROM_DIP(5));</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>  boxSizer_bottonButtons->Add(0, 0, 1, wxALL, WXC_FROM_DIP(5));</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>  m_buttonOK = <span class="keyword">new</span> wxButton(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"OK"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), 0);</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>  boxSizer_bottonButtons->Add(m_buttonOK, 0, wxALL|wxALIGN_RIGHT, WXC_FROM_DIP(5));</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>  m_buttonCancel = <span class="keyword">new</span> wxButton(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"Cancel"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), 0);</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>  boxSizer_bottonButtons->Add(m_buttonCancel, 0, wxALL|wxALIGN_RIGHT, WXC_FROM_DIP(5));</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> <span class="preprocessor"> #if wxVERSION_NUMBER >= 2900</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">if</span>(!wxPersistenceManager::Get().Find(m_notebook)){</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  wxPersistenceManager::Get().RegisterAndRestore(m_notebook);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  wxPersistenceManager::Get().Restore(m_notebook);</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="preprocessor"> #endif</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>  SetName(wxT(<span class="stringliteral">"SimulationsSettingsFormBase"</span>));</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  SetSize(-1,-1);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">if</span> (GetSizer()) {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  GetSizer()->Fit(<span class="keyword">this</span>);</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>  <span class="keywordflow">if</span>(GetParent()) {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  CentreOnParent(wxBOTH);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  CentreOnScreen(wxBOTH);</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="preprocessor">#if wxVERSION_NUMBER >= 2900</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span>(!wxPersistenceManager::Get().Find(<span class="keyword">this</span>)) {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  wxPersistenceManager::Get().RegisterAndRestore(<span class="keyword">this</span>);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  wxPersistenceManager::Get().Restore(<span class="keyword">this</span>);</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="preprocessor">#endif</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="comment">// Connect events</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  m_choicePFMethod->Connect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(SimulationsSettingsFormBase::OnPFMethodChoiceSelected), NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SimulationsSettingsFormBase::OnButtonOKClick), NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SimulationsSettingsFormBase::OnButtonCancelClick), NULL, <span class="keyword">this</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> SimulationsSettingsFormBase::~SimulationsSettingsFormBase()</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>  m_choicePFMethod->Disconnect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(SimulationsSettingsFormBase::OnPFMethodChoiceSelected), NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SimulationsSettingsFormBase::OnButtonOKClick), NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(SimulationsSettingsFormBase::OnButtonCancelClick), NULL, <span class="keyword">this</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> }</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> AboutFormBase::AboutFormBase(wxWindow* parent, wxWindowID <span class="keywordtype">id</span>, <span class="keyword">const</span> wxString& title, <span class="keyword">const</span> wxPoint& pos, <span class="keyword">const</span> wxSize& size, <span class="keywordtype">long</span> style)</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  : wxDialog(parent, id, title, pos, size, style)</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>  <span class="keywordflow">if</span> ( !bBitmapLoaded ) {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="comment">// We need to initialise the default bitmap handler</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  wxXmlResource::Get()->AddHandler(<span class="keyword">new</span> wxBitmapXmlHandler);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  wxCDAD0InitBitmapResources();</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  bBitmapLoaded = <span class="keyword">true</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"> 478</span>  </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  wxBoxSizer* boxSizerMain = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  this->SetSizer(boxSizerMain);</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_notebook = <span class="keyword">new</span> wxNotebook(<span class="keyword">this</span>, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), wxBK_DEFAULT);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  m_notebook->SetName(wxT(<span class="stringliteral">"m_notebook"</span>));</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>  boxSizerMain->Add(m_notebook, 1, wxALL|wxEXPAND, WXC_FROM_DIP(5));</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>  m_panelLogo = <span class="keyword">new</span> wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook, wxSize(-1,-1)), wxTAB_TRAVERSAL);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  m_notebook->AddPage(m_panelLogo, _(<span class="stringliteral">"About"</span>), <span class="keyword">false</span>);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  </div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  wxBoxSizer* boxSizerLvl1_1 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  m_panelLogo->SetSizer(boxSizerLvl1_1);</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>  m_staticBitmapLogo = <span class="keyword">new</span> wxStaticBitmap(m_panelLogo, wxID_ANY, wxXmlResource::Get()->LoadBitmap(wxT(<span class="stringliteral">"About2017"</span>)), wxDefaultPosition, wxDLG_UNIT(m_panelLogo, wxSize(-1,-1)), 0 );</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>  boxSizerLvl1_1->Add(m_staticBitmapLogo, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, WXC_FROM_DIP(5));</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>  m_panelCredits = <span class="keyword">new</span> wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook, wxSize(-1,-1)), wxTAB_TRAVERSAL);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  m_notebook->AddPage(m_panelCredits, _(<span class="stringliteral">"Credits"</span>), <span class="keyword">false</span>);</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>  wxBoxSizer* boxSizerLvl1_2 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  m_panelCredits->SetSizer(boxSizerLvl1_2);</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>  m_gridCredits = <span class="keyword">new</span> wxGrid(m_panelCredits, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelCredits, wxSize(-1,-1)), wxWANTS_CHARS);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  m_gridCredits->CreateGrid(0, 0);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  m_gridCredits->SetRowLabelAlignment(wxALIGN_RIGHT, wxALIGN_CENTRE);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  m_gridCredits->SetColLabelAlignment(wxALIGN_CENTRE, wxALIGN_CENTRE);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="preprocessor"> #if wxVERSION_NUMBER >= 2904</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  m_gridCredits->UseNativeColHeader(<span class="keyword">true</span>);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  m_gridCredits->EnableEditing(<span class="keyword">false</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>  boxSizerLvl1_2->Add(m_gridCredits, 1, wxEXPAND, WXC_FROM_DIP(5));</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>  m_panelLicense = <span class="keyword">new</span> wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_notebook, wxSize(-1,-1)), wxTAB_TRAVERSAL);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  m_notebook->AddPage(m_panelLicense, _(<span class="stringliteral">"License"</span>), <span class="keyword">false</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>  wxBoxSizer* boxSizerLvl1_3 = <span class="keyword">new</span> wxBoxSizer(wxVERTICAL);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  m_panelLicense->SetSizer(boxSizerLvl1_3);</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>  m_richTextCtrlLicense = <span class="keyword">new</span> wxRichTextCtrl(m_panelLicense, wxID_ANY, wxT(<span class="stringliteral">""</span>), wxDefaultPosition, wxDLG_UNIT(m_panelLicense, wxSize(-1,-1)), wxTE_MULTILINE|wxTE_PROCESS_TAB|wxTE_PROCESS_ENTER|wxWANTS_CHARS);</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>  boxSizerLvl1_3->Add(m_richTextCtrlLicense, 1, wxALL|wxEXPAND, WXC_FROM_DIP(5));</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  </div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  wxFlexGridSizer* flexGridSizer247 = <span class="keyword">new</span> wxFlexGridSizer(2, 2, 0, 0);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  flexGridSizer247->SetFlexibleDirection( wxBOTH );</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  flexGridSizer247->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  flexGridSizer247->AddGrowableCol(1);</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>  boxSizerMain->Add(flexGridSizer247, 0, wxALL|wxEXPAND, WXC_FROM_DIP(5));</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>  m_staticTextVersionLabel = <span class="keyword">new</span> wxStaticText(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"Version:"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), 0);</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>  flexGridSizer247->Add(m_staticTextVersionLabel, 0, wxALL, WXC_FROM_DIP(5));</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>  m_staticTextVersion = <span class="keyword">new</span> wxStaticText(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"Alpha 2017w38b"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), 0);</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>  flexGridSizer247->Add(m_staticTextVersion, 0, wxALL, WXC_FROM_DIP(5));</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>  m_staticTextHome = <span class="keyword">new</span> wxStaticText(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"Home page:"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), 0);</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>  flexGridSizer247->Add(m_staticTextHome, 0, wxALL, WXC_FROM_DIP(5));</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>  m_hyperLinkPSP = <span class="keyword">new</span> wxHyperlinkCtrl(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"https://thales1330.github.io/PSP/"</span>), wxT(<span class="stringliteral">"https://thales1330.github.io/PSP/"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), wxHL_DEFAULT_STYLE);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  m_hyperLinkPSP->SetNormalColour(wxColour(wxT(<span class="stringliteral">"#0000FF"</span>)));</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  m_hyperLinkPSP->SetHoverColour(wxColour(wxT(<span class="stringliteral">"#0000FF"</span>)));</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  m_hyperLinkPSP->SetVisitedColour(wxColour(wxT(<span class="stringliteral">"#FF0000"</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>  flexGridSizer247->Add(m_hyperLinkPSP, 0, wxALL, WXC_FROM_DIP(5));</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>  m_buttonOK = <span class="keyword">new</span> wxButton(<span class="keyword">this</span>, wxID_ANY, _(<span class="stringliteral">"OK"</span>), wxDefaultPosition, wxDLG_UNIT(<span class="keyword">this</span>, wxSize(-1,-1)), 0);</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>  boxSizerMain->Add(m_buttonOK, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, WXC_FROM_DIP(5));</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> <span class="preprocessor"> #if wxVERSION_NUMBER >= 2900</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">if</span>(!wxPersistenceManager::Get().Find(m_notebook)){</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  wxPersistenceManager::Get().RegisterAndRestore(m_notebook);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  wxPersistenceManager::Get().Restore(m_notebook);</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> <span class="preprocessor"> #endif</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  </div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  SetName(wxT(<span class="stringliteral">"AboutFormBase"</span>));</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  SetSize(-1,-1);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keywordflow">if</span> (GetSizer()) {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  GetSizer()->Fit(<span class="keyword">this</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="keywordflow">if</span>(GetParent()) {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  CentreOnParent(wxBOTH);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  CentreOnScreen(wxBOTH);</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="preprocessor">#if wxVERSION_NUMBER >= 2900</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordflow">if</span>(!wxPersistenceManager::Get().Find(<span class="keyword">this</span>)) {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  wxPersistenceManager::Get().RegisterAndRestore(<span class="keyword">this</span>);</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>  wxPersistenceManager::Get().Restore(<span class="keyword">this</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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="comment">// Connect events</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(AboutFormBase::OnOKButtonClick), NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</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> </div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> AboutFormBase::~AboutFormBase()</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>  m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(AboutFormBase::OnOKButtonClick), NULL, <span class="keyword">this</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"> 589</span> }</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_form_8h_source.html b/docs/doxygen/html/_properties_form_8h_source.html index 6126fc6..0f1d842 100644 --- a/docs/doxygen/html/_properties_form_8h_source.html +++ b/docs/doxygen/html/_properties_form_8h_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_properties_form_bitmaps_8cpp_source.html b/docs/doxygen/html/_properties_form_bitmaps_8cpp_source.html index d63f4a6..aeb0d0b 100644 --- a/docs/doxygen/html/_properties_form_bitmaps_8cpp_source.html +++ b/docs/doxygen/html/_properties_form_bitmaps_8cpp_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_rate_limiter_8cpp_source.html b/docs/doxygen/html/_rate_limiter_8cpp_source.html index db501e8..8cd75ac 100644 --- a/docs/doxygen/html/_rate_limiter_8cpp_source.html +++ b/docs/doxygen/html/_rate_limiter_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,18 @@ $(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="preprocessor">#include "RateLimiter.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "RateLimiterForm.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</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="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  m_width = m_height = 36.0;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</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="l00008"></a><span class="lineno"> 8</span>  nodeIn->StartMove(m_position);</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</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="l00010"></a><span class="lineno"> 10</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_nodeList.push_back(nodeIn);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> }</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> RateLimiter::~RateLimiter() {}</div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#a6afc319e3a165776b8a429b9bbe38580"> 17</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="l00018"></a><span class="lineno"> 18</span> <span class="keyword"></span>{</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  glLineWidth(1.0);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  DrawRectangle(m_position, m_width + borderSize, m_height + 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>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  DrawRectangle(m_position, m_width, m_height);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  DrawRectangle(m_position, m_width, m_height, GL_LINE_LOOP);</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="comment">// Plot symbol.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  std::vector<wxPoint2DDouble> axis;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  axis.push_back(m_position + wxPoint2DDouble(-13, 0));</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  axis.push_back(m_position + wxPoint2DDouble(13, 0));</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  axis.push_back(m_position + wxPoint2DDouble(0, -13));</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  axis.push_back(m_position + wxPoint2DDouble(0, 13));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  DrawLine(axis, GL_LINES);</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>  glLineWidth(2.0);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  std::vector<wxPoint2DDouble> limSymbol;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  limSymbol.push_back(m_position + wxPoint2DDouble(10, -10));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  limSymbol.push_back(m_position + wxPoint2DDouble(-10, 10));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  glColor4d(0.0, 0.3, 1.0, 1.0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  DrawLine(limSymbol);</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(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  DrawNodes();</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"><a class="line" href="class_rate_limiter.html#a7d16df402b56e0025bab076aa071be60"> 49</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="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_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="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span>(form->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  form->Destroy();</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>  form->Destroy();</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> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#a3eb4d933b1d069808617306c78835f3e"> 60</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="l00061"></a><span class="lineno"> 61</span> {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_angle += 90.0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_angle -= 90.0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_angle = 0.0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_angle = 270.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>  UpdatePoints();</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">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  node->Rotate(clockwise);</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> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="keywordtype">void</span> RateLimiter::UpdatePoints()</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>(m_angle == 0.0) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-18, 0));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(18, 0));</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -18));</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, 18));</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 == 180.0) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(18, 0));</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-18, 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_angle == 270.0) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, 18));</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -18));</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">bool</span> RateLimiter::Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</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">double</span> rate = (input - m_output) / timeStep;</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="keywordtype">bool</span> reachLimit = <span class="keyword">false</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span>(rate > m_upLimit) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  rate = m_upLimit;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  reachLimit = <span class="keyword">true</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rate < m_lowLimit) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  rate = m_lowLimit;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  reachLimit = <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> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span>(reachLimit)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_output += rate * timeStep;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_output = input;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">return</span> <span class="keyword">true</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_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823"> 116</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="l00117"></a><span class="lineno"> 117</span> {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</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="l00119"></a><span class="lineno"> 119</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</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#l00088">Element.h:88</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</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#l00049">RateLimiter.cpp:49</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="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00008">RateLimiter.h:8</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#l00060">RateLimiter.cpp:60</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#l00053">ControlElement.h:53</a></div></div> -<div class="ttc" id="class_rate_limiter_html_a4f1152238b97fcf76a0bee258e971823"><div class="ttname"><a href="class_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823">RateLimiter::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="_rate_limiter_8cpp_source.html#l00116">RateLimiter.cpp:116</a></div></div> -<div class="ttc" id="class_rate_limiter_html_a6afc319e3a165776b8a429b9bbe38580"><div class="ttname"><a href="class_rate_limiter.html#a6afc319e3a165776b8a429b9bbe38580">RateLimiter::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="_rate_limiter_8cpp_source.html#l00017">RateLimiter.cpp:17</a></div></div> -<div class="ttc" id="class_rate_limiter_form_html"><div class="ttname"><a href="class_rate_limiter_form.html">RateLimiterForm</a></div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_form_8h_source.html#l00007">RateLimiterForm.h:7</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="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="_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> +<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_rate_limiter_html_a4f1152238b97fcf76a0bee258e971823"><div class="ttname"><a href="class_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823">RateLimiter::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="_rate_limiter_8cpp_source.html#l00133">RateLimiter.cpp:133</a></div></div> +<div class="ttc" id="class_rate_limiter_html_a6afc319e3a165776b8a429b9bbe38580"><div class="ttname"><a href="class_rate_limiter.html#a6afc319e3a165776b8a429b9bbe38580">RateLimiter::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="_rate_limiter_8cpp_source.html#l00034">RateLimiter.cpp:34</a></div></div> +<div class="ttc" id="class_rate_limiter_form_html"><div class="ttname"><a href="class_rate_limiter_form.html">RateLimiterForm</a></div><div class="ttdoc">Form to edit the rate limit control data. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_form_8h_source.html#l00031">RateLimiterForm.h:31</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_rate_limiter_8h.html b/docs/doxygen/html/_rate_limiter_8h.html new file mode 100644 index 0000000..1721183 --- /dev/null +++ b/docs/doxygen/html/_rate_limiter_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/RateLimiter.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('_rate_limiter_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">RateLimiter.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="_rate_limiter_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_rate_limiter.html">RateLimiter</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Limits the rising and/or falling rate.<br /> + <a href="class_rate_limiter.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="_rate_limiter_8h.html">RateLimiter.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/_rate_limiter_8h_source.html b/docs/doxygen/html/_rate_limiter_8h_source.html index 6d7bab0..b956dd1 100644 --- a/docs/doxygen/html/_rate_limiter_8h_source.html +++ b/docs/doxygen/html/_rate_limiter_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,22 +88,24 @@ $(document).ready(function(){initNavTree('_rate_limiter_8h_source.html','');}); <div class="title">RateLimiter.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="preprocessor">#ifndef RATELIMITER_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define RATELIMITER_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ControlElement.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_rate_limiter_form.html">RateLimiterForm</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_rate_limiter.html"> 8</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="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span>  ~<a class="code" href="class_rate_limiter.html">RateLimiter</a>();</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">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="l00015"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#addf0eef395781b8584063a9061be59dc"> 15</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="l00016"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#a7c1ce7440e82613b455054dd8447f147"> 16</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="l00017"></a><span class="lineno"> 17</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="l00018"></a><span class="lineno"> 18</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="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</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="keywordtype">double</span> GetUpLimit()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_upLimit; }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</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="l00024"></a><span class="lineno"> 24</span>  <span class="keywordtype">void</span> SetUpLimit(<span class="keywordtype">double</span> upLimit) { m_upLimit = upLimit; }</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">void</span> SetLowLimit(<span class="keywordtype">double</span> lowLimit) { m_lowLimit = lowLimit; }</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">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="l00028"></a><span class="lineno"> 28</span>  </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</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="l00030"></a><span class="lineno"> 30</span>  </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">double</span> m_upLimit = 5.0;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">double</span> m_lowLimit = -5.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> <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#l00088">Element.h:88</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#l00049">RateLimiter.cpp:49</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#l00016">RateLimiter.h:16</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="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00008">RateLimiter.h:8</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#l00060">RateLimiter.cpp:60</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#l00053">ControlElement.h:53</a></div></div> -<div class="ttc" id="class_rate_limiter_html_a4f1152238b97fcf76a0bee258e971823"><div class="ttname"><a href="class_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823">RateLimiter::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="_rate_limiter_8cpp_source.html#l00116">RateLimiter.cpp:116</a></div></div> -<div class="ttc" id="class_rate_limiter_html_addf0eef395781b8584063a9061be59dc"><div class="ttname"><a href="class_rate_limiter.html#addf0eef395781b8584063a9061be59dc">RateLimiter::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="_rate_limiter_8h_source.html#l00015">RateLimiter.h:15</a></div></div> -<div class="ttc" id="class_rate_limiter_html_a6afc319e3a165776b8a429b9bbe38580"><div class="ttname"><a href="class_rate_limiter.html#a6afc319e3a165776b8a429b9bbe38580">RateLimiter::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="_rate_limiter_8cpp_source.html#l00017">RateLimiter.cpp:17</a></div></div> -<div class="ttc" id="class_rate_limiter_form_html"><div class="ttname"><a href="class_rate_limiter_form.html">RateLimiterForm</a></div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_form_8h_source.html#l00007">RateLimiterForm.h:7</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="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> +<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="_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> +<div class="ttc" id="class_rate_limiter_html_a4f1152238b97fcf76a0bee258e971823"><div class="ttname"><a href="class_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823">RateLimiter::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="_rate_limiter_8cpp_source.html#l00133">RateLimiter.cpp:133</a></div></div> +<div class="ttc" id="class_rate_limiter_html_addf0eef395781b8584063a9061be59dc"><div class="ttname"><a href="class_rate_limiter.html#addf0eef395781b8584063a9061be59dc">RateLimiter::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="_rate_limiter_8h_source.html#l00039">RateLimiter.h:39</a></div></div> +<div class="ttc" id="class_rate_limiter_html_a6afc319e3a165776b8a429b9bbe38580"><div class="ttname"><a href="class_rate_limiter.html#a6afc319e3a165776b8a429b9bbe38580">RateLimiter::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="_rate_limiter_8cpp_source.html#l00034">RateLimiter.cpp:34</a></div></div> +<div class="ttc" id="class_rate_limiter_form_html"><div class="ttname"><a href="class_rate_limiter_form.html">RateLimiterForm</a></div><div class="ttdoc">Form to edit the rate limit control data. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_form_8h_source.html#l00031">RateLimiterForm.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>RateLimiter.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_rate_limiter_8h.html">RateLimiter.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_form_8cpp_source.html b/docs/doxygen/html/_rate_limiter_form_8cpp_source.html index 1641d75..dcbc939 100644 --- a/docs/doxygen/html/_rate_limiter_form_8cpp_source.html +++ b/docs/doxygen/html/_rate_limiter_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,8 +88,10 @@ $(document).ready(function(){initNavTree('_rate_limiter_form_8cpp_source.html',' <div class="title">RateLimiterForm.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 "RateLimiterForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "RateLimiter.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> RateLimiterForm::RateLimiterForm(wxWindow* parent, <a class="code" href="class_rate_limiter.html">RateLimiter</a>* rateLimiter) : <a class="code" href="class_rate_limiter_form_base.html">RateLimiterFormBase</a>(parent)</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  SetSize(GetBestSize());</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>  m_rateLimiter = rateLimiter;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  m_parent = parent;</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>  m_textCtrlUpLimit->SetValue(m_rateLimiter->StringFromDouble(m_rateLimiter->GetUpLimit()));</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_textCtrlLowLimit->SetValue(m_rateLimiter->StringFromDouble(m_rateLimiter->GetLowLimit()));</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> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> RateLimiterForm::~RateLimiterForm() {}</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keywordtype">bool</span> RateLimiterForm::ValidateData()</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="keywordtype">double</span> upLimit;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keywordtype">double</span> lowLimit;</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="keywordflow">if</span>(!m_rateLimiter->DoubleFromString(<span class="keyword">this</span>, m_textCtrlUpLimit->GetValue(), upLimit,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Upper limit\"."</span>)))</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordflow">if</span>(!m_rateLimiter->DoubleFromString(<span class="keyword">this</span>, m_textCtrlLowLimit->GetValue(), lowLimit,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Lower limit\"."</span>)))</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  m_rateLimiter->SetUpLimit(upLimit);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_rateLimiter->SetLowLimit(lowLimit);</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">return</span> <span class="keyword">true</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> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keywordtype">void</span> RateLimiterForm::OnOKButtonClick(wxCommandEvent& event)</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>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div><div class="ttc" id="class_rate_limiter_html"><div class="ttname"><a href="class_rate_limiter.html">RateLimiter</a></div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00008">RateLimiter.h:8</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_form_8h.html">RateLimiterForm.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_8h.html">RateLimiter.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> RateLimiterForm::RateLimiterForm(wxWindow* parent, <a class="code" href="class_rate_limiter.html">RateLimiter</a>* rateLimiter) : <a class="code" href="class_rate_limiter_form_base.html">RateLimiterFormBase</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_rateLimiter = rateLimiter;</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> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_textCtrlUpLimit->SetValue(m_rateLimiter->StringFromDouble(m_rateLimiter->GetUpLimit()));</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_textCtrlLowLimit->SetValue(m_rateLimiter->StringFromDouble(m_rateLimiter->GetLowLimit()));</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> RateLimiterForm::~RateLimiterForm() {}</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keywordtype">bool</span> RateLimiterForm::ValidateData()</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="keywordtype">double</span> upLimit;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">double</span> lowLimit;</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_rateLimiter->DoubleFromString(<span class="keyword">this</span>, m_textCtrlUpLimit->GetValue(), upLimit,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Upper limit\"."</span>)))</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>  <span class="keywordflow">if</span>(!m_rateLimiter->DoubleFromString(<span class="keyword">this</span>, m_textCtrlLowLimit->GetValue(), lowLimit,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Lower limit\"."</span>)))</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>  m_rateLimiter->SetUpLimit(upLimit);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_rateLimiter->SetLowLimit(lowLimit);</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">return</span> <span class="keyword">true</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="keywordtype">void</span> RateLimiterForm::OnOKButtonClick(wxCommandEvent& event)</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="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</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_form_base_html"><div class="ttname"><a href="class_rate_limiter_form_base.html">RateLimiterFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00861">ElementForm.h:861</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="_rate_limiter_form_8h_html"><div class="ttname"><a href="_rate_limiter_form_8h.html">RateLimiterForm.h</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_rate_limiter_form_8h.html b/docs/doxygen/html/_rate_limiter_form_8h.html new file mode 100644 index 0000000..a2da6a5 --- /dev/null +++ b/docs/doxygen/html/_rate_limiter_form_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/RateLimiterForm.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('_rate_limiter_form_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">RateLimiterForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +</div> +<p><a href="_rate_limiter_form_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_rate_limiter_form.html">RateLimiterForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the rate limit control data. <a href="class_rate_limiter_form.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="_rate_limiter_form_8h.html">RateLimiterForm.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/_rate_limiter_form_8h_source.html b/docs/doxygen/html/_rate_limiter_form_8h_source.html index 31108ce..900c9e8 100644 --- a/docs/doxygen/html/_rate_limiter_form_8h_source.html +++ b/docs/doxygen/html/_rate_limiter_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,15 @@ $(document).ready(function(){initNavTree('_rate_limiter_form_8h_source.html','') <div class="title">RateLimiterForm.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="preprocessor">#ifndef RATELIMITERFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define RATELIMITERFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="keyword">class </span><a class="code" href="class_rate_limiter.html">RateLimiter</a>;</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="class_rate_limiter_form.html"> 7</a></span> <span class="keyword">class </span><a class="code" href="class_rate_limiter_form.html">RateLimiterForm</a> : <span class="keyword">public</span> <a class="code" href="class_rate_limiter_form_base.html">RateLimiterFormBase</a></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <a class="code" href="class_rate_limiter_form.html">RateLimiterForm</a>(wxWindow* parent, <a class="code" href="class_rate_limiter.html">RateLimiter</a>* rateLimiter);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_rate_limiter_form.html">RateLimiterForm</a>();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keywordtype">bool</span> ValidateData();</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">protected</span>:</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) {EndModal(wxID_OK);}</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</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>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <a class="code" href="class_rate_limiter.html">RateLimiter</a>* m_rateLimiter = NULL;</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">#endif // RATELIMITERFORM_H</span></div><div class="ttc" id="class_rate_limiter_html"><div class="ttname"><a href="class_rate_limiter.html">RateLimiter</a></div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00008">RateLimiter.h:8</a></div></div> +<a href="_rate_limiter_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 RATELIMITERFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define RATELIMITERFORM_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_rate_limiter.html">RateLimiter</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_rate_limiter_form.html"> 31</a></span> <span class="keyword">class </span><a class="code" href="class_rate_limiter_form.html">RateLimiterForm</a> : <span class="keyword">public</span> <a class="code" href="class_rate_limiter_form_base.html">RateLimiterFormBase</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_rate_limiter_form.html">RateLimiterForm</a>(wxWindow* parent, <a class="code" href="class_rate_limiter.html">RateLimiter</a>* rateLimiter);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_rate_limiter_form.html">RateLimiterForm</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</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_OK); }</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_rate_limiter.html">RateLimiter</a>* m_rateLimiter = 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 // RATELIMITERFORM_H</span></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_form_base_html"><div class="ttname"><a href="class_rate_limiter_form_base.html">RateLimiterFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00861">ElementForm.h:861</a></div></div> -<div class="ttc" id="class_rate_limiter_form_html"><div class="ttname"><a href="class_rate_limiter_form.html">RateLimiterForm</a></div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_form_8h_source.html#l00007">RateLimiterForm.h:7</a></div></div> +<div class="ttc" id="class_rate_limiter_form_html"><div class="ttname"><a href="class_rate_limiter_form.html">RateLimiterForm</a></div><div class="ttdoc">Form to edit the rate limit control data. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_form_8h_source.html#l00031">RateLimiterForm.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>RateLimiterForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_rate_limiter_form_8h.html">RateLimiterForm.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/_reactive_shunt_element_form_8cpp_source.html b/docs/doxygen/html/_reactive_shunt_element_form_8cpp_source.html index 7ab661c..0b4af60 100644 --- a/docs/doxygen/html/_reactive_shunt_element_form_8cpp_source.html +++ b/docs/doxygen/html/_reactive_shunt_element_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,17 +88,19 @@ $(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="preprocessor">#include "ReactiveShuntElementForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "SwitchingForm.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "Capacitor.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "Inductor.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> ReactiveShuntElementForm::ReactiveShuntElementForm(wxWindow* parent, <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor)</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  : <a class="code" href="class_reactive_shunt_element_form_base.html">ReactiveShuntElementFormBase</a>(parent)</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data = capacitor->GetElectricalData();</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_textCtrlName->SetValue(data.name);</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>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Capacitor::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  m_choiceReactivePower->SetSelection(0);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  m_choiceReactivePower->SetSelection(1);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_choiceReactivePower->SetSelection(2);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_choiceReactivePower->SetSelection(3);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">break</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> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_parent = parent;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_capacitor = capacitor;</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> ReactiveShuntElementForm::ReactiveShuntElementForm(wxWindow* parent, <a class="code" href="class_inductor.html">Inductor</a>* inductor)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  : <a class="code" href="class_reactive_shunt_element_form_base.html">ReactiveShuntElementFormBase</a>(parent)</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>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data = inductor->GetElectricalData();</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_textCtrlName->SetValue(data.name);</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_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Inductor::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_choiceReactivePower->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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_choiceReactivePower->SetSelection(1);</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#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_choiceReactivePower->SetSelection(2);</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#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_choiceReactivePower->SetSelection(3);</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">default</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">break</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>  m_parent = parent;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  m_inductor = inductor;</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> ReactiveShuntElementForm::~ReactiveShuntElementForm() {}</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keywordtype">void</span> ReactiveShuntElementForm::OnOKButtonClick(wxCommandEvent& event)</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="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</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"> 71</span> <span class="keywordtype">void</span> ReactiveShuntElementForm::OnStabilityButtonClick(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()) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span>(m_capacitor) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_capacitor);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  swForm.SetTitle(_(<span class="stringliteral">"Capacitor: Switching"</span>));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  swForm.ShowModal();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_inductor) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_inductor);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  swForm.SetTitle(_(<span class="stringliteral">"Inductor: Switching"</span>));</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  swForm.ShowModal();</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>  EndModal(wxID_OK);</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> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="keywordtype">bool</span> ReactiveShuntElementForm::ValidateData()</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>(m_capacitor) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data;</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.name = m_textCtrlName->GetValue();</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="keywordflow">if</span>(!m_capacitor->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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">case</span> 1: {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</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> 3: {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</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>  }</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_capacitor->SetElectricalData(data);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_inductor) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data;</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>  data.name = m_textCtrlName->GetValue();</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>(!m_inductor->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</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>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  } <span class="keywordflow">break</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> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  m_inductor->SetElectricalData(data);</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">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> }</div><div class="ttc" id="class_switching_form_html"><div class="ttname"><a href="class_switching_form.html">SwitchingForm</a></div><div class="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00008">SwitchingForm.h:8</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#l00008">Inductor.h:8</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 "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="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> -<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#l00012">PowerElement.h:12</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#l00025">PowerElement.h:25</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#l00024">PowerElement.h:24</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#l00023">PowerElement.h:23</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#l00300">Element.cpp:300</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#l00014">Capacitor.h:14</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#l00014">Inductor.h:14</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#l00008">Capacitor.h:8</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_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="_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_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="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 --> <!-- start footer part --> diff --git a/docs/doxygen/html/_reactive_shunt_element_form_8h.html b/docs/doxygen/html/_reactive_shunt_element_form_8h.html new file mode 100644 index 0000000..970bb11 --- /dev/null +++ b/docs/doxygen/html/_reactive_shunt_element_form_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/ReactiveShuntElementForm.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('_reactive_shunt_element_form_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">ReactiveShuntElementForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +<code>#include <wx/log.h></code><br /> +</div> +<p><a href="_reactive_shunt_element_form_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_reactive_shunt_element_form.html">ReactiveShuntElementForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the reactive shunt element power data. <a href="class_reactive_shunt_element_form.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="_reactive_shunt_element_form_8h.html">ReactiveShuntElementForm.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/_reactive_shunt_element_form_8h_source.html b/docs/doxygen/html/_reactive_shunt_element_form_8h_source.html index 2843cfe..484283a 100644 --- a/docs/doxygen/html/_reactive_shunt_element_form_8h_source.html +++ b/docs/doxygen/html/_reactive_shunt_element_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,17 +88,17 @@ $(document).ready(function(){initNavTree('_reactive_shunt_element_form_8h_source <div class="title">ReactiveShuntElementForm.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="preprocessor">#ifndef REACTIVESHUNTELEMENTFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define REACTIVESHUNTELEMENTFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <wx/log.h></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_capacitor.html">Capacitor</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="keyword">class </span><a class="code" href="class_inductor.html">Inductor</a>;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="keyword">class </span><a class="code" href="class_switching_form.html">SwitchingForm</a>;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"><a class="line" href="class_reactive_shunt_element_form.html"> 10</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="l00011"></a><span class="lineno"> 11</span> {</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</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="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>();</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</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="keyword">protected</span>:</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnStabilityButtonClick(wxCommandEvent& event);</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>  wxWindow* m_parent;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* m_capacitor = NULL;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <a class="code" href="class_inductor.html">Inductor</a>* m_inductor = NULL;</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="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="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00008">SwitchingForm.h:8</a></div></div> +<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#l00014">Capacitor.h:14</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#l00014">Inductor.h:14</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="ttdef"><b>Definition:</b> <a href="_reactive_shunt_element_form_8h_source.html#l00010">ReactiveShuntElementForm.h:10</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_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>ReactiveShuntElementForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_reactive_shunt_element_form_8h.html">ReactiveShuntElementForm.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/_shunt_8cpp_source.html b/docs/doxygen/html/_shunt_8cpp_source.html index 3697b10..5ac6c86 100644 --- a/docs/doxygen/html/_shunt_8cpp_source.html +++ b/docs/doxygen/html/_shunt_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,23 +88,23 @@ $(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="preprocessor">#include "Shunt.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> Shunt::Shunt() : <a class="code" href="class_power_element.html">PowerElement</a>() {}</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> Shunt::~Shunt() {}</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="keywordtype">void</span> Shunt::UpdateSwitchesPosition()</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], m_pointList[2]);</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_pointList[1] = m_pointList[0];</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  }</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  UpdateSwitches();</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> </div><div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3"> 15</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="l00016"></a><span class="lineno"> 16</span> {</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  SetPosition(m_movePos + position - m_moveStartPt);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</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="l00019"></a><span class="lineno"> 19</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</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="keywordflow">if</span>(!m_parentList[0]) {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</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>  UpdateSwitchesPosition();</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  UpdatePowerFlowArrowsPosition();</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"><a class="line" href="class_shunt.html#a23d2fed4e9b6a69bc4527b4345bd5bbd"> 28</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="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>(element) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">if</span>(element == m_parentList[0]) {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</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">else</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_online = <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"> 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="comment">// Recalculate switches positions</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  UpdatePowerFlowArrowsPosition();</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"><a class="line" href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865"> 50</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="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_moveStartPt = position;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_movePts = m_pointList;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_movePos = m_position;</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_shunt.html#a665d9a8c291d427e666567c6df34321b"> 57</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="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>(parent == m_parentList[0]) {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  UpdatePowerFlowArrowsPosition();</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> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="class_shunt.html#ae325a441a44c2a78c08289292fa00979"> 67</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="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</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="l00070"></a><span class="lineno"> 70</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * 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="keywordflow">if</span>(nodeRect.Contains(position)) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_activeNodeID = 1;</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>  m_activeNodeID = 0;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <span class="keyword">false</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"><a class="line" href="class_shunt.html#aacb9fdd05533a8322596b130c70774ef"> 81</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="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span>(parent && m_activeNodeID != 0) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</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="l00085"></a><span class="lineno"> 85</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</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="keywordflow">if</span>(parent-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(nodeRect)) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  m_parentList[0] = parent;</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">// Centralize the node on bus.</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</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="l00093"></a><span class="lineno"> 93</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="l00094"></a><span class="lineno"> 94</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="l00095"></a><span class="lineno"> 95</span>  m_pointList[0] = parentPt;</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>  UpdateSwitchesPosition();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  UpdatePowerFlowArrowsPosition();</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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_online = <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"> 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> }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="class_shunt.html#abe01dcdf8bc0ba6fc97d41673889fb8e"> 108</a></span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#abe01dcdf8bc0ba6fc97d41673889fb8e">Shunt::UpdateNodes</a>()</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="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</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="l00112"></a><span class="lineno"> 112</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</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>(!m_parentList[0]->Intersects(nodeRect)) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  UpdatePowerFlowArrowsPosition();</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> }</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_shunt.html#a7a732f1fb5f54b89e33957194fefd703"> 124</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="l00125"></a><span class="lineno"> 125</span> {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</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>(parent == m_parentList[0]) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</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="l00131"></a><span class="lineno"> 131</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  UpdatePowerFlowArrowsPosition();</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"> 136</span> <span class="keywordtype">void</span> Shunt::DrawGround(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="keyword"></span>{</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  std::vector<wxPoint2DDouble> groundPts;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  groundPts.push_back(position);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  groundPts.push_back(position + wxPoint2DDouble(0, 10));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  groundPts.push_back(position + wxPoint2DDouble(-10, 10));</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  groundPts.push_back(position + wxPoint2DDouble(10, 10));</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  groundPts.push_back(position + wxPoint2DDouble(-6, 15));</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  groundPts.push_back(position + wxPoint2DDouble(6, 15));</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  groundPts.push_back(position + wxPoint2DDouble(-3, 20));</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  groundPts.push_back(position + wxPoint2DDouble(3, 20));</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>  DrawLine(groundPts, GL_LINES);</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> Shunt::UpdatePowerFlowArrowsPosition()</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>  std::vector<wxPoint2DDouble> edges;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">switch</span>(m_pfDirection) {</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#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a>: {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_powerFlowArrow.clear();</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> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869">PF_TO_BUS</a>: {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  edges.push_back(m_pointList[2]);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  edges.push_back(m_pointList[1]);</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#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a>: {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  edges.push_back(m_pointList[1]);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  edges.push_back(m_pointList[2]);</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">default</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>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  CalculatePowerFlowPts(edges);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</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#l00201">Element.h:201</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#l00088">Element.h:88</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#l00028">Shunt.cpp:28</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#l00108">Shunt.cpp:108</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#l00057">Shunt.cpp:57</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#l00091">Element.cpp:91</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 "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="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_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_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#l00124">Shunt.cpp:124</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#l00064">PowerElement.h:64</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#l00015">Shunt.cpp:15</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#l00050">Shunt.cpp:50</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#l00063">PowerElement.h:63</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#l00062">PowerElement.h:62</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#l00081">Shunt.cpp:81</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#l00067">Shunt.cpp:67</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#l00100">PowerElement.h:100</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#l00171">Element.h:171</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="_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="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_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_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_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_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 --> <!-- start footer part --> diff --git a/docs/doxygen/html/_shunt_8h_source.html b/docs/doxygen/html/_shunt_8h_source.html index 670bf95..a047246 100644 --- a/docs/doxygen/html/_shunt_8h_source.html +++ b/docs/doxygen/html/_shunt_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,20 +88,20 @@ $(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="preprocessor">#ifndef SHUNT_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define SHUNT_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "Bus.h"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="class_shunt.html"> 7</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="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <a class="code" href="class_shunt.html">Shunt</a>();</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  ~<a class="code" href="class_shunt.html">Shunt</a>();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  </div><div class="line"><a name="l00013"></a><span class="lineno"><a class="line" href="class_shunt.html#a449431a2044b838d35cbb991aa1de658"> 13</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="l00014"></a><span class="lineno"><a class="line" href="class_shunt.html#afdbf0c51f9630589937298329bb041fe"> 14</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="l00015"></a><span class="lineno"> 15</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="l00016"></a><span class="lineno"> 16</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="l00017"></a><span class="lineno"> 17</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="l00018"></a><span class="lineno"> 18</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="l00019"></a><span class="lineno"> 19</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="l00020"></a><span class="lineno"> 20</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="l00021"></a><span class="lineno"> 21</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="l00022"></a><span class="lineno"> 22</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="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">void</span> UpdateSwitchesPosition();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordtype">void</span> UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">void</span> DrawGround(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">bool</span> m_inserted = <span class="keyword">false</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> };</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">#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#l00088">Element.h:88</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#l00028">Shunt.cpp:28</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#l00108">Shunt.cpp:108</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#l00057">Shunt.cpp:57</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#l00124">Shunt.cpp:124</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#l00015">Shunt.cpp:15</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#l00013">Shunt.h:13</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">#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> +<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="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_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#l00050">Shunt.cpp:50</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#l00081">Shunt.cpp:81</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#l00067">Shunt.cpp:67</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#l00100">PowerElement.h:100</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#l00007">Shunt.h:7</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#l00014">Shunt.h:14</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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_simulations_settings_form_8cpp_source.html b/docs/doxygen/html/_simulations_settings_form_8cpp_source.html index 666a8fc..a7199da 100644 --- a/docs/doxygen/html/_simulations_settings_form_8cpp_source.html +++ b/docs/doxygen/html/_simulations_settings_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,14 +88,15 @@ $(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="preprocessor">#include "SimulationsSettingsForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "PropertiesData.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> SimulationsSettingsForm::SimulationsSettingsForm(wxWindow* parent, <a class="code" href="class_properties_data.html">PropertiesData</a>* properties)</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  : <a class="code" href="class_simulations_settings_form_base.html">SimulationsSettingsFormBase</a>(parent)</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  m_properties = properties;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  <span class="keyword">auto</span> data = m_properties->GetSimulationPropertiesData();</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_textCtrlbasePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a>(data.basePower));</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keywordflow">switch</span>(data.basePowerUnit) {</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>: {</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_choiceBasePower->SetSelection(0);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_choiceBasePower->SetSelection(1);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  m_choiceBasePower->SetSelection(2);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_choiceBasePower->SetSelection(wxNOT_FOUND);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  } <span class="keywordflow">break</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>  m_checkBoxFaultAfterPF->SetValue(data.faultAfterPowerFlow);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_checkBoxSCPowerAfterPF->SetValue(data.scPowerAfterPowerFlow);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">switch</span>(data.powerFlowMethod) {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">case</span> GAUSS_SEIDEL: {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_choicePFMethod->SetSelection(0);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">case</span> NEWTON_RAPHSON: {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_choicePFMethod->SetSelection(1);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_textCtrlAccFactor->Enable(<span class="keyword">false</span>);</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">default</span>: {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_choicePFMethod->SetSelection(wxNOT_FOUND);</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>  }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_textCtrlAccFactor->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a>(data.accFator));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_textCtrlPFTolerance->SetValue(wxString::Format(<span class="stringliteral">"%g"</span>, data.powerFlowTolerance));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_textCtrlPFMaxIterations->SetValue(wxString::Format(<span class="stringliteral">"%d"</span>, data.powerFlowMaxIterations));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_textCtrlTimeStep->SetValue(wxString::Format(<span class="stringliteral">"%g"</span>, data.timeStep));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_textCtrlSimTime->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a>(data.stabilitySimulationTime));</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_textCtrlFreq->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a>(data.stabilityFrequency));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  m_textCtrlStabTolerance->SetValue(wxString::Format(<span class="stringliteral">"%g"</span>, data.stabilityTolerance));</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_textCtrlStabMaxIterations->SetValue(wxString::Format(<span class="stringliteral">"%d"</span>, data.stabilityMaxIterations));</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_textCtrlCtrlStepRatio->SetValue(wxString::Format(<span class="stringliteral">"%d"</span>, data.controlTimeStepRatio));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_textCtrlPrintTime->SetValue(wxString::Format(<span class="stringliteral">"%g"</span>, data.plotTime));</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_checkBoxUseCOI->SetValue(data.useCOI);</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> SimulationsSettingsForm::~SimulationsSettingsForm() {}</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keywordtype">void</span> SimulationsSettingsForm::OnButtonOKClick(wxCommandEvent& event)</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">if</span>(ValidateData()) EndModal(wxID_OK);</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">bool</span> SimulationsSettingsForm::ValidateData()</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">auto</span> data = m_properties->GetSimulationPropertiesData();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</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="l00063"></a><span class="lineno"> 63</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Base power\"."</span>)))</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>  <span class="keywordflow">switch</span>(m_choiceBasePower->GetSelection()) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  data.basePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>;</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> 1: {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  data.basePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>;</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>  data.basePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</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>  data.faultAfterPowerFlow = m_checkBoxFaultAfterPF->GetValue();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  data.scPowerAfterPowerFlow = m_checkBoxSCPowerAfterPF->GetValue();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">switch</span>(m_choicePFMethod->GetSelection()) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  data.powerFlowMethod = GAUSS_SEIDEL;</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> 1: {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  data.powerFlowMethod = NEWTON_RAPHSON;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  } <span class="keywordflow">break</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="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="l00087"></a><span class="lineno"> 87</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Acceleration factor\"."</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>  <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="l00090"></a><span class="lineno"> 90</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Tolerance (Power flow)\"."</span>)))</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</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="l00093"></a><span class="lineno"> 93</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Max. iterations (Power flow)\"."</span>)))</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>  <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="l00096"></a><span class="lineno"> 96</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Time step\"."</span>)))</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</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="l00099"></a><span class="lineno"> 99</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Simulation time\"."</span>)))</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <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">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="l00102"></a><span class="lineno"> 102</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"System frequency\"."</span>)))</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</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="l00105"></a><span class="lineno"> 105</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Tolerance (Stability)\"."</span>)))</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</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="l00108"></a><span class="lineno"> 108</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Max. iterations (Stability)\"."</span>)))</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</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="l00111"></a><span class="lineno"> 111</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Controls step ratio\"."</span>)))</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</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="l00114"></a><span class="lineno"> 114</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Plot time\"."</span>)))</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  data.useCOI = m_checkBoxUseCOI->GetValue();</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_properties->SetSimulationPropertiesData(data);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">return</span> <span class="keyword">true</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="keywordtype">void</span> SimulationsSettingsForm::OnPFMethodChoiceSelected(wxCommandEvent& event)</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_choicePFMethod->GetSelection() == 0)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  m_textCtrlAccFactor->Enable();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_textCtrlAccFactor->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</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#l00040">PropertiesData.h:40</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#l00272">Element.cpp:272</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 "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="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> -<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#l00286">Element.cpp:286</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#l00022">PowerElement.h:22</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#l00300">Element.cpp:300</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#l00020">PowerElement.h:20</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#l00021">PowerElement.h:21</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> +<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_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> +<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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_simulations_settings_form_8h.html b/docs/doxygen/html/_simulations_settings_form_8h.html new file mode 100644 index 0000000..71fac47 --- /dev/null +++ b/docs/doxygen/html/_simulations_settings_form_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/SimulationsSettingsForm.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('_simulations_settings_form_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">SimulationsSettingsForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "PropertiesForm.h"</code><br /> +</div> +<p><a href="_simulations_settings_form_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_simulations_settings_form.html">SimulationsSettingsForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the simulation data. <a href="class_simulations_settings_form.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="_simulations_settings_form_8h.html">SimulationsSettingsForm.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/_simulations_settings_form_8h_source.html b/docs/doxygen/html/_simulations_settings_form_8h_source.html index 939c0ba..2cf48f0 100644 --- a/docs/doxygen/html/_simulations_settings_form_8h_source.html +++ b/docs/doxygen/html/_simulations_settings_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,15 @@ $(document).ready(function(){initNavTree('_simulations_settings_form_8h_source.h <div class="title">SimulationsSettingsForm.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="preprocessor">#ifndef SIMULATIONSSETTINGSFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define SIMULATIONSSETTINGSFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "PropertiesForm.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_properties_data.html">PropertiesData</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_simulations_settings_form.html"> 8</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="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_simulations_settings_form.html">SimulationsSettingsForm</a>();</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPFMethodChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonCancelClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonOKClick(wxCommandEvent& event);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</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>  <a class="code" href="class_properties_data.html">PropertiesData</a>* m_properties;</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">#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#l00040">PropertiesData.h:40</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="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00057">PropertiesData.h:57</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="ttdef"><b>Definition:</b> <a href="_simulations_settings_form_8h_source.html#l00008">SimulationsSettingsForm.h:8</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 --> </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>SimulationsSettingsForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_simulations_settings_form_8h.html">SimulationsSettingsForm.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_8cpp_source.html b/docs/doxygen/html/_sum_8cpp_source.html index 126cb4a..46f2a05 100644 --- a/docs/doxygen/html/_sum_8cpp_source.html +++ b/docs/doxygen/html/_sum_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,17 +88,19 @@ $(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="preprocessor">#include "Sum.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "SumForm.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "ConnectionLine.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</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="l00006"></a><span class="lineno"> 6</span> {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  m_width = m_height = 36.0;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</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="l00009"></a><span class="lineno"> 9</span>  nodeIn1->StartMove(m_position);</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <a class="code" href="class_node.html">Node</a>* nodeIn2 =</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span>  nodeIn2->StartMove(m_position);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</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="l00014"></a><span class="lineno"> 14</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_nodeList.push_back(nodeIn1);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  m_nodeList.push_back(nodeIn2);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  m_signalList.push_back(SIGNAL_POSITIVE);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  m_signalList.push_back(SIGNAL_NEGATIVE);</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>  UpdatePoints();</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> Sum::~Sum() {}</div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="class_sum.html#a31dbb6867b17188b4a8cc650983da57b"> 26</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="l00027"></a><span class="lineno"> 27</span> <span class="keyword"></span>{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  glLineWidth(1.0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  DrawRectangle(m_position, m_width + borderSize, m_height + borderSize);</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>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  DrawRectangle(m_position, m_width, m_height);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  DrawRectangle(m_position, m_width, m_height, GL_LINE_LOOP);</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">// Plot signals.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  glLineWidth(2.0);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  wxPoint2DDouble signalOffset[4];</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  wxPoint2DDouble sigmaOffset;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  signalOffset[0] = wxPoint2DDouble(6, 0);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  signalOffset[1] = wxPoint2DDouble(12, 0);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  signalOffset[2] = wxPoint2DDouble(9, -3);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  signalOffset[3] = wxPoint2DDouble(9, 3);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  sigmaOffset = wxPoint2DDouble(6, 0);</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 == 90.0) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  signalOffset[0] = wxPoint2DDouble(-3, 9);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  signalOffset[1] = wxPoint2DDouble(3, 9);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  signalOffset[2] = wxPoint2DDouble(0, 6);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  signalOffset[3] = wxPoint2DDouble(0, 12);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  sigmaOffset = wxPoint2DDouble(0, 6);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  signalOffset[0] = wxPoint2DDouble(-6, 0);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  signalOffset[1] = wxPoint2DDouble(-12, 0);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  signalOffset[2] = wxPoint2DDouble(-9, -3);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  signalOffset[3] = wxPoint2DDouble(-9, 3);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  sigmaOffset = wxPoint2DDouble(-6, 0);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  signalOffset[0] = wxPoint2DDouble(-3, -9);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  signalOffset[1] = wxPoint2DDouble(3, -9);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  signalOffset[2] = wxPoint2DDouble(0, -6);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  signalOffset[3] = wxPoint2DDouble(0, -12);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  sigmaOffset = wxPoint2DDouble(0, -6);</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="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_nodeList.size() - 1; ++i) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  std::vector<wxPoint2DDouble> hLine;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  hLine.push_back(m_nodeList[i]->GetPosition() + signalOffset[0]);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  hLine.push_back(m_nodeList[i]->GetPosition() + signalOffset[1]);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  DrawLine(hLine);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">if</span>(m_signalList[i] == SIGNAL_POSITIVE) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  std::vector<wxPoint2DDouble> vLine;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  vLine.push_back(m_nodeList[i]->GetPosition() + signalOffset[2]);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  vLine.push_back(m_nodeList[i]->GetPosition() + signalOffset[3]);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  DrawLine(vLine);</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>  <span class="comment">// Plot sigma.</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  std::vector<wxPoint2DDouble> sigma;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  sigma.push_back(m_position + wxPoint2DDouble(4, 9) + sigmaOffset);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  sigma.push_back(m_position + wxPoint2DDouble(-6, 9) + sigmaOffset);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  sigma.push_back(m_position + wxPoint2DDouble(0, 0) + sigmaOffset);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  sigma.push_back(m_position + wxPoint2DDouble(-6, -9) + sigmaOffset);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  sigma.push_back(m_position + wxPoint2DDouble(4, -9) + sigmaOffset);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  glColor4d(0.0, 0.3, 1.0, 1.0);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  DrawLine(sigma);</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>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  DrawNodes();</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"><a class="line" href="class_sum.html#a8c4bfb1dc965d8ac246de59d1f10888b"> 95</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="l00096"></a><span class="lineno"> 96</span> {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</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="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(sumForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  sumForm->Destroy();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> <span class="keyword">true</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>  sumForm->Destroy();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> <span class="keyword">false</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">void</span> Sum::UpdatePoints()</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_angle == 0.0 || m_angle == 180.0) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_height = 18.0 * (m_nodeList.size() - 1);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_width = 36.0;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_width = 18.0 * (m_nodeList.size() - 1);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_height = 42.0;</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>  <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="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span>(m_angle == 0.0)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_nodeList[i]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 9 + 18 * i - m_height / 2));</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_nodeList[i]->SetPosition(m_position + wxPoint2DDouble(m_width / 2 - 9 - 18 * i, -m_height / 2));</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_nodeList[i]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, m_height / 2 - 9 - 18 * i));</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  m_nodeList[i]->SetPosition(m_position + wxPoint2DDouble(9 + 18 * i - m_width / 2, m_height / 2));</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>(m_angle == 0.0)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_nodeList[m_nodeList.size() - 1]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_nodeList[m_nodeList.size() - 1]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_nodeList[m_nodeList.size() - 1]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  m_nodeList[m_nodeList.size() - 1]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</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>  SetPosition(m_position); <span class="comment">// Update rect.</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="keywordtype">void</span> Sum::AddInNode()</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_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="l00141"></a><span class="lineno"> 141</span>  newNode->SetAngle(m_angle);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  m_nodeList.insert(m_nodeList.end() - 1, newNode);</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> Sum::RemoveInNode()</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_node.html">Node</a>* nodeToRemove = *(m_nodeList.end() - 2);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordtype">bool</span> foundChild = <span class="keyword">false</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</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="l00150"></a><span class="lineno"> 150</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="l00151"></a><span class="lineno"> 151</span>  <span class="keyword">auto</span> childNodeList = child->GetNodeList();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</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="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span>(node == nodeToRemove) {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  child-><a class="code" href="class_element.html#a9504437b60faf2c5a27584de8a24810c">RemoveParent</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  RemoveChild(child);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  foundChild = <span class="keyword">true</span>;</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>  }</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>(foundChild) <span class="keywordflow">break</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>  m_nodeList.erase(m_nodeList.end() - 2);</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"><a class="line" href="class_sum.html#a738bcb564fec2764055e4785227b5eea"> 166</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="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>(clockwise)</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  m_angle += 90.0;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  m_angle -= 90.0;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_angle = 0.0;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  m_angle = 270.0;</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>  UpdatePoints();</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">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  node->Rotate(clockwise);</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"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</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="l00186"></a><span class="lineno"> 186</span> {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  std::vector<double> inputVector;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</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="l00189"></a><span class="lineno"> 189</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">if</span>(node->GetNodeType() != Node::NODE_OUT) {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span>(!node->IsConnected()) {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  inputVector.push_back(0.0);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</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="l00195"></a><span class="lineno"> 195</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="l00196"></a><span class="lineno"> 196</span>  <span class="keyword">auto</span> nodeList = cLine->GetNodeList();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</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="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="class_node.html">Node</a>* childNode = *itCN;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">if</span>(childNode == node) {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  inputVector.push_back(cLine->GetValue());</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>  }</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>  }</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_signalList.size() != inputVector.size()) <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>  m_output = 0.0;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</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="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span>(m_signalList[i] == SIGNAL_POSITIVE)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  m_output += inputVector[i];</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_signalList[i] == SIGNAL_NEGATIVE)</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  m_output -= inputVector[i];</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> <span class="keyword">true</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"><a class="line" href="class_sum.html#a0da96514e0462e47d3f57b79ddc457b6"> 221</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="l00222"></a><span class="lineno"> 222</span> {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</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="l00224"></a><span class="lineno"> 224</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> }</div><div class="ttc" id="class_sum_form_html"><div class="ttname"><a href="class_sum_form.html">SumForm</a></div><div class="ttdef"><b>Definition:</b> <a href="_sum_form_8h_source.html#l00008">SumForm.h:8</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#l00088">Element.h:88</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#l00095">Sum.cpp:95</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#l00009">Sum.h:9</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</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#l00166">Sum.cpp:166</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#l00221">Sum.cpp:221</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="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00006">ConnectionLine.h:6</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#l00367">Element.h:367</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#l00026">Sum.cpp:26</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#l00053">ControlElement.h:53</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 "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="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_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="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> +<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 --> <!-- start footer part --> diff --git a/docs/doxygen/html/_sum_8h_source.html b/docs/doxygen/html/_sum_8h_source.html index 6b1f41c..bb4d08e 100644 --- a/docs/doxygen/html/_sum_8h_source.html +++ b/docs/doxygen/html/_sum_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,17 +88,18 @@ $(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="preprocessor">#ifndef SUM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define SUM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ControlElement.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_sum_form.html">SumForm</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="keyword">class </span><a class="code" href="class_connection_line.html">ConnectionLine</a>;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"><a class="line" href="class_sum.html"> 9</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="l00010"></a><span class="lineno"> 10</span> {</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">enum</span> Signal { SIGNAL_POSITIVE = 0, SIGNAL_NEGATIVE };</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</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="l00014"></a><span class="lineno"> 14</span>  ~<a class="code" href="class_sum.html">Sum</a>();</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</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="l00017"></a><span class="lineno"><a class="line" href="class_sum.html#a1d1b52ca1b9a81d53c0a9cf140546987"> 17</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="l00018"></a><span class="lineno"><a class="line" href="class_sum.html#ac8ed3db993dd3053b94ccac7da4a664e"> 18</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="l00019"></a><span class="lineno"> 19</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="l00020"></a><span class="lineno"> 20</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="l00021"></a><span class="lineno"> 21</span>  </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</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="l00023"></a><span class="lineno"> 23</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="l00024"></a><span class="lineno"> 24</span>  </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</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="l00026"></a><span class="lineno"> 26</span>  </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">void</span> AddInNode();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordtype">void</span> RemoveInNode();</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">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="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  std::vector<Signal> m_signalList;</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 // 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="ttdef"><b>Definition:</b> <a href="_sum_form_8h_source.html#l00008">SumForm.h:8</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#l00088">Element.h:88</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#l00095">Sum.cpp:95</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#l00009">Sum.h:9</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#l00166">Sum.cpp:166</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#l00017">Sum.h:17</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#l00221">Sum.cpp:221</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="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00006">ConnectionLine.h:6</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#l00018">Sum.h:18</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#l00026">Sum.cpp:26</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#l00053">ControlElement.h:53</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">#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> +<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_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_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="_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> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_sum_form_8cpp_source.html b/docs/doxygen/html/_sum_form_8cpp_source.html index 16f9f33..9eb2483 100644 --- a/docs/doxygen/html/_sum_form_8cpp_source.html +++ b/docs/doxygen/html/_sum_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,7 +88,8 @@ $(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="preprocessor">#include "SumForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "Sum.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> SumForm::SumForm(wxWindow* parent, <a class="code" href="class_sum.html">Sum</a>* sum)</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  : <a class="code" href="class_sum_form_base.html">SumFormBase</a>(parent)</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  m_parent = parent;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_sum = sum;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  wxString signalStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keyword">auto</span> signalList = m_sum->GetSignalList();</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</span>  Sum::Signal signal = *it;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keywordflow">switch</span>(signal) {</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordflow">case</span> Sum::SIGNAL_POSITIVE: {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  signalStr += <span class="stringliteral">"+"</span>;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordflow">case</span> Sum::SIGNAL_NEGATIVE: {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  signalStr += <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  } <span class="keywordflow">break</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="keywordflow">if</span>(it != itEnd - 1) signalStr += <span class="stringliteral">" "</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>  m_textCtrlSigns->SetValue(signalStr);</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> SumForm::~SumForm() {}</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="keywordtype">void</span> SumForm::OnOKClick(wxCommandEvent& event)</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="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</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> <span class="keywordtype">bool</span> SumForm::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>  wxString signalStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</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="l00040"></a><span class="lineno"> 40</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="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>(signalStr.size() < 2){</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  wxMessageDialog msg(<span class="keyword">this</span>, _(<span class="stringliteral">"You must assign at least two signals."</span>), _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  msg.ShowModal();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> <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>  std::vector<Sum::Signal> signalList;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)signalStr.length(); ++i) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">switch</span>(signalStr[i].GetValue()) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">case</span> <span class="charliteral">'+'</span>: {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  signalList.push_back(Sum::SIGNAL_POSITIVE);</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> <span class="charliteral">'-'</span>: {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  signalList.push_back(Sum::SIGNAL_NEGATIVE);</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">default</span>: {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  wxMessageDialog msg(<span class="keyword">this</span>, _(<span class="stringliteral">"Value entered incorrectly in the field \"Signs\"."</span>), _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  msg.ShowModal();</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>  }</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> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">int</span> diff = (int)signalList.size() - (int)m_sum->GetSignalList().size();</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>(diff < 0) {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  diff = std::abs(diff);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < diff; ++i) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_sum->RemoveInNode();</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">else</span> <span class="keywordflow">if</span>(diff > 0) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < diff; ++i) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_sum->AddInNode();</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>  m_sum->SetSignalList(signalList);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_sum->UpdatePoints();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</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#l00009">Sum.h:9</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 "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="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_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.html b/docs/doxygen/html/_sum_form_8h.html new file mode 100644 index 0000000..cd6a738 --- /dev/null +++ b/docs/doxygen/html/_sum_form_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/SumForm.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_form_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">SumForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +</div> +<p><a href="_sum_form_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_form.html">SumForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the sum control data. <a href="class_sum_form.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_form_8h.html">SumForm.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_form_8h_source.html b/docs/doxygen/html/_sum_form_8h_source.html index 701a141..6e71e39 100644 --- a/docs/doxygen/html/_sum_form_8h_source.html +++ b/docs/doxygen/html/_sum_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,15 @@ $(document).ready(function(){initNavTree('_sum_form_8h_source.html','');}); <div class="title">SumForm.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="preprocessor">#ifndef SUMFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define SUMFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_sum.html">Sum</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_sum_form.html"> 8</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="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_sum_form.html">SumForm</a>();</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="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKClick(wxCommandEvent& event);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <a class="code" href="class_sum.html">Sum</a>* m_sum = NULL;</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">#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="ttdef"><b>Definition:</b> <a href="_sum_form_8h_source.html#l00008">SumForm.h:8</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#l00009">Sum.h:9</a></div></div> +<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_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 --> <!-- 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>SumForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_sum_form_8h.html">SumForm.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/_switching_form_8cpp_source.html b/docs/doxygen/html/_switching_form_8cpp_source.html index 6e923b7..476a801 100644 --- a/docs/doxygen/html/_switching_form_8cpp_source.html +++ b/docs/doxygen/html/_switching_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,16 @@ $(document).ready(function(){initNavTree('_switching_form_8cpp_source.html',''); <div class="title">SwitchingForm.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 "SwitchingForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> SwitchingForm::SwitchingForm(wxWindow* parent) : <a class="code" href="class_switching_form_base.html">SwitchingFormBase</a>(parent)</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  m_listCtrlSwitchings->AppendColumn(_(<span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  m_listCtrlSwitchings->AppendColumn(_(<span class="stringliteral">"Time (s)"</span>));</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  Layout();</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> }</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> SwitchingForm::SwitchingForm(wxWindow* parent, <a class="code" href="class_power_element.html">PowerElement</a>* element) : <a class="code" href="class_switching_form_base.html">SwitchingFormBase</a>(parent)</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> {</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_listCtrlSwitchings->AppendColumn(_(<span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_listCtrlSwitchings->AppendColumn(_(<span class="stringliteral">"Time (s)"</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>  SetSize(GetBestSize());</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  Layout();</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>  <a class="code" href="struct_switching_data.html">SwitchingData</a> data = element-><a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>();</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 < (int)data.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.size(); i++) {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordtype">long</span> index = m_listCtrlSwitchings->InsertItem(m_maxID, data.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[i] == <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7">SW_INSERT</a> ? _(<span class="stringliteral">"Insert"</span>) : _(<span class="stringliteral">"Remove"</span>));</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_listCtrlSwitchings->SetItem(index, 1, wxString::FromDouble(data.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[i]));</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_maxID++;</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>  m_element = element;</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> SwitchingForm::~SwitchingForm() {}</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keywordtype">void</span> SwitchingForm::OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keywordtype">void</span> SwitchingForm::OnInsertButtonClick(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="keywordtype">long</span> index = m_listCtrlSwitchings->InsertItem(</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_maxID, m_pgPropType->GetValue().GetInteger() == 0 ? _(<span class="stringliteral">"Insert"</span>) : _(<span class="stringliteral">"Remove"</span>));</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_listCtrlSwitchings->SetItem(index, 1, m_pgPropTime->GetValue().GetString());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_maxID++;</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="keywordtype">void</span> SwitchingForm::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>  std::vector<long> itemList;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">long</span> item = -1;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">while</span>(<span class="keyword">true</span>) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  item = m_listCtrlSwitchings->GetNextItem(item);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span>(item == -1) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  itemList.push_back(item);</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>  <a class="code" href="struct_switching_data.html">SwitchingData</a> data;</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)itemList.size(); i++) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span>(m_listCtrlSwitchings->GetItemText(itemList[i], 0) == _(<span class="stringliteral">"Insert"</span>))</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  data.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.push_back(<a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7">SW_INSERT</a>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  data.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.push_back(<a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776">SW_REMOVE</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">double</span> swTime;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_listCtrlSwitchings->GetItemText(itemList[i], 1).ToDouble(&swTime);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  data.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.push_back(swTime);</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_element->SetSwitchingData(data);</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">if</span>(data.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.size() != 0)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_element->SetDynamicEvent(<span class="keyword">true</span>);</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>  m_element->SetDynamicEvent(<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>  EndModal(wxID_OK);</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"> 71</span> <span class="keywordtype">void</span> SwitchingForm::OnRemoveButtonClick(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>  std::vector<long> itemList;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">long</span> item = -1;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">while</span>(<span class="keyword">true</span>) {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  item = m_listCtrlSwitchings->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span>(item == -1) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  itemList.push_back(item);</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="keywordtype">int</span> i = (<span class="keywordtype">int</span>)itemList.size() - 1; i >= 0; i--) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_listCtrlSwitchings->DeleteItem(itemList[i]);</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> SwitchingForm::OnChangeProperties(wxPropertyGridEvent& event) {}</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="keywordtype">void</span> SwitchingForm::OnSelectItem(wxListEvent& event) {}</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keywordtype">void</span> SwitchingForm::OnDownButtonClick(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>  std::vector<long> selectedList;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  std::vector<long> itemList;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">long</span> item = -1;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">while</span>(<span class="keyword">true</span>) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  item = m_listCtrlSwitchings->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span>(item == -1) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  selectedList.push_back(item);</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="keywordflow">while</span>(<span class="keyword">true</span>) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  item = m_listCtrlSwitchings->GetNextItem(item);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(item == -1) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  itemList.push_back(item);</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">for</span>(<span class="keywordtype">int</span> i = 1; i < (int)itemList.size(); i++) {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)selectedList.size(); j++) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>(itemList[i - 1] == selectedList[j]) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  wxString col1Str[2];</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  wxString col2Str[2];</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>  col1Str[0] = m_listCtrlSwitchings->GetItemText(itemList[i], 0);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  col1Str[1] = m_listCtrlSwitchings->GetItemText(selectedList[j], 0);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  col2Str[0] = m_listCtrlSwitchings->GetItemText(itemList[i], 1);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  col2Str[1] = m_listCtrlSwitchings->GetItemText(selectedList[j], 1);</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_listCtrlSwitchings->SetItem(itemList[i], 0, col1Str[1]);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  m_listCtrlSwitchings->SetItem(selectedList[j], 0, col1Str[0]);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_listCtrlSwitchings->SetItem(itemList[i], 1, col2Str[1]);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  m_listCtrlSwitchings->SetItem(selectedList[j], 1, col2Str[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>  m_listCtrlSwitchings->SetItemState(itemList[i], wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_listCtrlSwitchings->SetItemState(selectedList[j], 0, wxLIST_STATE_SELECTED);</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>  i++;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">break</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> <span class="keywordtype">void</span> SwitchingForm::OnUpButtonClick(wxCommandEvent& event)</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>  std::vector<long> selectedList;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  std::vector<long> itemList;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordtype">long</span> item = -1;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">while</span>(<span class="keyword">true</span>) {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  item = m_listCtrlSwitchings->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span>(item == -1) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  selectedList.push_back(item);</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="keywordflow">while</span>(<span class="keyword">true</span>) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  item = m_listCtrlSwitchings->GetNextItem(item);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>(item == -1) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  itemList.push_back(item);</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">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)itemList.size(); i++) {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)selectedList.size(); j++) {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">if</span>(i + 1 < (<span class="keywordtype">int</span>)itemList.size()) {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span>(itemList[i + 1] == selectedList[j]) {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  wxString col1Str[2];</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  wxString col2Str[2];</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>  col1Str[0] = m_listCtrlSwitchings->GetItemText(itemList[i], 0);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  col1Str[1] = m_listCtrlSwitchings->GetItemText(selectedList[j], 0);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  col2Str[0] = m_listCtrlSwitchings->GetItemText(itemList[i], 1);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  col2Str[1] = m_listCtrlSwitchings->GetItemText(selectedList[j], 1);</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>  m_listCtrlSwitchings->SetItem(itemList[i], 0, col1Str[1]);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_listCtrlSwitchings->SetItem(selectedList[j], 0, col1Str[0]);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_listCtrlSwitchings->SetItem(itemList[i], 1, col2Str[1]);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  m_listCtrlSwitchings->SetItem(selectedList[j], 1, col2Str[0]);</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_listCtrlSwitchings->SetItemState(itemList[i], wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_listCtrlSwitchings->SetItemState(selectedList[j], 0, wxLIST_STATE_SELECTED);</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>  i++;</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>  }</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>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</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#l00078">PowerElement.h:78</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#l00077">PowerElement.h:77</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#l00054">PowerElement.h:54</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="_switching_form_8h.html">SwitchingForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.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> SwitchingForm::SwitchingForm(wxWindow* parent) : <a class="code" href="class_switching_form_base.html">SwitchingFormBase</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_listCtrlSwitchings->AppendColumn(_(<span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_listCtrlSwitchings->AppendColumn(_(<span class="stringliteral">"Time (s)"</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>  SetSize(GetBestSize());</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  Layout();</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> SwitchingForm::SwitchingForm(wxWindow* parent, <a class="code" href="class_power_element.html">PowerElement</a>* element) : <a class="code" href="class_switching_form_base.html">SwitchingFormBase</a>(parent)</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_listCtrlSwitchings->AppendColumn(_(<span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_listCtrlSwitchings->AppendColumn(_(<span class="stringliteral">"Time (s)"</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>  SetSize(GetBestSize());</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  Layout();</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="struct_switching_data.html">SwitchingData</a> data = element-><a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)data.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.size(); i++) {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">long</span> index = m_listCtrlSwitchings->InsertItem(m_maxID, data.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[i] == <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7">SW_INSERT</a> ? _(<span class="stringliteral">"Insert"</span>) : _(<span class="stringliteral">"Remove"</span>));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_listCtrlSwitchings->SetItem(index, 1, wxString::FromDouble(data.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[i]));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_maxID++;</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>  m_element = element;</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> SwitchingForm::~SwitchingForm() {}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keywordtype">void</span> SwitchingForm::OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keywordtype">void</span> SwitchingForm::OnInsertButtonClick(wxCommandEvent& event)</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">long</span> index = m_listCtrlSwitchings->InsertItem(</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_maxID, m_pgPropType->GetValue().GetInteger() == 0 ? _(<span class="stringliteral">"Insert"</span>) : _(<span class="stringliteral">"Remove"</span>));</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_listCtrlSwitchings->SetItem(index, 1, m_pgPropTime->GetValue().GetString());</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_maxID++;</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> SwitchingForm::OnOKButtonClick(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>  std::vector<long> itemList;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">long</span> item = -1;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">while</span>(<span class="keyword">true</span>) {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  item = m_listCtrlSwitchings->GetNextItem(item);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span>(item == -1) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  itemList.push_back(item);</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>  <a class="code" href="struct_switching_data.html">SwitchingData</a> data;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)itemList.size(); i++) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span>(m_listCtrlSwitchings->GetItemText(itemList[i], 0) == _(<span class="stringliteral">"Insert"</span>))</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  data.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.push_back(<a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7">SW_INSERT</a>);</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>  data.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.push_back(<a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776">SW_REMOVE</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="keywordtype">double</span> swTime;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_listCtrlSwitchings->GetItemText(itemList[i], 1).ToDouble(&swTime);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  data.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.push_back(swTime);</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_element->SetSwitchingData(data);</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>(data.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.size() != 0)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_element->SetDynamicEvent(<span class="keyword">true</span>);</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_element->SetDynamicEvent(<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>  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> SwitchingForm::OnRemoveButtonClick(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>  std::vector<long> itemList;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">long</span> item = -1;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">while</span>(<span class="keyword">true</span>) {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  item = m_listCtrlSwitchings->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span>(item == -1) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  itemList.push_back(item);</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="keywordtype">int</span> i = (<span class="keywordtype">int</span>)itemList.size() - 1; i >= 0; i--) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_listCtrlSwitchings->DeleteItem(itemList[i]);</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> SwitchingForm::OnChangeProperties(wxPropertyGridEvent& event) {}</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="keywordtype">void</span> SwitchingForm::OnSelectItem(wxListEvent& event) {}</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keywordtype">void</span> SwitchingForm::OnDownButtonClick(wxCommandEvent& event)</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>  std::vector<long> selectedList;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  std::vector<long> itemList;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">long</span> item = -1;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">while</span>(<span class="keyword">true</span>) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  item = m_listCtrlSwitchings->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span>(item == -1) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  selectedList.push_back(item);</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">while</span>(<span class="keyword">true</span>) {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  item = m_listCtrlSwitchings->GetNextItem(item);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span>(item == -1) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  itemList.push_back(item);</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>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < (int)itemList.size(); i++) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)selectedList.size(); j++) {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">if</span>(itemList[i - 1] == selectedList[j]) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  wxString col1Str[2];</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  wxString col2Str[2];</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>  col1Str[0] = m_listCtrlSwitchings->GetItemText(itemList[i], 0);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  col1Str[1] = m_listCtrlSwitchings->GetItemText(selectedList[j], 0);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  col2Str[0] = m_listCtrlSwitchings->GetItemText(itemList[i], 1);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  col2Str[1] = m_listCtrlSwitchings->GetItemText(selectedList[j], 1);</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_listCtrlSwitchings->SetItem(itemList[i], 0, col1Str[1]);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_listCtrlSwitchings->SetItem(selectedList[j], 0, col1Str[0]);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_listCtrlSwitchings->SetItem(itemList[i], 1, col2Str[1]);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  m_listCtrlSwitchings->SetItem(selectedList[j], 1, col2Str[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>  m_listCtrlSwitchings->SetItemState(itemList[i], wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_listCtrlSwitchings->SetItemState(selectedList[j], 0, wxLIST_STATE_SELECTED);</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>  i++;</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>  }</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> }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="keywordtype">void</span> SwitchingForm::OnUpButtonClick(wxCommandEvent& event)</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>  std::vector<long> selectedList;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  std::vector<long> itemList;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordtype">long</span> item = -1;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">while</span>(<span class="keyword">true</span>) {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  item = m_listCtrlSwitchings->GetNextItem(item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">if</span>(item == -1) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  selectedList.push_back(item);</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">while</span>(<span class="keyword">true</span>) {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  item = m_listCtrlSwitchings->GetNextItem(item);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span>(item == -1) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  itemList.push_back(item);</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>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)itemList.size(); i++) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)selectedList.size(); j++) {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">if</span>(i + 1 < (<span class="keywordtype">int</span>)itemList.size()) {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span>(itemList[i + 1] == selectedList[j]) {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  wxString col1Str[2];</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  wxString col2Str[2];</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>  col1Str[0] = m_listCtrlSwitchings->GetItemText(itemList[i], 0);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  col1Str[1] = m_listCtrlSwitchings->GetItemText(selectedList[j], 0);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  col2Str[0] = m_listCtrlSwitchings->GetItemText(itemList[i], 1);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  col2Str[1] = m_listCtrlSwitchings->GetItemText(selectedList[j], 1);</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_listCtrlSwitchings->SetItem(itemList[i], 0, col1Str[1]);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_listCtrlSwitchings->SetItem(selectedList[j], 0, col1Str[0]);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  m_listCtrlSwitchings->SetItem(itemList[i], 1, col2Str[1]);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  m_listCtrlSwitchings->SetItem(selectedList[j], 1, col2Str[0]);</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>  m_listCtrlSwitchings->SetItemState(itemList[i], wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  m_listCtrlSwitchings->SetItemState(selectedList[j], 0, wxLIST_STATE_SELECTED);</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>  i++;</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>  }</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>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</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="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#l00076">PowerElement.h:76</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="_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="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#l00165">PowerElement.h: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#l00100">PowerElement.h:100</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#l00053">PowerElement.h:53</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="_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 --> <!-- start footer part --> diff --git a/docs/doxygen/html/_switching_form_8h.html b/docs/doxygen/html/_switching_form_8h.html new file mode 100644 index 0000000..473756f --- /dev/null +++ b/docs/doxygen/html/_switching_form_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/SwitchingForm.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('_switching_form_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">SwitchingForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +</div> +<p><a href="_switching_form_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_switching_form.html">SwitchingForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the switching data of power elements for electromechanical transient studies. <a href="class_switching_form.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="_switching_form_8h.html">SwitchingForm.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/_switching_form_8h_source.html b/docs/doxygen/html/_switching_form_8h_source.html index 1a898bc..51cbf31 100644 --- a/docs/doxygen/html/_switching_form_8h_source.html +++ b/docs/doxygen/html/_switching_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,15 @@ $(document).ready(function(){initNavTree('_switching_form_8h_source.html','');}) <div class="title">SwitchingForm.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="preprocessor">#ifndef SWITCHINGFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define SWITCHINGFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_power_element.html">PowerElement</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_switching_form.html"> 8</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="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a>(wxWindow* parent);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</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="l00013"></a><span class="lineno"> 13</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_switching_form.html">SwitchingForm</a>();</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnDownButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnUpButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnChangeProperties(wxPropertyGridEvent& event);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSelectItem(wxListEvent& event);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnInsertButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRemoveButtonClick(wxCommandEvent& event);</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="keywordtype">int</span> m_maxID = 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>  <a class="code" href="class_power_element.html">PowerElement</a>* m_element = NULL;</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="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="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00008">SwitchingForm.h:8</a></div></div> +<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#l00100">PowerElement.h:100</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><!-- 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>SwitchingForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_switching_form_8h.html">SwitchingForm.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_generator_8cpp_source.html b/docs/doxygen/html/_sync_generator_8cpp_source.html index 5763fa9..a4d6412 100644 --- a/docs/doxygen/html/_sync_generator_8cpp_source.html +++ b/docs/doxygen/html/_sync_generator_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,27 +88,29 @@ $(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="preprocessor">#include "SyncMachineForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "SyncGenerator.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "ControlElementContainer.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> SyncGenerator::SyncGenerator() : <a class="code" href="class_machines.html">Machines</a>() { Init(); }</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> SyncGenerator::SyncGenerator(wxString name) : <a class="code" href="class_machines.html">Machines</a>()</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>  Init();</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  m_electricalData.name = name;</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> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> SyncGenerator::~SyncGenerator() {}</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="keywordtype">void</span> SyncGenerator::Init()</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> {</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keywordtype">int</span> numPtsSine = 10;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keywordtype">double</span> mx = 15.0;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordtype">double</span> my = 10.0;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keywordtype">double</span> pi = 3.14159265359;</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="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i <= numPtsSine; i++) {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</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="l00022"></a><span class="lineno"> 22</span>  <span class="keywordtype">double</span> y = std::sin(x);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_sinePts.push_back(wxPoint2DDouble((x / pi) * mx, y * my));</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>  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="l00027"></a><span class="lineno"> 27</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="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="keywordtype">void</span> SyncGenerator::DrawSymbol()<span class="keyword"> const</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword"></span>{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="comment">// Draw sine.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  std::vector<wxPoint2DDouble> sinePts;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</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="l00035"></a><span class="lineno"> 35</span>  sinePts.push_back(m_sinePts[i] + m_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>  DrawLine(sinePts);</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_sync_generator.html#a24b9894fa42473dfb8bcf82221401a97"> 39</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="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</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="l00042"></a><span class="lineno"> 42</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">return</span> <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> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="class_sync_generator.html#a4a9dd07d901f26cc8304399fe241afec"> 46</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="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</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="l00049"></a><span class="lineno"> 49</span>  generatorForm->SetTitle(_(<span class="stringliteral">"Generator"</span>));</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span>(generatorForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  generatorForm->Destroy();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">return</span> <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> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  generatorForm->Destroy();</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"> 59</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="l00060"></a><span class="lineno"> 60</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">double</span> machineBasePower = 1.0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  machineBasePower = GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</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="comment">// Active power</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">double</span> activePower = GetValueFromUnit(data.activePower, data.activePowerUnit);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span>(!m_online) activePower = 0.0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</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="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.activePower = (activePower * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  data.activePower = activePower / systemPowerBase;</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>  data.activePowerUnit = <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> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// Reactive power</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">double</span> reactivePower = GetValueFromUnit(data.reactivePower, data.reactivePowerUnit);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span>(!m_online) reactivePower = 0.0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</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="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.reactivePower = (reactivePower * machineBasePower) / systemPowerBase;</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>  data.reactivePower = reactivePower / systemPowerBase;</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>  data.reactivePowerUnit = <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> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// Max reactive power</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">double</span> maxReactive = GetValueFromUnit(data.maxReactive, data.maxReactiveUnit);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</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="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.maxReactive = (maxReactive * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  data.maxReactive = maxReactive / systemPowerBase;</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>  data.maxReactiveUnit = <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> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// Min reactive power</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">double</span> minReactive = GetValueFromUnit(data.minReactive, data.minReactiveUnit);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</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="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.minReactive = (minReactive * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  data.minReactive = minReactive / systemPowerBase;</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>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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">double</span> baseVoltage = GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">double</span> systemBaseImpedance = (baseVoltage * baseVoltage) / systemPowerBase;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">double</span> machineBaseImpedance = (baseVoltage * baseVoltage) / machineBasePower;</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">// Fault data</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  data.positiveResistance = (data.positiveResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  data.positiveReactance = (data.positiveReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  data.negativeResistance = (data.negativeResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  data.negativeReactance = (data.negativeReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  data.zeroResistance = (data.zeroResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  data.zeroReactance = (data.zeroReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  data.groundResistance = (data.groundResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  data.groundReactance = (data.groundReactance * machineBaseImpedance) / systemBaseImpedance;</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="keywordflow">if</span>(!m_online) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  data.faultCurrent[0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  data.faultCurrent[1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  data.faultCurrent[2] = std::complex<double>(0, 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> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">return</span> data;</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_sync_generator.html#aaa4c5978dc6d344747d74e36fb3e71d8"> 130</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="l00131"></a><span class="lineno"> 131</span>  std::vector<ElectricalUnit> nominalVoltageUnit)</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>(nominalVoltage.size() > 0) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_electricalData.nominalVoltage = nominalVoltage[0];</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_electricalData.nominalVoltageUnit = nominalVoltageUnit[0];</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> </div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="class_sync_generator.html#a9130e8714c1518683540f587aca1201f"> 139</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="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_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="l00142"></a><span class="lineno"> 142</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">auto</span> data = copy->GetElectricalData();</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="comment">// Copy AVR</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  std::vector<ConnectionLine*> cLineList;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  std::vector<ControlElement*> elementList;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_electricalData.avr->GetContainerCopy(elementList, cLineList);</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>  <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="l00151"></a><span class="lineno"> 151</span>  avrCopy->FillContainer(elementList, cLineList);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  data.avr = avrCopy;</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">// Copy Speed Governor</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  cLineList.clear();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  elementList.clear();</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_electricalData.speedGov->GetContainerCopy(elementList, cLineList);</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="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="l00160"></a><span class="lineno"> 160</span>  speedGovCopy->FillContainer(elementList, cLineList);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  data.speedGov = speedGovCopy;</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>  copy->SetElectricalData(data);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">return</span> copy;</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> </div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="class_sync_generator.html#a9454438d059269c194e1aa648e122f7e"> 167</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="l00168"></a><span class="lineno"> 168</span> <span class="keyword"></span>{</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordtype">double</span> activePower = m_electricalData.activePower;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">if</span>(!m_online) activePower = 0.0;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  tipText += _(<span class="stringliteral">"\nP = "</span>) + wxString::FromDouble(activePower, 5);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">switch</span>(m_electricalData.activePowerUnit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  tipText += _(<span class="stringliteral">" W"</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  tipText += _(<span class="stringliteral">" kW"</span>);</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#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  tipText += _(<span class="stringliteral">" MW"</span>);</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">default</span>:</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">break</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"> 190</span>  <span class="keywordtype">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span>(!m_online) reactivePower = 0.0;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">case</span> <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>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  tipText += _(<span class="stringliteral">" VAr"</span>);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  tipText += _(<span class="stringliteral">" kVAr"</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  tipText += _(<span class="stringliteral">" MVAr"</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">default</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>  }</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="keywordflow">return</span> tipText;</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"><a class="line" href="class_sync_generator.html#afcb0a1c03dab5ede586e5d15231f2cab"> 213</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="l00214"></a><span class="lineno"> 214</span> {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</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="l00216"></a><span class="lineno"> 216</span>  plotData.SetName(m_electricalData.name);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  plotData.SetCurveType(ElementPlotData::CT_SYNC_GENERATOR);</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>  std::vector<double> absTerminalVoltage, activePower, reactivePower;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</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="l00221"></a><span class="lineno"> 221</span>  absTerminalVoltage.push_back(std::abs(m_electricalData.terminalVoltageVector[i]));</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  activePower.push_back(std::real(m_electricalData.electricalPowerVector[i]));</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  reactivePower.push_back(std::imag(m_electricalData.electricalPowerVector[i]));</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>  plotData.AddData(absTerminalVoltage, _(<span class="stringliteral">"Terminal voltage"</span>));</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  plotData.AddData(activePower, _(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  plotData.AddData(reactivePower, _(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  plotData.AddData(m_electricalData.mechanicalPowerVector, _(<span class="stringliteral">"Mechanical power"</span>));</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  plotData.AddData(m_electricalData.freqVector, _(<span class="stringliteral">"Frequency"</span>));</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  plotData.AddData(m_electricalData.fieldVoltageVector, _(<span class="stringliteral">"Field voltage"</span>));</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  plotData.AddData(m_electricalData.deltaVector, _(<span class="stringliteral">"Delta"</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="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#l00008">SyncGenerator.h:8</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#l00088">Element.h:88</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#l00033">Element.h:33</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#l00213">SyncGenerator.cpp:213</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#l00019">PowerElement.h:19</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#l00110">SyncGenerator.h:110</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#l00012">PowerElement.h:12</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#l00018">PowerElement.h:18</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="ttdef"><b>Definition:</b> <a href="_sync_machine_form_8h_source.html#l00010">SyncMachineForm.h:10</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#l00139">SyncGenerator.cpp:139</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#l00039">ElementPlotData.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#l00025">PowerElement.h:25</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#l00167">SyncGenerator.cpp:167</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#l00024">PowerElement.h:24</a></div></div> -<div class="ttc" id="class_sync_generator_html_a4a9dd07d901f26cc8304399fe241afec"><div class="ttname"><a href="class_sync_generator.html#a4a9dd07d901f26cc8304399fe241afec">SyncGenerator::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_generator_8cpp_source.html#l00046">SyncGenerator.cpp:46</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="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00020">ControlElementContainer.h:20</a></div></div> -<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#l00130">SyncGenerator.cpp:130</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#l00023">PowerElement.h:23</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#l00039">SyncGenerator.cpp:39</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#l00009">Machines.h:9</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#l00017">PowerElement.h:17</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 "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="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="_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="_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="_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> +<div class="ttc" id="class_sync_generator_html_a4a9dd07d901f26cc8304399fe241afec"><div class="ttname"><a href="class_sync_generator.html#a4a9dd07d901f26cc8304399fe241afec">SyncGenerator::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_generator_8cpp_source.html#l00063">SyncGenerator.cpp:63</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="_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_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="_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 --> <!-- start footer part --> diff --git a/docs/doxygen/html/_sync_generator_8h_source.html b/docs/doxygen/html/_sync_generator_8h_source.html index 6453d66..8e16b85 100644 --- a/docs/doxygen/html/_sync_generator_8h_source.html +++ b/docs/doxygen/html/_sync_generator_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,20 +88,20 @@ $(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="preprocessor">#ifndef SYNCGENERATOR_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define SYNCGENERATOR_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "Machines.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="struct_sync_generator_electrical_data.html"> 8</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="l00009"></a><span class="lineno"> 9</span>  <span class="comment">// General</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  wxString name = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keywordtype">double</span> nominalPower = 100.0;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</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="l00013"></a><span class="lineno"> 13</span>  <span class="keywordtype">double</span> nominalVoltage = 13.8;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</span>  <span class="keywordtype">double</span> activePower = 100.0;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</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="l00017"></a><span class="lineno"> 17</span>  <span class="keywordtype">double</span> reactivePower = 0.0;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</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="l00019"></a><span class="lineno"> 19</span>  <span class="keywordtype">bool</span> haveMaxReactive = <span class="keyword">false</span>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordtype">double</span> maxReactive = 9999.0;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</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="l00022"></a><span class="lineno"> 22</span>  <span class="keywordtype">bool</span> haveMinReactive = <span class="keyword">false</span>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordtype">double</span> minReactive = -9999.0;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</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="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">bool</span> useMachineBase = <span class="keyword">true</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">// Fault</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">double</span> positiveResistance = 0.0;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordtype">double</span> positiveReactance = 1.0;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> negativeResistance = 0.0;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">double</span> negativeReactance = 1.0;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">double</span> zeroResistance = 0.0;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">double</span> zeroReactance = 1.0;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">double</span> groundResistance = 0.0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">double</span> groundReactance = 0.0;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">bool</span> groundNeutral = <span class="keyword">true</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">// p.u. fault data</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</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="l00039"></a><span class="lineno"> 39</span>  std::complex<double>(0.0, 0.0)};</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">bool</span> plotSyncMachine = <span class="keyword">false</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">double</span> inertia = 1.0;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">double</span> damping = 0.0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">bool</span> useAVR = <span class="keyword">false</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">bool</span> useSpeedGovernor = <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="keywordtype">double</span> armResistance = 0.0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">double</span> potierReactance = 0.0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">double</span> satFactor = 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="keywordtype">double</span> syncXd = 0.0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">double</span> syncXq = 0.0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">double</span> transXd = 1.0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">double</span> transXq = 0.0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">double</span> transTd0 = 0.0;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">double</span> transTq0 = 0.0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">double</span> subXd = 0.0;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">double</span> subXq = 0.0;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">double</span> subTd0 = 0.0;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">double</span> subTq0 = 0.0;</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="comment">// Machine state variables</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  std::complex<double> terminalVoltage;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  std::vector<std::complex<double> > terminalVoltageVector;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  std::complex<double> electricalPower;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  std::vector<std::complex<double> > electricalPowerVector;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">double</span> pm;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  std::vector<double> mechanicalPowerVector;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">double</span> speed;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  std::vector<double> freqVector;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">double</span> fieldVoltage;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  std::vector<double> fieldVoltageVector;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">double</span> delta;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::vector<double> deltaVector;</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">double</span> initialFieldVoltage;</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="comment">// Internal machine variables</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">double</span> tranEq;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">double</span> tranEd;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordtype">double</span> subEq;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">double</span> subEd;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">double</span> pe;</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">// Variables to extrapolate</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">double</span> oldId;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">double</span> oldIq;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">double</span> oldPe;</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">// Integration constants</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSpeed;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icDelta;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icTranEq;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icTranEd;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSubEq;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSubEd;</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="comment">// Control</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* avr = NULL;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* speedGov = 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>  <span class="comment">// Control solvers</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>* avrSolver = NULL;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>* speedGovSolver = NULL;</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>  Machines::SyncMachineModel model = Machines::SM_MODEL_1;</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_sync_generator.html"> 110</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="l00111"></a><span class="lineno"> 111</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>(wxString name);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  ~<a class="code" href="class_sync_generator.html">SyncGenerator</a>();</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="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Init();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawSymbol() <span class="keyword">const</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</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="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</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="l00124"></a><span class="lineno"> 124</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="l00125"></a><span class="lineno"> 125</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="l00126"></a><span class="lineno"> 126</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="l00127"></a><span class="lineno"> 127</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="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  std::vector<wxPoint2DDouble> m_sinePts;</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>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> m_electricalData;</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="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#l00008">SyncGenerator.h:8</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#l00088">Element.h:88</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="ttdef"><b>Definition:</b> <a href="_control_element_solver_8h_source.html#l00020">ControlElementSolver.h:20</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#l00110">SyncGenerator.h:110</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#l00019">PowerElement.h:19</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#l00014">PowerElement.h:14</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#l00011">PowerElement.h:11</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#l00088">PowerElement.h:88</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="ttdef"><b>Definition:</b> <a href="_sync_machine_form_8h_source.html#l00010">SyncMachineForm.h:10</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#l00039">ElementPlotData.h:39</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#l00022">PowerElement.h:22</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#l00025">PowerElement.h:25</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="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00020">ControlElementContainer.h:20</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#l00009">Machines.h:9</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">#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> +<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="_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="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="_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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_sync_machine_form_8cpp_source.html b/docs/doxygen/html/_sync_machine_form_8cpp_source.html index d780763..cf10a40 100644 --- a/docs/doxygen/html/_sync_machine_form_8cpp_source.html +++ b/docs/doxygen/html/_sync_machine_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,23 +88,25 @@ $(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="preprocessor">#include "GeneratorStabForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "SyncMachineForm.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "SyncGenerator.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "SyncMotor.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</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="l00007"></a><span class="lineno"> 7</span> {</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  ReplaceStaticTextLabelChar(m_staticTextPosResistance, L<span class="stringliteral">'\u2081'</span>);</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  ReplaceStaticTextLabelChar(m_staticTextPosReactance, L<span class="stringliteral">'\u2081'</span>);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  ReplaceStaticTextLabelChar(m_staticTextNegResistance, L<span class="stringliteral">'\u2082'</span>);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  ReplaceStaticTextLabelChar(m_staticTextNegReactance, L<span class="stringliteral">'\u2082'</span>);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  ReplaceStaticTextLabelChar(m_staticTextZeroResistance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  ReplaceStaticTextLabelChar(m_staticTextZeroReactance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  Layout();</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_syncGenerator = syncGenerator;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  m_parent = parent;</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>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = syncGenerator->GetElectricalData();</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>  m_textCtrlName->SetValue(data.name);</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_textCtrlnominalPower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.nominalPower));</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordflow">switch</span>(data.nominalPowerUnit) {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>:</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_choiceNominalPower->SetSelection(0);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_choiceNominalPower->SetSelection(1);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">break</span>;</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#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>:</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_choiceNominalPower->SetSelection(2);</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">default</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>  }</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_textCtrlActivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.activePower));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_choiceActivePower->SetSelection(0);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_choiceActivePower->SetSelection(1);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>:</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_choiceActivePower->SetSelection(2);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">break</span>;</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#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_choiceActivePower->SetSelection(3);</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>  <span class="keywordflow">break</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>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_choiceReactivePower->SetSelection(0);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  m_choiceReactivePower->SetSelection(1);</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#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_choiceReactivePower->SetSelection(2);</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#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_choiceReactivePower->SetSelection(3);</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>  m_checkBoxMaxReactive->SetValue(data.haveMaxReactive);</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>  m_textCtrlMaxRectivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.maxReactive));</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">switch</span>(data.maxReactiveUnit) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_choiceMaxRectivePower->SetSelection(0);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_choiceMaxRectivePower->SetSelection(1);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_choiceMaxRectivePower->SetSelection(2);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_choiceMaxRectivePower->SetSelection(3);</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>  <span class="keywordflow">break</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>  m_textCtrlMaxRectivePower->Enable(data.haveMaxReactive);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  m_choiceMaxRectivePower->Enable(data.haveMaxReactive);</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_checkBoxMinReactive->SetValue(data.haveMinReactive);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_textCtrlMinRectivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.minReactive));</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">switch</span>(data.minReactiveUnit) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  m_choiceMinRectivePower->SetSelection(0);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_choiceMinRectivePower->SetSelection(1);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_choiceMinRectivePower->SetSelection(2);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  m_choiceMinRectivePower->SetSelection(3);</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">default</span>:</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">break</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>  m_textCtrlMinRectivePower->Enable(data.haveMinReactive);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  m_choiceMinRectivePower->Enable(data.haveMinReactive);</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_checkBoxUseMachinePower->SetValue(data.useMachineBase);</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_textCtrlPosResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.positiveResistance));</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_textCtrlPosReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.positiveReactance));</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_textCtrlNegResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.negativeResistance));</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_textCtrlNegReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.negativeReactance));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_textCtrlZeroResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::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">SyncGenerator::StringFromDouble</a>(data.zeroReactance));</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  m_textCtrlGrdResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.groundResistance));</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_textCtrlGrdReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.groundReactance));</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_checkBoxGroundNeutral->SetValue(data.groundNeutral);</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> 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="l00130"></a><span class="lineno"> 130</span> {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_buttonStab->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  ReplaceStaticTextLabelChar(m_staticTextPosResistance, L<span class="stringliteral">'\u2081'</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  ReplaceStaticTextLabelChar(m_staticTextPosReactance, L<span class="stringliteral">'\u2081'</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  ReplaceStaticTextLabelChar(m_staticTextNegResistance, L<span class="stringliteral">'\u2082'</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  ReplaceStaticTextLabelChar(m_staticTextNegReactance, L<span class="stringliteral">'\u2082'</span>);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  ReplaceStaticTextLabelChar(m_staticTextZeroResistance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  ReplaceStaticTextLabelChar(m_staticTextZeroReactance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  Layout();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  m_syncMotor = syncMotor;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_parent = parent;</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="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = syncMotor->GetElectricalData();</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_textCtrlName->SetValue(data.name);</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>  m_textCtrlnominalPower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.nominalPower));</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">switch</span>(data.nominalPowerUnit) {</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#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>:</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_choiceNominalPower->SetSelection(0);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>:</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  m_choiceNominalPower->SetSelection(1);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">break</span>;</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#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>:</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_choiceNominalPower->SetSelection(2);</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">default</span>:</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>  }</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_textCtrlActivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.activePower));</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_choiceActivePower->SetSelection(0);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>:</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_choiceActivePower->SetSelection(1);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>:</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  m_choiceActivePower->SetSelection(2);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>:</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  m_choiceActivePower->SetSelection(3);</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">default</span>:</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>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">case</span> <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>  m_choiceReactivePower->SetSelection(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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  m_choiceReactivePower->SetSelection(1);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  m_choiceReactivePower->SetSelection(2);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  m_choiceReactivePower->SetSelection(3);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">default</span>:</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>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  m_checkBoxMaxReactive->SetValue(data.haveMaxReactive);</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>  m_textCtrlMaxRectivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.maxReactive));</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">switch</span>(data.maxReactiveUnit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  m_choiceMaxRectivePower->SetSelection(0);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  m_choiceMaxRectivePower->SetSelection(1);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  m_choiceMaxRectivePower->SetSelection(2);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  m_choiceMaxRectivePower->SetSelection(3);</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>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">break</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"> 216</span>  m_textCtrlMaxRectivePower->Enable(data.haveMaxReactive);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  m_choiceMaxRectivePower->Enable(data.haveMaxReactive);</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>  m_checkBoxMinReactive->SetValue(data.haveMinReactive);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  m_textCtrlMinRectivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.minReactive));</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">switch</span>(data.minReactiveUnit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  m_choiceMinRectivePower->SetSelection(0);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  m_choiceMinRectivePower->SetSelection(1);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  m_choiceMinRectivePower->SetSelection(2);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  m_choiceMinRectivePower->SetSelection(3);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">default</span>:</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>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  m_textCtrlMinRectivePower->Enable(data.haveMinReactive);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  m_choiceMinRectivePower->Enable(data.haveMinReactive);</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>  m_checkBoxUseMachinePower->SetValue(data.useMachineBase);</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_textCtrlPosResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.positiveResistance));</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  m_textCtrlPosReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.positiveReactance));</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  m_textCtrlNegResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.negativeResistance));</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  m_textCtrlNegReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.negativeReactance));</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  m_textCtrlZeroResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.zeroResistance));</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  m_textCtrlZeroReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.zeroReactance));</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  m_textCtrlGrdResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.groundResistance));</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  m_textCtrlGrdReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.groundReactance));</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  m_checkBoxGroundNeutral->SetValue(data.groundNeutral);</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> SyncMachineForm::~SyncMachineForm() {}</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="keywordtype">void</span> SyncMachineForm::OnCheckMaxReactive(wxCommandEvent& event)</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>  m_textCtrlMaxRectivePower->Enable(m_checkBoxMaxReactive->GetValue());</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  m_choiceMaxRectivePower->Enable(m_checkBoxMaxReactive->GetValue());</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="keywordtype">void</span> SyncMachineForm::OnCheckMinReactive(wxCommandEvent& event)</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>  m_textCtrlMinRectivePower->Enable(m_checkBoxMinReactive->GetValue());</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  m_choiceMinRectivePower->Enable(m_checkBoxMinReactive->GetValue());</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="keywordtype">void</span> SyncMachineForm::OnOKButtonClick(wxCommandEvent& event)</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>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</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> SyncMachineForm::OnStabilityButtonClick(wxCommandEvent& event)</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="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">if</span>(m_syncGenerator) {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</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="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">if</span>(stabForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  stabForm->Destroy();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  EndModal(wxID_OK);</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>  stabForm->Destroy();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  EndModal(wxID_CANCEL);</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="keywordtype">bool</span> SyncMachineForm::ValidateData()</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>  <span class="keywordflow">if</span>(m_syncGenerator) {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = m_syncGenerator->GetElectricalData();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  data.name = m_textCtrlName->GetValue();</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>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlnominalPower->GetValue(), data.nominalPower,</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Nominal power\"."</span>)))</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">switch</span>(m_choiceNominalPower->GetSelection()) {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  data.nominalPowerUnit = <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  data.nominalPowerUnit = <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  data.nominalPowerUnit = <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>  <span class="keywordflow">break</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> </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlActivePower->GetValue(), data.activePower,</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Active power\"."</span>)))</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">switch</span>(m_choiceActivePower->GetSelection()) {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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> 1:</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>;</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> 2:</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>;</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> 3:</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</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> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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> 1:</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</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">case</span> 2:</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">break</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>  data.haveMaxReactive = m_checkBoxMaxReactive->GetValue();</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">if</span>(data.haveMaxReactive) {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlMaxRectivePower->GetValue(), data.maxReactive,</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Max reactive power\"."</span>)))</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">switch</span>(m_choiceMaxRectivePower->GetSelection()) {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</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> 1:</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</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> 2:</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</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>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">break</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> </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  data.haveMinReactive = m_checkBoxMinReactive->GetValue();</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">if</span>(data.haveMinReactive) {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlMinRectivePower->GetValue(), data.minReactive,</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Min reactive power\"."</span>)))</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">switch</span>(m_choiceMinRectivePower->GetSelection()) {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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> 1:</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</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>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">break</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>  data.useMachineBase = m_checkBoxUseMachinePower->GetValue();</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>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlPosResistance->GetValue(), data.positiveResistance,</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Positive resistance\"."</span>)))</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlPosReactance->GetValue(), data.positiveReactance,</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Positive reactance\"."</span>)))</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">return</span> <span class="keyword">false</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_syncGenerator->DoubleFromString(m_parent, m_textCtrlNegResistance->GetValue(), data.negativeResistance,</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Negative resistance\"."</span>)))</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">return</span> <span class="keyword">false</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">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlNegReactance->GetValue(), data.negativeReactance,</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Negative reactance\"."</span>)))</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlZeroResistance->GetValue(), data.zeroResistance,</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero resistance\"."</span>)))</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlZeroReactance->GetValue(), data.zeroReactance,</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero reactance\"."</span>)))</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>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlGrdResistance->GetValue(), data.groundResistance,</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Ground resistance\"."</span>)))</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlGrdReactance->GetValue(), data.groundReactance,</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Ground reactance\"."</span>)))</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</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>  data.groundNeutral = m_checkBoxGroundNeutral->GetValue();</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>  m_syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_syncMotor) {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = m_syncMotor->GetElectricalData();</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  data.name = m_textCtrlName->GetValue();</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">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlnominalPower->GetValue(), data.nominalPower,</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Nominal power\"."</span>)))</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>  <span class="keywordflow">switch</span>(m_choiceNominalPower->GetSelection()) {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>;</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>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>;</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> 2:</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</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> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlActivePower->GetValue(), data.activePower,</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Active power\"."</span>)))</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">switch</span>(m_choiceActivePower->GetSelection()) {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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> 1:</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</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>  }</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">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  data.reactivePowerUnit = <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  data.reactivePowerUnit = <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  data.reactivePowerUnit = <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>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">break</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>  data.haveMaxReactive = m_checkBoxMaxReactive->GetValue();</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">if</span>(data.haveMaxReactive) {</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlMaxRectivePower->GetValue(), data.maxReactive,</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Max reactive power\"."</span>)))</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">switch</span>(m_choiceMaxRectivePower->GetSelection()) {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</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> 1:</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</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> 2:</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</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>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</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>  }</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>  data.haveMinReactive = m_checkBoxMinReactive->GetValue();</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">if</span>(data.haveMinReactive) {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlMinRectivePower->GetValue(), data.minReactive,</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Min reactive power\"."</span>)))</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">switch</span>(m_choiceMinRectivePower->GetSelection()) {</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">break</span>;</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> </div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  data.useMachineBase = m_checkBoxUseMachinePower->GetValue();</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>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlPosResistance->GetValue(), data.positiveResistance,</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Positive resistance\"."</span>)))</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">return</span> <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>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlPosReactance->GetValue(), data.positiveReactance,</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Positive reactance\"."</span>)))</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlNegResistance->GetValue(), data.negativeResistance,</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Negative resistance\"."</span>)))</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlNegReactance->GetValue(), data.negativeReactance,</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Negative reactance\"."</span>)))</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordflow">return</span> <span class="keyword">false</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="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlZeroResistance->GetValue(), data.zeroResistance,</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero resistance\"."</span>)))</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</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>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlZeroReactance->GetValue(), data.zeroReactance,</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero reactance\"."</span>)))</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlGrdResistance->GetValue(), data.groundResistance,</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Ground resistance\"."</span>)))</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlGrdReactance->GetValue(), data.groundReactance,</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Ground reactance\"."</span>)))</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  data.groundNeutral = m_checkBoxGroundNeutral->GetValue();</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>  m_syncMotor->SetElectricalData(data);</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">return</span> <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="keywordtype">void</span> SyncMachineForm::ReplaceStaticTextLabelChar(wxStaticText* staticText, <span class="keywordtype">wchar_t</span> newChar)</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>  wxString label = staticText->GetLabel();</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  label[label.length() - 2] = newChar;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  staticText->SetLabel(label);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</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#l00008">SyncGenerator.h:8</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#l00019">PowerElement.h:19</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#l00110">SyncGenerator.h:110</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 "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="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="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_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#l00012">PowerElement.h:12</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#l00018">PowerElement.h:18</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#l00022">PowerElement.h:22</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="ttdef"><b>Definition:</b> <a href="_generator_stab_form_8h_source.html#l00011">GeneratorStabForm.h:11</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#l00025">PowerElement.h:25</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#l00024">PowerElement.h:24</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#l00110">SyncMotor.h:110</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#l00023">PowerElement.h:23</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#l00300">Element.cpp:300</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#l00020">PowerElement.h:20</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#l00021">PowerElement.h:21</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#l00017">PowerElement.h:17</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#l00008">SyncMotor.h:8</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="_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="_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> +<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="_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> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_sync_machine_form_8h.html b/docs/doxygen/html/_sync_machine_form_8h.html new file mode 100644 index 0000000..30ad9aa --- /dev/null +++ b/docs/doxygen/html/_sync_machine_form_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/SyncMachineForm.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_machine_form_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">SyncMachineForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +</div> +<p><a href="_sync_machine_form_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_sync_machine_form.html">SyncMachineForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the synchronous machine power data. <a href="class_sync_machine_form.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_machine_form_8h.html">SyncMachineForm.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_machine_form_8h_source.html b/docs/doxygen/html/_sync_machine_form_8h_source.html index e57afbf..bd189b2 100644 --- a/docs/doxygen/html/_sync_machine_form_8h_source.html +++ b/docs/doxygen/html/_sync_machine_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,17 +88,17 @@ $(document).ready(function(){initNavTree('_sync_machine_form_8h_source.html','') <div class="title">SyncMachineForm.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="preprocessor">#ifndef SYNCMACHINEFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define SYNCMACHINEFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_generator_stab_form.html">GeneratorStabForm</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="keyword">class </span><a class="code" href="class_sync_generator.html">SyncGenerator</a>;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="keyword">class </span><a class="code" href="class_sync_motor.html">SyncMotor</a>;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"><a class="line" href="class_sync_machine_form.html"> 10</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="l00011"></a><span class="lineno"> 11</span> {</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</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="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>();</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); };</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCheckMaxReactive(wxCommandEvent& event);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCheckMinReactive(wxCommandEvent& event);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnStabilityButtonClick(wxCommandEvent& event);</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">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</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="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_sync_generator.html">SyncGenerator</a>* m_syncGenerator = NULL;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* m_syncMotor = NULL;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  wxWindow* m_parent = NULL;</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">#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#l00110">SyncGenerator.h:110</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="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</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="ttdef"><b>Definition:</b> <a href="_sync_machine_form_8h_source.html#l00010">SyncMachineForm.h:10</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="ttdef"><b>Definition:</b> <a href="_generator_stab_form_8h_source.html#l00011">GeneratorStabForm.h:11</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#l00110">SyncMotor.h:110</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><!-- 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>SyncMachineForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_sync_machine_form_8h.html">SyncMachineForm.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_motor_8cpp_source.html b/docs/doxygen/html/_sync_motor_8cpp_source.html index 2b95142..54f9987 100644 --- a/docs/doxygen/html/_sync_motor_8cpp_source.html +++ b/docs/doxygen/html/_sync_motor_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,24 +88,25 @@ $(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="preprocessor">#include "SyncMachineForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "SyncMotor.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> SyncMotor::SyncMotor() : <a class="code" href="class_machines.html">Machines</a>() {}</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> SyncMotor::SyncMotor(wxString name) : <a class="code" href="class_machines.html">Machines</a>() { m_electricalData.name = name; }</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> SyncMotor::~SyncMotor() {}</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</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="l00008"></a><span class="lineno"><a class="line" href="class_sync_motor.html#a7b3102220ea5f7e19690af045a6c8278"> 8</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="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</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="l00011"></a><span class="lineno"> 11</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> }</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"><a class="line" href="class_sync_motor.html#a3201b22e0271517f5ed3df85da6cee6f"> 16</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="l00017"></a><span class="lineno"> 17</span> {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</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="l00019"></a><span class="lineno"> 19</span>  syncMotorForm->SetTitle(_(<span class="stringliteral">"Synchronous Condenser"</span>));</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordflow">if</span>(syncMotorForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  syncMotorForm->Destroy();</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keywordflow">return</span> <span class="keyword">true</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> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  syncMotorForm->Destroy();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">return</span> <span class="keyword">false</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> <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="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">double</span> machineBasePower = 1.0;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  machineBasePower = GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</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="comment">// Active power</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">double</span> activePower = GetValueFromUnit(data.activePower, data.activePowerUnit);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span>(!m_online) activePower = 0.0;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</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="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.activePower = (activePower * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  data.activePower = activePower / systemPowerBase;</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>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</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="comment">// Reactive power</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">double</span> reactivePower = GetValueFromUnit(data.reactivePower, data.reactivePowerUnit);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span>(!m_online) reactivePower = 0.0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</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="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.reactivePower = (reactivePower * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  data.reactivePower = reactivePower / 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>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</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="comment">// Max reactive power</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">double</span> maxReactive = GetValueFromUnit(data.maxReactive, data.maxReactiveUnit);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</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="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.maxReactive = (maxReactive * machineBasePower) / systemPowerBase;</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>  data.maxReactive = maxReactive / systemPowerBase;</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>  data.maxReactiveUnit = <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> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Min reactive power</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">double</span> minReactive = GetValueFromUnit(data.minReactive, data.minReactiveUnit);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</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="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.minReactive = (minReactive * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  data.minReactive = minReactive / systemPowerBase;</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>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</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="keywordtype">double</span> baseVoltage = GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">double</span> systemBaseImpedance = (baseVoltage * baseVoltage) / systemPowerBase;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">double</span> machineBaseImpedance = (baseVoltage * baseVoltage) / machineBasePower;</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="comment">// Fault data</span></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>  data.positiveResistance = (data.positiveResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  data.positiveReactance = (data.positiveReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  data.negativeResistance = (data.negativeResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  data.negativeReactance = (data.negativeReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  data.zeroResistance = (data.zeroResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  data.zeroReactance = (data.zeroReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  data.groundResistance = (data.groundResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  data.groundReactance = (data.groundReactance * machineBaseImpedance) / systemBaseImpedance;</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="keywordflow">if</span>(!m_online) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  data.faultCurrent[0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  data.faultCurrent[1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  data.faultCurrent[2] = std::complex<double>(0, 0);</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="keywordflow">return</span> data;</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_sync_motor.html#a038162c828595f58782fe97dea2c864d"> 100</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="l00101"></a><span class="lineno"> 101</span> {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span>(nominalVoltage.size() > 0) {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_electricalData.nominalVoltage = nominalVoltage[0];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_electricalData.nominalVoltageUnit = nominalVoltageUnit[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> }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="class_sync_motor.html#a035b63a3dfd356daff0bf1cee9672313"> 108</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="l00109"></a><span class="lineno"> 109</span> {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</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="l00111"></a><span class="lineno"> 111</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> copy;</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_sync_motor.html#a2ab8e43d5452f5d7f9ac375566a65210"> 115</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="l00116"></a><span class="lineno"> 116</span> <span class="keyword"></span>{</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">double</span> activePower = m_electricalData.activePower;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">if</span>(!m_online) activePower = 0.0;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  tipText += _(<span class="stringliteral">"\nP = "</span>) + wxString::FromDouble(activePower, 5);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">switch</span>(m_electricalData.activePowerUnit) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">case</span> <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>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  tipText += _(<span class="stringliteral">" W"</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  tipText += _(<span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  tipText += _(<span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">break</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">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>(!m_online) reactivePower = 0.0;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  tipText += _(<span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  tipText += _(<span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  tipText += _(<span class="stringliteral">" MVAr"</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>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">break</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"> 158</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</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#l00088">Element.h:88</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#l00108">SyncMotor.cpp:108</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#l00008">SyncMotor.cpp:8</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#l00115">SyncMotor.cpp:115</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#l00033">Element.h:33</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#l00019">PowerElement.h:19</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#l00012">PowerElement.h:12</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#l00018">PowerElement.h:18</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="ttdef"><b>Definition:</b> <a href="_sync_machine_form_8h_source.html#l00010">SyncMachineForm.h:10</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#l00025">PowerElement.h:25</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#l00024">PowerElement.h:24</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#l00110">SyncMotor.h:110</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#l00023">PowerElement.h:23</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#l00100">SyncMotor.cpp:100</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#l00009">Machines.h:9</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#l00016">SyncMotor.cpp:16</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#l00017">PowerElement.h:17</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#l00008">SyncMotor.h:8</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 "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="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> +<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="_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="_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="_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_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> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_sync_motor_8h_source.html b/docs/doxygen/html/_sync_motor_8h_source.html index d4a2879..d443e20 100644 --- a/docs/doxygen/html/_sync_motor_8h_source.html +++ b/docs/doxygen/html/_sync_motor_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,19 +88,19 @@ $(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="preprocessor">#ifndef SYNCMOTOR_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define SYNCMOTOR_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "Machines.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="struct_sync_motor_electrical_data.html"> 8</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="l00009"></a><span class="lineno"> 9</span>  <span class="comment">// General</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  wxString name = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keywordtype">double</span> nominalPower = 100.0;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</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="l00013"></a><span class="lineno"> 13</span>  <span class="keywordtype">double</span> nominalVoltage = 13.8;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</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="l00015"></a><span class="lineno"> 15</span>  <span class="keywordtype">double</span> activePower = 100.0;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</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="l00017"></a><span class="lineno"> 17</span>  <span class="keywordtype">double</span> reactivePower = 0.0;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</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="l00019"></a><span class="lineno"> 19</span>  <span class="keywordtype">bool</span> haveMaxReactive = <span class="keyword">false</span>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordtype">double</span> maxReactive = 9999.0;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</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="l00022"></a><span class="lineno"> 22</span>  <span class="keywordtype">bool</span> haveMinReactive = <span class="keyword">false</span>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordtype">double</span> minReactive = -9999.0;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</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="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">bool</span> useMachineBase = <span class="keyword">true</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">// Fault</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">double</span> positiveResistance = 0.0;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordtype">double</span> positiveReactance = 1.0;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> negativeResistance = 0.0;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">double</span> negativeReactance = 1.0;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">double</span> zeroResistance = 0.0;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">double</span> zeroReactance = 1.0;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">double</span> groundResistance = 0.0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">double</span> groundReactance = 0.0;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">bool</span> groundNeutral = <span class="keyword">true</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">// p.u. fault data</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</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="l00039"></a><span class="lineno"> 39</span>  std::complex<double>(0.0, 0.0)};</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">bool</span> plotSyncMachine = <span class="keyword">false</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">double</span> inertia = 1.0;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">double</span> damping = 0.0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">bool</span> useAVR = <span class="keyword">false</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">bool</span> useSpeedGovernor = <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="keywordtype">double</span> armResistance = 0.0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">double</span> potierReactance = 0.0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">double</span> satFactor = 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="keywordtype">double</span> syncXd = 0.0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">double</span> syncXq = 0.0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">double</span> transXd = 1.0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">double</span> transXq = 0.0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">double</span> transTd0 = 0.0;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">double</span> transTq0 = 0.0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">double</span> subXd = 0.0;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">double</span> subXq = 0.0;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">double</span> subTd0 = 0.0;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">double</span> subTq0 = 0.0;</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="comment">// Machine state variables</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  std::complex<double> terminalVoltage;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  std::vector<std::complex<double> > terminalVoltageVector;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  std::complex<double> electricalPower;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  std::vector<std::complex<double> > electricalPowerVector;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">double</span> pm;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  std::vector<double> mechanicalPowerVector;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">double</span> speed;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  std::vector<double> freqVector;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">double</span> fieldVoltage;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  std::vector<double> fieldVoltageVector;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">double</span> delta;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::vector<double> deltaVector;</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">double</span> initialFieldVoltage;</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="comment">// Internal machine variables</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">double</span> tranEq;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">double</span> tranEd;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordtype">double</span> subEq;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">double</span> subEd;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">double</span> pe;</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">// Variables to extrapolate</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">double</span> oldId;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">double</span> oldIq;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">double</span> oldPe;</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">// Integration constants</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSpeed;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icDelta;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icTranEq;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icTranEd;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSubEq;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSubEd;</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="comment">// Control</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* avr = NULL;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* speedGov = 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>  <span class="comment">// Control solvers</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>* avrSolver = NULL;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>* speedGovSolver = NULL;</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>  Machines::SyncMachineModel model = Machines::SM_MODEL_1;</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_sync_motor.html"> 110</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="l00111"></a><span class="lineno"> 111</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>(wxString name);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  ~<a class="code" href="class_sync_motor.html">SyncMotor</a>();</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="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawSymbol() <span class="keyword">const</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</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="l00122"></a><span class="lineno"> 122</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="l00123"></a><span class="lineno"> 123</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="l00124"></a><span class="lineno"> 124</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="l00125"></a><span class="lineno"> 125</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="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> m_electricalData;</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> <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#l00088">Element.h:88</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="ttdef"><b>Definition:</b> <a href="_control_element_solver_8h_source.html#l00020">ControlElementSolver.h:20</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#l00019">PowerElement.h:19</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#l00014">PowerElement.h:14</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#l00011">PowerElement.h:11</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#l00088">PowerElement.h:88</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="ttdef"><b>Definition:</b> <a href="_sync_machine_form_8h_source.html#l00010">SyncMachineForm.h:10</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#l00022">PowerElement.h:22</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#l00025">PowerElement.h:25</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="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00020">ControlElementContainer.h:20</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#l00110">SyncMotor.h:110</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#l00009">Machines.h:9</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#l00008">SyncMotor.h:8</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">#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> +<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="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="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 --> diff --git a/docs/doxygen/html/_text_8cpp_source.html b/docs/doxygen/html/_text_8cpp_source.html index f42b498..836d285 100644 --- a/docs/doxygen/html/_text_8cpp_source.html +++ b/docs/doxygen/html/_text_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,57 +88,58 @@ $(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="preprocessor">#include "TextForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "Text.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "Bus.h"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "Line.h"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include "Transformer.h"</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "SyncGenerator.h"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "IndMotor.h"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "SyncMotor.h"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "Load.h"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "Inductor.h"</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "Capacitor.h"</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> Text::Text() : <a class="code" href="class_graphical_element.html">GraphicalElement</a>() { SetText(m_text); }</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> Text::Text(wxPoint2DDouble position) : <a class="code" href="class_graphical_element.html">GraphicalElement</a>()</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>  m_position = position;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  SetText(m_text);</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> Text::~Text()</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>(m_glString) <span class="keyword">delete</span> m_glString;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">if</span>(m_glStringArray) <span class="keyword">delete</span> m_glStringArray;</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_text.html#a51c55b9272f653cfc3cdafe665d5dde0"> 30</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="l00031"></a><span class="lineno"> 31</span> <span class="keyword"></span>{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  wxPoint2DDouble ptR = <a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -m_angle);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">return</span> m_rect.Contains(ptR);</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> <span class="keywordtype">void</span> Text::Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)</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>  wxScreenDC dc;</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">// Draw selection rectangle</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">// Push the current matrix on stack.</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  glPushMatrix();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// Rotate the matrix around the object position.</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</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>(m_selected) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  glColor4d(0.0, 0.5, 1.0, 0.5);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</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="l00052"></a><span class="lineno"> 52</span>  m_rect.m_height);</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="comment">// Draw text (layer 2)</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  glEnable(GL_TEXTURE_2D);</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>  <span class="keywordflow">if</span>(!m_isMultlineText) { <span class="comment">// Only one line</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_glString->bind();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_glString->render(m_position.m_x, m_position.m_y);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  } <span class="keywordflow">else</span> { <span class="comment">// Multiples lines</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  m_glStringArray->bind();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// The text will be printed centralized.</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">double</span> lineHeight = m_height / (double)m_numberOfLines;</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 < m_numberOfLines; i++) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_glStringArray->get(i)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</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="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>  glDisable(GL_TEXTURE_2D);</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>  glPopMatrix();</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"><a class="line" href="class_text.html#a9923c820cd77b411257ba48beceafeaa"> 75</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="l00076"></a><span class="lineno"> 76</span> <span class="keyword"></span>{</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</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="l00078"></a><span class="lineno"> 78</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="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> Text::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>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_text = text;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  wxFont font(m_fontSize, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</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>  wxScreenDC dc;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  GLuint* idString = NULL;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  GLuint* idStringArray = NULL;</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="keywordflow">if</span>(m_glString) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">delete</span> m_glString;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  m_glString = NULL;</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>  idString = <span class="keyword">new</span> GLuint;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  glGenTextures(1, idString);</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_glStringArray) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">delete</span> m_glStringArray;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_glStringArray = NULL;</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>  idStringArray = <span class="keyword">new</span> GLuint;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  glGenTextures(1, idStringArray);</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_numberOfLines = m_text.Freq(<span class="charliteral">'\n'</span>) + 1;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span>(m_numberOfLines == 1) { <span class="comment">// Only one line</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  m_isMultlineText = <span class="keyword">false</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</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="l00110"></a><span class="lineno"> 110</span>  m_glString->setFont(font);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  m_glString->consolidate(&dc);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_width = m_glString->getWidth();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_height = m_glString->getheight();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_isMultlineText = <span class="keyword">true</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</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="l00117"></a><span class="lineno"> 117</span>  dc.SetFont(font);</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_width = 0.0;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_height = 0.0;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  wxString multText = m_text;</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 < m_numberOfLines; ++i) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  wxString nextLine;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  wxString currentLine = multText.BeforeFirst(<span class="charliteral">'\n'</span>, &nextLine);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  multText = nextLine;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_glStringArray->addString(currentLine);</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>  wxSize size = dc.GetTextExtent(currentLine);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">if</span>(size.GetWidth() > m_width) m_width = size.GetWidth();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_height += size.GetHeight();</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>  m_glStringArray->setFont(font);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_glStringArray->consolidate(&dc);</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>  <span class="keywordflow">if</span>(idString) glDeleteTextures(1, idString);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(idStringArray) glDeleteTextures(1, idStringArray);</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="comment">// Update text rectangle.</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(m_position);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  glDisable(GL_TEXTURE_2D);</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_text.html#afe1f86a497f34cee4809cbd7fda24dc3"> 145</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="l00146"></a><span class="lineno"> 146</span> {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</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_angle += rotAngle;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</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="keywordtype">bool</span> Text::ShowForm(wxWindow* parent, std::vector<Element*> elementList)</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>  <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="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">if</span>(textForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  textForm->Destroy();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> <span class="keyword">true</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>  textForm->Destroy();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">return</span> <span class="keyword">false</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"> 165</span> <span class="keywordtype">void</span> Text::UpdateText(<span class="keywordtype">double</span> systemPowerBase)</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">switch</span>(m_elementType) {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">case</span> TYPE_NONE:</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  SetText(m_text);</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">case</span> TYPE_BUS: {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</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="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">if</span>(bus) {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordtype">double</span> baseVoltage = data.nominalVoltage;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</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="l00177"></a><span class="lineno"> 177</span>  <span class="keywordtype">double</span> baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage);</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">switch</span>(m_dataType) {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  SetText(bus->GetElectricalData().name);</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">case</span> DATA_VOLTAGE: {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordtype">double</span> voltage = std::abs(data.voltage);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  SetText(wxString::FromDouble(voltage, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  SetText(wxString::FromDouble(voltage * baseVoltage, m_decimalPlaces) + <span class="stringliteral">" V"</span>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  } <span class="keywordflow">break</span>;</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#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  SetText(wxString::FromDouble(voltage * baseVoltage / 1e3, m_decimalPlaces) + <span class="stringliteral">" kV"</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">default</span>:</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">break</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="keywordflow">break</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">case</span> DATA_ANGLE: {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordtype">double</span> angle = std::arg(data.voltage);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">switch</span>(m_unit) {</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#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5">UNIT_RADIAN</a>: {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  SetText(wxString::FromDouble(angle, m_decimalPlaces) + <span class="stringliteral">" rad"</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#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3">UNIT_DEGREE</a>: {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  SetText(wxString::FromDouble(wxRadToDeg(angle), m_decimalPlaces) + (wxString)L<span class="stringliteral">'\u00B0'</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordtype">double</span> faultCurrent[3] = {std::abs(data.faultCurrent[0]), std::abs(data.faultCurrent[1]),</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  std::abs(data.faultCurrent[2])};</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  wxString str =</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="stringliteral">"Ia = "</span> + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</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="l00220"></a><span class="lineno"> 220</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="l00221"></a><span class="lineno"> 221</span>  SetText(str);</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#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  wxString str = <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) +</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  SetText(str);</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#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</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> +</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  SetText(str);</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">default</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>  }</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>  <span class="keywordflow">case</span> DATA_SC_VOLTAGE: {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordtype">double</span> faultVoltage[3] = {std::abs(data.faultVoltage[0]), std::abs(data.faultVoltage[1]),</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  std::abs(data.faultVoltage[2])};</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  wxString str =</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="stringliteral">"Va = "</span> + wxString::FromDouble(faultVoltage[0], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</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="l00257"></a><span class="lineno"> 257</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="l00258"></a><span class="lineno"> 258</span>  SetText(str);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  wxString str = <span class="stringliteral">"Va = "</span> +</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  wxString::FromDouble(faultVoltage[0] * baseVoltage, m_decimalPlaces) +</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="stringliteral">" V"</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  str += <span class="stringliteral">"\nVb = "</span> +</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  wxString::FromDouble(faultVoltage[1] * baseVoltage, m_decimalPlaces) + <span class="stringliteral">" V"</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  str += <span class="stringliteral">"\nVc = "</span> +</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  wxString::FromDouble(faultVoltage[2] * baseVoltage, m_decimalPlaces) + <span class="stringliteral">" V"</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  SetText(str);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  } <span class="keywordflow">break</span>;</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#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</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> +</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  wxString::FromDouble(faultVoltage[0] * baseVoltage / 1e3, m_decimalPlaces) + <span class="stringliteral">" kV"</span>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  str += <span class="stringliteral">"\nVb = "</span> +</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  wxString::FromDouble(faultVoltage[1] * baseVoltage / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="stringliteral">" kV"</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  str += <span class="stringliteral">"\nVc = "</span> +</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  wxString::FromDouble(faultVoltage[2] * baseVoltage / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="stringliteral">" kV"</span>;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  SetText(str);</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">default</span>:</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">break</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">break</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">case</span> DATA_SC_POWER: {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  SetText(wxString::FromDouble(data.scPower, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>: {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  SetText(wxString::FromDouble(data.scPower * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" VA"</span>);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  SetText(wxString::FromDouble(data.scPower * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="stringliteral">" kVA"</span>);</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#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  SetText(wxString::FromDouble(data.scPower * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="stringliteral">" MVA"</span>);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">default</span>:</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>  }</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>  <span class="keywordflow">default</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>  }</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>  <span class="keywordflow">case</span> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</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="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">if</span>(syncGenerator) {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = syncGenerator->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordtype">double</span> baseVoltage = syncGenerator->GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordtype">double</span> baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  SetText(data.name);</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">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordtype">double</span> activePower = data.activePower;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</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="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  SetText(wxString::FromDouble(activePower, m_decimalPlaces) + <span class="stringliteral">" p.u."</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  SetText(wxString::FromDouble(activePower * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  SetText(wxString::FromDouble(activePower * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="stringliteral">" kW"</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  SetText(wxString::FromDouble(activePower * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">break</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordtype">double</span> reactivePower = data.reactivePower;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</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="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  SetText(wxString::FromDouble(reactivePower, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  SetText(wxString::FromDouble(reactivePower * systemPowerBase, m_decimalPlaces) +</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="stringliteral">" VAr"</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  SetText(wxString::FromDouble(reactivePower * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="stringliteral">" kVAr"</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  SetText(wxString::FromDouble(reactivePower * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="stringliteral">" MVAr"</span>);</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">default</span>:</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">break</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordtype">double</span> faultCurrent[3] = {std::abs(data.faultCurrent[0]), std::abs(data.faultCurrent[1]),</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  std::abs(data.faultCurrent[2])};</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  wxString str =</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="stringliteral">"Ia = "</span> + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</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="l00374"></a><span class="lineno"> 374</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="l00375"></a><span class="lineno"> 375</span>  SetText(str);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  wxString str = <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) +</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  SetText(str);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  } <span class="keywordflow">break</span>;</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#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</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> +</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  SetText(str);</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>  <span class="keywordflow">default</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>  }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">break</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</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="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">if</span>(line) {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = line->GetElectricalData();</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordtype">double</span> baseVoltage = data.nominalVoltage;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</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="l00414"></a><span class="lineno"> 414</span>  <span class="keywordtype">double</span> baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  SetText(data.name);</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> DATA_PF_ACTIVE: {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordtype">double</span> activePF = std::real(data.powerFlow[m_direction]);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</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="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">switch</span>(m_unit) {</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>  SetText(wxString::FromDouble(activePF, m_decimalPlaces) + <span class="stringliteral">" p.u."</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#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  SetText(wxString::FromDouble(activePF * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</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">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>  SetText(wxString::FromDouble(activePF * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  SetText(wxString::FromDouble(activePF * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="stringliteral">" MW"</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">default</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>  }</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordtype">double</span> reactivePF = std::imag(data.powerFlow[m_direction]);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</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="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">switch</span>(m_unit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  SetText(wxString::FromDouble(reactivePF, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</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#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" VAr"</span>);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="stringliteral">" kVAr"</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">default</span>:</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>  }</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> DATA_PF_LOSSES: {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</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="l00465"></a><span class="lineno"> 465</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="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">switch</span>(m_unit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  SetText(wxString::FromDouble(losses, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  SetText(wxString::FromDouble(losses * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  SetText(wxString::FromDouble(losses * systemPowerBase / 1e3, m_decimalPlaces) + <span class="stringliteral">" kW"</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  SetText(wxString::FromDouble(losses * systemPowerBase / 1e6, m_decimalPlaces) + <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">default</span>:</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>  }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordtype">double</span> current = std::abs(data.current[m_direction]);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</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="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">switch</span>(m_unit) {</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>  SetText(wxString::FromDouble(current, m_decimalPlaces) + <span class="stringliteral">" p.u."</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#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  SetText(wxString::FromDouble(current * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</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#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  SetText(wxString::FromDouble(current * baseCurrent / 1e3, m_decimalPlaces) + <span class="stringliteral">" kA"</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_SC_CURRENT: {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordtype">double</span> faultCurrent[3] = {std::abs(data.faultCurrent[m_direction][0]),</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  std::abs(data.faultCurrent[m_direction][1]),</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  std::abs(data.faultCurrent[m_direction][2])};</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</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="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">switch</span>(m_unit) {</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>  wxString str =</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="stringliteral">"Ia = "</span> + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</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="l00510"></a><span class="lineno"> 510</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="l00511"></a><span class="lineno"> 511</span>  SetText(str);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  wxString str = <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) +</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  SetText(str);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  } <span class="keywordflow">break</span>;</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#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</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> +</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  SetText(str);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordflow">default</span>:</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>  }</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>  <span class="keywordflow">default</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>  }</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</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="l00546"></a><span class="lineno"> 546</span>  <span class="keywordflow">if</span>(transformer) {</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = transformer->GetElectricalData();</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordtype">double</span> baseVoltage[2] = {data.primaryNominalVoltage, data.secondaryNominalVoltage};</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">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="l00551"></a><span class="lineno"> 551</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="l00552"></a><span class="lineno"> 552</span> </div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordtype">double</span> baseCurrent[2] = {systemPowerBase / (std::sqrt(3.0) * baseVoltage[0]),</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  systemPowerBase / (std::sqrt(3.0) * baseVoltage[1])};</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  SetText(data.name);</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>  <span class="keywordflow">case</span> DATA_PF_ACTIVE: {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordtype">double</span> activePF = std::real(data.powerFlow[m_direction]);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</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="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">switch</span>(m_unit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  SetText(wxString::FromDouble(activePF, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</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#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  SetText(wxString::FromDouble(activePF * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  SetText(wxString::FromDouble(activePF * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="stringliteral">" kW"</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  SetText(wxString::FromDouble(activePF * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="stringliteral">" MW"</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">default</span>:</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keywordflow">break</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> DATA_PF_REACTIVE: {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="keywordtype">double</span> reactivePF = std::imag(data.powerFlow[m_direction]);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</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="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  SetText(wxString::FromDouble(reactivePF, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="stringliteral">" kVAr"</span>);</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#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keywordflow">break</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="keywordflow">break</span>;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</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="l00605"></a><span class="lineno"> 605</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="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  SetText(wxString::FromDouble(losses, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  SetText(wxString::FromDouble(losses * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  SetText(wxString::FromDouble(losses * systemPowerBase / 1e3, m_decimalPlaces) + <span class="stringliteral">" kW"</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  SetText(wxString::FromDouble(losses * systemPowerBase / 1e6, m_decimalPlaces) + <span class="stringliteral">" MW"</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>  <span class="keywordflow">default</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>  }</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>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordtype">double</span> current = std::abs(data.current[m_direction]);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</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="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">switch</span>(m_unit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  SetText(wxString::FromDouble(current, m_decimalPlaces) + <span class="stringliteral">" p.u."</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#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  SetText(wxString::FromDouble(current * baseCurrent[m_direction], m_decimalPlaces) +</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="stringliteral">" A"</span>);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  SetText(</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  wxString::FromDouble(current * baseCurrent[m_direction] / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="stringliteral">" kA"</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">default</span>:</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keywordtype">double</span> faultCurrent[3] = {std::abs(data.faultCurrent[m_direction][0]),</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  std::abs(data.faultCurrent[m_direction][1]),</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  std::abs(data.faultCurrent[m_direction][2])};</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</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="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  wxString str =</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="stringliteral">"Ia = "</span> + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</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="l00653"></a><span class="lineno"> 653</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="l00654"></a><span class="lineno"> 654</span>  SetText(str);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  wxString str =</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent[m_direction], m_decimalPlaces) +</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  str += <span class="stringliteral">"\nIb = "</span> + wxString::FromDouble(faultCurrent[1] * baseCurrent[m_direction],</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  m_decimalPlaces) +</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  str += <span class="stringliteral">"\nIc = "</span> + wxString::FromDouble(faultCurrent[2] * baseCurrent[m_direction],</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  m_decimalPlaces) +</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  SetText(str);</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  wxString str = <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent[m_direction] / 1e3,</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  m_decimalPlaces) +</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent[m_direction] / 1e3,</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  m_decimalPlaces) +</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent[m_direction] / 1e3,</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  m_decimalPlaces) +</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  SetText(str);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="keywordflow">default</span>:</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>  }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keywordflow">break</span>;</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>  }</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> TYPE_LOAD: {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</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="l00695"></a><span class="lineno"> 695</span>  <span class="keywordflow">if</span>(load) {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data = load->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  std::complex<double> sPower(data.activePower, data.reactivePower);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</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="l00699"></a><span class="lineno"> 699</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="l00700"></a><span class="lineno"> 700</span>  sPower = std::pow(std::abs(v), 2) * sPower;</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>  <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="l00703"></a><span class="lineno"> 703</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  SetText(data.name);</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>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + <span class="stringliteral">" p.u."</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <span class="stringliteral">" kW"</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <span class="stringliteral">" MW"</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>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  }</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">switch</span>(m_unit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + <span class="stringliteral">" p.u."</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#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) +</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="stringliteral">" VAr"</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#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="stringliteral">" kVAr"</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  }</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <span class="keywordflow">break</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">default</span>:</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>  }</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">break</span>;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keywordflow">case</span> TYPE_SYNC_MOTOR: {</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</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="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">if</span>(syncMotor) {</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = syncMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  std::complex<double> sPower(data.activePower, data.reactivePower);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</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="l00759"></a><span class="lineno"> 759</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  SetText(data.name);</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>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + <span class="stringliteral">" p.u."</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  }</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <span class="stringliteral">" MW"</span>);</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>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keywordflow">break</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="keywordflow">break</span>;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keywordflow">switch</span>(m_unit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + <span class="stringliteral">" p.u."</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#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) +</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="stringliteral">" VAr"</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#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <span class="stringliteral">" kVAr"</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="stringliteral">" MVAr"</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>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="keywordflow">break</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="keywordflow">break</span>;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">break</span>;</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="keywordflow">break</span>;</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keywordflow">case</span> TYPE_IND_MOTOR: {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</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="l00811"></a><span class="lineno"> 811</span>  <span class="keywordflow">if</span>(indMotor) {</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> data = indMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  std::complex<double> sPower(data.activePower, data.reactivePower);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</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="l00815"></a><span class="lineno"> 815</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  SetText(data.name);</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>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + <span class="stringliteral">" p.u."</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="stringliteral">" kW"</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="stringliteral">" MW"</span>);</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>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <span class="keywordflow">break</span>;</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> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">switch</span>(m_unit) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + <span class="stringliteral">" p.u."</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#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) +</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="stringliteral">" VAr"</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#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="stringliteral">" kVAr"</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <span class="stringliteral">" MVAr"</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="keywordflow">default</span>:</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="keywordflow">break</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="keywordflow">break</span>;</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <span class="keywordflow">case</span> TYPE_CAPACITOR: {</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</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="l00867"></a><span class="lineno"> 867</span>  <span class="keywordflow">if</span>(capacitor) {</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data = capacitor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="keywordtype">double</span> reativePower = data.reactivePower;</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <span class="keywordflow">if</span>(!capacitor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>())</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  reativePower = 0.0;</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  std::complex<double> v =</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</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="l00875"></a><span class="lineno"> 875</span>  reativePower *= std::pow(std::abs(v), 2);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  }</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  SetText(data.name);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  SetText(wxString::FromDouble(reativePower, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  }</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" VAr"</span>);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  }</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  }</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  <span class="keywordflow">default</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>  }</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <span class="keywordflow">default</span>:</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>  }</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  }</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</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="l00908"></a><span class="lineno"> 908</span>  <span class="keywordflow">if</span>(inductor) {</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data = inductor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="keywordtype">double</span> reativePower = data.reactivePower;</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <span class="keywordflow">if</span>(!inductor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>())</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  reativePower = 0.0;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  std::complex<double> v =</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</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="l00916"></a><span class="lineno"> 916</span>  reativePower *= std::pow(std::abs(v), 2);</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="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  SetText(data.name);</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  SetText(wxString::FromDouble(reativePower, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  }</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" VAr"</span>);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="stringliteral">" kVAr"</span>);</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="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="stringliteral">" MVAr"</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>  <span class="keywordflow">default</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>  }</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="keywordflow">break</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>  }</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  } <span class="keywordflow">break</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> }</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span> </div><div class="line"><a name="l00950"></a><span class="lineno"><a class="line" href="class_text.html#a06e740065c875633e458c0d8f860c43e"> 950</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="l00951"></a><span class="lineno"> 951</span> {</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</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="l00953"></a><span class="lineno"> 953</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="comment">// The pointers to wxGLString must be different or can cause crashes.</span></div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  copy->m_glString = NULL;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  copy->m_glStringArray = NULL;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  copy->SetText(copy->m_text);</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</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#l00030">Text.cpp:30</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#l00048">Text.h:48</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#l00006">GraphicalElement.h:6</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#l00015">PowerElement.h:15</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#l00008">IndMotor.h:8</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#l00008">SyncGenerator.h:8</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#l00088">Element.h:88</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#l00145">Text.cpp:145</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#l00013">PowerElement.h:13</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#l00517">Element.h:517</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#l00030">PowerElement.h:30</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 "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="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_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="_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="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#l00008">Inductor.h:8</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#l00019">PowerElement.h:19</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#l00110">SyncGenerator.h:110</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#l00014">PowerElement.h:14</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#l00075">Text.cpp:75</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#l00007">Bus.h:7</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#l00091">Element.cpp:91</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#l00012">PowerElement.h:12</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#l00053">Element.cpp:53</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#l00950">Text.cpp:950</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#l00018">PowerElement.h:18</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#l00045">Bus.h:45</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#l00219">Element.h:219</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#l00022">PowerElement.h:22</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#l00016">PowerElement.h:16</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#l00010">Element.cpp:10</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#l00025">PowerElement.h:25</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="ttdef"><b>Definition:</b> <a href="_text_form_8h_source.html#l00008">TextForm.h:8</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#l00035">Line.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="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00023">Load.h:23</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#l00024">PowerElement.h:24</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#l00007">Line.h:7</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#l00013">Load.h:13</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#l00110">SyncMotor.h:110</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#l00017">IndMotor.h:17</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#l00023">PowerElement.h:23</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#l00014">Capacitor.h:14</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#l00014">Inductor.h:14</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#l00020">PowerElement.h:20</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#l00020">Transformer.h:20</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#l00031">PowerElement.h:31</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="_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="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="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_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="_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="_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="_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="_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="_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#l00132">Element.cpp:132</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#l00021">PowerElement.h:21</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="_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#l00054">Transformer.h:54</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#l00008">Capacitor.h:8</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#l00017">PowerElement.h:17</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#l00008">SyncMotor.h:8</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="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> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_text_8h_source.html b/docs/doxygen/html/_text_8h_source.html index 1eff68c..7d6d796 100644 --- a/docs/doxygen/html/_text_8h_source.html +++ b/docs/doxygen/html/_text_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,28 +88,28 @@ $(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="preprocessor">#ifndef TEXT_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define TEXT_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "GraphicalElement.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include "wxGLString.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="keyword">class </span><a class="code" href="class_text_form.html">TextForm</a>;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="keyword">class </span><a class="code" href="class_bus.html">Bus</a>;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="keyword">class </span><a class="code" href="class_line.html">Line</a>;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="keyword">class </span><a class="code" href="class_transformer.html">Transformer</a>;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="keyword">class </span><a class="code" href="class_sync_generator.html">SyncGenerator</a>;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="keyword">class </span><a class="code" href="class_ind_motor.html">IndMotor</a>;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="keyword">class </span><a class="code" href="class_sync_motor.html">SyncMotor</a>;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keyword">class </span><a class="code" href="class_load.html">Load</a>;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="keyword">class </span><a class="code" href="class_inductor.html">Inductor</a>;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">class </span><a class="code" href="class_capacitor.html">Capacitor</a>;</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="keyword">enum</span> ElementType {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  TYPE_NONE = 0,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  TYPE_BUS,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  TYPE_CAPACITOR,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  TYPE_IND_MOTOR,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  TYPE_INDUCTOR,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  TYPE_LINE,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  TYPE_LOAD,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  TYPE_SYNC_GENERATOR,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  TYPE_SYNC_MOTOR,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  TYPE_TRANSFORMER</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> <span class="keyword">enum</span> DataType {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  DATA_NAME,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  DATA_VOLTAGE,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  DATA_ANGLE,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  DATA_SC_CURRENT,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  DATA_SC_VOLTAGE,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  DATA_SC_POWER,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  DATA_ACTIVE_POWER,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  DATA_REACTIVE_POWER,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  DATA_PF_ACTIVE,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  DATA_PF_REACTIVE,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  DATA_PF_LOSSES,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  DATA_PF_CURRENT</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"><a class="line" href="class_text.html"> 48</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="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_text.html">Text</a>();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="class_text.html">Text</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  ~<a class="code" href="class_text.html">Text</a>();</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_text.html#a06e740065c875633e458c0d8f860c43e">GetCopy</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="class_text.html#a4f273ea7008c72533327c25caff2e917"> 56</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="l00057"></a><span class="lineno"> 57</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="l00058"></a><span class="lineno"> 58</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="l00059"></a><span class="lineno"> 59</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="l00060"></a><span class="lineno"> 60</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="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, std::vector<Element*> elementList);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</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="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetText(wxString text);</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="keywordtype">void</span> SetDataType(<span class="keyword">const</span> DataType& dataType) { m_dataType = dataType; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">void</span> SetDirection(<span class="keywordtype">int</span> direction) { m_direction = direction; }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</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="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">void</span> SetElementNumber(<span class="keywordtype">int</span> elementNumber) { m_elementNumber = elementNumber; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">void</span> SetElementType(<span class="keyword">const</span> ElementType elementType) { m_elementType = elementType; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">void</span> SetFontSize(<span class="keywordtype">int</span> fontSize) { m_fontSize = fontSize; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</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="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">void</span> SetDecimalPlaces(<span class="keywordtype">int</span> decimalPlaces) { m_decimalPlaces = decimalPlaces; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</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="l00075"></a><span class="lineno"> 75</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="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="class_element.html">Element</a>* GetElement() { <span class="keywordflow">return</span> m_element; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</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="l00078"></a><span class="lineno"> 78</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="l00079"></a><span class="lineno"> 79</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="l00080"></a><span class="lineno"> 80</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="l00081"></a><span class="lineno"> 81</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="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glString = NULL;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <a class="code" href="classwx_g_l_string_array.html">wxGLStringArray</a>* m_glStringArray = NULL;</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>  wxString m_text = _(<span class="stringliteral">"Text"</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">int</span> m_numberOfLines;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">bool</span> m_isMultlineText = <span class="keyword">false</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">int</span> m_fontSize = 10;</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>  <a class="code" href="class_element.html">Element</a>* m_element = NULL;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  ElementType m_elementType = TYPE_NONE;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">int</span> m_elementNumber;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  DataType m_dataType;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> m_unit;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">int</span> m_direction = 0;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">int</span> m_decimalPlaces = 2;</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 // 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#l00030">Text.cpp:30</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#l00048">Text.h:48</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#l00006">GraphicalElement.h:6</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#l00088">Element.h:88</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#l00145">Text.cpp:145</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#l00110">SyncGenerator.h:110</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#l00075">Text.cpp:75</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#l00011">PowerElement.h:11</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#l00950">Text.cpp:950</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#l00045">Bus.h:45</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#l00056">Text.h:56</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="ttdef"><b>Definition:</b> <a href="_text_form_8h_source.html#l00008">TextForm.h:8</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#l00035">Line.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="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00023">Load.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">#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> +<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_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_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#l00110">SyncMotor.h:110</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#l00017">IndMotor.h:17</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#l00014">Capacitor.h:14</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#l00014">Inductor.h:14</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_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="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#l00054">Transformer.h:54</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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_text_form_8cpp_source.html b/docs/doxygen/html/_text_form_8cpp_source.html index 560f7a4..9fc285f 100644 --- a/docs/doxygen/html/_text_form_8cpp_source.html +++ b/docs/doxygen/html/_text_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,33 +88,34 @@ $(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="preprocessor">#include "TextForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</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="l00004"></a><span class="lineno"> 4</span>  : <a class="code" href="class_text_form_base.html">TextFormBase</a>(parent)</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  m_parent = parent;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  m_textToEdit = text;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  m_allElements.GetElementsFromList(elementList);</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_systemPowerBase = systemPowerBase;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_text = <span class="keyword">new</span> <a class="code" href="class_text.html">Text</a>();</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_text->SetElementType(text->GetElementType());</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  m_text->SetElementNumber(text->GetElementNumber());</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_text->SetElement(text->GetElement());</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_text->SetDataType(text->GetDataType());</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  m_text->SetDirection(text->GetDirection());</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  m_text->SetUnit(text->GetUnit());</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  m_text->SetDecimalPlaces(text->GetDecimalPlaces());</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="keywordflow">if</span>(!LoadChoices()) {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_choiceName->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_choiceTextType->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_choiceTextFromBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_choiceTextToBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_choiceTextUnit->Enable(<span class="keyword">false</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> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> TextForm::~TextForm() {}</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keywordtype">void</span> TextForm::OnElementChoiceSelected(wxCommandEvent& event)</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="keywordflow">switch</span>(m_choiceElement->GetSelection()) {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_text->SetElementType(TYPE_BUS);</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> 1: {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_text->SetElementType(TYPE_SYNC_GENERATOR);</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> 2: {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_text->SetElementType(TYPE_LINE);</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">case</span> 3: {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_text->SetElementType(TYPE_TRANSFORMER);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">case</span> 4: {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_text->SetElementType(TYPE_LOAD);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">case</span> 5: {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_text->SetElementType(TYPE_CAPACITOR);</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> 6: {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_text->SetElementType(TYPE_INDUCTOR);</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> 7: {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_text->SetElementType(TYPE_SYNC_MOTOR);</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> 8: {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_text->SetElementType(TYPE_IND_MOTOR);</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> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">default</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>  }</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>  ElementTypeChoice();</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> TextForm::OnFromBusChoiceSelected(wxCommandEvent& event)</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>  m_text->SetDirection(m_choiceTextFromBus->GetSelection());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_choiceTextToBus->SetSelection(m_choiceTextFromBus->GetSelection());</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="keywordtype">void</span> TextForm::OnNameChoiceSelected(wxCommandEvent& event)</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>  m_text->SetElementNumber(m_choiceName->GetSelection());</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  ElementNumberChoice();</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> TextForm::OnTextEnter(wxCommandEvent& event) { Preview(); }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="keywordtype">void</span> TextForm::OnToBusChoiceSelected(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>  m_text->SetDirection(m_choiceTextToBus->GetSelection());</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_choiceTextFromBus->SetSelection(m_choiceTextToBus->GetSelection());</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> TextForm::OnUnitChoiceSelected(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>  UnitChoice();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  Preview();</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">void</span> TextForm::OnTypeChoiceSelected(wxCommandEvent& event)</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="keywordflow">switch</span>(m_text->GetElementType()) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">case</span> TYPE_BUS: {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">switch</span>(m_choiceTextType->GetSelection()) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_text->SetDataType(DATA_NAME);</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">case</span> 1: {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_text->SetDataType(DATA_VOLTAGE);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_text->SetDataType(DATA_ANGLE);</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> 3: {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_text->SetDataType(DATA_SC_CURRENT);</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> 4: {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_text->SetDataType(DATA_SC_VOLTAGE);</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> 5: {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_text->SetDataType(DATA_SC_POWER);</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>  }</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> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">switch</span>(m_choiceTextType->GetSelection()) {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_text->SetDataType(DATA_NAME);</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> 1: {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_text->SetDataType(DATA_ACTIVE_POWER);</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">case</span> 2: {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_text->SetDataType(DATA_REACTIVE_POWER);</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> 3: {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_text->SetDataType(DATA_SC_CURRENT);</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>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">case</span> TYPE_LINE:</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</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_PF_ACTIVE);</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_PF_REACTIVE);</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_PF_LOSSES);</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>  <span class="keywordflow">case</span> 4: {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_text->SetDataType(DATA_PF_CURRENT);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">case</span> 5: {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  m_text->SetDataType(DATA_SC_CURRENT);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  } <span class="keywordflow">break</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">break</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">case</span> TYPE_LOAD:</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">case</span> TYPE_SYNC_MOTOR:</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">case</span> TYPE_IND_MOTOR: {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">switch</span>(m_choiceTextType->GetSelection()) {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  m_text->SetDataType(DATA_NAME);</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> 1: {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  m_text->SetDataType(DATA_ACTIVE_POWER);</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> 2: {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  m_text->SetDataType(DATA_REACTIVE_POWER);</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>  }</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> TYPE_CAPACITOR:</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">switch</span>(m_choiceTextType->GetSelection()) {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_text->SetDataType(DATA_NAME);</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> 1: {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  m_text->SetDataType(DATA_REACTIVE_POWER);</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>  }</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>  DataTypeChoice();</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_text->GetDataType() == DATA_NAME) Preview();</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="keywordtype">bool</span> TextForm::LoadChoices()</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_text->GetElementType() == TYPE_NONE) <span class="keywordflow">return</span> <span class="keyword">false</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="comment">// Fill the element possible choices.</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  ElementTypeChoice();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  m_choiceName->SetSelection(m_text->GetElementNumber());</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  ElementNumberChoice();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  DataTypeChoice();</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">// Select the saved choices.</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">switch</span>(m_text->GetElementType()) {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">case</span> TYPE_BUS: {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  m_choiceElement->SetSelection(0);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  m_choiceTextType->SetSelection(0);</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>  <span class="keywordflow">case</span> DATA_VOLTAGE: {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  m_choiceTextUnit->SetSelection(0);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  m_choiceTextUnit->SetSelection(1);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  m_choiceTextUnit->SetSelection(2);</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">default</span>:</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>  }</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">break</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">case</span> DATA_ANGLE: {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_choiceTextType->SetSelection(2);</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#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3">UNIT_DEGREE</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#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5">UNIT_RADIAN</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">default</span>:</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">break</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="keywordflow">break</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  m_choiceTextType->SetSelection(3);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</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#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  m_choiceTextUnit->SetSelection(0);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  m_choiceTextUnit->SetSelection(1);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  m_choiceTextUnit->SetSelection(2);</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">default</span>:</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">break</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="keywordflow">break</span>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">case</span> DATA_SC_VOLTAGE: {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  m_choiceTextType->SetSelection(4);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  m_choiceTextUnit->SetSelection(0);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  m_choiceTextUnit->SetSelection(1);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  m_choiceTextUnit->SetSelection(2);</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">default</span>:</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">break</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">break</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">case</span> DATA_SC_POWER: {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  m_choiceTextType->SetSelection(5);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  m_choiceTextUnit->SetSelection(0);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>: {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  m_choiceTextUnit->SetSelection(3);</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">default</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>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">break</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">case</span> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  m_choiceElement->SetSelection(1);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_choiceTextType->SetSelection(0);</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> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  m_choiceTextUnit->SetSelection(1);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  m_choiceTextUnit->SetSelection(3);</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">default</span>:</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>  }</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>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  m_choiceTextUnit->SetSelection(1);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  m_choiceTextUnit->SetSelection(2);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  m_choiceTextUnit->SetSelection(3);</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">default</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>  }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  m_choiceTextType->SetSelection(3);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</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>  m_choiceTextUnit->SetSelection(0);</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#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  m_choiceTextUnit->SetSelection(1);</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#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">default</span>:</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>  }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">break</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">break</span>;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  m_choiceElement->SetSelection(2);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  m_choiceTextType->SetSelection(0);</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> DATA_PF_ACTIVE: {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  m_choiceTextUnit->SetSelection(0);</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#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  m_choiceTextUnit->SetSelection(1);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">default</span>:</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>  }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</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>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  m_choiceTextUnit->SetSelection(3);</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>  <span class="keywordflow">default</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>  }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  m_choiceTextType->SetSelection(3);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  m_choiceTextUnit->SetSelection(3);</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>  <span class="keywordflow">default</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>  }</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>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  m_choiceTextType->SetSelection(4);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  m_choiceTextUnit->SetSelection(1);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  m_choiceTextUnit->SetSelection(2);</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">default</span>:</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>  }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  m_choiceTextType->SetSelection(5);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  m_choiceTextUnit->SetSelection(2);</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>  m_choiceTextUnit->SetSelection(3);</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>  <span class="keywordflow">default</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>  }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">break</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  m_choiceElement->SetSelection(3);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  m_choiceTextType->SetSelection(0);</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> DATA_PF_ACTIVE: {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  m_choiceTextUnit->SetSelection(1);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">default</span>:</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>  }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">case</span> <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>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  m_choiceTextUnit->SetSelection(2);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  m_choiceTextUnit->SetSelection(3);</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">default</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>  }</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  m_choiceTextType->SetSelection(3);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  m_choiceTextUnit->SetSelection(2);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  m_choiceTextUnit->SetSelection(3);</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>  <span class="keywordflow">default</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>  }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  m_choiceTextType->SetSelection(4);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  m_choiceTextUnit->SetSelection(0);</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>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keywordflow">break</span>;</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  m_choiceTextType->SetSelection(5);</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  m_choiceTextUnit->SetSelection(0);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  m_choiceTextUnit->SetSelection(1);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  m_choiceTextUnit->SetSelection(2);</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">case</span> TYPE_LOAD: {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  m_choiceElement->SetSelection(4);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  m_choiceTextType->SetSelection(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> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  m_choiceTextUnit->SetSelection(0);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  m_choiceTextUnit->SetSelection(1);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  m_choiceTextUnit->SetSelection(3);</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">default</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">break</span>;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  m_choiceTextUnit->SetSelection(1);</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">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  m_choiceTextUnit->SetSelection(3);</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>  <span class="keywordflow">default</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>  }</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>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="keywordflow">break</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">break</span>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keywordflow">case</span> TYPE_CAPACITOR: {</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  m_choiceElement->SetSelection(5);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  m_choiceTextType->SetSelection(0);</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> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  m_choiceTextType->SetSelection(1);</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">break</span>;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">default</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>  }</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  m_choiceElement->SetSelection(6);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  m_choiceTextUnit->SetSelection(0);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  m_choiceTextUnit->SetSelection(1);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  m_choiceTextUnit->SetSelection(2);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="keywordflow">default</span>:</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>  }</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">default</span>:</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</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> TYPE_SYNC_MOTOR: {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  m_choiceElement->SetSelection(7);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  m_choiceTextType->SetSelection(0);</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> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  m_choiceTextUnit->SetSelection(1);</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keywordflow">default</span>:</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>  }</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  m_choiceTextUnit->SetSelection(3);</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>  <span class="keywordflow">default</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>  }</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">break</span>;</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="keywordflow">break</span>;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="keywordflow">case</span> TYPE_IND_MOTOR: {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  m_choiceElement->SetSelection(8);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  m_choiceTextType->SetSelection(0);</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> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  m_choiceTextUnit->SetSelection(1);</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keywordflow">default</span>:</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>  }</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_REACTIVE_POWER: {</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  } <span class="keywordflow">break</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#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  m_choiceTextUnit->SetSelection(3);</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>  <span class="keywordflow">default</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>  }</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">break</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="keywordflow">break</span>;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keywordflow">break</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> </div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <span class="keywordflow">if</span>(m_choiceTextFromBus->IsEnabled()) m_choiceTextFromBus->SetSelection(m_text->GetDirection());</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <span class="keywordflow">if</span>(m_choiceTextToBus->IsEnabled()) m_choiceTextToBus->SetSelection(m_text->GetDirection());</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>  m_textCtrlDecimal->SetValue(wxString::Format(<span class="stringliteral">"%d"</span>, m_text->GetDecimalPlaces()));</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  Preview();</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">return</span> <span class="keyword">true</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> </div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span> <span class="keywordtype">void</span> TextForm::ElementTypeChoice()</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>  m_choiceTextType->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  m_choiceTextFromBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  m_choiceTextToBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  m_choiceTextUnit->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  m_choiceTextType->Clear();</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  m_choiceTextFromBus->Clear();</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  m_choiceTextToBus->Clear();</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  m_choiceTextUnit->Clear();</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_choiceName->Clear();</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  wxArrayString arrayString;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keywordflow">switch</span>(m_text->GetElementType()) {</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keywordflow">case</span> TYPE_BUS: {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</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="l00776"></a><span class="lineno"> 776</span>  <a class="code" href="class_bus.html">Bus</a>* bus = m_allElements.GetBusList()[i];</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  arrayString.Add(bus->GetElectricalData().name);</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keywordflow">case</span> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</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="l00782"></a><span class="lineno"> 782</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = m_allElements.GetSyncGeneratorList()[i];</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  arrayString.Add(syncGenerator->GetElectricalData().name);</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">break</span>;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</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="l00788"></a><span class="lineno"> 788</span>  <a class="code" href="class_line.html">Line</a>* line = m_allElements.GetLineList()[i];</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  arrayString.Add(line->GetElectricalData().name);</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  }</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</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="l00794"></a><span class="lineno"> 794</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = m_allElements.GetTransformerList()[i];</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  arrayString.Add(transformer->GetElectricalData().name);</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">break</span>;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="keywordflow">case</span> TYPE_LOAD: {</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</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="l00800"></a><span class="lineno"> 800</span>  <a class="code" href="class_load.html">Load</a>* load = m_allElements.GetLoadList()[i];</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  arrayString.Add(load->GetElectricalData().name);</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="keywordflow">break</span>;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keywordflow">case</span> TYPE_CAPACITOR: {</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</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="l00806"></a><span class="lineno"> 806</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = m_allElements.GetCapacitorList()[i];</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  arrayString.Add(capacitor->GetElectricalData().name);</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">break</span>;</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</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="l00812"></a><span class="lineno"> 812</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = m_allElements.GetInductorList()[i];</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  arrayString.Add(inductor->GetElectricalData().name);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  }</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keywordflow">case</span> TYPE_SYNC_MOTOR: {</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</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="l00818"></a><span class="lineno"> 818</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = m_allElements.GetSyncMotorList()[i];</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  arrayString.Add(syncMotor->GetElectricalData().name);</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keywordflow">case</span> TYPE_IND_MOTOR: {</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</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="l00824"></a><span class="lineno"> 824</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = m_allElements.GetIndMotorList()[i];</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  arrayString.Add(indMotor->GetElectricalData().name);</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span> </div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keywordflow">break</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>  m_choiceName->Append(arrayString);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  m_choiceName->Enable();</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> TextForm::ElementNumberChoice()</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>  m_choiceTextFromBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  m_choiceTextToBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  m_choiceTextUnit->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  m_choiceTextFromBus->Clear();</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  m_choiceTextToBus->Clear();</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  m_choiceTextUnit->Clear();</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span> </div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <span class="keywordtype">int</span> index = m_choiceName->GetSelection();</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  m_text->SetElementNumber(index);</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_choiceTextType->Clear();</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  wxArrayString arrayString;</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="keywordflow">switch</span>(m_text->GetElementType()) {</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="keywordflow">case</span> TYPE_BUS: {</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <a class="code" href="class_bus.html">Bus</a>* bus = m_allElements.GetBusList()[index];</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  m_text->SetElement(bus);</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>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  arrayString.Add(_(<span class="stringliteral">"Voltage"</span>));</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  arrayString.Add(_(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  arrayString.Add(_(<span class="stringliteral">"Fault current"</span>));</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  arrayString.Add(_(<span class="stringliteral">"Fault voltage"</span>));</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  arrayString.Add(_(<span class="stringliteral">"Short-circuit power"</span>));</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keywordflow">case</span> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = m_allElements.GetSyncGeneratorList()[index];</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  m_text->SetElement(syncGenerator);</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>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  arrayString.Add(_(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  arrayString.Add(_(<span class="stringliteral">"Fault current"</span>));</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <a class="code" href="class_line.html">Line</a>* line = m_allElements.GetLineList()[index];</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  m_text->SetElement(line);</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>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  arrayString.Add(_(<span class="stringliteral">"Active power flow"</span>));</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power flow"</span>));</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  arrayString.Add(_(<span class="stringliteral">"Losses"</span>));</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  arrayString.Add(_(<span class="stringliteral">"Current"</span>));</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  arrayString.Add(_(<span class="stringliteral">"Fault current"</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_TRANSFORMER: {</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = m_allElements.GetTransformerList()[index];</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  m_text->SetElement(transformer);</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span> </div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  arrayString.Add(_(<span class="stringliteral">"Active power flow"</span>));</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power flow"</span>));</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  arrayString.Add(_(<span class="stringliteral">"Losses"</span>));</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  arrayString.Add(_(<span class="stringliteral">"Current"</span>));</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  arrayString.Add(_(<span class="stringliteral">"Fault current"</span>));</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <span class="keywordflow">case</span> TYPE_LOAD: {</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <a class="code" href="class_load.html">Load</a>* load = m_allElements.GetLoadList()[index];</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  m_text->SetElement(load);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span> </div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  arrayString.Add(_(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <span class="keywordflow">case</span> TYPE_CAPACITOR: {</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = m_allElements.GetCapacitorList()[index];</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  m_text->SetElement(capacitor);</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span> </div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = m_allElements.GetInductorList()[index];</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  m_text->SetElement(inductor);</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>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="keywordflow">case</span> TYPE_SYNC_MOTOR: {</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = m_allElements.GetSyncMotorList()[index];</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  m_text->SetElement(syncMotor);</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span> </div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  arrayString.Add(_(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</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_IND_MOTOR: {</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = m_allElements.GetIndMotorList()[index];</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  m_text->SetElement(indMotor);</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span> </div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  arrayString.Add(_(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  } <span class="keywordflow">break</span>;</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>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <span class="keywordflow">break</span>;</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>  m_choiceTextType->Append(arrayString);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  m_choiceTextType->Enable();</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="keywordtype">void</span> TextForm::DataTypeChoice()</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>  m_choiceTextFromBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  m_choiceTextToBus->Enable(<span class="keyword">false</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>  m_choiceTextToBus->Clear();</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  m_choiceTextFromBus->Clear();</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  m_choiceTextUnit->Clear();</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>  m_choiceTextUnit->Enable();</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>  wxArrayString arrayString;</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  m_choiceTextUnit->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  <span class="keywordflow">case</span> DATA_VOLTAGE:</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="keywordflow">case</span> DATA_SC_VOLTAGE: {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  arrayString.Add(_(<span class="stringliteral">"p.u."</span>));</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  arrayString.Add(_(<span class="stringliteral">"V"</span>));</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  arrayString.Add(_(<span class="stringliteral">"kV"</span>));</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <span class="keywordflow">case</span> DATA_ANGLE: {</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  arrayString.Add(_(<span class="stringliteral">"Degrees"</span>));</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  arrayString.Add(_(<span class="stringliteral">"Radians"</span>));</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT:</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  arrayString.Add(_(<span class="stringliteral">"p.u."</span>));</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  arrayString.Add(_(<span class="stringliteral">"A"</span>));</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  arrayString.Add(_(<span class="stringliteral">"kA"</span>));</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  <span class="keywordflow">case</span> DATA_SC_POWER: {</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  arrayString.Add(_(<span class="stringliteral">"p.u."</span>));</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  arrayString.Add(_(<span class="stringliteral">"VA"</span>));</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  arrayString.Add(_(<span class="stringliteral">"kVA"</span>));</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  arrayString.Add(_(<span class="stringliteral">"MVA"</span>));</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER:</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <span class="keywordflow">case</span> DATA_PF_ACTIVE:</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  arrayString.Add(_(<span class="stringliteral">"p.u."</span>));</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  arrayString.Add(_(<span class="stringliteral">"W"</span>));</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  arrayString.Add(_(<span class="stringliteral">"kW"</span>));</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  arrayString.Add(_(<span class="stringliteral">"MW"</span>));</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  m_choiceTextUnit->Enable();</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER:</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  arrayString.Add(_(<span class="stringliteral">"p.u."</span>));</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  arrayString.Add(_(<span class="stringliteral">"VAr"</span>));</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  arrayString.Add(_(<span class="stringliteral">"kVAr"</span>));</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  arrayString.Add(_(<span class="stringliteral">"MVAr"</span>));</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  <span class="keywordflow">break</span>;</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>  m_choiceTextUnit->Append(arrayString);</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>  <span class="keywordflow">switch</span>(m_text->GetElementType()) {</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="keywordflow">if</span>(m_text->GetDataType() != DATA_PF_LOSSES) {</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  <span class="keyword">auto</span> it = m_allElements.GetLineList().begin();</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  std::advance(it, m_text->GetElementNumber());</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <a class="code" href="class_line.html">Line</a>* line = *it;</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>  <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="l01007"></a><span class="lineno"> 1007</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="l01008"></a><span class="lineno"> 1008</span>  wxString bus1Name = bus1->GetElectricalData().name;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  wxString bus2Name = bus2->GetElectricalData().name;</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>  m_choiceTextFromBus->Append(bus1Name);</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  m_choiceTextFromBus->Append(bus2Name);</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  m_choiceTextToBus->Append(bus2Name);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  m_choiceTextToBus->Append(bus1Name);</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  m_choiceTextFromBus->SetSelection(0);</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  m_choiceTextToBus->SetSelection(0);</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> </div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  m_choiceTextFromBus->Enable();</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  m_choiceTextToBus->Enable();</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <span class="keywordflow">if</span>(m_text->GetDataType() != DATA_PF_LOSSES) {</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <span class="keyword">auto</span> it = m_allElements.GetTransformerList().begin();</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  std::advance(it, m_text->GetElementNumber());</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = *it;</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>  <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="l01029"></a><span class="lineno"> 1029</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="l01030"></a><span class="lineno"> 1030</span>  wxString bus1Name = bus1->GetElectricalData().name;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  wxString bus2Name = bus2->GetElectricalData().name;</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>  m_choiceTextFromBus->Append(bus1Name);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  m_choiceTextFromBus->Append(bus2Name);</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  m_choiceTextToBus->Append(bus2Name);</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  m_choiceTextToBus->Append(bus1Name);</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  m_choiceTextFromBus->SetSelection(0);</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  m_choiceTextToBus->SetSelection(0);</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> </div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  m_choiceTextFromBus->Enable();</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  m_choiceTextToBus->Enable();</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  }</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  }</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> </div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> <span class="keywordtype">void</span> TextForm::UnitChoice()</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> {</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  m_choiceTextUnit->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <span class="keywordflow">case</span> DATA_VOLTAGE:</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="keywordflow">case</span> DATA_SC_VOLTAGE: {</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>);</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>);</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> 2: {</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>);</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <span class="keywordflow">break</span>;</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="keywordflow">break</span>;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  <span class="keywordflow">case</span> DATA_ANGLE: {</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3">UNIT_DEGREE</a>);</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5">UNIT_RADIAN</a>);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  <span class="keywordflow">default</span>:</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>  }</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT:</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>);</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>);</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>);</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  }</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <span class="keywordflow">case</span> DATA_SC_POWER: {</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>);</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>);</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <span class="keywordflow">break</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER:</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <span class="keywordflow">case</span> DATA_PF_ACTIVE:</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</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> 1: {</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</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> 2: {</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</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">case</span> 3: {</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>);</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="keywordflow">break</span>;</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER:</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>);</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>);</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>);</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>);</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>  <span class="keywordflow">default</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>  }</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  <span class="keywordflow">break</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> }</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> TextForm::Preview()</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="keywordtype">double</span> decimalPlaces = m_text->GetDecimalPlaces();</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  <span class="keywordflow">if</span>(m_textCtrlDecimal->GetValue().ToDouble(&decimalPlaces)) m_text->SetDecimalPlaces(decimalPlaces);</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>  m_text->UpdateText(m_systemPowerBase);</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span> </div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  m_textCtrlPreview->SetValue(m_text->GetText());</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> </div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span> <span class="keywordtype">bool</span> TextForm::ValidateData()</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span> {</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</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="l01175"></a><span class="lineno"> 1175</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="l01176"></a><span class="lineno"> 1176</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="l01177"></a><span class="lineno"> 1177</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="l01178"></a><span class="lineno"> 1178</span>  <span class="keywordflow">if</span>(m_text->GetElementType() == TYPE_LINE || m_text->GetElementType() == TYPE_TRANSFORMER) {</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <span class="keywordflow">if</span>(m_text->GetDataType() != DATA_PF_LOSSES && m_text->GetDataType() != DATA_NAME) {</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</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="l01181"></a><span class="lineno"> 1181</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="l01182"></a><span class="lineno"> 1182</span>  }</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> </div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  <span class="keywordflow">if</span>(m_choiceTextFromBus->IsEnabled() && m_choiceTextToBus->IsEnabled())</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  m_text->SetDirection(m_choiceTextFromBus->GetSelection());</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <span class="keywordtype">double</span> decimalPlaces = m_text->GetDecimalPlaces();</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  <span class="keywordflow">if</span>(m_textCtrlDecimal->GetValue().ToDouble(&decimalPlaces)) m_text->SetDecimalPlaces(decimalPlaces);</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> </div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  m_textToEdit->SetElementType(m_text->GetElementType());</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  m_textToEdit->SetElementNumber(m_text->GetElementNumber());</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  m_textToEdit->SetElement(m_text->GetElement());</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  m_textToEdit->SetDataType(m_text->GetDataType());</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  m_textToEdit->SetDirection(m_text->GetDirection());</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  m_textToEdit->SetUnit(m_text->GetUnit());</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  m_textToEdit->SetDecimalPlaces(decimalPlaces);</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  m_textToEdit->UpdateText(m_systemPowerBase);</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="keywordflow">return</span> <span class="keyword">true</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="keywordtype">void</span> TextForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span> {</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  <span class="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  EndModal(wxID_OK);</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  wxString errorMsg = _(<span class="stringliteral">"There are blank fields."</span>);</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, errorMsg, _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  msgDialog.ShowModal();</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> }</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#l00048">Text.h:48</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#l00015">PowerElement.h:15</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#l00013">PowerElement.h:13</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#l00030">PowerElement.h:30</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#l00110">SyncGenerator.h:110</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#l00019">PowerElement.h:19</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#l00014">PowerElement.h:14</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#l00012">PowerElement.h:12</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#l00018">PowerElement.h:18</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#l00045">Bus.h:45</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#l00022">PowerElement.h:22</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#l00016">PowerElement.h:16</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#l00025">PowerElement.h:25</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#l00035">Line.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="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00023">Load.h:23</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#l00024">PowerElement.h:24</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#l00110">SyncMotor.h:110</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#l00017">IndMotor.h:17</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#l00023">PowerElement.h:23</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#l00014">Capacitor.h:14</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#l00014">Inductor.h:14</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#l00020">PowerElement.h:20</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#l00031">PowerElement.h:31</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#l00021">PowerElement.h:21</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#l00054">Transformer.h:54</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="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00065">Text.h:65</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="_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="_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="_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="_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="_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_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#l00017">PowerElement.h:17</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 --> <!-- start footer part --> diff --git a/docs/doxygen/html/_text_form_8h.html b/docs/doxygen/html/_text_form_8h.html new file mode 100644 index 0000000..3914266 --- /dev/null +++ b/docs/doxygen/html/_text_form_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/TextForm.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_form_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">TextForm.h File Reference</div> </div> +</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="_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> +<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_form.html">TextForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the text graphical data. <a href="class_text_form.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="_text_form_8h.html">TextForm.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_form_8h_source.html b/docs/doxygen/html/_text_form_8h_source.html index c57318c..140e411 100644 --- a/docs/doxygen/html/_text_form_8h_source.html +++ b/docs/doxygen/html/_text_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,17 +88,17 @@ $(document).ready(function(){initNavTree('_text_form_8h_source.html','');}); <div class="title">TextForm.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="preprocessor">#ifndef TEXTFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define TEXTFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "Text.h"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</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"><a class="line" href="class_text_form.html"> 8</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="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_text_form.html">TextForm</a>();</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">virtual</span> <span class="keywordtype">bool</span> LoadChoices();</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ElementTypeChoice();</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ElementNumberChoice();</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DataTypeChoice();</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UnitChoice();</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="keyword">virtual</span> <span class="keywordtype">void</span> Preview();</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</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">protected</span>:</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnUnitChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnElementChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFromBusChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnNameChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnTextEnter(wxCommandEvent& event);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnToBusChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnTypeChoiceSelected(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>  <a class="code" href="class_text.html">Text</a>* m_text = NULL;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="class_text.html">Text</a>* m_textToEdit = NULL;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_electric_calculation.html">ElectricCalculation</a> m_allElements;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">double</span> m_systemPowerBase;</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">#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#l00048">Text.h:48</a></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 "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> -<div class="ttc" id="class_text_form_html"><div class="ttname"><a href="class_text_form.html">TextForm</a></div><div class="ttdef"><b>Definition:</b> <a href="_text_form_8h_source.html#l00008">TextForm.h:8</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#l00049">ElectricCalculation.h:49</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="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 --> <!-- 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>TextForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_text_form_8h.html">TextForm.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_8cpp_source.html b/docs/doxygen/html/_transfer_function_8cpp_source.html index be2dd27..6de1a4b 100644 --- a/docs/doxygen/html/_transfer_function_8cpp_source.html +++ b/docs/doxygen/html/_transfer_function_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,16 +88,17 @@ $(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="preprocessor">#include "TransferFunction.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "TransferFunctionForm.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</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="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  <span class="comment">// Superscript unicode numbers</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  m_supNumber[0] = L<span class="stringliteral">'\u2070'</span>;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  m_supNumber[1] = L<span class="stringliteral">'\u00B9'</span>;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  m_supNumber[2] = L<span class="stringliteral">'\u00B2'</span>;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_supNumber[3] = L<span class="stringliteral">'\u00B3'</span>;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  m_supNumber[4] = L<span class="stringliteral">'\u2074'</span>;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_supNumber[5] = L<span class="stringliteral">'\u2075'</span>;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_supNumber[6] = L<span class="stringliteral">'\u2076'</span>;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  m_supNumber[7] = L<span class="stringliteral">'\u2077'</span>;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_supNumber[8] = L<span class="stringliteral">'\u2078'</span>;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_supNumber[9] = L<span class="stringliteral">'\u2079'</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>  m_numerator.clear();</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  m_numerator.push_back(1);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  m_denominator.clear();</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  m_denominator.push_back(1);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_denominator.push_back(1);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  UpdateTFText();</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>* 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="l00026"></a><span class="lineno"> 26</span>  node1->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>* 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="l00028"></a><span class="lineno"> 28</span>  node2->SetAngle(180.0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  node2->StartMove(m_position);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_nodeList.push_back(node1);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_nodeList.push_back(node2);</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> TransferFunction::~TransferFunction() {}</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_transfer_function.html#a0cd1dec850117741abb04b608c7b3f1e"> 35</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="l00036"></a><span class="lineno"> 36</span> <span class="keyword"></span>{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  glLineWidth(1.0);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  DrawRectangle(m_position, m_width + borderSize, m_height + borderSize);</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>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  DrawRectangle(m_position, m_width, m_height);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  DrawRectangle(m_position, m_width, m_height, GL_LINE_LOOP);</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>  std::vector<wxPoint2DDouble> linePts;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</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="l00050"></a><span class="lineno"> 50</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="l00051"></a><span class="lineno"> 51</span>  DrawLine(linePts);</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>  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>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_glStringNum->bind();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_glStringNum->render(m_position.m_x, m_position.m_y - m_height / 4);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_glStringDen->bind();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_glStringDen->render(m_position.m_x, m_position.m_y + m_height / 4);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  glDisable(GL_TEXTURE_2D);</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">void</span> TransferFunction::SetText(wxString numerator, wxString denominator)</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>  wxFont font(m_fontSize, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  wxScreenDC dc;</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>(m_glStringNum) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">delete</span> m_glStringNum;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_glStringNum = 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>  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="l00074"></a><span class="lineno"> 74</span>  m_glStringNum->setFont(font);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_glStringNum->consolidate(&dc);</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_glStringDen) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">delete</span> m_glStringDen;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_glStringDen = NULL;</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>  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="l00082"></a><span class="lineno"> 82</span>  m_glStringDen->setFont(font);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_glStringDen->consolidate(&dc);</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">double</span> nWidth = m_glStringNum->getWidth() + 5 + m_borderSize;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">double</span> dWidth = m_glStringDen->getWidth() + 5 + m_borderSize;</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_width = nWidth > dWidth ? nWidth : dWidth;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_height = m_glStringNum->getheight() + m_glStringDen->getheight() + 2 * m_borderSize;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  SetPosition(m_position); <span class="comment">// Update rect properly.</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> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> wxString TransferFunction::GetSuperscriptNumber(<span class="keywordtype">int</span> number)</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>  wxString strNumber = wxString::Format(<span class="stringliteral">"%d"</span>, number);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  wxString superscriptStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)strNumber.length(); ++i) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  wxString digitStr = strNumber[i];</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">long</span> digit = 0;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  digitStr.ToLong(&digit);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  superscriptStr += wxString(m_supNumber[digit]);</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">return</span> superscriptStr;</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">void</span> TransferFunction::GetTFString(wxString& numerator, wxString& denominator)</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>  numerator = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  denominator = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</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="l00111"></a><span class="lineno"> 111</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="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">double</span> value = *it;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">if</span>(value != 0.0) {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  wxString signal;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span>(index == static_cast<int>(m_numerator.size()) - 1) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span>(value >= 0.0)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  signal += <span class="stringliteral">""</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  signal += <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">if</span>(value >= 0.0)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  signal += <span class="stringliteral">"+ "</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  signal += <span class="stringliteral">"- "</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>  <span class="keywordflow">if</span>(index == 0) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  numerator += signal + StringFromDouble(std::abs(value), 0);</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">else</span> <span class="keywordflow">if</span>(index == 1) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span>(value == 1.0) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  numerator += signal + <span class="stringliteral">"s"</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  numerator += signal + StringFromDouble(std::abs(value), 0) + <span class="stringliteral">"s"</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">else</span> {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span>(value == 1.0) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  numerator += signal + <span class="stringliteral">"s"</span> + GetSuperscriptNumber(index);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  numerator += signal + StringFromDouble(std::abs(value), 0) + <span class="stringliteral">"s"</span> + GetSuperscriptNumber(index);</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>  numerator += <span class="stringliteral">" "</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>  --index;</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>  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="l00149"></a><span class="lineno"> 149</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="l00150"></a><span class="lineno"> 150</span>  <span class="keywordtype">double</span> value = *it;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">if</span>(value != 0.0) {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  wxString signal;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">if</span>(index == static_cast<int>(m_denominator.size()) - 1) {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span>(value >= 0.0)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  signal += <span class="stringliteral">""</span>;</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>  signal += <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">if</span>(value >= 0.0)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  signal += <span class="stringliteral">"+ "</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  signal += <span class="stringliteral">"- "</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"> 165</span>  <span class="keywordflow">if</span>(index == 0) {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  denominator += signal + StringFromDouble(std::abs(value), 0);</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">else</span> <span class="keywordflow">if</span>(index == 1) {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">if</span>(value == 1.0) {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  denominator += signal + <span class="stringliteral">"s"</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  denominator += signal + StringFromDouble(std::abs(value), 0) + <span class="stringliteral">"s"</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">else</span> {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span>(value == 1.0) {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  denominator += signal + <span class="stringliteral">"s"</span> + GetSuperscriptNumber(index);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  denominator += signal + StringFromDouble(std::abs(value), 0) + <span class="stringliteral">"s"</span> + GetSuperscriptNumber(index);</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>  denominator += <span class="stringliteral">" "</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>  --index;</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> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="keywordtype">void</span> TransferFunction::UpdateTFText()</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>  wxString num, den;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  GetTFString(num, den);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  SetText(num, den);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">if</span>(m_nodeList.size() == 2) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</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> }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="class_transfer_function.html#afe15de93ab4f93032560a6139091ef10"> 209</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="l00210"></a><span class="lineno"> 210</span> {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</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="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">if</span>(tfForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  tfForm->Destroy();</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">return</span> <span class="keyword">true</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"> 216</span>  tfForm->Destroy();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> <span class="keyword">false</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> </div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="class_transfer_function.html#ae145b86db1450a19a3ed32084ee60423"> 220</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="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>(clockwise)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  m_angle += 90.0;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  m_angle -= 90.0;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  m_angle = 0.0;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  m_angle = 270.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>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(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 == 90.0) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  m_nodeList[1]->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> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</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="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="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  node->Rotate(clockwise);</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> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</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="l00252"></a><span class="lineno"> 252</span> {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  m_maxIteration = maxIteration;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  m_error = error;</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="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="l00257"></a><span class="lineno"> 257</span>  std::vector<double> denominator = m_denominator;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  std::vector<double> numerator;</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="keywordtype">int</span> k = order;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; i++) {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</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="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">if</span>(numIndex < 0)</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  numerator.push_back(0.0);</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>  numerator.push_back(m_numerator[numIndex]);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  k--;</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>  <a class="code" href="struct_transfer_function_1_1_space_state.html">SpaceState</a> ss;</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 < (order - 1); i++) {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  std::vector<double> lineA;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (order - 1); j++) {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span>(j == i + 1)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  lineA.push_back(1.0);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  lineA.push_back(0.0);</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>  ss.A.push_back(lineA);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  ss.B.push_back(0.0);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  ss.C.push_back(0.0);</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">for</span>(<span class="keywordtype">int</span> i = 0; i < order - 1; i++) {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  ss.A[order - 2][i] = -(denominator[order - 1 - i] / denominator[0]);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  ss.C[i] = (numerator[order - 1 - i] - denominator[order - 1 - i] * numerator[0]) / denominator[0];</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>  ss.B[order - 2] = 1.0;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  ss.D = numerator[0];</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>  m_ss = ss;</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="comment">// Reset state</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  m_x.clear();</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  m_dx.clear();</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">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="l00297"></a><span class="lineno"> 297</span>  m_x.push_back(0.0);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  m_dx.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> }</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="keywordtype">bool</span> TransferFunction::Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</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">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="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  std::vector<double> x;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  std::vector<double> oldx;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  std::vector<double> dx;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  std::vector<double> olddx;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; i++) {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  x.push_back(m_x[i]);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  oldx.push_back(m_x[i]);</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>  dx.push_back(m_dx[i]);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  olddx.push_back(m_dx[i]);</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="keywordtype">bool</span> exit = <span class="keyword">false</span>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordtype">int</span> iter = 0;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">while</span>(!exit) {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordtype">double</span> xError = 0.0;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordtype">double</span> dxError = 0.0;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; i++) {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="comment">// Trapezoidal method</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  x[i] = m_x[i] + 0.5 * timeStep * (m_dx[i] + dx[i]);</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">if</span>(std::abs(x[i] - oldx[i]) > xError) xError = std::abs(x[i] - oldx[i]);</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>  oldx[i] = 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>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; i++) {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="comment">// x' = Ax + Bu</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  dx[i] = 0.0;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</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="l00335"></a><span class="lineno"> 335</span>  dx[i] += m_ss.B[i] * input;</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>(std::abs(dx[i] - olddx[i]) > dxError) dxError = std::abs(dx[i] - olddx[i]);</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>  olddx[i] = dx[i];</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="keywordflow">if</span>(std::max(xError, dxError) < m_error) exit = <span class="keyword">true</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>  iter++;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</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="l00345"></a><span class="lineno"> 345</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>  m_output = 0.0;</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>  m_output += m_ss.C[i] * x[i];</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  m_x[i] = x[i];</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  m_dx[i] = dx[i];</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> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  m_output += m_ss.D * input;</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">return</span> <span class="keyword">true</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> </div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="class_transfer_function.html#a3312f7e9499aa99742093d3b60547862"> 359</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="l00360"></a><span class="lineno"> 360</span> {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</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="l00362"></a><span class="lineno"> 362</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  m_glStringNum = NULL;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  m_glStringDen = NULL;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  UpdateTFText();</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</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#l00088">Element.h:88</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#l00209">TransferFunction.cpp:209</a></div></div> -<div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00006">ControlElement.h:6</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#l00359">TransferFunction.cpp:359</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="ttdef"><b>Definition:</b> <a href="_transfer_function_form_8h_source.html#l00008">TransferFunctionForm.h:8</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#l00014">TransferFunction.h:14</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#l00220">TransferFunction.cpp:220</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#l00011">TransferFunction.h:11</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#l00035">TransferFunction.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#l00053">ControlElement.h:53</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 "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="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_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="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_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="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_source.html b/docs/doxygen/html/_transfer_function_8h_source.html index 5fd75a8..bd51bfe 100644 --- a/docs/doxygen/html/_transfer_function_8h_source.html +++ b/docs/doxygen/html/_transfer_function_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,17 +88,18 @@ $(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="preprocessor">#ifndef TRANSFERFUNCTION_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define TRANSFERFUNCTION_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ControlElement.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <wx/dcscreen.h></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "wxGLString.h"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="keyword">class </span><a class="code" href="class_transfer_function_form.html">TransferFunctionForm</a>;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="class_transfer_function.html"> 11</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="l00012"></a><span class="lineno"> 12</span> {</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00014"></a><span class="lineno"><a class="line" href="struct_transfer_function_1_1_space_state.html"> 14</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="l00015"></a><span class="lineno"> 15</span>  std::vector<std::vector<double> > A;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  std::vector<double> B;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  std::vector<double> C;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keywordtype">double</span> D;</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> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</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="l00022"></a><span class="lineno"> 22</span>  ~<a class="code" href="class_transfer_function.html">TransferFunction</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>  <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="l00025"></a><span class="lineno"><a class="line" href="class_transfer_function.html#a6a4415d2cf0af290494ea30d586cc187"> 25</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="l00026"></a><span class="lineno"><a class="line" href="class_transfer_function.html#a6325dec72c7b85178f490c5cf85229bd"> 26</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="l00027"></a><span class="lineno"> 27</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="l00028"></a><span class="lineno"> 28</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="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</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="l00031"></a><span class="lineno"> 31</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="l00032"></a><span class="lineno"> 32</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="l00033"></a><span class="lineno"> 33</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="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateTFText();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText() { UpdateTFText(); }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</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="l00037"></a><span class="lineno"> 37</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="l00038"></a><span class="lineno"> 38</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="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>* <a class="code" href="class_transfer_function.html#a3312f7e9499aa99742093d3b60547862">GetCopy</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">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> SetText(wxString numerator, wxString denominator);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> wxString GetSuperscriptNumber(<span class="keywordtype">int</span> number);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> GetTFString(wxString& numerator, wxString& denominator);</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">wchar_t</span> m_supNumber[10];</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>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glStringNum = NULL;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glStringDen = NULL;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">int</span> m_fontSize = 10;</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>  std::vector<double> m_numerator;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  std::vector<double> m_denominator;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="struct_transfer_function_1_1_space_state.html">SpaceState</a> m_ss;</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>  std::vector<double> m_x;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  std::vector<double> m_dx;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">double</span> m_error = 1e-3;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">int</span> m_maxIteration = 100;</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 // 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#l00088">Element.h:88</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#l00209">TransferFunction.cpp:209</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#l00359">TransferFunction.cpp:359</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#l00026">TransferFunction.h:26</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="ttdef"><b>Definition:</b> <a href="_transfer_function_form_8h_source.html#l00008">TransferFunctionForm.h:8</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#l00014">TransferFunction.h:14</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#l00220">TransferFunction.cpp:220</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#l00025">TransferFunction.h:25</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#l00011">TransferFunction.h:11</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#l00035">TransferFunction.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#l00053">ControlElement.h:53</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">#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> +<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_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="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="_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> <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_form_8cpp_source.html b/docs/doxygen/html/_transfer_function_form_8cpp_source.html index ef0077b..3cce3f7 100644 --- a/docs/doxygen/html/_transfer_function_form_8cpp_source.html +++ b/docs/doxygen/html/_transfer_function_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,8 +88,9 @@ $(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="preprocessor">#include "TransferFunctionForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "TransferFunction.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> TransferFunctionForm::TransferFunctionForm(wxWindow* parent, <a class="code" href="class_transfer_function.html">TransferFunction</a>* transferFunction)</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  : <a class="code" href="class_transfer_function_form_base.html">TransferFunctionFormBase</a>(parent)</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  m_parent = parent;</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  m_tf = transferFunction;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  LoadTFData();</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> }</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> TransferFunctionForm::~TransferFunctionForm() {}</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="keywordtype">void</span> TransferFunctionForm::OnCancelClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keywordtype">void</span> TransferFunctionForm::OnOKClick(wxCommandEvent& event)</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="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</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> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="keywordtype">void</span> TransferFunctionForm::LoadTFData()</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">auto</span> num = m_tf->GetNumerator();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keyword">auto</span> den = m_tf->GetDenominator();</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 numStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</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="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">double</span> value = *it;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">if</span>(it == num.begin())</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  numStr = m_tf->StringFromDouble(value, 0);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  numStr += <span class="stringliteral">" "</span> + m_tf->StringFromDouble(value, 0);</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_textCtrlNumerator->SetValue(numStr);</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>  wxString denStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</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="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">double</span> value = *it;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span>(it == den.begin())</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  denStr = m_tf->StringFromDouble(value, 0);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  denStr += <span class="stringliteral">" "</span> + m_tf->StringFromDouble(value, 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_textCtrlDenominator->SetValue(denStr);</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">bool</span> TransferFunctionForm::ValidateData()</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>  wxString num = m_textCtrlNumerator->GetValue();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::vector<double> numerator;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">while</span>(num != <span class="stringliteral">""</span>) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  wxString rest;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  wxString strValue = num.BeforeFirst(<span class="charliteral">' '</span>, &rest);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  num = rest;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">double</span> value = 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span>(!m_tf->DoubleFromString(<span class="keyword">this</span>, strValue, value,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Numerator parameters\"."</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>  numerator.push_back(value);</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>  wxString den = m_textCtrlDenominator->GetValue();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  std::vector<double> denominator;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">while</span>(den != <span class="stringliteral">""</span>) {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  wxString rest;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  wxString strValue = den.BeforeFirst(<span class="charliteral">' '</span>, &rest);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  den = rest;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">double</span> value = 0;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span>(!m_tf->DoubleFromString(<span class="keyword">this</span>, strValue, value,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Denominator parameters\"."</span>)))</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  denominator.push_back(value);</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_tf->SetNumerator(numerator);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_tf->SetDenominator(denominator);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_tf->UpdateTFText();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> }</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#l00011">TransferFunction.h:11</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 "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="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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_transfer_function_form_8h.html b/docs/doxygen/html/_transfer_function_form_8h.html new file mode 100644 index 0000000..759ef39 --- /dev/null +++ b/docs/doxygen/html/_transfer_function_form_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/TransferFunctionForm.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_form_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">TransferFunctionForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +</div> +<p><a href="_transfer_function_form_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_form.html">TransferFunctionForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the transfer function control data. <a href="class_transfer_function_form.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="_transfer_function_form_8h.html">TransferFunctionForm.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_form_8h_source.html b/docs/doxygen/html/_transfer_function_form_8h_source.html index d33d245..20ec72f 100644 --- a/docs/doxygen/html/_transfer_function_form_8h_source.html +++ b/docs/doxygen/html/_transfer_function_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,15 +88,15 @@ $(document).ready(function(){initNavTree('_transfer_function_form_8h_source.html <div class="title">TransferFunctionForm.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="preprocessor">#ifndef TRANSFERFUNCTIONFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define TRANSFERFUNCTIONFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_transfer_function.html">TransferFunction</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="class_transfer_function_form.html"> 8</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="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</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="l00012"></a><span class="lineno"> 12</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_transfer_function_form.html">TransferFunctionForm</a>();</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelClick(wxCommandEvent& event);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKClick(wxCommandEvent& event);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keywordtype">void</span> LoadTFData();</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>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <a class="code" href="class_transfer_function.html">TransferFunction</a>* m_tf = NULL;</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">#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="ttdef"><b>Definition:</b> <a href="_transfer_function_form_8h_source.html#l00008">TransferFunctionForm.h:8</a></div></div> +<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#l00011">TransferFunction.h:11</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><!-- 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>TransferFunctionForm.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_form_8h.html">TransferFunctionForm.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_8cpp_source.html b/docs/doxygen/html/_transformer_8cpp_source.html index c1e7a91..c8465d5 100644 --- a/docs/doxygen/html/_transformer_8cpp_source.html +++ b/docs/doxygen/html/_transformer_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,43 +88,44 @@ $(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="preprocessor">#include "TransformerForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "Transformer.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> Transformer::Transformer() : <a class="code" href="class_branch.html">Branch</a>()</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> {</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; i++) {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 3; j++) {</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</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> }</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> Transformer::Transformer(wxString name) : <a class="code" href="class_branch.html">Branch</a>()</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="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; i++) {</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 3; j++) {</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);</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>  }</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  m_electricalData.name = name;</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() {}</div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6"> 22</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="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>(parent) {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="comment">// First bus.</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">if</span>(m_parentList.size() == 0) {</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_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>  m_pointList.push_back(parentPt); <span class="comment">// First point</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_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>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_switchRect.push_back(genRect);</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">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>  <span class="comment">// Second bus.</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent != m_parentList[0]) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</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="l00048"></a><span class="lineno"> 48</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="l00049"></a><span class="lineno"> 49</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="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// Get the average between the two bus points.</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_position =</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</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="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// Set the transformer rectangle.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_width = 70.0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_height = 40.0;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  SetPosition(m_position); <span class="comment">// This method calculates the rectangle propely.</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// Set the "side" points.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_pointList.push_back(</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  wxPoint2DDouble(m_rect.GetPosition() + wxPoint2DDouble(-10 - m_borderSize, m_height / 2.0)));</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_pointList.push_back(</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  wxPoint2DDouble(m_rect.GetPosition() + wxPoint2DDouble(m_width + 10 + m_borderSize, m_height / 2.0)));</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">// Set first switch point.</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  wxPoint2DDouble secondPoint = parentPt;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(m_pointList.size() > 2) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  secondPoint = m_pointList[2];</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_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], secondPoint);</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">// Set the second switch point.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_pointList[m_pointList.size() - 1]));</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_pointList.push_back(parentPt); <span class="comment">// Last point.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_inserted = <span class="keyword">true</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>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_switchRect.push_back(genRect);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  UpdateSwitches();</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>  <span class="keywordflow">return</span> <span class="keyword">true</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>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> <span class="keyword">false</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> </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="class_transformer.html#a327ff3cf9194c18049e4feac6761ebc0"> 88</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="l00089"></a><span class="lineno"> 89</span> <span class="keyword"></span>{</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  wxPoint2DDouble ptR = RotateAtPosition(position, -m_angle);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span> m_rect.Contains(ptR);</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"><a class="line" href="class_transformer.html#a1e9e9ba48aa76bdd2ff2e973014ad422"> 94</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="l00095"></a><span class="lineno"> 95</span> <span class="keyword"></span>{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  elementColour = m_offlineElementColour;</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_inserted) {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// Draw selection (layer 1).</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// Push the current matrix on stack.</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  glPushMatrix();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// Rotate the matrix around the object position.</span></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>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  glTranslated(-m_position.m_x, -m_position.m_y, 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>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20 + (m_borderSize + 1.5) / scale, 20,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  GL_POLYGON);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20 + (m_borderSize + 1.5) / scale, 20,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  GL_POLYGON);</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>  glPopMatrix();</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="comment">// Draw nodes selection.</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span>(m_pointList.size() > 0) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  DrawCircle(m_pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  DrawCircle(m_pointList[m_pointList.size() - 1], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</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">// Draw transformer (layer 2).</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// Transformer line</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  glLineWidth(1.5);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  DrawLine(m_pointList);</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="comment">// Draw nodes.</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">if</span>(m_pointList.size() > 0) {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  DrawCircle(m_pointList[m_pointList.size() - 1], 5.0, 10, GL_POLYGON);</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> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  DrawSwitches();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  DrawPowerFlowPts();</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="comment">// Push the current matrix on stack.</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  glPushMatrix();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// Rotate the matrix around the object position.</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.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>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20, 20, GL_POLYGON);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20, 20, GL_POLYGON);</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>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20, 20);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20, 20);</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>  DrawPoint(m_rect.GetPosition(), 8.0 * scale);</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>  glPopMatrix();</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"><a class="line" href="class_transformer.html#a39b58fcf230970601c5d77c088559731"> 173</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="l00174"></a><span class="lineno"> 174</span> <span class="keyword"></span>{</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</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="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> RotatedRectanglesIntersects(m_rect, rect, m_angle, 0.0);</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"><a class="line" href="class_transformer.html#aaa6cc999eb77a94dafaec5debb4db3de"> 179</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="l00180"></a><span class="lineno"> 180</span> {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</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>  m_angle += rotAngle;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</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">// Rotate all the points, except the switches and buses points.</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</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="l00189"></a><span class="lineno"> 189</span>  m_pointList[i] = RotateAtPosition(m_pointList[i], rotAngle);</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>  UpdateSwitchesPosition();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  UpdatePowerFlowArrowsPosition();</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"><a class="line" href="class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8"> 195</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="l00196"></a><span class="lineno"> 196</span> {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  SetPosition(m_movePos + position - m_moveStartPt);</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="comment">// Move all the points, except the switches and buses points.</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 = 2; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</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_parentList[0]) {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</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>(!m_parentList[1]) {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</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>  UpdateSwitchesPosition();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  UpdatePowerFlowArrowsPosition();</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"><a class="line" href="class_transformer.html#a9652232a076cca0fe3753477ec88f63a"> 215</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="l00216"></a><span class="lineno"> 216</span> {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="comment">// First bus.</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</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">// Second bus.</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent == m_parentList[1]) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</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">else</span> {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  m_online = <span class="keyword">false</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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span>(m_parentList[1]) {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  m_parentList[1]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  m_parentList[1] = NULL;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  m_online = <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>  }</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="comment">// Recalculate switches positions</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  UpdatePowerFlowArrowsPosition();</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> </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="class_transformer.html#a0395a11dc8173e511a0596ac96bf05e5"> 249</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="l00250"></a><span class="lineno"> 250</span> {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  m_moveStartPt = position;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  m_movePts = m_pointList;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  m_movePos = m_position;</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> </div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="class_transformer.html#adfe51a2198cfc10e1095af9c034681bd"> 256</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="l00257"></a><span class="lineno"> 257</span> {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</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="l00259"></a><span class="lineno"> 259</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">return</span> <span class="keyword">true</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> </div><div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="class_transformer.html#acb55f182a7f6d7af0feb6a94cb62af4f"> 263</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="l00264"></a><span class="lineno"> 264</span> {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</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="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">if</span>(transfForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  transfForm->Destroy();</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> <span class="keyword">true</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>  transfForm->Destroy();</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> <span class="keyword">false</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"><a class="line" href="class_transformer.html#a7e3cd54e20d795ab9b0b8533ce03b728"> 274</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="l00275"></a><span class="lineno"> 275</span> {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span>(nominalVoltage.size() == 1) {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  m_electricalData.primaryNominalVoltage = nominalVoltage[0];</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  m_electricalData.primaryNominalVoltageUnit = nominalVoltageUnit[0];</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(nominalVoltage.size() == 2) {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  m_electricalData.primaryNominalVoltage = nominalVoltage[0];</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  m_electricalData.primaryNominalVoltageUnit = nominalVoltageUnit[0];</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  m_electricalData.secondaryNominalVoltage = nominalVoltage[1];</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  m_electricalData.secondaryNominalVoltageUnit = nominalVoltageUnit[1];</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="keywordtype">void</span> Transformer::UpdatePowerFlowArrowsPosition()</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>  std::vector<wxPoint2DDouble> edges;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">switch</span>(m_pfDirection) {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a>: {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  m_powerFlowArrow.clear();</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</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="l00295"></a><span class="lineno"> 295</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="l00296"></a><span class="lineno"> 296</span>  edges.push_back(m_pointList[i]);</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">break</span>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</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="l00300"></a><span class="lineno"> 300</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="l00301"></a><span class="lineno"> 301</span>  edges.push_back(m_pointList[i]);</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">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>  CalculatePowerFlowPts(edges);</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"><a class="line" href="class_transformer.html#adf0b20286f3de359346b8877d65c1996"> 310</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="l00311"></a><span class="lineno"> 311</span> {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</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">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</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="l00317"></a><span class="lineno"> 317</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent == m_parentList[1]) {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</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="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"><a class="line" href="class_transformer.html#a4f9137e6190fb630167f671a0da51ab6"> 324</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="l00325"></a><span class="lineno"> 325</span> {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</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="l00327"></a><span class="lineno"> 327</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="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">if</span>(parent && m_activeNodeID != 0) {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  wxRect2DDouble nodeRect(0, 0, 0, 0);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</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="l00333"></a><span class="lineno"> 333</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</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="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</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>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(nodeRect)) {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="comment">// Check if the user is trying to connect the same bus.</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">if</span>(m_parentList[1] == parent) {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  m_parentList[0] = parent;</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>  <span class="comment">// Centralize the node on bus.</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  wxPoint2DDouble parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</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="l00354"></a><span class="lineno"> 354</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="l00355"></a><span class="lineno"> 355</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="l00356"></a><span class="lineno"> 356</span>  m_pointList[0] = parentPt;</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>  UpdateSwitchesPosition();</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">return</span> <span class="keyword">true</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"> 362</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">if</span>(m_parentList[0] == parent) {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  m_parentList[1] = parent;</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>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</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="l00372"></a><span class="lineno"> 372</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</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="l00374"></a><span class="lineno"> 374</span>  m_pointList[m_pointList.size() - 1] = parentPt;</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>  UpdateSwitchesPosition();</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</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">else</span> {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) m_parentList[0] = NULL;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) m_parentList[1] = NULL;</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>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</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> </div><div class="line"><a name="l00388"></a><span class="lineno"><a class="line" href="class_transformer.html#a328c419af15701734168c8db62eefa36"> 388</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="l00389"></a><span class="lineno"> 389</span> {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  m_pfDirection = pfDirection;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  UpdatePowerFlowArrowsPosition();</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"><a class="line" href="class_transformer.html#a286bcc94f7202a6ff81b66707424a9bd"> 394</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="l00395"></a><span class="lineno"> 395</span> {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</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="l00397"></a><span class="lineno"> 397</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">return</span> copy;</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"><a class="line" href="class_transformer.html#a169064f996341f8f8b6881c6a3909f0b"> 401</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="l00402"></a><span class="lineno"> 402</span> <span class="keyword"></span>{</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  wxString primVoltage = StringFromDouble(m_electricalData.primaryNominalVoltage);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">switch</span>(m_electricalData.primaryNominalVoltageUnit) {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  primVoltage += _(<span class="stringliteral">" V"</span>);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  primVoltage += _(<span class="stringliteral">" kV"</span>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">break</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>  wxString secVoltage = StringFromDouble(m_electricalData.secondaryNominalVoltage);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">switch</span>(m_electricalData.secondaryNominalVoltageUnit) {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  secVoltage += _(<span class="stringliteral">" V"</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  secVoltage += _(<span class="stringliteral">" kV"</span>);</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>  <span class="keywordflow">default</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>  }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  tipText += <span class="stringliteral">"\n"</span> + primVoltage + <span class="stringliteral">" / "</span> + secVoltage;</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>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordtype">int</span> busNumber[2];</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</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="l00433"></a><span class="lineno"> 433</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="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</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="l00436"></a><span class="lineno"> 436</span>  wxString::FromDouble(m_electricalData.powerFlow[0].real(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</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="l00438"></a><span class="lineno"> 438</span>  wxString::FromDouble(m_electricalData.powerFlow[0].imag(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</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="l00440"></a><span class="lineno"> 440</span>  wxString::FromDouble(m_electricalData.powerFlow[1].real(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</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="l00442"></a><span class="lineno"> 442</span>  wxString::FromDouble(m_electricalData.powerFlow[1].imag(), 5) + _(<span class="stringliteral">" p.u."</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="keywordflow">return</span> tipText;</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> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</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="l00449"></a><span class="lineno"> 449</span> {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordtype">double</span> transformerBasePower = GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordtype">double</span> baseVoltage = 0.0;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">if</span>(data.baseVoltage == 0) {</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  baseVoltage = GetValueFromUnit(data.primaryNominalVoltage, data.primaryNominalVoltageUnit);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  baseVoltage = GetValueFromUnit(data.secondaryNominalVoltage, data.secondaryNominalVoltageUnit);</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>  <span class="keywordtype">double</span> systemBaseImpedance = (baseVoltage * baseVoltage) / systemBasePower;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordtype">double</span> transformerBaseImpedance = (baseVoltage * baseVoltage) / transformerBasePower;</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="comment">// Resistance</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordtype">double</span> r = data.resistance;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</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="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.resistance = (r * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  data.resistance = r / systemBaseImpedance;</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>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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>  <span class="comment">// Indutive reactance</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordtype">double</span> x = data.indReactance;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</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="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.indReactance = (x * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  data.indReactance = x / systemBaseImpedance;</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>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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="comment">// Fault</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="comment">// Zero seq. resistance</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordtype">double</span> r0 = data.zeroResistance;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.zeroResistance = (r0 * transformerBaseImpedance) / 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>  <span class="comment">// Zero seq. ind. reactance</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordtype">double</span> x0 = data.zeroIndReactance;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.zeroIndReactance = (x0 * transformerBaseImpedance) / systemBaseImpedance;</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="comment">// Primary ground resistance</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordtype">double</span> rgp = data.primaryGrndResistance;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.primaryGrndResistance = (rgp * transformerBaseImpedance) / systemBaseImpedance;</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>  <span class="comment">// Primary ground ind reactance</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordtype">double</span> xgp = data.primaryGrndReactance;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.primaryGrndReactance = (xgp * transformerBaseImpedance) / systemBaseImpedance;</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">// Secondary ground resistance</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordtype">double</span> rgs = data.secondaryGrndResistance;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.secondaryGrndResistance = (rgs * transformerBaseImpedance) / systemBaseImpedance;</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">// Secondary ground ind reactance</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="keywordtype">double</span> xgs = data.secondaryGrndReactance;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.secondaryGrndReactance = (xgs * transformerBaseImpedance) / systemBaseImpedance;</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>(!m_online) {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  data.powerFlow[0] = std::complex<double>(0,0);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  data.powerFlow[1] = std::complex<double>(0,0);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  data.faultCurrent[0][0] = std::complex<double>(0,0);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  data.faultCurrent[0][1] = std::complex<double>(0,0);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  data.faultCurrent[0][2] = std::complex<double>(0,0);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  data.faultCurrent[1][0] = std::complex<double>(0,0);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  data.faultCurrent[1][1] = std::complex<double>(0,0);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  data.faultCurrent[1][2] = std::complex<double>(0,0);</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="keywordflow">return</span> data;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</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#l00201">Element.h:201</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#l00394">Transformer.cpp:394</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#l00088">Element.h:88</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#l00013">PowerElement.h:13</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#l00033">Element.h:33</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#l00179">Transformer.cpp:179</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#l00263">Transformer.cpp:263</a></div></div> -<div class="ttc" id="class_transformer_html_a169064f996341f8f8b6881c6a3909f0b"><div class="ttname"><a href="class_transformer.html#a169064f996341f8f8b6881c6a3909f0b">Transformer::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="_transformer_8cpp_source.html#l00401">Transformer.cpp:401</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#l00014">PowerElement.h:14</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#l00091">Element.cpp:91</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 "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="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="_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_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> +<div class="ttc" id="class_transformer_html_a169064f996341f8f8b6881c6a3909f0b"><div class="ttname"><a href="class_transformer.html#a169064f996341f8f8b6881c6a3909f0b">Transformer::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="_transformer_8cpp_source.html#l00418">Transformer.cpp:418</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_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_transformer_html_a9652232a076cca0fe3753477ec88f63a"><div class="ttname"><a href="class_transformer.html#a9652232a076cca0fe3753477ec88f63a">Transformer::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="_transformer_8cpp_source.html#l00215">Transformer.cpp:215</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#l00012">PowerElement.h:12</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="ttdef"><b>Definition:</b> <a href="_transformer_form_8h_source.html#l00009">TransformerForm.h:9</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#l00195">Transformer.cpp:195</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#l00045">Bus.h:45</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#l00388">Transformer.cpp:388</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#l00274">Transformer.cpp:274</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#l00256">Transformer.cpp:256</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#l00333">Element.cpp:333</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#l00066">PowerElement.h:66</a></div></div> -<div class="ttc" id="class_transformer_html_adf0b20286f3de359346b8877d65c1996"><div class="ttname"><a href="class_transformer.html#adf0b20286f3de359346b8877d65c1996">Transformer::RotateNode</a></div><div class="ttdeci">virtual void RotateNode(Element *parent, bool clockwise)</div><div class="ttdoc">Rotate a node. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00310">Transformer.cpp:310</a></div></div> -<div class="ttc" id="class_transformer_html_a39b58fcf230970601c5d77c088559731"><div class="ttname"><a href="class_transformer.html#a39b58fcf230970601c5d77c088559731">Transformer::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="_transformer_8cpp_source.html#l00173">Transformer.cpp:173</a></div></div> -<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#l00088">Transformer.cpp:88</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#l00324">Transformer.cpp:324</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#l00062">PowerElement.h:62</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#l00048">Element.h:48</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#l00094">Transformer.cpp:94</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#l00022">Transformer.cpp:22</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#l00061">PowerElement.h:61</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#l00249">Transformer.cpp:249</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#l00171">Element.h:171</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#l00065">PowerElement.h:65</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#l00020">Transformer.h:20</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#l00054">Transformer.h:54</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#l00083">Element.h:83</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#l00007">Branch.h:7</a></div></div> +<div class="ttc" id="class_transformer_html_a9652232a076cca0fe3753477ec88f63a"><div class="ttname"><a href="class_transformer.html#a9652232a076cca0fe3753477ec88f63a">Transformer::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="_transformer_8cpp_source.html#l00232">Transformer.cpp:232</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="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_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> +<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_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="class_transformer_html_adf0b20286f3de359346b8877d65c1996"><div class="ttname"><a href="class_transformer.html#adf0b20286f3de359346b8877d65c1996">Transformer::RotateNode</a></div><div class="ttdeci">virtual void RotateNode(Element *parent, bool clockwise)</div><div class="ttdoc">Rotate a node. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00327">Transformer.cpp:327</a></div></div> +<div class="ttc" id="class_transformer_html_a39b58fcf230970601c5d77c088559731"><div class="ttname"><a href="class_transformer.html#a39b58fcf230970601c5d77c088559731">Transformer::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="_transformer_8cpp_source.html#l00190">Transformer.cpp:190</a></div></div> +<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_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> +<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_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_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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_transformer_8h_source.html b/docs/doxygen/html/_transformer_8h_source.html index f67c9bb..7e5bca5 100644 --- a/docs/doxygen/html/_transformer_8h_source.html +++ b/docs/doxygen/html/_transformer_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,16 +88,16 @@ $(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="preprocessor">#ifndef TRANSFORMER_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define TRANSFORMER_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "Branch.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_transformer_form.html">TransformerForm</a>;</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="keyword">enum</span> TransformerConnection {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  GWYE_GWYE = 0,</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  WYE_GWYE,</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  GWYE_WYE,</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  WYE_WYE,</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  DELTA_GWYE,</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  DELTA_WYE,</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  GWYE_DELTA,</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  WYE_DELTA,</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  DELTA_DELTA</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> </div><div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="struct_transformer_electrical_data.html"> 20</a></span> <span class="keyword">struct </span><a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="comment">// General</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  wxString name = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordtype">double</span> primaryNominalVoltage = 138.0;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</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="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">double</span> secondaryNominalVoltage = 138.0;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</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="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">int</span> baseVoltage = 0;</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> resistance = 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> resistanceUnit = <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>  <span class="keywordtype">double</span> indReactance = 1.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> indReactanceUnit = <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>  TransformerConnection connection = GWYE_GWYE;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">double</span> turnsRatio = 1.0;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">double</span> phaseShift = 0.0;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">bool</span> useTransformerPower = <span class="keyword">false</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">// Power flow (p.u.)</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</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="l00041"></a><span class="lineno"> 41</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="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">double</span> zeroResistance = 0.0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> zeroIndReactance = 1.0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">double</span> primaryGrndResistance = 0.0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> primaryGrndReactance = 0.0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">double</span> secondaryGrndResistance = 0.0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">double</span> secondaryGrndReactance = 0.0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// p.u. fault data</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  std::complex<double> faultCurrent[2][3];</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_transformer.html"> 54</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="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="class_transformer.html">Transformer</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_transformer.html">Transformer</a>(wxString name);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_transformer.html">Transformer</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">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</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="l00063"></a><span class="lineno"> 63</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="l00064"></a><span class="lineno"> 64</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="l00065"></a><span class="lineno"> 65</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="l00066"></a><span class="lineno"> 66</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="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> MoveNode(<a class="code" href="class_element.html">Element</a>* parent, 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> StartMove(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> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> wxString GetTipText() <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">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="l00073"></a><span class="lineno"> 73</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="l00074"></a><span class="lineno"> 74</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="l00075"></a><span class="lineno"> 75</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="l00076"></a><span class="lineno"> 76</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="l00077"></a><span class="lineno"> 77</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="l00078"></a><span class="lineno"> 78</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="l00079"></a><span class="lineno"> 79</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="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordtype">void</span> UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> m_electricalData;</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="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#l00088">Element.h:88</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#l00014">PowerElement.h:14</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#l00011">PowerElement.h:11</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#l00012">PowerElement.h:12</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="ttdef"><b>Definition:</b> <a href="_transformer_form_8h_source.html#l00009">TransformerForm.h:9</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#l00022">PowerElement.h:22</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#l00061">PowerElement.h:61</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#l00020">Transformer.h:20</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#l00054">Transformer.h:54</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#l00007">Branch.h:7</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">#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> +<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="_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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_transformer_form_8cpp_source.html b/docs/doxygen/html/_transformer_form_8cpp_source.html index 196aa16..20a3fa2 100644 --- a/docs/doxygen/html/_transformer_form_8cpp_source.html +++ b/docs/doxygen/html/_transformer_form_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,18 +88,20 @@ $(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="preprocessor">#include "TransformerForm.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "SwitchingForm.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "Transformer.h"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</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="l00006"></a><span class="lineno"> 6</span> {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  m_choiceResistance->SetString(1, L<span class="stringliteral">'\u03A9'</span>);</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  m_choiceReactance->SetString(1, L<span class="stringliteral">'\u03A9'</span>);</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <span class="comment">//Reset connections choice labels (to be translated)</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  m_choiceConnection->SetString(0, _(<span class="stringliteral">"Grounded Wye - Grounded Wye"</span>));</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  m_choiceConnection->SetString(1, _(<span class="stringliteral">"Wye - Grounded Wye"</span>));</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  m_choiceConnection->SetString(2, _(<span class="stringliteral">"Grounded Wye - Wye"</span>));</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  m_choiceConnection->SetString(3, _(<span class="stringliteral">"Wye - Wye"</span>));</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  m_choiceConnection->SetString(4, _(<span class="stringliteral">"Delta - Grounded Wye"</span>));</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  m_choiceConnection->SetString(5, _(<span class="stringliteral">"Delta - Wye"</span>));</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  m_choiceConnection->SetString(6, _(<span class="stringliteral">"Grounded Wye - Delta"</span>));</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  m_choiceConnection->SetString(7, _(<span class="stringliteral">"Wye - Delta"</span>));</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  m_choiceConnection->SetString(8, _(<span class="stringliteral">"Delta - Delta"</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>  SetSize(GetBestSize());</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  Layout();</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_parent = parent;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_transformer = transformer;</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="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = transformer->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>  wxString primVoltStr = <a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.primaryNominalVoltage);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">switch</span>(data.primaryNominalVoltageUnit) {</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#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  primVoltStr += <span class="stringliteral">" V"</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> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  primVoltStr += <span class="stringliteral">" kV"</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>  <span class="keywordflow">default</span>:</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>  wxString secVoltStr = <a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.secondaryNominalVoltage);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">switch</span>(data.secondaryNominalVoltageUnit) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  secVoltStr += <span class="stringliteral">" V"</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>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  secVoltStr += <span class="stringliteral">" kV"</span>;</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">default</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>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_staticTextNominalVoltageValue->SetLabel(wxString::Format(<span class="stringliteral">"%s / %s"</span>, primVoltStr, secVoltStr));</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_choiceBaseVoltage->SetString(0, primVoltStr);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_choiceBaseVoltage->SetString(1, secVoltStr);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_choiceBaseVoltage->SetSelection(data.baseVoltage);</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_textCtrlNominalPower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.nominalPower));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">switch</span>(data.nominalPowerUnit) {</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#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>: {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  m_choiceNominalPower->SetSelection(0);</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#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_choiceNominalPower->SetSelection(1);</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#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_choiceNominalPower->SetSelection(2);</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> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_textCtrlResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.resistance));</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">switch</span>(data.resistanceUnit) {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">case</span> <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>  m_choiceResistance->SetSelection(0);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>: {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_choiceResistance->SetSelection(1);</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">default</span>:</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>  }</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_textCtrlReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.indReactance));</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">switch</span>(data.indReactanceUnit) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_choiceReactance->SetSelection(0);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>: {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_choiceReactance->SetSelection(1);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">default</span>:</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>  }</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_choiceConnection->SetSelection(data.connection);</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>  m_textCtrlTurnRatio->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.turnsRatio));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_textCtrlPhaseShift->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.phaseShift));</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_checkUseTransformerPower->SetValue(data.useTransformerPower);</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_textCtrlZeroResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.zeroResistance));</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_textCtrlZeroReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.zeroIndReactance));</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  m_textCtrlPrimResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.primaryGrndResistance));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  m_textCtrlPrimReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.primaryGrndReactance));</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_textCtrlSecResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.secondaryGrndResistance));</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_textCtrlSecReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.secondaryGrndReactance));</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> TransformerForm::~TransformerForm() {}</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keywordtype">void</span> TransformerForm::OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="keywordtype">void</span> TransformerForm::OnOKButtonClick(wxCommandEvent& event)</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>(ValidateData()) EndModal(wxID_OK);</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="keywordtype">void</span> TransformerForm::OnStabilityButtonClick(wxCommandEvent& event)</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="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_transformer);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  swForm.SetTitle(_(<span class="stringliteral">"Transfomer: Switching"</span>));</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  swForm.ShowModal();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  EndModal(wxID_OK);</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> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="keywordtype">bool</span> TransformerForm::ValidateData()</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>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = m_transformer->GetElectricalData();</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>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  data.baseVoltage = m_choiceBaseVoltage->GetSelection();</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_transformer->DoubleFromString(m_parent, m_textCtrlNominalPower->GetValue(), data.nominalPower,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Nominal 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_choiceNominalPower->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.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</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.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</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.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</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>  }</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">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlResistance->GetValue(), data.resistance,</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Resistance\"."</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>  <span class="keywordflow">switch</span>(m_choiceResistance->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>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>;</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>  }</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_transformer->DoubleFromString(m_parent, m_textCtrlReactance->GetValue(), data.indReactance,</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Indutive reactance\"."</span>)))</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">switch</span>(m_choiceReactance->GetSelection()) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</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> 1: {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</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>  }</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">switch</span>(m_choiceConnection->GetSelection()) {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  data.connection = GWYE_GWYE;</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> 1: {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  data.connection = WYE_GWYE;</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> 2: {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  data.connection = GWYE_WYE;</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> 3: {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  data.connection = WYE_WYE;</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> 4: {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  data.connection = DELTA_GWYE;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">case</span> 5: {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  data.connection = DELTA_WYE;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">case</span> 6: {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  data.connection = GWYE_DELTA;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">case</span> 7: {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  data.connection = WYE_DELTA;</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> 8: {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  data.connection = DELTA_DELTA;</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> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlTurnRatio->GetValue(), data.turnsRatio,</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Turns ratio\"."</span>)))</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> <span class="keyword">false</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="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlPhaseShift->GetValue(), data.phaseShift,</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Phase shift\"."</span>)))</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <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>  data.useTransformerPower = m_checkUseTransformerPower->GetValue();</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">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlZeroResistance->GetValue(), data.zeroResistance,</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero sequence resistance\"."</span>)))</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> <span class="keyword">false</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_transformer->DoubleFromString(</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  m_parent, m_textCtrlZeroReactance->GetValue(), data.zeroIndReactance,</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero sequence indutive reactance\"."</span>)))</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">return</span> <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>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlPrimResistance->GetValue(), data.primaryGrndResistance,</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Primary ground resistance\"."</span>)))</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <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>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlPrimReactance->GetValue(), data.primaryGrndReactance,</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Primary ground 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> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlSecResistance->GetValue(), data.secondaryGrndResistance,</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Secondary ground 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(m_parent, m_textCtrlSecReactance->GetValue(), data.secondaryGrndReactance,</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Secondary ground reactance\"."</span>)))</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">return</span> <span class="keyword">false</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>  m_transformer->SetElectricaData(data);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</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#l00026">PowerElement.h:26</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#l00013">PowerElement.h:13</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="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00008">SwitchingForm.h:8</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#l00014">PowerElement.h:14</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#l00012">PowerElement.h:12</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#l00022">PowerElement.h:22</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 "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="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="_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="_transformer_form_8h_html"><div class="ttname"><a href="_transformer_form_8h.html">TransformerForm.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_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_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#l00300">Element.cpp:300</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#l00020">PowerElement.h:20</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#l00020">Transformer.h:20</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#l00021">PowerElement.h:21</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#l00054">Transformer.h:54</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_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> +<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><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_transformer_form_8h.html b/docs/doxygen/html/_transformer_form_8h.html new file mode 100644 index 0000000..a6734d9 --- /dev/null +++ b/docs/doxygen/html/_transformer_form_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/TransformerForm.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_form_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">TransformerForm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "ElementForm.h"</code><br /> +</div> +<p><a href="_transformer_form_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_transformer_form.html">TransformerForm</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Form to edit the transformer power data. <a href="class_transformer_form.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="_transformer_form_8h.html">TransformerForm.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_form_8h_source.html b/docs/doxygen/html/_transformer_form_8h_source.html index 6833e7d..2f3c75a 100644 --- a/docs/doxygen/html/_transformer_form_8h_source.html +++ b/docs/doxygen/html/_transformer_form_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,16 +88,16 @@ $(document).ready(function(){initNavTree('_transformer_form_8h_source.html',''); <div class="title">TransformerForm.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="preprocessor">#ifndef TRANSFORMERFORM_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define TRANSFORMERFORM_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">class </span><a class="code" href="class_switching_form.html">SwitchingForm</a>;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="keyword">class </span><a class="code" href="class_transformer.html">Transformer</a>;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"><a class="line" href="class_transformer_form.html"> 9</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="l00010"></a><span class="lineno"> 10</span> {</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</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="l00013"></a><span class="lineno"> 13</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_transformer_form.html">TransformerForm</a>();</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnStabilityButtonClick(wxCommandEvent& event);</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>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <a class="code" href="class_transformer.html">Transformer</a>* m_transformer = NULL;</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">#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="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00008">SwitchingForm.h:8</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="ttdef"><b>Definition:</b> <a href="_transformer_form_8h_source.html#l00009">TransformerForm.h:9</a></div></div> +<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#l00054">Transformer.h:54</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><!-- 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>TransformerForm.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_transformer_form_8h.html">TransformerForm.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/_workspace_8cpp_source.html b/docs/doxygen/html/_workspace_8cpp_source.html index 42a543c..8e2926a 100644 --- a/docs/doxygen/html/_workspace_8cpp_source.html +++ b/docs/doxygen/html/_workspace_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,83 +88,87 @@ $(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="preprocessor">#include "Workspace.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "Camera.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//#include "Bus.h"</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "Line.h"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include "Transformer.h"</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "SyncGenerator.h"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "IndMotor.h"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "SyncMotor.h"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include "Load.h"</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "Inductor.h"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "Capacitor.h"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "ElementDataObject.h"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "Text.h"</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "PowerFlow.h"</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_fault_8h.html">Fault.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "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 "ElementPlotData.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "ChartView.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="preprocessor">#include "PropertiesData.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="comment">// Workspace</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> Workspace::Workspace() : <a class="code" href="class_workspace_base.html">WorkspaceBase</a>(NULL) {}</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</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="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_timer->Start();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_name = name;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_statusBar = statusBar;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_glContext = <span class="keyword">new</span> wxGLContext(m_glCanvas);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_camera = <span class="keyword">new</span> <a class="code" href="class_camera.html">Camera</a>();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_selectionRect = wxRect2DDouble(0, 0, 0, 0);</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 < NUM_ELEMENTS; ++i) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_elementNumber[i] = 1;</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="keyword">const</span> <span class="keywordtype">int</span> widths[4] = {-3, -1, 100, 100};</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_statusBar->SetStatusWidths(4, widths);</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_properties = <span class="keyword">new</span> <a class="code" href="class_properties_data.html">PropertiesData</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> Workspace::~Workspace()</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">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span>(*it) <span class="keyword">delete</span> *it;</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">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span>(*it) <span class="keyword">delete</span> *it;</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="keywordflow">if</span>(m_camera) <span class="keyword">delete</span> m_camera;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span>(m_glContext) <span class="keyword">delete</span> m_glContext;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span>(m_tipWindow) <span class="keyword">delete</span> m_tipWindow;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>(m_properties) <span class="keyword">delete</span> m_properties;</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="keywordtype">void</span> Workspace::OnPaint(wxPaintEvent& event)</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>  wxPaintDC dc(m_glCanvas);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_glContext->SetCurrent(*m_glCanvas);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  SetViewport();</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="comment">// Set GLCanvas scale and translation.</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  glScaled(m_camera->GetScale(), m_camera->GetScale(), 0.0); <span class="comment">// Scale</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</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="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Draw</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="comment">// Elements</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 = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  element-><a class="code" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Draw</a>(m_camera->GetTranslation(), m_camera->GetScale());</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="comment">// Texts</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_textList.begin(); it != m_textList.end(); ++it) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  text->Draw(m_camera->GetTranslation(), m_camera->GetScale());</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>  <span class="comment">// Selection rectangle</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  glLineWidth(1.0);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  glColor4d(0.0, 0.5, 1.0, 1.0);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  glBegin(GL_LINE_LOOP);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  glEnd();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  glColor4d(0.0, 0.5, 1.0, 0.3);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  glBegin(GL_QUADS);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  glEnd();</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>  glFlush(); <span class="comment">// Sends all pending information directly to the GPU.</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_glCanvas->SwapBuffers();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">event</span>.Skip();</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> <span class="keywordtype">void</span> Workspace::SetViewport()</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>  glClearColor(1.0, 1.0, 1.0, 1.0); <span class="comment">// White background.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  glClear(GL_COLOR_BUFFER_BIT);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  glDisable(GL_DEPTH_TEST);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  glEnable(GL_COLOR_MATERIAL);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  glEnable(GL_BLEND);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  glEnable(GL_LINE_SMOOTH);</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">double</span> width = m_glCanvas->GetSize().x - 1;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">double</span> height = m_glCanvas->GetSize().y - 1;</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">// Viewport fit the screen.</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  glViewport(0, 0, width, height);</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>  glMatrixMode(GL_PROJECTION);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  glLoadIdentity();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  gluOrtho2D(0.0, width, height, 0.0);</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>  glMatrixMode(GL_MODELVIEW);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  glLoadIdentity();</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">void</span> Workspace::OnLeftClickDown(wxMouseEvent& 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>  wxPoint clickPoint = <span class="keyword">event</span>.GetPosition();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordtype">bool</span> foundElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="class_element.html">Element</a>* newElement = NULL;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordtype">bool</span> showNewElementForm = <span class="keyword">false</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordtype">bool</span> clickOnSwitch = <span class="keyword">false</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</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="l00140"></a><span class="lineno"> 140</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</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="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// Get the last element inserted on the list.</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  newElement = *(m_elementList.end() - 1);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</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="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">// Clicked in any element.</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</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="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// Click at a bus.</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</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="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// Select the bus.</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  foundElement = <span class="keyword">true</span>; <span class="comment">// Element found.</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</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="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// edit mode.</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</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="l00156"></a><span class="lineno"> 156</span>  ValidateElementsVoltages();</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_timer->Stop();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  showNewElementForm = <span class="keyword">true</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_mode = MODE_EDIT;</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="comment">// The line element can have an indefined number of points.</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</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="l00167"></a><span class="lineno"> 167</span>  newElement-><a class="code" href="class_element.html#aa40c60c03d6a76639d8c6f6bab86720e">AddPoint</a>(m_camera->ScreenToWorld(clickPoint));</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>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordtype">bool</span> clickPickbox = <span class="keyword">false</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</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="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="class_power_element.html">PowerElement</a>* element = *it;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</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="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// Set movement initial position (not necessarily will be moved).</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  element-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(m_camera->ScreenToWorld(clickPoint));</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">// Click in selected element node.</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</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="l00182"></a><span class="lineno"> 182</span>  m_mode = MODE_MOVE_NODE;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  m_disconnectedElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  foundElement = <span class="keyword">true</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> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// Click in an element.</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</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="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="comment">// Select and show pickbox.</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  element-><a class="code" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>();</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  foundElement = <span class="keyword">true</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>  <span class="comment">// If pickbox contains the click, move the pickbox</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</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="l00197"></a><span class="lineno"> 197</span>  m_mode = MODE_MOVE_PICKBOX;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  clickPickbox = <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>  <span class="comment">// If didn't found a pickbox, move the element</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span>(!clickPickbox) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  m_mode = MODE_MOVE_ELEMENT;</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>  <span class="comment">// Click in a switch.</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</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="l00208"></a><span class="lineno"> 208</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="l00209"></a><span class="lineno"> 209</span>  clickOnSwitch = <span class="keyword">true</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> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">// Text element</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</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="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</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>  text-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(m_camera->ScreenToWorld(clickPoint));</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>(text-><a class="code" href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Contains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  text-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  m_mode = MODE_MOVE_ELEMENT;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  foundElement = <span class="keyword">true</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> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  m_mode = MODE_SELECTION_RECT;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  m_startSelRect = m_camera->ScreenToWorld(clickPoint);</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"> 234</span>  Redraw();</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  UpdateStatusBar();</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">if</span>(showNewElementForm) {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">if</span>(newElement) {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  newElement-><a class="code" href="class_element.html#ae1652eded3ccbd241a783691117418b2">ShowForm</a>(<span class="keyword">this</span>, newElement);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">if</span>(m_continuousCalc) RunStaticStudies();</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">if</span>(clickOnSwitch && m_continuousCalc) RunStaticStudies();</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="keyword">event</span>.Skip();</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> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="keywordtype">void</span> Workspace::OnLeftDoubleClick(wxMouseEvent& event)</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="keywordtype">bool</span> elementEdited = <span class="keyword">false</span>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordtype">bool</span> clickOnSwitch = <span class="keyword">false</span>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordtype">bool</span> redraw = <span class="keyword">false</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">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <a class="code" href="class_power_element.html">PowerElement</a>* element = *it;</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="comment">// Click in an element.</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</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="l00259"></a><span class="lineno"> 259</span>  <span class="keywordtype">bool</span> elementIsBus = <span class="keyword">false</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="class_bus.html">Bus</a> oldBus;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <a class="code" href="class_bus.html">Bus</a>* currentBus = NULL;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span>((currentBus = dynamic_cast<Bus*>(element))) {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  elementIsBus = <span class="keyword">true</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  oldBus = *currentBus;</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_timer->Stop();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  element-><a class="code" href="class_element.html#ae1652eded3ccbd241a783691117418b2">ShowForm</a>(<span class="keyword">this</span>, element);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  elementEdited = <span class="keyword">true</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  redraw = <span class="keyword">true</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="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="l00272"></a><span class="lineno"> 272</span>  <span class="comment">// propagated through the lines</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">if</span>(elementIsBus) {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// The voltage was changed</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">if</span>(oldBus.GetElectricalData().nominalVoltage != currentBus->GetElectricalData().nominalVoltage ||</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  oldBus.GetElectricalData().nominalVoltageUnit !=</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  currentBus->GetElectricalData().nominalVoltageUnit) {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// Check if the bus has line as child.</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  std::vector<Element*> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</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="l00281"></a><span class="lineno"> 281</span>  <a class="code" href="class_element.html">Element</a>* child = *itc;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</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="l00283"></a><span class="lineno"> 283</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="l00284"></a><span class="lineno"> 284</span>  _(<span class="stringliteral">"Warning"</span>), wxYES_NO | wxCENTRE | wxICON_WARNING);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">if</span>(msgDialog.ShowModal() == wxID_YES)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  ValidateBusesVoltages(element);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keyword">auto</span> data = currentBus->GetElectricalData();</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  data.nominalVoltage = oldBus.GetElectricalData().nominalVoltage;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  data.nominalVoltageUnit = oldBus.GetElectricalData().nominalVoltageUnit;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  currentBus->SetElectricalData(data);</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">break</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>  ValidateElementsVoltages();</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="comment">// Click in a switch.</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</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="l00303"></a><span class="lineno"> 303</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="l00304"></a><span class="lineno"> 304</span>  clickOnSwitch = <span class="keyword">true</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"> 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>  <span class="comment">// Text element</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</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="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</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="l00312"></a><span class="lineno"> 312</span>  text->ShowForm(<span class="keyword">this</span>, GetElementList());</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  redraw = <span class="keyword">true</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>  <span class="keywordflow">if</span>(elementEdited) {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  UpdateTextElements();</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">if</span>(m_continuousCalc) RunStaticStudies();</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">if</span>(clickOnSwitch && m_continuousCalc) RunStaticStudies();</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>(redraw) Redraw();</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  m_timer->Start();</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> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="keywordtype">void</span> Workspace::OnRightClickDown(wxMouseEvent& event)</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>  <span class="keywordtype">bool</span> redraw = <span class="keyword">false</span>;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">if</span>(m_mode == MODE_EDIT) {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</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="l00331"></a><span class="lineno"> 331</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="comment">// Show context menu.</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</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="l00335"></a><span class="lineno"> 335</span>  element-><a class="code" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  wxMenu menu;</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#a2a436b0497017a1c3d03dba5e59f037e">GetContextMenu</a>(menu)) {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  m_timer->Stop();</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  menu.SetClientData(element);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  menu.Bind(wxEVT_COMMAND_MENU_SELECTED, &Workspace::OnPopupClick, <span class="keyword">this</span>);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  PopupMenu(&menu);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  redraw = <span class="keyword">true</span>;</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>(!menu.GetClientData()) <span class="keywordflow">break</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>  element-><a class="code" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33">ResetPickboxes</a>();</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>  }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">if</span>(redraw) Redraw();</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  m_timer->Start();</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> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="keywordtype">void</span> Workspace::OnLeftClickUp(wxMouseEvent& event)</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">// 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="l00358"></a><span class="lineno"> 358</span>  <span class="comment">// the selection rectangle.</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordtype">bool</span> foundPickbox = <span class="keyword">false</span>;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordtype">bool</span> findNewParent = <span class="keyword">false</span>;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordtype">bool</span> updateVoltages = <span class="keyword">false</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keyword">auto</span> itnp = m_elementList.begin();</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="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</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="comment">// The user was moving a pickbox.</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">if</span>(m_mode == MODE_MOVE_PICKBOX) {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="comment">// Catch only the element that have the pickbox shown.</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abd94ea2ca7984d9a32d3ffd23837a323">IsPickboxShown</a>()) {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="comment">// If the element is a bus, check if a node is outside.</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</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="l00373"></a><span class="lineno"> 373</span>  <span class="comment">// Get all the bus children.</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</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="l00375"></a><span class="lineno"> 375</span>  <a class="code" href="class_element.html">Element</a>* child = m_elementList[i];</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</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="l00377"></a><span class="lineno"> 377</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="l00378"></a><span class="lineno"> 378</span>  <span class="comment">// The child have a parent that is the element.</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">if</span>(parent == element) {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  child-><a class="code" href="class_element.html#a499c3b52be27d2bf436a13b6f5353b9c">UpdateNodes</a>();</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  m_disconnectedElement = <span class="keyword">true</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>  }</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>  }</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> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">if</span>(m_mode == MODE_SELECTION_RECT) {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</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="l00391"></a><span class="lineno"> 391</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<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">else</span> <span class="keywordflow">if</span>(m_mode == MODE_MOVE_NODE) {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</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="l00398"></a><span class="lineno"> 398</span>  <a class="code" href="class_element.html">Element</a>* parent = m_elementList[i];</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</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="l00400"></a><span class="lineno"> 400</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac7490a91f3edfff08584567cc84d86b5">SetNodeParent</a>(parent)) {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(element);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  findNewParent = <span class="keyword">true</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  itnp = it;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  element-><a class="code" href="class_element.html#a8c16c17a6f22ffcdeb80ffa0ed27a72a">ResetNodes</a>();</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">break</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>  }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="comment">// element->ResetNodes();</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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="comment">// Deselect</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</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="l00415"></a><span class="lineno"> 415</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</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"> 418</span> </div><div class="line"><a name="l00419"></a><span class="lineno"> 419</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="l00420"></a><span class="lineno"> 420</span>  foundPickbox = <span class="keyword">true</span>;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  element-><a class="code" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  element-><a class="code" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33">ResetPickboxes</a>();</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>  }</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="comment">// Text element</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</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="l00430"></a><span class="lineno"> 430</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">if</span>(m_mode == MODE_SELECTION_RECT) {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</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="l00433"></a><span class="lineno"> 433</span>  text-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  text-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</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>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</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="l00439"></a><span class="lineno"> 439</span>  text-><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>  }</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>  <span class="keywordflow">if</span>(findNewParent) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  std::rotate(itnp, itnp + 1, m_elementList.end());</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  updateVoltages = <span class="keyword">true</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>  <span class="keywordflow">if</span>(!foundPickbox) {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  SetCursor(wxCURSOR_ARROW);</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> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">if</span>(m_mode != MODE_INSERT) {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  m_mode = MODE_EDIT;</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>(updateVoltages) {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  ValidateElementsVoltages();</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>  <span class="keywordflow">if</span>(m_continuousCalc && m_disconnectedElement) {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  m_disconnectedElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  RunStaticStudies();</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>  m_selectionRect = wxRect2DDouble(0, 0, 0, 0);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  Redraw();</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  UpdateStatusBar();</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> <span class="keywordtype">void</span> Workspace::OnMouseMotion(wxMouseEvent& event)</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>  <span class="keywordtype">bool</span> redraw = <span class="keyword">false</span>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">case</span> MODE_INSERT: {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</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="l00476"></a><span class="lineno"> 476</span>  newElement-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  } <span class="keywordflow">break</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>  <span class="keywordflow">case</span> MODE_INSERT_TEXT: {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="class_text.html">Text</a>* newText = *(m_textList.end() - 1);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  newText-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  } <span class="keywordflow">break</span>;</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">case</span> MODE_DRAG:</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT:</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT_TEXT:</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">case</span> MODE_DRAG_PASTE: {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  m_camera->SetTranslation(event.GetPosition());</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  redraw = <span class="keyword">true</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> </div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">case</span> MODE_EDIT: {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordtype">bool</span> foundPickbox = <span class="keyword">false</span>;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</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="l00497"></a><span class="lineno"> 497</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</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="l00500"></a><span class="lineno"> 500</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="l00501"></a><span class="lineno"> 501</span>  element-><a class="code" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>();</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  redraw = <span class="keyword">true</span>;</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>  <span class="comment">// If the mouse is over a pickbox set correct mouse cursor.</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</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="l00506"></a><span class="lineno"> 506</span>  foundPickbox = <span class="keyword">true</span>;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  SetCursor(element-><a class="code" href="class_element.html#a245924c5be948397b101787dbea565ea">GetBestPickboxCursor</a>());</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!foundPickbox) {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  SetCursor(wxCURSOR_ARROW);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  element-><a class="code" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33">ResetPickboxes</a>();</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="keywordflow">else</span> <span class="keywordflow">if</span>(!foundPickbox) {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</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="l00514"></a><span class="lineno"> 514</span> </div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  element-><a class="code" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  element-><a class="code" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33">ResetPickboxes</a>();</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  SetCursor(wxCURSOR_ARROW);</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>  }</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> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">case</span> MODE_MOVE_NODE: {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</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="l00525"></a><span class="lineno"> 525</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  element-><a class="code" href="class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd">MoveNode</a>(NULL, m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  redraw = <span class="keyword">true</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>  }</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>  <span class="keywordflow">case</span> MODE_MOVE_PICKBOX: {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</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="l00535"></a><span class="lineno"> 535</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  element-><a class="code" href="class_element.html#a6f071b6dfd64721ca673bfbe1ca2d525">MovePickbox</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  redraw = <span class="keyword">true</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>  }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  } <span class="keywordflow">break</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>  <span class="keywordflow">case</span> MODE_MOVE_ELEMENT:</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">case</span> MODE_PASTE: {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</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="l00546"></a><span class="lineno"> 546</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  element-><a class="code" href="class_element.html#abe884d99d12d5252e18956162115b025">Move</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="comment">// Move child nodes</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  std::vector<Element*> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</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="l00552"></a><span class="lineno"> 552</span>  (*it)->MoveNode(element, m_camera->ScreenToWorld(event.GetPosition()));</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>  redraw = <span class="keyword">true</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>  }</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="comment">// Text element motion</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</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="l00559"></a><span class="lineno"> 559</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  text-><a class="code" href="class_element.html#abe884d99d12d5252e18956162115b025">Move</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  redraw = <span class="keyword">true</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>  }</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> </div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">case</span> MODE_SELECTION_RECT: {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  wxPoint2DDouble currentPos = m_camera->ScreenToWorld(event.GetPosition());</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="keywordtype">double</span> x, y, w, h;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">if</span>(currentPos.m_x < m_startSelRect.m_x) {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  x = currentPos.m_x;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  w = m_startSelRect.m_x - currentPos.m_x;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  x = m_startSelRect.m_x;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  w = currentPos.m_x - m_startSelRect.m_x;</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="keywordflow">if</span>(currentPos.m_y < m_startSelRect.m_y) {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  y = currentPos.m_y;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  h = m_startSelRect.m_y - currentPos.m_y;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  y = m_startSelRect.m_y;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  h = currentPos.m_y - m_startSelRect.m_y;</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> </div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  m_selectionRect = wxRect2DDouble(x, y, w, h);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  } <span class="keywordflow">break</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"> 589</span> </div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordflow">if</span>(redraw) Redraw();</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  m_camera->UpdateMousePosition(event.GetPosition());</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  UpdateStatusBar();</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  m_timer->Start(); <span class="comment">// Restart the timer.</span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</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="keywordtype">void</span> Workspace::OnMiddleDown(wxMouseEvent& event)</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>  <span class="comment">// Set to drag mode.</span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">case</span> MODE_INSERT: {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  m_mode = MODE_DRAG_INSERT;</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>  <span class="keywordflow">case</span> MODE_INSERT_TEXT: {</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  m_mode = MODE_DRAG_INSERT_TEXT;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">case</span> MODE_PASTE: {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  m_mode = MODE_DRAG_PASTE;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  m_mode = MODE_DRAG;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  } <span class="keywordflow">break</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>  m_camera->StartTranslation(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  UpdateStatusBar();</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</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="keywordtype">void</span> Workspace::OnMiddleUp(wxMouseEvent& event)</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> {</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT: {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  m_mode = MODE_INSERT;</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> MODE_DRAG_INSERT_TEXT: {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  m_mode = MODE_INSERT_TEXT;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordflow">case</span> MODE_DRAG_PASTE: {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  m_mode = MODE_PASTE;</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> MODE_INSERT:</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="keywordflow">case</span> MODE_INSERT_TEXT:</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keywordflow">case</span> MODE_PASTE: {</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="comment">// Does nothing.</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>  m_mode = MODE_EDIT;</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>  }</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  UpdateStatusBar();</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keyword">event</span>.Skip();</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">void</span> Workspace::OnScroll(wxMouseEvent& event)</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="keywordflow">if</span>(event.GetWheelRotation() > 0)</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  m_camera->SetScale(event.GetPosition(), +0.05);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  m_camera->SetScale(event.GetPosition(), -0.05);</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>  UpdateStatusBar();</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  Redraw();</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="keywordtype">void</span> Workspace::OnKeyDown(wxKeyEvent& event)</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">bool</span> insertingElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</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="l00659"></a><span class="lineno"> 659</span> </div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordtype">char</span> key = <span class="keyword">event</span>.GetUnicodeKey();</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">if</span>(key != WXK_NONE) {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="keywordflow">switch</span>(key) {</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keywordflow">case</span> WXK_ESCAPE: <span class="comment">// Cancel operations.</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  {</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT) {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  m_elementList.pop_back(); <span class="comment">// Removes the last element being inserted.</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  Redraw();</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_mode == MODE_INSERT_TEXT) {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  m_textList.pop_back();</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  Redraw();</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="keywordflow">break</span>;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keywordflow">case</span> WXK_DELETE: <span class="comment">// Delete selected elements</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>  DeleteSelectedElements();</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keywordflow">case</span> <span class="charliteral">'A'</span>: {</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</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="l00682"></a><span class="lineno"> 682</span>  m_textList.push_back(newBus);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  m_mode = MODE_INSERT_TEXT;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Text: Click to insert, ESC to cancel."</span>));</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>  }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">case</span> <span class="charliteral">'F'</span>: {</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keywordflow">if</span>(event.GetModifiers() == wxMOD_SHIFT) {</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  Fit();</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> <span class="charliteral">'R'</span>: <span class="comment">// Rotate the selected elements.</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>  RotateSelectedElements(event.GetModifiers() != wxMOD_SHIFT);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="keywordflow">case</span> <span class="charliteral">'B'</span>: <span class="comment">// Insert a bus.</span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  {</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</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="l00701"></a><span class="lineno"> 701</span>  wxString::Format(_(<span class="stringliteral">"Bus %d"</span>), GetElementNumber(ID_BUS)));</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  IncrementElementNumber(ID_BUS);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  m_elementList.push_back(newBus);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Bus: Click to insert, ESC to cancel."</span>));</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  Redraw();</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="keywordflow">break</span>;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keywordflow">case</span> <span class="charliteral">'L'</span>: {</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</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="l00712"></a><span class="lineno"> 712</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="l00713"></a><span class="lineno"> 713</span>  IncrementElementNumber(ID_LOAD);</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  m_elementList.push_back(newLoad);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Load: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</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="l00718"></a><span class="lineno"> 718</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="l00719"></a><span class="lineno"> 719</span>  IncrementElementNumber(ID_LINE);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  m_elementList.push_back(newLine);</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 Line: Click on two buses, ESC to cancel."</span>));</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  }</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  Redraw();</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  }</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="comment">// Tests - Ctrl + Shift + L</span></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <span class="keywordflow">if</span>(event.ControlDown() && <span class="keyword">event</span>.ShiftDown()) {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  UpdateTextElements();</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordflow">case</span> <span class="charliteral">'T'</span>: <span class="comment">// Insert a transformer.</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="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <a class="code" href="class_transformer.html">Transformer</a>* newTransformer =</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</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="l00736"></a><span class="lineno"> 736</span>  IncrementElementNumber(ID_TRANSFORMER);</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  m_elementList.push_back(newTransformer);</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 Transformer: Click on two buses, ESC to cancel."</span>));</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  Redraw();</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keywordflow">case</span> <span class="charliteral">'G'</span>: <span class="comment">// Insert a generator.</span></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>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* newGenerator =</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</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="l00748"></a><span class="lineno"> 748</span>  IncrementElementNumber(ID_SYNCGENERATOR);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  m_elementList.push_back(newGenerator);</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Generator: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  Redraw();</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">case</span> <span class="charliteral">'I'</span>: {</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="keywordflow">if</span>(event.GetModifiers() == wxMOD_SHIFT) { <span class="comment">// Insert an inductor.</span></div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <a class="code" href="class_inductor.html">Inductor</a>* newInductor =</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</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="l00760"></a><span class="lineno"> 760</span>  IncrementElementNumber(ID_INDUCTOR);</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  m_elementList.push_back(newInductor);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Inductor: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  } <span class="keywordflow">else</span> <span class="comment">// Insert an induction motor.</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>  <a class="code" href="class_ind_motor.html">IndMotor</a>* newIndMotor =</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</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="l00768"></a><span class="lineno"> 768</span>  IncrementElementNumber(ID_INDMOTOR);</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  m_elementList.push_back(newIndMotor);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Induction Motor: Click on a buses, ESC to cancel."</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>  Redraw();</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  }</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</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="l00777"></a><span class="lineno"> 777</span>  {</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* newSyncCondenser =</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</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="l00781"></a><span class="lineno"> 781</span>  IncrementElementNumber(ID_SYNCMOTOR);</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  m_elementList.push_back(newSyncCondenser);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Synchronous Condenser: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  Redraw();</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">case</span> <span class="charliteral">'C'</span>: {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">if</span>(event.GetModifiers() == wxMOD_SHIFT) { <span class="comment">// Insert a capacitor.</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* newCapacitor =</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</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="l00793"></a><span class="lineno"> 793</span>  IncrementElementNumber(ID_CAPACITOR);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  m_elementList.push_back(newCapacitor);</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Capacitor: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  Redraw();</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</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="l00799"></a><span class="lineno"> 799</span>  CopySelection();</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>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="keywordflow">case</span> <span class="charliteral">'V'</span>: {</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">if</span>(event.GetModifiers() == wxMOD_CONTROL) {</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  Paste();</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>  }</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="keywordflow">break</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>  }</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span> </div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  UpdateStatusBar();</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keyword">event</span>.Skip();</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="keywordtype">void</span> Workspace::UpdateStatusBar()</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>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keywordflow">case</span> MODE_DRAG: {</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"MODE: DRAG"</span>), 1);</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  } <span class="keywordflow">break</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">case</span> MODE_PASTE:</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordflow">case</span> MODE_DRAG_PASTE: {</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"MODE: PASTE"</span>), 1);</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>  <span class="keywordflow">case</span> MODE_INSERT:</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="keywordflow">case</span> MODE_INSERT_TEXT:</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT:</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT_TEXT: {</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"MODE: INSERT"</span>), 1);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  } <span class="keywordflow">break</span>;</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">case</span> MODE_MOVE_ELEMENT:</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">case</span> MODE_MOVE_PICKBOX:</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">case</span> MODE_MOVE_NODE:</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <span class="keywordflow">case</span> MODE_SELECTION_RECT:</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <span class="keywordflow">case</span> MODE_EDIT: {</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  m_statusBar->SetStatusText(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"MODE: EDIT"</span>), 1);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  } <span class="keywordflow">break</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_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="l00849"></a><span class="lineno"> 849</span>  m_statusBar->SetStatusText(</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</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="l00851"></a><span class="lineno"> 851</span>  3);</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> </div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> <span class="keywordtype">void</span> Workspace::OnPopupClick(wxCommandEvent& event)</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>  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="l00857"></a><span class="lineno"> 857</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="l00858"></a><span class="lineno"> 858</span>  <span class="keywordflow">switch</span>(event.GetId()) {</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  <span class="keywordflow">case</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>: {</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</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="l00861"></a><span class="lineno"> 861</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</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="l00863"></a><span class="lineno"> 863</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="l00864"></a><span class="lineno"> 864</span>  line->AddNode(m_camera->GetMousePosition());</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  Redraw();</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</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="l00868"></a><span class="lineno"> 868</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="l00869"></a><span class="lineno"> 869</span>  line->RemoveNode(m_camera->GetMousePosition());</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  Redraw();</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <span class="keywordflow">case</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a9d58b2fe374676b88029d401da0d77a8">ID_ROTATE_CLOCK</a>: {</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  element-><a class="code" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Rotate</a>();</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</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="l00875"></a><span class="lineno"> 875</span>  <a class="code" href="class_element.html">Element</a>* iElement = *it;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <span class="comment">// Parent's element rotating...</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</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="l00878"></a><span class="lineno"> 878</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="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">if</span>(parent == element) {</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  iElement-><a class="code" href="class_element.html#af26c67b6dd32eb1b3e417fddf54818c3">RotateNode</a>(parent);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</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>  }</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  Redraw();</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keywordflow">case</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049adeee9ba1a6f37ff0622ca94a52e40551">ID_ROTATE_COUNTERCLOCK</a>: {</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  element-><a class="code" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Rotate</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</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="l00889"></a><span class="lineno"> 889</span>  <a class="code" href="class_element.html">Element</a>* iElement = *it;</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <span class="comment">// Parent's element rotating...</span></div><div class="line"><a name="l00891"></a><span class="lineno"> 891</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="l00892"></a><span class="lineno"> 892</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="l00893"></a><span class="lineno"> 893</span>  <span class="keywordflow">if</span>(parent == element) {</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  iElement-><a class="code" href="class_element.html#af26c67b6dd32eb1b3e417fddf54818c3">RotateNode</a>(parent, <span class="keyword">false</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>  }</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>  Redraw();</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <span class="keywordflow">case</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a80c989d88bc686137e96564dfad6166a">ID_DELETE</a>: {</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</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="l00902"></a><span class="lineno"> 902</span>  <a class="code" href="class_element.html">Element</a>* iElement = *it;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span> </div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keywordflow">if</span>(element == iElement) {</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  <span class="comment">// Remove child/parent.</span></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  std::vector<Element*> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</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="l00908"></a><span class="lineno"> 908</span>  <a class="code" href="class_element.html">Element</a>* child = *itc;</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="keywordflow">if</span>(child) {</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  child-><a class="code" href="class_element.html#a9504437b60faf2c5a27584de8a24810c">RemoveParent</a>(element);</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  element-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(child);</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>  std::vector<Element*> parentList = element-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</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="l00916"></a><span class="lineno"> 916</span>  <a class="code" href="class_element.html">Element</a>* parent = *itp;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  parent-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(element);</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>  }</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">for</span>(<span class="keyword">auto</span> itt = m_textList.begin(); itt != m_textList.end(); ++itt) {</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <a class="code" href="class_text.html">Text</a>* text = *itt;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="keywordflow">if</span>(text->GetElement() == element) {</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  m_textList.erase(itt--);</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="keywordflow">if</span>(text) <span class="keyword">delete</span> text;</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  }</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> </div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  m_elementList.erase(it);</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <span class="keywordflow">if</span>(element) <span class="keyword">delete</span> element;</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  menu->SetClientData(NULL);</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <span class="keywordflow">break</span>;</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>  }</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  } <span class="keywordflow">break</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> </div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span> <span class="keywordtype">void</span> Workspace::RotateSelectedElements(<span class="keywordtype">bool</span> 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="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <span class="comment">// Parent's element rotating...</span></div><div class="line"><a name="l00945"></a><span class="lineno"> 945</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="l00946"></a><span class="lineno"> 946</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="l00947"></a><span class="lineno"> 947</span>  <span class="keywordflow">if</span>(parent) { <span class="comment">// Check if parent is not null</span></div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  element-><a class="code" href="class_element.html#af26c67b6dd32eb1b3e417fddf54818c3">RotateNode</a>(parent, clockwise);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="comment">// Update the positions used on motion action, the element will not be necessarily</span></div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <span class="comment">// moved.</span></div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  element-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(m_camera->GetMousePosition());</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</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>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  element-><a class="code" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Rotate</a>(clockwise);</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  element-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(m_camera->GetMousePosition());</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>  }</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>  <span class="comment">// Rotate text element</span></div><div class="line"><a name="l00963"></a><span class="lineno"> 963</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="l00964"></a><span class="lineno"> 964</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  text-><a class="code" href="class_text.html#afe1f86a497f34cee4809cbd7fda24dc3">Rotate</a>(clockwise);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  text-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(m_camera->GetMousePosition());</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>  }</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  Redraw();</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">void</span> Workspace::DeleteSelectedElements()</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span> {</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  <span class="comment">// Don't set the end of the list at the loop's begin.</span></div><div class="line"><a name="l00976"></a><span class="lineno"> 976</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="l00977"></a><span class="lineno"> 977</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</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="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  <span class="comment">// Remove child/parent.</span></div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  std::vector<Element*> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</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="l00983"></a><span class="lineno"> 983</span>  <a class="code" href="class_element.html">Element</a>* child = *itc;</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  <span class="keywordflow">if</span>(child) {</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  child-><a class="code" href="class_element.html#a9504437b60faf2c5a27584de8a24810c">RemoveParent</a>(element);</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  element-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(child);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  }</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>  std::vector<Element*> parentList = element-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</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="l00991"></a><span class="lineno"> 991</span>  <a class="code" href="class_element.html">Element</a>* parent = *itp;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  parent-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(element);</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  }</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> </div><div class="line"><a name="l00997"></a><span class="lineno"> 997</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="l00998"></a><span class="lineno"> 998</span>  <a class="code" href="class_text.html">Text</a>* text = *itt;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  <span class="keywordflow">if</span>(text->GetElement() == element) {</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  m_textList.erase(itt--);</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="keywordflow">if</span>(text) <span class="keyword">delete</span> text;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  }</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  }</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>  m_elementList.erase(it--);</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <span class="keywordflow">if</span>(element) <span class="keyword">delete</span> element;</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>  }</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> </div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</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="l01011"></a><span class="lineno"> 1011</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  m_textList.erase(it--);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  <span class="keywordflow">if</span>(text) <span class="keyword">delete</span> text;</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>  }</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> </div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  Redraw();</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> <span class="keywordtype">bool</span> Workspace::GetElementsCorners(wxPoint2DDouble& leftUpCorner,</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  wxPoint2DDouble& rightDownCorner,</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  std::vector<Element*> elementList)</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>  <span class="keywordflow">if</span>(elementList.size() == 0) <span class="keywordflow">return</span> <span class="keyword">false</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>  elementList[0]->CalculateBoundaries(leftUpCorner, rightDownCorner);</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> </div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</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="l01030"></a><span class="lineno"> 1030</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  wxPoint2DDouble leftUp;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  wxPoint2DDouble rightDown;</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  element-><a class="code" href="class_element.html#a57f5771fd003020fef3866a1d1dc7487">CalculateBoundaries</a>(leftUp, rightDown);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  <span class="keywordflow">if</span>(leftUp.m_x < leftUpCorner.m_x) leftUpCorner.m_x = leftUp.m_x;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  <span class="keywordflow">if</span>(leftUp.m_y < leftUpCorner.m_y) leftUpCorner.m_y = leftUp.m_y;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <span class="keywordflow">if</span>(rightDown.m_x > rightDownCorner.m_x) rightDownCorner.m_x = rightDown.m_x;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <span class="keywordflow">if</span>(rightDown.m_y > rightDownCorner.m_y) rightDownCorner.m_y = rightDown.m_y;</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  }</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</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> </div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> <span class="keywordtype">void</span> Workspace::Fit()</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>  wxPoint2DDouble leftUpCorner(0, 0);</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  wxPoint2DDouble rightDownCorner(0, 0);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  std::vector<Element*> elementList = GetElementList();</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</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="l01048"></a><span class="lineno"> 1048</span>  elementList.push_back(*it);</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> </div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <span class="keywordflow">if</span>(!GetElementsCorners(leftUpCorner, rightDownCorner, elementList)) <span class="keywordflow">return</span>;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  wxPoint2DDouble middleCoords = (leftUpCorner + rightDownCorner) / 2.0;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> </div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  <span class="keywordtype">int</span> width = 0.0;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="keywordtype">int</span> height = 0.0;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  GetSize(&width, &height);</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>  <span class="keywordtype">double</span> scaleX = double(width) / (rightDownCorner.m_x - leftUpCorner.m_x);</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  <span class="keywordtype">double</span> scaleY = double(height) / (rightDownCorner.m_y - leftUpCorner.m_y);</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>  <span class="keywordtype">double</span> scale = scaleX < scaleY ? scaleX : scaleY;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keywordflow">if</span>(scale > m_camera->GetZoomMax()) scale = m_camera->GetZoomMax();</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  <span class="keywordflow">if</span>(scale < m_camera->GetZoomMin()) scale = m_camera->GetZoomMin();</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>  m_camera->SetScale(scale);</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>  m_camera->StartTranslation(middleCoords);</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  m_camera->SetTranslation(wxPoint2DDouble(width / 2, height / 2));</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  Redraw();</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> </div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> <span class="keywordtype">void</span> Workspace::ValidateBusesVoltages(<a class="code" href="class_element.html">Element</a>* initialBus)</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> {</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</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="l01075"></a><span class="lineno"> 1075</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="l01076"></a><span class="lineno"> 1076</span> </div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</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="l01078"></a><span class="lineno"> 1078</span>  <a class="code" href="class_element.html">Element</a>* child = *it;</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="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="l01081"></a><span class="lineno"> 1081</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="l01082"></a><span class="lineno"> 1082</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="l01083"></a><span class="lineno"> 1083</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="l01084"></a><span class="lineno"> 1084</span> </div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  <span class="keywordflow">if</span>(data1.nominalVoltage != data2.nominalVoltage ||</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  data1.nominalVoltageUnit != data2.nominalVoltageUnit) {</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  data1.nominalVoltage = nominalVoltage;</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  data2.nominalVoltage = nominalVoltage;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  data1.nominalVoltageUnit = nominalVoltageUnit;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  data2.nominalVoltageUnit = nominalVoltageUnit;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> </div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</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="l01093"></a><span class="lineno"> 1093</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="l01094"></a><span class="lineno"> 1094</span> </div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  it = m_elementList.begin(); <span class="comment">// Restart search.</span></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>  }</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</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> </div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="comment">// ValidateElementsVoltages();</span></div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</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> <span class="keywordtype">void</span> Workspace::ValidateElementsVoltages()</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> {</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</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="l01107"></a><span class="lineno"> 1107</span>  <a class="code" href="class_power_element.html">PowerElement</a>* child = *it;</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>  std::vector<double> nominalVoltage;</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  std::vector<ElectricalUnit> nominalVoltageUnit;</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</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="l01112"></a><span class="lineno"> 1112</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="l01113"></a><span class="lineno"> 1113</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  nominalVoltage.push_back(parent->GetElectricalData().nominalVoltage);</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  nominalVoltageUnit.push_back(parent->GetElectricalData().nominalVoltageUnit);</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>  child-><a class="code" href="class_power_element.html#a0730506d0417089d69f7ce64b05daed4">SetNominalVoltage</a>(nominalVoltage, nominalVoltageUnit);</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> </div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> <span class="keywordtype">bool</span> Workspace::RunPowerFlow()</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span> {</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  <a class="code" href="class_power_flow.html">PowerFlow</a> pf(GetElementList());</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <span class="keywordtype">bool</span> result = pf.RunGaussSeidel();</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  <span class="keywordflow">if</span>(!result) {</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</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="l01128"></a><span class="lineno"> 1128</span>  msgDialog.ShowModal();</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>  UpdateTextElements();</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  Redraw();</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">return</span> result;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span> }</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> <span class="keywordtype">void</span> Workspace::UpdateTextElements()</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="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="l01140"></a><span class="lineno"> 1140</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  text->UpdateText(m_properties->GetSimulationPropertiesData().basePower);</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> }</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span> </div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span> <span class="keywordtype">void</span> Workspace::CopySelection()</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>  UpdateElementsID();</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  std::vector<Element*> selectedElements;</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</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="l01150"></a><span class="lineno"> 1150</span>  <span class="keywordtype">int</span> busNumber = 0;</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</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="l01152"></a><span class="lineno"> 1152</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</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="l01154"></a><span class="lineno"> 1154</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="l01155"></a><span class="lineno"> 1155</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  data.number = busNumber;</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  bus->SetElectricalData(data);</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  busNumber++;</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="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  selectedElements.push_back(element);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  }</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="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="l01165"></a><span class="lineno"> 1165</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  selectedElements.push_back(text);</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  }</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  }</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</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="l01171"></a><span class="lineno"> 1171</span>  wxTheClipboard->SetData(dataObject);</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  wxTheClipboard->Close();</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span> }</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> <span class="keywordtype">bool</span> Workspace::Paste()</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>(wxTheClipboard->Open()) {</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  <a class="code" href="class_element_data_object.html">ElementDataObject</a> dataObject;</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>  <span class="keywordflow">if</span>(wxTheClipboard->IsSupported(wxDataFormat(<span class="stringliteral">"PSPCopy"</span>))) {</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <span class="keywordflow">if</span>(!wxTheClipboard->GetData(dataObject)) {</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</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="l01183"></a><span class="lineno"> 1183</span>  wxOK | wxCENTER | wxICON_ERROR, wxDefaultPosition);</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  dialog.ShowModal();</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  wxTheClipboard->Close();</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</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>  } <span class="keywordflow">else</span> {</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>  <span class="keywordflow">return</span> <span class="keyword">false</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>  wxTheClipboard->Close();</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>  UnselectAll();</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> </div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  std::vector<Element*> pastedElements;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  <a class="code" href="struct_elements_lists.html">ElementsLists</a>* elementsLists = dataObject.GetElementsLists();</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="comment">// Paste buses (parents).</span></div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  <span class="keyword">auto</span> parentList = elementsLists->parentList;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  std::vector<Bus*> pastedBusList; <span class="comment">// To set new parents;</span></div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</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="l01203"></a><span class="lineno"> 1203</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="l01204"></a><span class="lineno"> 1204</span>  <span class="keywordflow">if</span>(copy) {</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  pastedElements.push_back(copy);</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  pastedBusList.push_back(static_cast<Bus*>(copy));</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  m_elementList.push_back(static_cast<PowerElement*>(copy));</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>  }</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>  <span class="comment">// Paste other elements.</span></div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  <span class="keyword">auto</span> elementLists = elementsLists->elementList;</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</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="l01214"></a><span class="lineno"> 1214</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="l01215"></a><span class="lineno"> 1215</span>  <span class="keywordflow">if</span>(copy) {</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  <span class="comment">// Check if is text element</span></div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</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="l01218"></a><span class="lineno"> 1218</span>  <span class="comment">// Check if element associated with the text exists.</span></div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  <span class="keywordtype">bool</span> elementExist = <span class="keyword">false</span>;</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</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="l01221"></a><span class="lineno"> 1221</span>  <span class="keywordflow">if</span>(text->GetElement() == m_elementList[i]) {</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  elementExist = <span class="keyword">true</span>;</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  }</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>  <span class="keywordflow">if</span>(elementExist) {</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  pastedElements.push_back(copy);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  m_textList.push_back(text);</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="keywordflow">else</span> {</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  <span class="comment">// Change the parent if copied, otherwise remove it.</span></div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</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="l01233"></a><span class="lineno"> 1233</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="l01234"></a><span class="lineno"> 1234</span>  <span class="keywordflow">if</span>(currentParent) {</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <span class="keywordtype">int</span> parentID = currentParent-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>();</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <span class="keywordtype">bool</span> parentCopied = <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> k = 0; k < (int)pastedBusList.size(); k++) {</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  <a class="code" href="class_bus.html">Bus</a>* newParent = pastedBusList[k];</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  <span class="keywordflow">if</span>(parentID == newParent-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>()) {</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  parentCopied = <span class="keyword">true</span>;</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  copy-><a class="code" href="class_element.html#a74ec9a279ac0127550e00941206dddb1">ReplaceParent</a>(currentParent, newParent);</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  }</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  }</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</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="l01246"></a><span class="lineno"> 1246</span>  }</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> </div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  pastedElements.push_back(copy);</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  m_elementList.push_back(static_cast<PowerElement*>(copy));</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  }</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>  }</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="comment">// Update buses childs</span></div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</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="l01257"></a><span class="lineno"> 1257</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  std::vector<Element*> childList = bus-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</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="l01260"></a><span class="lineno"> 1260</span>  <a class="code" href="class_element.html">Element</a>* currentChild = *it;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  <span class="keywordtype">int</span> childID = currentChild-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>();</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  <span class="keywordtype">bool</span> childCopied = <span class="keyword">false</span>;</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)pastedElements.size(); i++) {</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  <a class="code" href="class_element.html">Element</a>* newChild = pastedElements[i];</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  <span class="keywordflow">if</span>(childID == newChild-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>()) {</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  childCopied = <span class="keyword">true</span>;</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  bus-><a class="code" href="class_element.html#ad5f4bee2e241c430a643f46dadf3d3f5">ReplaceChild</a>(currentChild, newChild);</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>  }</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>  <span class="keywordflow">if</span>(!childCopied) bus-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(currentChild);</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>  }</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  }</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span> </div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  <span class="comment">// Move elements (and nodes) to the mouse position.</span></div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  <span class="comment">// The start position it's the center of the pasted objects.</span></div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  wxPoint2DDouble leftUpCorner, rightDownCorner;</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  GetElementsCorners(leftUpCorner, rightDownCorner, pastedElements);</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  wxPoint2DDouble startPosition = (leftUpCorner + rightDownCorner) / 2.0;</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</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="l01281"></a><span class="lineno"> 1281</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  element-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(startPosition);</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  element-><a class="code" href="class_element.html#abe884d99d12d5252e18956162115b025">Move</a>(m_camera->GetMousePosition());</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</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="l01285"></a><span class="lineno"> 1285</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="l01286"></a><span class="lineno"> 1286</span>  element-><a class="code" href="class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd">MoveNode</a>(parent, m_camera->GetMousePosition());</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>  }</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</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="l01291"></a><span class="lineno"> 1291</span>  wxOK | wxCENTER | wxICON_ERROR, wxDefaultPosition);</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  dialog.ShowModal();</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  }</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span> </div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  UpdateElementsID();</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  m_mode = MODE_PASTE;</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Click to paste."</span>));</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  UpdateStatusBar();</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  Redraw();</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span> }</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span> </div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> <span class="keywordtype">void</span> Workspace::UnselectAll()</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">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; it++) {</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  }</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</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="l01311"></a><span class="lineno"> 1311</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  text-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  }</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> }</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> </div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span> <span class="keywordtype">void</span> Workspace::UpdateElementsID()</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span> {</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = 0;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</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="l01320"></a><span class="lineno"> 1320</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>  element-><a class="code" href="class_element.html#a9aa2fec8b6c7bef4bf75b9f86fbb76f2">SetID</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  <span class="keywordtype">id</span>++;</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>  }</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</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="l01325"></a><span class="lineno"> 1325</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  text-><a class="code" href="class_element.html#a9aa2fec8b6c7bef4bf75b9f86fbb76f2">SetID</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  <span class="keywordtype">id</span>++;</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  }</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span> }</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span> <span class="keywordtype">void</span> Workspace::OnTimer(wxTimerEvent& event)</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>  <span class="keywordflow">if</span>(m_tipWindow) {</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>  m_tipWindow->Close();</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>  m_tipWindow = NULL;</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="keywordflow">if</span>(m_mode == MODE_EDIT) {</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</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="l01338"></a><span class="lineno"> 1338</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</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="l01340"></a><span class="lineno"> 1340</span>  wxString tipText = element-><a class="code" href="class_element.html#aa79db7f54ba9754e953b5059a1d79486">GetTipText</a>();</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  <span class="keywordflow">if</span>(!tipText.IsEmpty()) {</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  m_tipWindow = <span class="keyword">new</span> wxTipWindow(<span class="keyword">this</span>, tipText, 10000, &m_tipWindow);</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</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="l01344"></a><span class="lineno"> 1344</span>  m_tipWindow->SetBoundingRect(wxRect(wxGetMousePosition(), wxSize(1, 1)));</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  <span class="keywordflow">break</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>  }</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>  }</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span> </div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  m_timer->Stop();</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> </div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span> <span class="keywordtype">void</span> Workspace::SetTextList(std::vector<Text*> textList)</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span> {</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  m_textList.clear();</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</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="l01358"></a><span class="lineno"> 1358</span> </div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>  UpdateTextElements();</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span> }</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span> </div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span> <span class="keywordtype">void</span> Workspace::SetElementList(std::vector<Element*> elementList)</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>  m_elementList.clear();</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</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="l01366"></a><span class="lineno"> 1366</span>  m_elementList.push_back(static_cast<PowerElement*>(*it));</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> </div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> <span class="keywordtype">void</span> Workspace::OnIdle(wxIdleEvent& event)</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="comment">// TODO: Find other solution to text displayed wrong on opened file.</span></div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>  <span class="keywordflow">if</span>(m_justOpened) {</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  m_justOpened = <span class="keyword">false</span>;</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  UpdateTextElements();</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>  Redraw();</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</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> </div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span> std::vector<Element*> Workspace::GetAllElements()<span class="keyword"> const</span></div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> <span class="keyword"></span>{</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  std::vector<Element*> allElements;</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span> </div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</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="l01384"></a><span class="lineno"> 1384</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="l01385"></a><span class="lineno"> 1385</span> </div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>  <span class="keywordflow">return</span> allElements;</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> </div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span> <span class="keywordtype">bool</span> Workspace::RunFault()</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span> {</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>  <a class="code" href="class_fault.html">Fault</a> fault(GetElementList());</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  <span class="keywordtype">bool</span> result = fault.RunFaultCalculation(100e6);</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>  <span class="keywordflow">if</span>(!result) {</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</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="l01395"></a><span class="lineno"> 1395</span>  msgDialog.ShowModal();</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>  }</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span> </div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>  UpdateTextElements();</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>  Redraw();</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> </div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>  <span class="keywordflow">return</span> result;</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> </div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> std::vector<Element*> Workspace::GetElementList()<span class="keyword"> const</span></div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span> <span class="keyword"></span>{</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>  std::vector<Element*> elementList;</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</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="l01408"></a><span class="lineno"> 1408</span>  <span class="keywordflow">return</span> elementList;</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> }</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span> </div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span> <span class="keywordtype">bool</span> Workspace::RunSCPower()</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span> {</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  <a class="code" href="class_fault.html">Fault</a> fault(GetElementList());</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>  <span class="keywordtype">bool</span> result = fault.RunSCPowerCalcutation(100e6);</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>  <span class="keywordflow">if</span>(!result) {</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</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="l01417"></a><span class="lineno"> 1417</span>  msgDialog.ShowModal();</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>  }</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>  UpdateTextElements();</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>  Redraw();</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span> </div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span> }</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span> </div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span> <span class="keywordtype">bool</span> Workspace::RunStability()</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="comment">// Run power flow before stability.</span></div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>  RunPowerFlow();</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span> </div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</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="l01432"></a><span class="lineno"> 1432</span>  <span class="keywordtype">bool</span> result = stability.RunStabilityCalculation();</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>  <span class="keywordflow">if</span>(!result) {</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</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="l01435"></a><span class="lineno"> 1435</span>  msgDialog.ShowModal();</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>  m_stabilityTimeVector.clear();</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>  m_stabilityTimeVector = stability.GetTimeVector();</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="comment">// Run power flow after stability.</span></div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>  RunPowerFlow();</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>  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="l01444"></a><span class="lineno"> 1444</span>  wxYES_NO | wxCENTRE | wxICON_QUESTION);</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>  <span class="keywordflow">if</span>(msgDialog.ShowModal() == wxID_YES) {</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>  std::vector<ElementPlotData> plotDataList;</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</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="l01448"></a><span class="lineno"> 1448</span>  <a class="code" href="class_power_element.html">PowerElement</a>* element = *it;</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a> plotData;</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</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="l01451"></a><span class="lineno"> 1451</span>  }</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</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="l01453"></a><span class="lineno"> 1453</span>  tests.AddData(stability.m_wErrorVector, _(<span class="stringliteral">"Speed error"</span>));</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>  tests.AddData(stability.m_numItVector, _(<span class="stringliteral">"Number iterations"</span>));</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>  plotDataList.push_back(tests);</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>  <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="l01458"></a><span class="lineno"> 1458</span>  cView->Show();</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> </div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span> }</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span> <span class="keywordtype">void</span> Workspace::OnMiddleDoubleClick(wxMouseEvent& event)</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>  Fit();</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span> }</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> <span class="keywordtype">bool</span> Workspace::RunStaticStudies()</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="keywordtype">bool</span> pfStatus, faultStatus, scStatus;</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>  pfStatus = faultStatus = scStatus = <span class="keyword">false</span>;</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span> </div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>  pfStatus = RunPowerFlow();</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>  <span class="keywordflow">if</span>(m_properties->GetSimulationPropertiesData().faultAfterPowerFlow) {</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>  <span class="keywordflow">if</span>(pfStatus) faultStatus = RunFault();</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>  faultStatus = <span class="keyword">true</span>;</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>  }</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="keywordflow">if</span>(m_properties->GetSimulationPropertiesData().scPowerAfterPowerFlow) {</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>  <span class="keywordflow">if</span>(pfStatus) scStatus = RunSCPower();</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>  scStatus = <span class="keyword">true</span>;</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="keywordflow">if</span>(pfStatus && faultStatus && scStatus) <span class="keywordflow">return</span> <span class="keyword">true</span>;</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="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</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#l00030">Text.cpp:30</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#l00048">Text.h:48</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#l00141">Element.h:141</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#l00040">PropertiesData.h:40</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#l00107">Element.cpp:107</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#l00321">Element.h:321</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#l00088">Element.h:88</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#l00123">Element.h:123</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#l00145">Text.cpp:145</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#l00517">Element.h:517</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#l00009">PowerFlow.h:9</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#l00523">Element.h:523</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#l00406">Element.h:406</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#l00033">Element.h:33</a></div></div> -<div class="ttc" id="class_element_html_a95b4f7e9341883ec39d0201148afffb4"><div class="ttname"><a href="class_element.html#a95b4f7e9341883ec39d0201148afffb4">Element::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="_element_8h_source.html#l00348">Element.h:348</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#l00218">Element.cpp:218</a></div></div> -<div class="ttc" id="class_element_html_af4815de7e7698ea116e8e2af51414050"><div class="ttname"><a href="class_element.html#af4815de7e7698ea116e8e2af51414050">Element::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="_element_8h_source.html#l00389">Element.h:389</a></div></div> -<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#l00353">Element.h:353</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#l00018">PowerElement.cpp:18</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#l00037">Element.h:37</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#l00335">Element.cpp:335</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#l00110">SyncGenerator.h:110</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#l00075">Text.cpp:75</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#l00007">Bus.h:7</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 "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="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_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="_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="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_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> +<div class="ttc" id="class_element_html_a95b4f7e9341883ec39d0201148afffb4"><div class="ttname"><a href="class_element.html#a95b4f7e9341883ec39d0201148afffb4">Element::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="_element_8h_source.html#l00343">Element.h:343</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="class_element_html_af4815de7e7698ea116e8e2af51414050"><div class="ttname"><a href="class_element.html#af4815de7e7698ea116e8e2af51414050">Element::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="_element_8h_source.html#l00379">Element.h:379</a></div></div> +<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="_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_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> -<div class="ttc" id="class_element_html_a870e266e0457bacbc3f7ef1fb70c6fdd"><div class="ttname"><a href="class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd">Element::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="_element_8h_source.html#l00341">Element.h:341</a></div></div> -<div class="ttc" id="class_camera_html"><div class="ttname"><a href="class_camera.html">Camera</a></div><div class="ttdef"><b>Definition:</b> <a href="_camera_8h_source.html#l00006">Camera.h:6</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#l00011">PowerElement.h:11</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#l00243">Element.cpp:243</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#l00234">Element.h:234</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#l00034">Element.h:34</a></div></div> +<div class="ttc" id="class_element_html_a870e266e0457bacbc3f7ef1fb70c6fdd"><div class="ttname"><a href="class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd">Element::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="_element_8h_source.html#l00337">Element.h:337</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="_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="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="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#l00007">ElementDataObject.h:7</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#l00343">Element.cpp:343</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#l00045">Bus.h:45</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_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#l00181">PowerElement.h:181</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#l00213">Element.h:213</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#l00219">Element.h:219</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#l00039">ElementPlotData.h:39</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#l00295">Element.h:295</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#l00012">ElementDataObject.h:12</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#l00010">Element.cpp:10</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#l00308">Element.h:308</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#l00038">Element.h:38</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="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_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_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="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#l00333">Element.cpp:333</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#l00035">Line.h:35</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#l00010">Electromechanical.h:10</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#l00023">Load.h:23</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#l00315">Element.h:315</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="ttdef"><b>Definition:</b> <a href="_chart_view_8h_source.html#l00016">ChartView.h:16</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#l00547">Element.h:547</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#l00395">Element.h:395</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#l00036">Element.h:36</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#l00035">Element.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#l00110">SyncMotor.h:110</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#l00401">Element.h:401</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#l00013">Fault.h:13</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#l00017">IndMotor.h:17</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#l00189">Element.h:189</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#l00381">Element.h:381</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#l00264">Element.h:264</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#l00361">Element.h:361</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#l00046">PowerElement.cpp:46</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#l00270">Element.h:270</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#l00326">Element.cpp:326</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#l00367">Element.h:367</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#l00014">Capacitor.h:14</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_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_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="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_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="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> +<div class="ttc" id="_camera_8h_html"><div class="ttname"><a href="_camera_8h.html">Camera.h</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_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_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#l00101">Element.cpp:101</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#l00100">PowerElement.h:100</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#l00014">Inductor.h:14</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#l00411">Element.h:411</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#l00258">Element.h:258</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#l00054">Transformer.h:54</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_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_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="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><!-- 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 new file mode 100644 index 0000000..f80d426 --- /dev/null +++ b/docs/doxygen/html/_workspace_8h.html @@ -0,0 +1,145 @@ +<!-- 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/Workspace.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('_workspace_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">Workspace.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include <GL/gl.h></code><br /> +<code>#include <GL/glu.h></code><br /> +<code>#include <wx/dcclient.h></code><br /> +<code>#include <wx/msgdlg.h></code><br /> +<code>#include <wx/statusbr.h></code><br /> +<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="_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> +<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_workspace.html">Workspace</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">This class manages the graphical and power elements. It is responsible for handling the user's interaction with the elements. <a href="class_workspace.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:a8f434816783a791128b48a39ae663f15"><td class="memItemLeft" align="right" valign="top"><a id="a8f434816783a791128b48a39ae663f15"></a>enum  </td><td class="memItemRight" valign="bottom"><b>ElementID</b> { <br /> +  <b>ID_BUS</b> = 0, +<b>ID_LINE</b>, +<b>ID_TRANSFORMER</b>, +<b>ID_SYNCGENERATOR</b>, +<br /> +  <b>ID_INDMOTOR</b>, +<b>ID_SYNCMOTOR</b>, +<b>ID_LOAD</b>, +<b>ID_CAPACITOR</b>, +<br /> +  <b>ID_INDUCTOR</b>, +<b>ID_TEXT</b>, +<b>NUM_ELEMENTS</b> +<br /> + }</td></tr> +<tr class="separator:a8f434816783a791128b48a39ae663f15"><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="_workspace_8h.html">Workspace.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/_workspace_8h.js b/docs/doxygen/html/_workspace_8h.js new file mode 100644 index 0000000..19fe701 --- /dev/null +++ b/docs/doxygen/html/_workspace_8h.js @@ -0,0 +1,17 @@ +var _workspace_8h = +[ + [ "Workspace", "class_workspace.html", "class_workspace" ], + [ "ElementID", "_workspace_8h.html#a8f434816783a791128b48a39ae663f15", [ + [ "ID_BUS", "_workspace_8h.html#a8f434816783a791128b48a39ae663f15a1ef615af10b75825208fe612934cd993", null ], + [ "ID_LINE", "_workspace_8h.html#a8f434816783a791128b48a39ae663f15a7ce9843fb67511c2e4b20c707ad590d8", null ], + [ "ID_TRANSFORMER", "_workspace_8h.html#a8f434816783a791128b48a39ae663f15aec53219b0d127b0c7c48bce6bc6618bb", null ], + [ "ID_SYNCGENERATOR", "_workspace_8h.html#a8f434816783a791128b48a39ae663f15a85788d6fc58afde943ce8bb130461ac1", null ], + [ "ID_INDMOTOR", "_workspace_8h.html#a8f434816783a791128b48a39ae663f15adc8df3f3cd5a626ee5c327423dd7d825", null ], + [ "ID_SYNCMOTOR", "_workspace_8h.html#a8f434816783a791128b48a39ae663f15a7088a60d72d0730404f0965f10dd0786", null ], + [ "ID_LOAD", "_workspace_8h.html#a8f434816783a791128b48a39ae663f15ac3e3dcfd8b3450a32dd2665d542695f2", null ], + [ "ID_CAPACITOR", "_workspace_8h.html#a8f434816783a791128b48a39ae663f15a89ae894b55baca13320fdc0f71345795", null ], + [ "ID_INDUCTOR", "_workspace_8h.html#a8f434816783a791128b48a39ae663f15ad22104a7215f22fd9bcca5d8b56889ef", null ], + [ "ID_TEXT", "_workspace_8h.html#a8f434816783a791128b48a39ae663f15a0b19c55f1dfecc32f6572a67d37e8cc2", null ], + [ "NUM_ELEMENTS", "_workspace_8h.html#a8f434816783a791128b48a39ae663f15a51add6c28e024f17f0d0dde52e23f466", null ] + ] ] +];
\ No newline at end of file diff --git a/docs/doxygen/html/_workspace_8h_source.html b/docs/doxygen/html/_workspace_8h_source.html index bdb439d..2b1e648 100644 --- a/docs/doxygen/html/_workspace_8h_source.html +++ b/docs/doxygen/html/_workspace_8h_source.html @@ -21,6 +21,12 @@ <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> @@ -82,32 +88,33 @@ $(document).ready(function(){initNavTree('_workspace_8h_source.html','');}); <div class="title">Workspace.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="preprocessor">#ifndef WORKSPACE_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define WORKSPACE_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <GL/gl.h></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <GL/glu.h></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <wx/dcclient.h></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include <wx/msgdlg.h></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include <wx/statusbr.h></span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include <wx/clipbrd.h></span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <wx/tipwin.h></span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "WorkspaceBase.h"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "Bus.h"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "ControlEditor.h"</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="keyword">class </span><a class="code" href="class_camera.html">Camera</a>;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">class </span><a class="code" href="class_element.html">Element</a>;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// class Bus;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">class </span><a class="code" href="class_line.html">Line</a>;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">class </span><a class="code" href="class_transformer.html">Transformer</a>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">class </span><a class="code" href="class_sync_generator.html">SyncGenerator</a>;</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.html">IndMotor</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_motor.html">SyncMotor</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">class </span><a class="code" href="class_load.html">Load</a>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span><a class="code" href="class_inductor.html">Inductor</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">class </span><a class="code" href="class_capacitor.html">Capacitor</a>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">class </span><a class="code" href="class_element_data_object.html">ElementDataObject</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">class </span><a class="code" href="class_text.html">Text</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">class </span><a class="code" href="class_power_flow.html">PowerFlow</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">class </span><a class="code" href="class_fault.html">Fault</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span><a class="code" href="class_electromechanical.html">Electromechanical</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">class </span><a class="code" href="class_element_plot_data.html">ElementPlotData</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span><a class="code" href="class_chart_view.html">ChartView</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">class </span><a class="code" href="class_properties_data.html">PropertiesData</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">enum</span> ElementID {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  ID_BUS = 0,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  ID_LINE,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  ID_TRANSFORMER,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ID_SYNCGENERATOR,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ID_INDMOTOR,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ID_SYNCMOTOR,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ID_LOAD,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ID_CAPACITOR,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  ID_INDUCTOR,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  ID_TEXT,</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>  NUM_ELEMENTS</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_workspace.html"> 56</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="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> WorkspaceMode {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  MODE_EDIT = 0,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  MODE_MOVE_ELEMENT,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  MODE_MOVE_PICKBOX,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  MODE_MOVE_NODE,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  MODE_DRAG,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  MODE_DRAG_INSERT,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  MODE_DRAG_INSERT_TEXT,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  MODE_INSERT,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  MODE_INSERT_TEXT,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  MODE_SELECTION_RECT,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  MODE_PASTE,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  MODE_DRAG_PASTE</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>  <a class="code" href="class_workspace.html">Workspace</a>();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_workspace.html">Workspace</a>(wxWindow* parent, wxString name = wxEmptyString, wxStatusBar* statusBar = NULL);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  ~<a class="code" href="class_workspace.html">Workspace</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>  wxString GetName()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_name; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  std::vector<Element*> GetElementList() <span class="keyword">const</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  std::vector<Text*> GetTextList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_textList; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  std::vector<Element*> GetAllElements() <span class="keyword">const</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  WorkspaceMode GetWorkspaceMode()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_mode; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</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="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">void</span> CopySelection();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">bool</span> Paste();</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>  wxFileName GetSavedPath()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_savedPath; }</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> SetName(wxString name) { m_name = name; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">void</span> SetElementList(std::vector<Element*> elementList);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">void</span> SetTextList(std::vector<Text*> textList);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">void</span> SetStatusBarText(wxString text) { m_statusBar->SetStatusText(text); }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">void</span> SetWorkspaceMode(WorkspaceMode mode) { m_mode = mode; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">void</span> SetSavedPath(wxFileName savedPath) { m_savedPath = savedPath; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordtype">void</span> SetJustOpened(<span class="keywordtype">bool</span> justOpened) { m_justOpened = justOpened; }</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> Redraw() { m_glCanvas->Refresh(); }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">void</span> RotateSelectedElements(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">void</span> DeleteSelectedElements();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">bool</span> GetElementsCorners(wxPoint2DDouble& leftUpCorner,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  wxPoint2DDouble& rightDownCorner,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  std::vector<Element*> elementList);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">void</span> Fit();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">void</span> UnselectAll();</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> ValidateBusesVoltages(<a class="code" href="class_element.html">Element</a>* initialBus);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">void</span> ValidateElementsVoltages();</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="keywordtype">void</span> UpdateElementsID();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordtype">void</span> UpdateTextElements();</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">int</span> GetElementNumber(ElementID elementID) { <span class="keywordflow">return</span> m_elementNumber[elementID]; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordtype">void</span> IncrementElementNumber(ElementID elementID) { m_elementNumber[elementID]++; }</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>  <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="l00117"></a><span class="lineno"> 117</span>  </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  std::vector<double> GetStabilityTimeVector()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_stabilityTimeVector; }</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">bool</span> IsContinuousCalculationActive()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_continuousCalc; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</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="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">bool</span> RunPowerFlow();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordtype">bool</span> RunFault();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordtype">bool</span> RunSCPower();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordtype">bool</span> RunStaticStudies();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordtype">bool</span> RunStability();</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">protected</span>:</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMiddleDoubleClick(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> OnIdle(wxIdleEvent& event);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnTimer(wxTimerEvent& event);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnLeftDoubleClick(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> OnRightClickDown(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> OnLeftClickUp(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> OnScroll(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> OnMiddleDown(wxMouseEvent& event);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMiddleUp(wxMouseEvent& event);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMouseMotion(wxMouseEvent& event);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnKeyDown(wxKeyEvent& event);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnLeftClickDown(wxMouseEvent& event);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPaint(wxPaintEvent& event);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPopupClick(wxCommandEvent& event);</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> SetViewport();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordtype">void</span> UpdateStatusBar();</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>  wxGLContext* m_glContext = NULL;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  wxStatusBar* m_statusBar = NULL;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="class_camera.html">Camera</a>* m_camera = NULL;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  wxTipWindow* m_tipWindow = NULL;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  wxString m_name;</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>  WorkspaceMode m_mode = MODE_EDIT;</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>  std::vector<PowerElement*> m_elementList;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordtype">int</span> m_elementNumber[NUM_ELEMENTS];</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>  std::vector<Text*> m_textList;</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>  wxFileName m_savedPath;</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>  wxRect2DDouble m_selectionRect;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  wxPoint2DDouble m_startSelRect;</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_properties_data.html">PropertiesData</a>* m_properties = NULL;</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>  std::vector<double> m_stabilityTimeVector;</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="keywordtype">bool</span> m_continuousCalc = <span class="keyword">false</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordtype">bool</span> m_disconnectedElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordtype">bool</span> m_justOpened = <span class="keyword">false</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="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#l00048">Text.h:48</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#l00040">PropertiesData.h:40</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#l00088">Element.h:88</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#l00009">PowerFlow.h:9</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#l00110">SyncGenerator.h:110</a></div></div> -<div class="ttc" id="class_camera_html"><div class="ttname"><a href="class_camera.html">Camera</a></div><div class="ttdef"><b>Definition:</b> <a href="_camera_8h_source.html#l00006">Camera.h:6</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 "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> +<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="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#l00039">ElementPlotData.h:39</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#l00012">ElementDataObject.h:12</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#l00035">Line.h:35</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#l00010">Electromechanical.h:10</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#l00023">Load.h:23</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="ttdef"><b>Definition:</b> <a href="_chart_view_8h_source.html#l00016">ChartView.h:16</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#l00110">SyncMotor.h:110</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#l00013">Fault.h:13</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#l00017">IndMotor.h:17</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#l00014">Capacitor.h:14</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#l00014">Inductor.h:14</a></div></div> -<div class="ttc" id="class_workspace_html"><div class="ttname"><a href="class_workspace.html">Workspace</a></div><div class="ttdef"><b>Definition:</b> <a href="_workspace_8h_source.html#l00056">Workspace.h:56</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#l00054">Transformer.h:54</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_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_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><!-- 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>Workspace.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_workspace_8h.html">Workspace.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/_workspace_base_8cpp_source.html b/docs/doxygen/html/_workspace_base_8cpp_source.html index 03c29e5..eeda509 100644 --- a/docs/doxygen/html/_workspace_base_8cpp_source.html +++ b/docs/doxygen/html/_workspace_base_8cpp_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_workspace_base_8h_source.html b/docs/doxygen/html/_workspace_base_8h_source.html index b8a67a4..427bf4e 100644 --- a/docs/doxygen/html/_workspace_base_8h_source.html +++ b/docs/doxygen/html/_workspace_base_8h_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/_workspace_bitmaps_8cpp_source.html b/docs/doxygen/html/_workspace_bitmaps_8cpp_source.html index e9b74a8..ce575da 100644 --- a/docs/doxygen/html/_workspace_bitmaps_8cpp_source.html +++ b/docs/doxygen/html/_workspace_bitmaps_8cpp_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/annotated.html b/docs/doxygen/html/annotated.html index f4275bc..6455b40 100644 --- a/docs/doxygen/html/annotated.html +++ b/docs/doxygen/html/annotated.html @@ -21,6 +21,12 @@ <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> @@ -84,31 +90,31 @@ $(document).ready(function(){initNavTree('annotated.html','');}); <div class="contents"> <div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory"> <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"></td></tr> +<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_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"></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"></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_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"></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> -<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="class_connection_line.html" target="_self">ConnectionLine</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="class_constant.html" target="_self">Constant</a></td><td class="desc"></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="class_constant_form.html" target="_self">ConstantForm</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="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_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="class_constant.html" target="_self">Constant</a></td><td class="desc">A control element that provides a constant value </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="class_constant_form.html" target="_self">ConstantForm</a></td><td class="desc">Form to edit the constant control data </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="class_constant_form_base.html" target="_self">ConstantFormBase</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_control_editor.html" target="_self">ControlEditor</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_control_editor_base.html" target="_self">ControlEditorBase</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_control_element.html" target="_self">ControlElement</a></td><td class="desc"></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="class_control_element_button.html" target="_self">ControlElementButton</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="class_control_element_container.html" target="_self">ControlElementContainer</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="class_control_element_solver.html" target="_self">ControlElementSolver</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="class_control_system_test.html" target="_self">ControlSystemTest</a></td><td class="desc"></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="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> +<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="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_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="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_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="class_control_system_test.html" target="_self">ControlSystemTest</a></td><td class="desc">Form to edit properties to test the control system created </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="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"></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> @@ -116,93 +122,95 @@ $(document).ready(function(){initNavTree('annotated.html','');}); <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_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"></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"></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_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_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"></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"></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"></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_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> -<tr id="row_41_"><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.html" target="_self">GeneralPropertiesForm</a></td><td class="desc"></td></tr> +<tr id="row_41_"><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.html" target="_self">GeneralPropertiesForm</a></td><td class="desc">Form to edit the software's general data </td></tr> <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"></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_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"></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_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_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"></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"></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"></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"></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_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"></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_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"></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_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"></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"></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"></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_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"></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"></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> <tr id="row_80_" 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_form_base.html" target="_self">RateLimiterFormBase</a></td><td class="desc"></td></tr> <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"></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_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"></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_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"></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_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"></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_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"></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="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="struct_sync_motor_electrical_data.html" target="_self">SyncMotorElectricalData</a></td><td class="desc"></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="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_form.html" target="_self">TextForm</a></td><td class="desc"></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_base.html" target="_self">TextFormBase</a></td><td class="desc"></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_g_l_drawable.html" target="_self">TextGLDrawable</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_texture.html" target="_self">TextTexture</a></td><td class="desc"></td></tr> -<tr id="row_105_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_105_" class="arrow" onclick="toggleFolder('105_')">►</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_105_0_" class="even" 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_106_" 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.html" target="_self">TransferFunctionForm</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_base.html" target="_self">TransferFunctionFormBase</a></td><td class="desc"></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_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="struct_transformer_electrical_data.html" target="_self">TransformerElectricalData</a></td><td class="desc"></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="class_transformer_form.html" target="_self">TransformerForm</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_base.html" target="_self">TransformerFormBase</a></td><td class="desc"></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_workspace.html" target="_self">Workspace</a></td><td class="desc"></td></tr> -<tr id="row_113_"><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_workspace_base.html" target="_self">WorkspaceBase</a></td><td class="desc"></td></tr> -<tr id="row_114_" 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="classwx_g_l_number_renderer.html" target="_self">wxGLNumberRenderer</a></td><td class="desc"></td></tr> -<tr id="row_115_"><td class="entry"><span style="width:16px;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_116_" 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="classwx_g_l_string_array.html" target="_self">wxGLStringArray</a></td><td class="desc"></td></tr> -<tr id="row_117_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwx_ribbon_metro_art_provider.html" target="_self">wxRibbonMetroArtProvider</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_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_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_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_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> +<tr id="row_113_"><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_workspace.html" target="_self">Workspace</a></td><td class="desc">This class manages the graphical and power elements. It is responsible for handling the user's interaction with the elements </td></tr> +<tr id="row_114_" 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_workspace_base.html" target="_self">WorkspaceBase</a></td><td class="desc"></td></tr> +<tr id="row_115_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwx_g_l_number_renderer.html" target="_self">wxGLNumberRenderer</a></td><td class="desc"></td></tr> +<tr id="row_116_" 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="classwx_g_l_string.html" target="_self">wxGLString</a></td><td class="desc"></td></tr> +<tr id="row_117_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwx_g_l_string_array.html" target="_self">wxGLStringArray</a></td><td class="desc"></td></tr> +<tr id="row_118_" 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="classwx_ribbon_metro_art_provider.html" target="_self">wxRibbonMetroArtProvider</a></td><td class="desc"></td></tr> </table> </div><!-- directory --> </div><!-- contents --> diff --git a/docs/doxygen/html/annotated_dup.js b/docs/doxygen/html/annotated_dup.js index e2c2bac..cade99c 100644 --- a/docs/doxygen/html/annotated_dup.js +++ b/docs/doxygen/html/annotated_dup.js @@ -98,6 +98,7 @@ var annotated_dup = [ "SyncGeneratorElectricalData", "struct_sync_generator_electrical_data.html", "struct_sync_generator_electrical_data" ], [ "SyncMachineForm", "class_sync_machine_form.html", "class_sync_machine_form" ], [ "SyncMachineFormBase", "class_sync_machine_form_base.html", "class_sync_machine_form_base" ], + [ "SyncMachineModelData", "struct_sync_machine_model_data.html", "struct_sync_machine_model_data" ], [ "SyncMotor", "class_sync_motor.html", "class_sync_motor" ], [ "SyncMotorElectricalData", "struct_sync_motor_electrical_data.html", "struct_sync_motor_electrical_data" ], [ "Text", "class_text.html", "class_text" ], diff --git a/docs/doxygen/html/class_about_form-members.html b/docs/doxygen/html/class_about_form-members.html index b8f5102..3826bd7 100644 --- a/docs/doxygen/html/class_about_form-members.html +++ b/docs/doxygen/html/class_about_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_about_form.html b/docs/doxygen/html/class_about_form.html index 6243c4f..97ff3a4 100644 --- a/docs/doxygen/html/class_about_form.html +++ b/docs/doxygen/html/class_about_form.html @@ -21,6 +21,12 @@ <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> @@ -86,6 +92,11 @@ $(document).ready(function(){initNavTree('class_about_form.html','');}); <div class="title">AboutForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to show some informations. + <a href="class_about_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_about_form_8h_source.html">AboutForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for AboutForm:</div> <div class="dyncontent"> @@ -192,8 +203,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_buttonOK</b>< <tr class="separator:ab8d26c339ff508e7497e011cca359246 inherit pro_attribs_class_about_form_base"><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="_about_form_8h_source.html#l00007">7</a> of file <a class="el" href="_about_form_8h_source.html">AboutForm.h</a>.</p> +<div class="textblock"><p>Form to show some informations. </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="_about_form_8h_source.html#l00032">32</a> of file <a class="el" href="_about_form_8h_source.html">AboutForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_about_form_8h_source.html">AboutForm.h</a></li> <li>Project/<a class="el" href="_about_form_8cpp_source.html">AboutForm.cpp</a></li> diff --git a/docs/doxygen/html/class_about_form_base-members.html b/docs/doxygen/html/class_about_form_base-members.html index 6f8ef15..57bf4db 100644 --- a/docs/doxygen/html/class_about_form_base-members.html +++ b/docs/doxygen/html/class_about_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_about_form_base.html b/docs/doxygen/html/class_about_form_base.html index 2e5688f..cb07e5a 100644 --- a/docs/doxygen/html/class_about_form_base.html +++ b/docs/doxygen/html/class_about_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for AboutFormBase:</div> <div class="center"> <img src="class_about_form_base.png" usemap="#AboutFormBase_map" alt=""/> <map id="AboutFormBase_map" name="AboutFormBase_map"> -<area href="class_about_form.html" alt="AboutForm" shape="rect" coords="0,112,102,136"/> +<area href="class_about_form.html" title="Form to show some informations. " alt="AboutForm" shape="rect" coords="0,112,102,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_branch-members.html b/docs/doxygen/html/class_branch-members.html index 1bec124..50e5da0 100644 --- a/docs/doxygen/html/class_branch-members.html +++ b/docs/doxygen/html/class_branch-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_branch.html b/docs/doxygen/html/class_branch.html index faaa9bf..7fe4ac0 100644 --- a/docs/doxygen/html/class_branch.html +++ b/docs/doxygen/html/class_branch.html @@ -21,6 +21,12 @@ <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> @@ -503,7 +509,7 @@ Additional Inherited Members</h2></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#l00007">7</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#l00024">24</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> @@ -541,7 +547,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#l00027">27</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#l00044">44</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -581,7 +587,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#l00013">13</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#l00030">30</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -632,7 +638,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#l00014">14</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#l00031">31</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -666,7 +672,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#l00022">22</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> @@ -707,7 +713,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#l00028">28</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#l00045">45</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -747,7 +753,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#l00023">23</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> @@ -787,7 +793,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#l00015">15</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#l00032">32</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -828,7 +834,7 @@ Additional Inherited Members</h2></td></tr> <p>Move a node. <a class="el" href="class_branch.html#a947cec45fcdc78d01eaabe19d23daf64" title="Update the element attributes related to the movement. ">StartMove(wxPoint2DDouble position)</a> before start moving. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a>'s parent. </td></tr> + <tr><td class="paramname">parent</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>'s parent. </td></tr> <tr><td class="paramname">position</td><td>New node position. </td></tr> </table> </dd> @@ -838,7 +844,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#l00017">17</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#l00034">34</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -878,7 +884,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#l00024">24</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> @@ -917,7 +923,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a95b4f7e9341883ec39d0201148afffb4">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_branch_8cpp_source.html#l00008">8</a> of file <a class="el" href="_branch_8cpp_source.html">Branch.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_branch_8cpp_source.html#l00022">22</a> of file <a class="el" href="_branch_8cpp_source.html">Branch.cpp</a>.</p> </div> </div> @@ -958,7 +964,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#l00025">25</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#l00042">42</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -996,7 +1002,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a9504437b60faf2c5a27584de8a24810c">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_branch_8cpp_source.html#l00090">90</a> of file <a class="el" href="_branch_8cpp_source.html">Branch.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_branch_8cpp_source.html#l00105">105</a> of file <a class="el" href="_branch_8cpp_source.html">Branch.cpp</a>.</p> </div> </div> @@ -1037,7 +1043,7 @@ Additional Inherited Members</h2></td></tr> <p>Rotate a node. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a>'s parent. </td></tr> + <tr><td class="paramname">parent</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>'s parent. </td></tr> <tr><td class="paramname">clockwise</td><td>True to rotate clockwise, false to rotate counter-clockwise. </td></tr> </table> </dd> @@ -1047,7 +1053,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_transformer.html#adf0b20286f3de359346b8877d65c1996">Transformer</a>, and <a class="el" href="class_line.html#ab73d74778b5aa9807d21f156d15fadf7">Line</a>.</p> -<p class="definition">Definition at line <a class="el" href="_branch_8cpp_source.html#l00128">128</a> of file <a class="el" href="_branch_8cpp_source.html">Branch.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_branch_8cpp_source.html#l00143">143</a> of file <a class="el" href="_branch_8cpp_source.html">Branch.cpp</a>.</p> </div> </div> @@ -1078,7 +1084,7 @@ Additional Inherited Members</h2></td></tr> <p>Set a perent to the node. If all conditions are met, a new parent are added to the element and the points related to the nodes will be calculated. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a> parent. </td></tr> + <tr><td class="paramname">parent</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> parent. </td></tr> </table> </dd> </dl> @@ -1088,7 +1094,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_transformer.html#a4f9137e6190fb630167f671a0da51ab6">Transformer</a>, and <a class="el" href="class_line.html#a6d35082da4d30bd432b73b72dd86fadb">Line</a>.</p> -<p class="definition">Definition at line <a class="el" href="_branch_8cpp_source.html#l00028">28</a> of file <a class="el" href="_branch_8cpp_source.html">Branch.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_branch_8cpp_source.html#l00043">43</a> of file <a class="el" href="_branch_8cpp_source.html">Branch.cpp</a>.</p> </div> </div> @@ -1128,7 +1134,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#l00016">16</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#l00033">33</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-members.html b/docs/doxygen/html/class_bus-members.html index 0564bde..351efbc 100644 --- a/docs/doxygen/html/class_bus-members.html +++ b/docs/doxygen/html/class_bus-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_bus.html b/docs/doxygen/html/class_bus.html index 80caefa..0c3edc9 100644 --- a/docs/doxygen/html/class_bus.html +++ b/docs/doxygen/html/class_bus.html @@ -21,6 +21,12 @@ <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> @@ -510,7 +516,7 @@ Additional Inherited Members</h2></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#l00045">45</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#l00062">62</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> @@ -550,14 +556,14 @@ Additional Inherited Members</h2></td></tr> <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">position</td><td><a class="el" href="class_node.html">Node</a> position in the 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> </dl> <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#l00053">53</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#l00070">70</a> of file <a class="el" href="_bus_8h_source.html">Bus.h</a>.</p> </div> </div> @@ -595,7 +601,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="_bus_8cpp_source.html#l00087">87</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00104">104</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> </div> </div> @@ -644,7 +650,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00024">24</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00041">41</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> </div> </div> @@ -676,7 +682,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a245924c5be948397b101787dbea565ea">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00124">124</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00141">141</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> </div> </div> @@ -715,7 +721,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a2a436b0497017a1c3d03dba5e59f037e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00176">176</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00193">193</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> </div> </div> @@ -747,7 +753,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="_bus_8cpp_source.html#l00195">195</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00212">212</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> </div> </div> @@ -786,7 +792,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_power_element.html#acadf6712b430f9fadfbd7015903eaeaf">PowerElement</a>.</p> -<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00229">229</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00246">246</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> </div> </div> @@ -818,7 +824,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#aa79db7f54ba9754e953b5059a1d79486">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00201">201</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00218">218</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> </div> </div> @@ -856,7 +862,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="_bus_8cpp_source.html#l00093">93</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00110">110</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> </div> </div> @@ -894,7 +900,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a6f071b6dfd64721ca673bfbe1ca2d525">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00141">141</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00158">158</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> </div> </div> @@ -933,7 +939,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#af4815de7e7698ea116e8e2af51414050">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00100">100</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00117">117</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> </div> </div> @@ -971,7 +977,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00167">167</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00184">184</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> </div> </div> @@ -1021,7 +1027,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00183">183</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_bus_8cpp_source.html#l00200">200</a> of file <a class="el" href="_bus_8cpp_source.html">Bus.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_bus_form-members.html b/docs/doxygen/html/class_bus_form-members.html index dc5cab5..3818b01 100644 --- a/docs/doxygen/html/class_bus_form-members.html +++ b/docs/doxygen/html/class_bus_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_bus_form.html b/docs/doxygen/html/class_bus_form.html index bf3d4ed..4d0099f 100644 --- a/docs/doxygen/html/class_bus_form.html +++ b/docs/doxygen/html/class_bus_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_bus_form.html','');}); <div class="title">BusForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the bus power data. + <a href="class_bus_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_bus_form_8h_source.html">BusForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for BusForm:</div> <div class="dyncontent"> @@ -394,8 +405,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_ButtonCancel< <tr class="separator:aa9546384b368a06197565391b6c38315 inherit pro_attribs_class_bus_form_base"><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_form_8h_source.html#l00007">7</a> of file <a class="el" href="_bus_form_8h_source.html">BusForm.h</a>.</p> +<div class="textblock"><p>Form to edit the bus power 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_bus_form_8h_source.html#l00031">31</a> of file <a class="el" href="_bus_form_8h_source.html">BusForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_bus_form_8h_source.html">BusForm.h</a></li> <li>Project/<a class="el" href="_bus_form_8cpp_source.html">BusForm.cpp</a></li> diff --git a/docs/doxygen/html/class_bus_form_base-members.html b/docs/doxygen/html/class_bus_form_base-members.html index 14bfc84..654f60c 100644 --- a/docs/doxygen/html/class_bus_form_base-members.html +++ b/docs/doxygen/html/class_bus_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_bus_form_base.html b/docs/doxygen/html/class_bus_form_base.html index 4545239..6ac6ad6 100644 --- a/docs/doxygen/html/class_bus_form_base.html +++ b/docs/doxygen/html/class_bus_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for BusFormBase:</div> <div class="center"> <img src="class_bus_form_base.png" usemap="#BusFormBase_map" alt=""/> <map id="BusFormBase_map" name="BusFormBase_map"> -<area href="class_bus_form.html" alt="BusForm" shape="rect" coords="0,112,90,136"/> +<area href="class_bus_form.html" title="Form to edit the bus power data. " alt="BusForm" shape="rect" coords="0,112,90,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_camera-members.html b/docs/doxygen/html/class_camera-members.html index d984e94..6576f53 100644 --- a/docs/doxygen/html/class_camera-members.html +++ b/docs/doxygen/html/class_camera-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_camera.html b/docs/doxygen/html/class_camera.html index 3540ffe..44bca8c 100644 --- a/docs/doxygen/html/class_camera.html +++ b/docs/doxygen/html/class_camera.html @@ -21,6 +21,12 @@ <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> @@ -86,6 +92,11 @@ $(document).ready(function(){initNavTree('class_camera.html','');}); <div class="title">Camera Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Class responsible for the correct visualization of the elements on screen. + <a href="class_camera.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_camera_8h_source.html">Camera.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> @@ -145,8 +156,11 @@ double </td><td class="memItemRight" valign="bottom"><b>m_zoomMax</b> = 3.0 <tr class="separator:a46434cdf939f99eb9d7b6a6260c6954a"><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="_camera_8h_source.html#l00006">6</a> of file <a class="el" href="_camera_8h_source.html">Camera.h</a>.</p> +<div class="textblock"><p>Class responsible for the correct visualization of the elements on screen. </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="_camera_8h_source.html#l00030">30</a> of file <a class="el" href="_camera_8h_source.html">Camera.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_camera_8h_source.html">Camera.h</a></li> <li>Project/<a class="el" href="_camera_8cpp_source.html">Camera.cpp</a></li> diff --git a/docs/doxygen/html/class_capacitor-members.html b/docs/doxygen/html/class_capacitor-members.html index ee1ec82..9fe0a90 100644 --- a/docs/doxygen/html/class_capacitor-members.html +++ b/docs/doxygen/html/class_capacitor-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_capacitor.html b/docs/doxygen/html/class_capacitor.html index d4f6f84..12e844a 100644 --- a/docs/doxygen/html/class_capacitor.html +++ b/docs/doxygen/html/class_capacitor.html @@ -21,6 +21,12 @@ <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> @@ -526,7 +532,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi </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#l00014">14</a> of file <a class="el" href="_capacitor_8h_source.html">Capacitor.h</a>.</p> +<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><h2 class="groupheader">Member Function Documentation</h2> <a id="ace755e5bc3cc72b491ce31c24c54a5cf"></a> <h2 class="memtitle"><span class="permalink"><a href="#ace755e5bc3cc72b491ce31c24c54a5cf">◆ </a></span>AddParent()</h2> @@ -566,14 +572,14 @@ 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><a class="el" href="class_element.html">Element</a> parent. </td></tr> - <tr><td class="paramname">position</td><td><a class="el" href="class_node.html">Node</a> position in the 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> </dl> <p>Reimplemented from <a class="el" href="class_element.html#a569178e9138490a981511a644536c0f9">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00007">7</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00024">24</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> </div> </div> @@ -611,7 +617,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_shunt.html#a449431a2044b838d35cbb991aa1de658">Shunt</a>.</p> -<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00117">117</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00134">134</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> </div> </div> @@ -660,7 +666,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00038">38</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00055">55</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> </div> </div> @@ -699,7 +705,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#a2a436b0497017a1c3d03dba5e59f037e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00110">110</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00127">127</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> </div> </div> @@ -731,7 +737,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00163">163</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00180">180</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> </div> </div> @@ -763,7 +769,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#aa79db7f54ba9754e953b5059a1d79486">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00170">170</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00187">187</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> </div> </div> @@ -801,7 +807,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_shunt.html#afdbf0c51f9630589937298329bb041fe">Shunt</a>.</p> -<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00123">123</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00140">140</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> </div> </div> @@ -839,7 +845,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00098">98</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00115">115</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> </div> </div> @@ -889,7 +895,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00128">128</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_capacitor_8cpp_source.html#l00145">145</a> of file <a class="el" href="_capacitor_8cpp_source.html">Capacitor.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_chart_view-members.html b/docs/doxygen/html/class_chart_view-members.html index db4c4f8..102d504 100644 --- a/docs/doxygen/html/class_chart_view-members.html +++ b/docs/doxygen/html/class_chart_view-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_chart_view.html b/docs/doxygen/html/class_chart_view.html index 8b656ea..99d195f 100644 --- a/docs/doxygen/html/class_chart_view.html +++ b/docs/doxygen/html/class_chart_view.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_chart_view.html','');}); <div class="title">ChartView Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>This class is responsible to manage the charts generated in the transient electromechanical studies. + <a href="class_chart_view.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_chart_view_8h_source.html">ChartView.h</a>></code></p> <div class="dynheader"> Inheritance diagram for ChartView:</div> <div class="dyncontent"> @@ -346,8 +357,11 @@ wxPGProperty * </td><td class="memItemRight" valign="bottom"><b>m_pgPropYMa <tr class="separator:a43e25960f37484e564f8043b273760cd inherit pro_attribs_class_chart_view_base"><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="_chart_view_8h_source.html#l00016">16</a> of file <a class="el" href="_chart_view_8h_source.html">ChartView.h</a>.</p> +<div class="textblock"><p>This class is responsible to manage the charts generated in the transient electromechanical studies. </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="_chart_view_8h_source.html#l00040">40</a> of file <a class="el" href="_chart_view_8h_source.html">ChartView.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_chart_view_8h_source.html">ChartView.h</a></li> <li>Project/<a class="el" href="_chart_view_8cpp_source.html">ChartView.cpp</a></li> diff --git a/docs/doxygen/html/class_chart_view_base-members.html b/docs/doxygen/html/class_chart_view_base-members.html index 2b30901..9708ca4 100644 --- a/docs/doxygen/html/class_chart_view_base-members.html +++ b/docs/doxygen/html/class_chart_view_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_chart_view_base.html b/docs/doxygen/html/class_chart_view_base.html index 6d2b528..7f631eb 100644 --- a/docs/doxygen/html/class_chart_view_base.html +++ b/docs/doxygen/html/class_chart_view_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for ChartViewBase:</div> <div class="center"> <img src="class_chart_view_base.png" usemap="#ChartViewBase_map" alt=""/> <map id="ChartViewBase_map" name="ChartViewBase_map"> -<area href="class_chart_view.html" alt="ChartView" shape="rect" coords="0,112,99,136"/> +<area href="class_chart_view.html" title="This class is responsible to manage the charts generated in the transient electromechanical studies..." alt="ChartView" shape="rect" coords="0,112,99,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_connection_line-members.html b/docs/doxygen/html/class_connection_line-members.html index 02dbc4d..3beed78 100644 --- a/docs/doxygen/html/class_connection_line-members.html +++ b/docs/doxygen/html/class_connection_line-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_connection_line.html b/docs/doxygen/html/class_connection_line.html index c986c39..1818ccc 100644 --- a/docs/doxygen/html/class_connection_line.html +++ b/docs/doxygen/html/class_connection_line.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_connection_line.html','');}); <div class="title">ConnectionLine Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Connection between two control elements or other connection line and an element. + <a href="class_connection_line.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_connection_line_8h_source.html">ConnectionLine.h</a>></code></p> <div class="dynheader"> Inheritance diagram for ConnectionLine:</div> <div class="dyncontent"> @@ -518,8 +529,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="_connection_line_8h_source.html#l00006">6</a> of file <a class="el" href="_connection_line_8h_source.html">ConnectionLine.h</a>.</p> +<div class="textblock"><p>Connection between two control elements or other connection line and an 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_connection_line_8h_source.html#l00030">30</a> of file <a class="el" href="_connection_line_8h_source.html">ConnectionLine.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="a65c6d7139587c973a92dd1009909597f"></a> <h2 class="memtitle"><span class="permalink"><a href="#a65c6d7139587c973a92dd1009909597f">◆ </a></span>Contains()</h2> @@ -555,7 +569,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="_connection_line_8cpp_source.html#l00041">41</a> of file <a class="el" href="_connection_line_8cpp_source.html">ConnectionLine.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_connection_line_8cpp_source.html#l00053">53</a> of file <a class="el" href="_connection_line_8cpp_source.html">ConnectionLine.cpp</a>.</p> </div> </div> @@ -604,7 +618,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_connection_line_8cpp_source.html#l00021">21</a> of file <a class="el" href="_connection_line_8cpp_source.html">ConnectionLine.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_connection_line_8cpp_source.html#l00033">33</a> of file <a class="el" href="_connection_line_8cpp_source.html">ConnectionLine.cpp</a>.</p> </div> </div> @@ -636,7 +650,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="_connection_line_8cpp_source.html#l00188">188</a> of file <a class="el" href="_connection_line_8cpp_source.html">ConnectionLine.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_connection_line_8cpp_source.html#l00199">199</a> of file <a class="el" href="_connection_line_8cpp_source.html">ConnectionLine.cpp</a>.</p> </div> </div> @@ -674,7 +688,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="_connection_line_8cpp_source.html#l00049">49</a> of file <a class="el" href="_connection_line_8cpp_source.html">ConnectionLine.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_connection_line_8cpp_source.html#l00061">61</a> of file <a class="el" href="_connection_line_8cpp_source.html">ConnectionLine.cpp</a>.</p> </div> </div> @@ -712,7 +726,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_control_element.html#ac8bd52ddb8eed51a217fecb2eed65708">ControlElement</a>.</p> -<p class="definition">Definition at line <a class="el" href="_connection_line_8cpp_source.html#l00146">146</a> of file <a class="el" href="_connection_line_8cpp_source.html">ConnectionLine.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_connection_line_8cpp_source.html#l00158">158</a> of file <a class="el" href="_connection_line_8cpp_source.html">ConnectionLine.cpp</a>.</p> </div> </div> @@ -750,7 +764,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a9504437b60faf2c5a27584de8a24810c">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_connection_line_8cpp_source.html#l00180">180</a> of file <a class="el" href="_connection_line_8cpp_source.html">ConnectionLine.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_connection_line_8cpp_source.html#l00191">191</a> of file <a class="el" href="_connection_line_8cpp_source.html">ConnectionLine.cpp</a>.</p> </div> </div> @@ -788,7 +802,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">ControlElement</a>.</p> -<p class="definition">Definition at line <a class="el" href="_connection_line_8cpp_source.html#l00152">152</a> of file <a class="el" href="_connection_line_8cpp_source.html">ConnectionLine.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_connection_line_8cpp_source.html#l00164">164</a> of file <a class="el" href="_connection_line_8cpp_source.html">ConnectionLine.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_constant-members.html b/docs/doxygen/html/class_constant-members.html index 4abf2fe..9b9d463 100644 --- a/docs/doxygen/html/class_constant-members.html +++ b/docs/doxygen/html/class_constant-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_constant.html b/docs/doxygen/html/class_constant.html index cfc57a3..b14b5c9 100644 --- a/docs/doxygen/html/class_constant.html +++ b/docs/doxygen/html/class_constant.html @@ -21,6 +21,12 @@ <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> @@ -86,6 +92,11 @@ $(document).ready(function(){initNavTree('class_constant.html','');}); <div class="title">Constant Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>A control element that provides a constant value. + <a href="class_constant.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_constant_8h_source.html">Constant.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Constant:</div> <div class="dyncontent"> @@ -468,8 +479,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="_constant_8h_source.html#l00011">11</a> of file <a class="el" href="_constant_8h_source.html">Constant.h</a>.</p> +<div class="textblock"><p>A control element that provides a constant value. </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="_constant_8h_source.html#l00035">35</a> of file <a class="el" href="_constant_8h_source.html">Constant.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="ae091eb79633beb158dc06880424f7ce6"></a> <h2 class="memtitle"><span class="permalink"><a href="#ae091eb79633beb158dc06880424f7ce6">◆ </a></span>Contains()</h2> @@ -505,7 +519,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="_constant_8h_source.html#l00018">18</a> of file <a class="el" href="_constant_8h_source.html">Constant.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_constant_8h_source.html#l00042">42</a> of file <a class="el" href="_constant_8h_source.html">Constant.h</a>.</p> </div> </div> @@ -554,7 +568,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_constant_8cpp_source.html#l00015">15</a> of file <a class="el" href="_constant_8cpp_source.html">Constant.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_constant_8cpp_source.html#l00032">32</a> of file <a class="el" href="_constant_8cpp_source.html">Constant.cpp</a>.</p> </div> </div> @@ -586,7 +600,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="_constant_8cpp_source.html#l00106">106</a> of file <a class="el" href="_constant_8cpp_source.html">Constant.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_constant_8cpp_source.html#l00123">123</a> of file <a class="el" href="_constant_8cpp_source.html">Constant.cpp</a>.</p> </div> </div> @@ -624,7 +638,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="_constant_8h_source.html#l00019">19</a> of file <a class="el" href="_constant_8h_source.html">Constant.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_constant_8h_source.html#l00043">43</a> of file <a class="el" href="_constant_8h_source.html">Constant.h</a>.</p> </div> </div> @@ -662,7 +676,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_constant_8cpp_source.html#l00050">50</a> of file <a class="el" href="_constant_8cpp_source.html">Constant.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_constant_8cpp_source.html#l00067">67</a> of file <a class="el" href="_constant_8cpp_source.html">Constant.cpp</a>.</p> </div> </div> @@ -712,7 +726,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_constant_8cpp_source.html#l00039">39</a> of file <a class="el" href="_constant_8cpp_source.html">Constant.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_constant_8cpp_source.html#l00056">56</a> of file <a class="el" href="_constant_8cpp_source.html">Constant.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_constant_form-members.html b/docs/doxygen/html/class_constant_form-members.html index b54c4f0..f1dd5aa 100644 --- a/docs/doxygen/html/class_constant_form-members.html +++ b/docs/doxygen/html/class_constant_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_constant_form.html b/docs/doxygen/html/class_constant_form.html index f68d3c6..8907813 100644 --- a/docs/doxygen/html/class_constant_form.html +++ b/docs/doxygen/html/class_constant_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_constant_form.html','');}); <div class="title">ConstantForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the constant control data. + <a href="class_constant_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_constant_form_8h_source.html">ConstantForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for ConstantForm:</div> <div class="dyncontent"> @@ -166,8 +177,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_buttonCancel< <tr class="separator:a8c2c85c2dbe59fc4831024ad4bb9e675 inherit pro_attribs_class_constant_form_base"><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="_constant_form_8h_source.html#l00007">7</a> of file <a class="el" href="_constant_form_8h_source.html">ConstantForm.h</a>.</p> +<div class="textblock"><p>Form to edit the constant control 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_constant_form_8h_source.html#l00031">31</a> of file <a class="el" href="_constant_form_8h_source.html">ConstantForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_constant_form_8h_source.html">ConstantForm.h</a></li> <li>Project/<a class="el" href="_constant_form_8cpp_source.html">ConstantForm.cpp</a></li> diff --git a/docs/doxygen/html/class_constant_form_base-members.html b/docs/doxygen/html/class_constant_form_base-members.html index d4455aa..cba1071 100644 --- a/docs/doxygen/html/class_constant_form_base-members.html +++ b/docs/doxygen/html/class_constant_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_constant_form_base.html b/docs/doxygen/html/class_constant_form_base.html index d4457dd..e29a6fd 100644 --- a/docs/doxygen/html/class_constant_form_base.html +++ b/docs/doxygen/html/class_constant_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for ConstantFormBase:</div> <div class="center"> <img src="class_constant_form_base.png" usemap="#ConstantFormBase_map" alt=""/> <map id="ConstantFormBase_map" name="ConstantFormBase_map"> -<area href="class_constant_form.html" alt="ConstantForm" shape="rect" coords="0,112,118,136"/> +<area href="class_constant_form.html" title="Form to edit the constant control data. " alt="ConstantForm" shape="rect" coords="0,112,118,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_control_editor-members.html b/docs/doxygen/html/class_control_editor-members.html index 0697cb9..e29b33f 100644 --- a/docs/doxygen/html/class_control_editor-members.html +++ b/docs/doxygen/html/class_control_editor-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_control_editor.html b/docs/doxygen/html/class_control_editor.html index e8772d1..9bb3b26 100644 --- a/docs/doxygen/html/class_control_editor.html +++ b/docs/doxygen/html/class_control_editor.html @@ -21,6 +21,12 @@ <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> @@ -330,7 +336,7 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_buttonOK</b>< </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="_control_editor_8h_source.html#l00067">67</a> of file <a class="el" href="_control_editor_8h_source.html">ControlEditor.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_control_editor_8h_source.html#l00091">91</a> of file <a class="el" href="_control_editor_8h_source.html">ControlEditor.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_control_editor_8h_source.html">ControlEditor.h</a></li> <li>Project/<a class="el" href="_control_editor_8cpp_source.html">ControlEditor.cpp</a></li> diff --git a/docs/doxygen/html/class_control_editor_base-members.html b/docs/doxygen/html/class_control_editor_base-members.html index 3ce209e..a9c5495 100644 --- a/docs/doxygen/html/class_control_editor_base-members.html +++ b/docs/doxygen/html/class_control_editor_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_control_editor_base.html b/docs/doxygen/html/class_control_editor_base.html index 18ea296..445260b 100644 --- a/docs/doxygen/html/class_control_editor_base.html +++ b/docs/doxygen/html/class_control_editor_base.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_control_element-members.html b/docs/doxygen/html/class_control_element-members.html index a2f9245..28f4a92 100644 --- a/docs/doxygen/html/class_control_element-members.html +++ b/docs/doxygen/html/class_control_element-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_control_element.html b/docs/doxygen/html/class_control_element.html index c42f417..bf511f1 100644 --- a/docs/doxygen/html/class_control_element.html +++ b/docs/doxygen/html/class_control_element.html @@ -21,6 +21,12 @@ <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> @@ -86,6 +92,8 @@ $(document).ready(function(){initNavTree('class_control_element.html','');}); <div class="title">ControlElement Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p><code>#include <<a class="el" href="_control_element_8h_source.html">ControlElement.h</a>></code></p> <div class="dynheader"> Inheritance diagram for ControlElement:</div> <div class="dyncontent"> @@ -93,14 +101,14 @@ Inheritance diagram for ControlElement:</div> <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_connection_line.html" alt="ConnectionLine" shape="rect" coords="119,112,228,136"/> -<area href="class_constant.html" alt="Constant" shape="rect" coords="119,168,228,192"/> -<area href="class_exponential.html" alt="Exponential" shape="rect" coords="119,224,228,248"/> -<area href="class_gain.html" alt="Gain" shape="rect" coords="119,280,228,304"/> -<area href="class_i_o_control.html" alt="IOControl" shape="rect" coords="119,336,228,360"/> -<area href="class_limiter.html" alt="Limiter" shape="rect" coords="119,392,228,416"/> -<area href="class_multiplier.html" alt="Multiplier" shape="rect" coords="119,448,228,472"/> -<area href="class_rate_limiter.html" alt="RateLimiter" shape="rect" coords="119,504,228,528"/> +<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_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"/> </map> @@ -454,8 +462,10 @@ 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="_control_element_8h_source.html#l00053">53</a> of file <a class="el" href="_control_element_8h_source.html">ControlElement.h</a>.</p> +<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> +<dl class="section date"><dt>Date</dt><dd>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_control_element_8h_source.html#l00084">84</a> of file <a class="el" href="_control_element_8h_source.html">ControlElement.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="ac8bd52ddb8eed51a217fecb2eed65708"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac8bd52ddb8eed51a217fecb2eed65708">◆ </a></span>Move()</h2> @@ -493,7 +503,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_gain.html#aa303bcc736ac5fad1f89c6cc87e859db">Gain</a>, and <a class="el" href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7">ConnectionLine</a>.</p> -<p class="definition">Definition at line <a class="el" href="_control_element_8cpp_source.html#l00109">109</a> of file <a class="el" href="_control_element_8cpp_source.html">ControlElement.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_control_element_8cpp_source.html#l00126">126</a> of file <a class="el" href="_control_element_8cpp_source.html">ControlElement.cpp</a>.</p> </div> </div> @@ -533,7 +543,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36">ConnectionLine</a>.</p> -<p class="definition">Definition at line <a class="el" href="_control_element_8cpp_source.html#l00100">100</a> of file <a class="el" href="_control_element_8cpp_source.html">ControlElement.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_control_element_8cpp_source.html#l00117">117</a> of file <a class="el" href="_control_element_8cpp_source.html">ControlElement.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_control_element_button-members.html b/docs/doxygen/html/class_control_element_button-members.html index 44a370f..e72d876 100644 --- a/docs/doxygen/html/class_control_element_button-members.html +++ b/docs/doxygen/html/class_control_element_button-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_control_element_button.html b/docs/doxygen/html/class_control_element_button.html index 535fa66..c1028ce 100644 --- a/docs/doxygen/html/class_control_element_button.html +++ b/docs/doxygen/html/class_control_element_button.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_control_element_button.html','') <div class="title">ControlElementButton Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>This class is responsible to handle the user interaction with control elements. + <a href="class_control_element_button.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_control_editor_8h_source.html">ControlEditor.h</a>></code></p> <div class="dynheader"> Inheritance diagram for ControlElementButton:</div> <div class="dyncontent"> @@ -154,8 +165,11 @@ wxSize </td><td class="memItemRight" valign="bottom"><b>m_buttonSize</b></t <tr class="separator:a81773f33a05c2b976bef693604a3ca4b"><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="_control_editor_8h_source.html#l00039">39</a> of file <a class="el" href="_control_editor_8h_source.html">ControlEditor.h</a>.</p> +<div class="textblock"><p>This class is responsible to handle the user interaction with control 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_control_editor_8h_source.html#l00063">63</a> of file <a class="el" href="_control_editor_8h_source.html">ControlEditor.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_control_editor_8h_source.html">ControlEditor.h</a></li> <li>Project/<a class="el" href="_control_editor_8cpp_source.html">ControlEditor.cpp</a></li> diff --git a/docs/doxygen/html/class_control_element_container-members.html b/docs/doxygen/html/class_control_element_container-members.html index 7e8f9dd..5d6ca53 100644 --- a/docs/doxygen/html/class_control_element_container-members.html +++ b/docs/doxygen/html/class_control_element_container-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_control_element_container.html b/docs/doxygen/html/class_control_element_container.html index 46f07e7..8958872 100644 --- a/docs/doxygen/html/class_control_element_container.html +++ b/docs/doxygen/html/class_control_element_container.html @@ -21,6 +21,12 @@ <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> @@ -86,6 +92,11 @@ $(document).ready(function(){initNavTree('class_control_element_container.html', <div class="title">ControlElementContainer Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Class that can contain all control elements. Can identify (using RTTI) the elements from a generic list and store them separately. + <a href="class_control_element_container.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_control_element_container_8h_source.html">ControlElementContainer.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> @@ -172,8 +183,11 @@ std::vector< <a class="el" href="class_transfer_function.html">TransferFuncti <tr class="separator:a32afcd17e0f337c5ef4a6af55b5de358"><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="_control_element_container_8h_source.html#l00020">20</a> of file <a class="el" href="_control_element_container_8h_source.html">ControlElementContainer.h</a>.</p> +<div class="textblock"><p>Class that can contain all control elements. Can identify (using RTTI) the elements from a generic list and store them separately. </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="_control_element_container_8h_source.html#l00045">45</a> of file <a class="el" href="_control_element_container_8h_source.html">ControlElementContainer.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_control_element_container_8h_source.html">ControlElementContainer.h</a></li> <li>Project/<a class="el" href="_control_element_container_8cpp_source.html">ControlElementContainer.cpp</a></li> diff --git a/docs/doxygen/html/class_control_element_solver-members.html b/docs/doxygen/html/class_control_element_solver-members.html index d1c9bfa..5b38734 100644 --- a/docs/doxygen/html/class_control_element_solver-members.html +++ b/docs/doxygen/html/class_control_element_solver-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_control_element_solver.html b/docs/doxygen/html/class_control_element_solver.html index 4628d9b..cf89dff 100644 --- a/docs/doxygen/html/class_control_element_solver.html +++ b/docs/doxygen/html/class_control_element_solver.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_control_element_solver.html','') <div class="title">ControlElementSolver Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>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. + <a href="class_control_element_solver.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_control_element_solver_8h_source.html">ControlElementSolver.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> @@ -149,8 +160,11 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_isOK</b> = false</t <tr class="separator:a7eb65b2465b751462cb08f21496607a6"><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="_control_element_solver_8h_source.html#l00020">20</a> of file <a class="el" href="_control_element_solver_8h_source.html">ControlElementSolver.h</a>.</p> +<div class="textblock"><p>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. </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="_control_element_solver_8h_source.html#l00045">45</a> of file <a class="el" href="_control_element_solver_8h_source.html">ControlElementSolver.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_control_element_solver_8h_source.html">ControlElementSolver.h</a></li> <li>Project/<a class="el" href="_control_element_solver_8cpp_source.html">ControlElementSolver.cpp</a></li> diff --git a/docs/doxygen/html/class_control_system_test-members.html b/docs/doxygen/html/class_control_system_test-members.html index f5c4174..ae73bb9 100644 --- a/docs/doxygen/html/class_control_system_test-members.html +++ b/docs/doxygen/html/class_control_system_test-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_control_system_test.html b/docs/doxygen/html/class_control_system_test.html index 36ee7a5..cb9fecc 100644 --- a/docs/doxygen/html/class_control_system_test.html +++ b/docs/doxygen/html/class_control_system_test.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_control_system_test.html','');}) <div class="title">ControlSystemTest Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit properties to test the control system created. + <a href="class_control_system_test.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_control_system_test_8h_source.html">ControlSystemTest.h</a>></code></p> <div class="dynheader"> Inheritance diagram for ControlSystemTest:</div> <div class="dyncontent"> @@ -232,8 +243,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_buttonCancel< <tr class="separator:a3baa6c84c696c089a293c2a982a34471 inherit pro_attribs_class_control_system_test_base"><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="_control_system_test_8h_source.html#l00008">8</a> of file <a class="el" href="_control_system_test_8h_source.html">ControlSystemTest.h</a>.</p> +<div class="textblock"><p>Form to edit properties to test the control system created. </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="_control_system_test_8h_source.html#l00032">32</a> of file <a class="el" href="_control_system_test_8h_source.html">ControlSystemTest.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_control_system_test_8h_source.html">ControlSystemTest.h</a></li> <li>Project/<a class="el" href="_control_system_test_8cpp_source.html">ControlSystemTest.cpp</a></li> diff --git a/docs/doxygen/html/class_control_system_test_base-members.html b/docs/doxygen/html/class_control_system_test_base-members.html index 1c2be6f..785bda9 100644 --- a/docs/doxygen/html/class_control_system_test_base-members.html +++ b/docs/doxygen/html/class_control_system_test_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_control_system_test_base.html b/docs/doxygen/html/class_control_system_test_base.html index 227789c..fada4da 100644 --- a/docs/doxygen/html/class_control_system_test_base.html +++ b/docs/doxygen/html/class_control_system_test_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for ControlSystemTestBase:</div> <div class="center"> <img src="class_control_system_test_base.png" usemap="#ControlSystemTestBase_map" alt=""/> <map id="ControlSystemTestBase_map" name="ControlSystemTestBase_map"> -<area href="class_control_system_test.html" alt="ControlSystemTest" shape="rect" coords="0,112,144,136"/> +<area href="class_control_system_test.html" title="Form to edit properties to test the control system created. " alt="ControlSystemTest" shape="rect" coords="0,112,144,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_data_report-members.html b/docs/doxygen/html/class_data_report-members.html index adaf79b..8df3f52 100644 --- a/docs/doxygen/html/class_data_report-members.html +++ b/docs/doxygen/html/class_data_report-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_data_report.html b/docs/doxygen/html/class_data_report.html index 558f3d8..886d50f 100644 --- a/docs/doxygen/html/class_data_report.html +++ b/docs/doxygen/html/class_data_report.html @@ -21,6 +21,12 @@ <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> @@ -88,6 +94,11 @@ $(document).ready(function(){initNavTree('class_data_report.html','');}); <div class="title">DataReport Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form that shows the results of power flow and fault calculations. + <a href="class_data_report.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_data_report_8h_source.html">DataReport.h</a>></code></p> <div class="dynheader"> Inheritance diagram for DataReport:</div> <div class="dyncontent"> @@ -318,8 +329,11 @@ wxGrid * </td><td class="memItemRight" valign="bottom"><b>m_gridFaultGenera <tr class="separator:adac5a461ed09a4ac36202a0016707e11 inherit pro_attribs_class_data_report_base"><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="_data_report_8h_source.html#l00009">9</a> of file <a class="el" href="_data_report_8h_source.html">DataReport.h</a>.</p> +<div class="textblock"><p>Form that shows the results of power flow and fault calculations. </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="_data_report_8h_source.html#l00033">33</a> of file <a class="el" href="_data_report_8h_source.html">DataReport.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_data_report_8h_source.html">DataReport.h</a></li> <li>Project/<a class="el" href="_data_report_8cpp_source.html">DataReport.cpp</a></li> diff --git a/docs/doxygen/html/class_data_report_base-members.html b/docs/doxygen/html/class_data_report_base-members.html index 380546d..15ecdc2 100644 --- a/docs/doxygen/html/class_data_report_base-members.html +++ b/docs/doxygen/html/class_data_report_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_data_report_base.html b/docs/doxygen/html/class_data_report_base.html index a7790da..5990702 100644 --- a/docs/doxygen/html/class_data_report_base.html +++ b/docs/doxygen/html/class_data_report_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for DataReportBase:</div> <div class="center"> <img src="class_data_report_base.png" usemap="#DataReportBase_map" alt=""/> <map id="DataReportBase_map" name="DataReportBase_map"> -<area href="class_data_report.html" alt="DataReport" shape="rect" coords="0,112,103,136"/> +<area href="class_data_report.html" title="Form that shows the results of power flow and fault calculations. " alt="DataReport" shape="rect" coords="0,112,103,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_electric_calculation-members.html b/docs/doxygen/html/class_electric_calculation-members.html index 4aa0a25..e1a7179 100644 --- a/docs/doxygen/html/class_electric_calculation-members.html +++ b/docs/doxygen/html/class_electric_calculation-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_electric_calculation.html b/docs/doxygen/html/class_electric_calculation.html index 938fbd5..ccd0b4e 100644 --- a/docs/doxygen/html/class_electric_calculation.html +++ b/docs/doxygen/html/class_electric_calculation.html @@ -21,6 +21,12 @@ <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> @@ -208,7 +214,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g <div class="textblock"><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#l00049">49</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> +<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> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="aca3381e8f6663394e4d257a54e4e2a24"></a> <h2 class="memtitle"><span class="permalink"><a href="#aca3381e8f6663394e4d257a54e4e2a24">◆ </a></span>GetBusList()</h2> @@ -236,7 +242,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g <p>Get the buses of the system (use GetElementsFromList first). </p> <dl class="section return"><dt>Returns</dt><dd>A list of bus elements. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00128">128</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00145">145</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> </div> </div> @@ -266,7 +272,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g <p>Get the capacitors of the system (use GetElementsFromList first). </p> <dl class="section return"><dt>Returns</dt><dd>A list of capacitor elements. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00133">133</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00150">150</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> </div> </div> @@ -302,7 +308,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_electric_calculation_8cpp_source.html#l00008">8</a> of file <a class="el" href="_electric_calculation_8cpp_source.html">ElectricCalculation.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_electric_calculation_8cpp_source.html#l00025">25</a> of file <a class="el" href="_electric_calculation_8cpp_source.html">ElectricCalculation.cpp</a>.</p> </div> </div> @@ -332,7 +338,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g <p>Get the induction motors of the system (use GetElementsFromList first). </p> <dl class="section return"><dt>Returns</dt><dd>A list of induction motor elements. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00138">138</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00155">155</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> </div> </div> @@ -362,7 +368,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g <p>Get the inductors of the system (use GetElementsFromList first). </p> <dl class="section return"><dt>Returns</dt><dd>A list of inductor elements. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00143">143</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00160">160</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> </div> </div> @@ -392,7 +398,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g <p>Get the lines of the system (use GetElementsFromList first). </p> <dl class="section return"><dt>Returns</dt><dd>A list of line elements. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00148">148</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00165">165</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> </div> </div> @@ -422,7 +428,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g <p>Get the loads of the system (use GetElementsFromList first). </p> <dl class="section return"><dt>Returns</dt><dd>A list of load elements. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00153">153</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00170">170</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> </div> </div> @@ -452,7 +458,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g <p>Get the synchronous generators of the system (use GetElementsFromList first). </p> <dl class="section return"><dt>Returns</dt><dd>A list of synchronous generator elements. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00158">158</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00175">175</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> </div> </div> @@ -482,7 +488,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g <p>Get the synchronous motors of the system (use GetElementsFromList first). </p> <dl class="section return"><dt>Returns</dt><dd>A list of synchronous motor elements. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00163">163</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00180">180</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> </div> </div> @@ -512,7 +518,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g <p>Get the transformers of the system (use GetElementsFromList first). </p> <dl class="section return"><dt>Returns</dt><dd>A list of transformer elements. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00168">168</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00185">185</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> </div> </div> @@ -580,7 +586,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g </dl> <dl class="section return"><dt>Returns</dt><dd>Return true if was possible to build the admittance matrix. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_electric_calculation_8cpp_source.html#l00056">56</a> of file <a class="el" href="_electric_calculation_8cpp_source.html">ElectricCalculation.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_electric_calculation_8cpp_source.html#l00073">73</a> of file <a class="el" href="_electric_calculation_8cpp_source.html">ElectricCalculation.cpp</a>.</p> </div> </div> @@ -628,7 +634,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g </dl> <dl class="section return"><dt>Returns</dt><dd>Return true if was possible to invert the matrix. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_electric_calculation_8cpp_source.html#l00572">572</a> of file <a class="el" href="_electric_calculation_8cpp_source.html">ElectricCalculation.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_electric_calculation_8cpp_source.html#l00589">589</a> of file <a class="el" href="_electric_calculation_8cpp_source.html">ElectricCalculation.cpp</a>.</p> </div> </div> @@ -696,7 +702,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_electric_calculation_8cpp_source.html#l00287">287</a> of file <a class="el" href="_electric_calculation_8cpp_source.html">ElectricCalculation.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_electric_calculation_8cpp_source.html#l00304">304</a> of file <a class="el" href="_electric_calculation_8cpp_source.html">ElectricCalculation.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_electromechanical-members.html b/docs/doxygen/html/class_electromechanical-members.html index 8883087..c3ce5b6 100644 --- a/docs/doxygen/html/class_electromechanical-members.html +++ b/docs/doxygen/html/class_electromechanical-members.html @@ -21,6 +21,12 @@ <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> @@ -89,57 +95,63 @@ $(document).ready(function(){initNavTree('class_electromechanical.html','');}); <tr bgcolor="#f0f0f0"><td class="entry"><b>CalculateIntegrationConstants</b>(SyncGenerator *syncGenerator, double id, double iq, double k=1.0) (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>CalculateMachinesCurrents</b>() (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>CalculateReferenceSpeed</b>() (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>CalculateSyncMachineIntVariables</b>(SyncGenerator *syncGenerator, double id, double iq, double pe, double k=1.0) (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>CalculateSyncMachineNonIntVariables</b>(SyncGenerator *syncGenerator, double &id, double &iq, double &pe, double k=1.0) (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ComplexMatrixTimesVector</b>(std::vector< std::vector< std::complex< double > > > matrix, std::vector< std::complex< double > > vector) (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>DQ0toABC</b>(double dValue, double qValue, double angle, std::complex< double > &complexValue) (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="class_electric_calculation.html#a6663e7a20e96ee975bd0f7d54b8a6f70">ElectricCalculation</a>()</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>Electromechanical</b>(wxWindow *parent, std::vector< Element *> elementList, SimulationData data) (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EventTrigger</b>(double eventTime, double currentTime) (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>GaussianElimination</b>(std::vector< std::vector< std::complex< double > > > matrix, std::vector< std::complex< double > > array) (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"></td></tr> - <tr class="even"><td class="entry"><a class="el" href="class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24">GetBusList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> - <tr><td class="entry"><a class="el" href="class_electric_calculation.html#a4ddabc6210146ae1ccae5f6911095bfd">GetCapacitorList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> - <tr class="even"><td class="entry"><a class="el" href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">GetElementsFromList</a>(std::vector< Element *> elementList)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>GetErrorMessage</b>() const (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> - <tr class="even"><td class="entry"><a class="el" href="class_electric_calculation.html#a906ce639a5d6c5d7946fe8824f1b4f1b">GetIndMotorList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> - <tr><td class="entry"><a class="el" href="class_electric_calculation.html#a8709a452d684d4224d32591c281ae0ed">GetInductorList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> - <tr class="even"><td class="entry"><a class="el" href="class_electric_calculation.html#af8eff271de83898c536deda1aab22d48">GetLineList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> - <tr><td class="entry"><a class="el" href="class_electric_calculation.html#aa5e278a1c5ba1b6159c21ae2ff2b23b4">GetLoadList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetLUDecomposition</b>(std::vector< std::vector< std::complex< double > > > matrix, std::vector< std::vector< std::complex< double > > > &matrixL, std::vector< std::vector< std::complex< double > > > &matrixU) (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>GetMachineModel</b>(SyncGenerator *generator) (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetPowerValue</b>(double value, ElectricalUnit unit) (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>CalculateSyncMachineIntVariables</b>(SyncGenerator *syncGenerator, double id, double iq, double sd, double sq, double pe, double k=1.0) (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>CalculateSyncMachineNonIntVariables</b>(SyncGenerator *syncGenerator, double &id, double &iq, double &sd, double &sq, double &pe, double k=1.0) (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>CalculateSyncMachineSaturation</b>(SyncGenerator *syncMachine, double &id, double &iq, double &sd, double &sq, bool updateCurrents=true, double k=1.0) (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>ComplexMatrixTimesVector</b>(std::vector< std::vector< std::complex< double > > > matrix, std::vector< std::complex< double > > vector) (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>DQ0toABC</b>(double dValue, double qValue, double angle, std::complex< double > &complexValue) (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_electric_calculation.html#a6663e7a20e96ee975bd0f7d54b8a6f70">ElectricCalculation</a>()</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Electromechanical</b>(wxWindow *parent, std::vector< Element *> elementList, SimulationData data) (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>EventTrigger</b>(double eventTime, double currentTime) (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GaussianElimination</b>(std::vector< std::vector< std::complex< double > > > matrix, std::vector< std::complex< double > > array) (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24">GetBusList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_electric_calculation.html#a4ddabc6210146ae1ccae5f6911095bfd">GetCapacitorList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> + <tr><td class="entry"><a class="el" href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">GetElementsFromList</a>(std::vector< Element *> elementList)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetErrorMessage</b>() const (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> + <tr><td class="entry"><a class="el" href="class_electric_calculation.html#a906ce639a5d6c5d7946fe8824f1b4f1b">GetIndMotorList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_electric_calculation.html#a8709a452d684d4224d32591c281ae0ed">GetInductorList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> + <tr><td class="entry"><a class="el" href="class_electric_calculation.html#af8eff271de83898c536deda1aab22d48">GetLineList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_electric_calculation.html#aa5e278a1c5ba1b6159c21ae2ff2b23b4">GetLoadList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>GetLUDecomposition</b>(std::vector< std::vector< std::complex< double > > > matrix, std::vector< std::vector< std::complex< double > > > &matrixL, std::vector< std::vector< std::complex< double > > > &matrixU) (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetMachineModel</b>(SyncGenerator *generator) (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"></td></tr> <tr><td class="entry"><a class="el" href="class_electric_calculation.html#ad8719b10c3c4b85b316d3daa71064840">GetSyncGeneratorList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetSyncMachineAdmittance</b>(SyncGenerator *generator) (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr><td class="entry"><a class="el" href="class_electric_calculation.html#ae9b5e9b51615141e88de0a0f99a7741e">GetSyncMotorList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetTimeVector</b>() const (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> - <tr><td class="entry"><a class="el" href="class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e">GetTransformerList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> - <tr class="even"><td class="entry"><a class="el" href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d">GetYBus</a>(std::vector< std::vector< std::complex< double > > > &yBus, double systemPowerBase, YBusSequence sequence=POSITIVE_SEQ, bool includeSyncMachines=false, bool allLoadsAsImpedances=false)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>HasEvent</b>(double currentTime) (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>InitializeDynamicElements</b>() (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>InsertSyncMachinesOnYBus</b>() (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr class="even"><td class="entry"><a class="el" href="class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c">InvertMatrix</a>(std::vector< std::vector< std::complex< double > > > matrix, std::vector< std::vector< std::complex< double > > > &inverse)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>LUEvaluate</b>(std::vector< std::vector< std::complex< double > > > u, std::vector< std::vector< std::complex< double > > > l, std::vector< std::complex< double > > b) (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_busList</b> (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>m_capacitorList</b> (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_ctrlTimeStepMultiplier</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>m_deltaErrorVector</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_errorMsg</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>m_eventOccurrenceList</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_eventTimeList</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>m_iBus</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_indMotorList</b> (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>m_inductorList</b> (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_lineList</b> (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>m_loadList</b> (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_maxIterations</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>m_numIt</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_numItVector</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>m_parent</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_plotTime</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>m_powerElementList</b> (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_powerSystemBase</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>m_refSpeed</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>GetSyncMachineModelData</b>(SyncGenerator *syncMachine) (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_electric_calculation.html#ae9b5e9b51615141e88de0a0f99a7741e">GetSyncMotorList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>GetTimeVector</b>() const (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e">GetTransformerList</a>() const</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> + <tr><td class="entry"><a class="el" href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d">GetYBus</a>(std::vector< std::vector< std::complex< double > > > &yBus, double systemPowerBase, YBusSequence sequence=POSITIVE_SEQ, bool includeSyncMachines=false, bool allLoadsAsImpedances=false)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>HasEvent</b>(double currentTime) (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>InitializeDynamicElements</b>() (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>InsertSyncMachinesOnYBus</b>() (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr><td class="entry"><a class="el" href="class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c">InvertMatrix</a>(std::vector< std::vector< std::complex< double > > > matrix, std::vector< std::vector< std::complex< double > > > &inverse)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LUEvaluate</b>(std::vector< std::vector< std::complex< double > > > u, std::vector< std::vector< std::complex< double > > > l, std::vector< std::complex< double > > b) (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>m_busList</b> (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_capacitorList</b> (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>m_ctrlTimeStepMultiplier</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_deltaErrorVector</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>m_errorMsg</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_eventOccurrenceList</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>m_eventTimeList</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_iBus</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>m_indMotorList</b> (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_inductorList</b> (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>m_lineList</b> (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_loadList</b> (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>m_maxIterations</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_numIt</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>m_numItVector</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_parent</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>m_plotTime</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_powerElementList</b> (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>m_powerSystemBase</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_refSpeed</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>m_saturationTolerance</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_sdC</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>m_sdCVector</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_simTime</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>m_sqC</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_sqCVector</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>m_syncGeneratorList</b> (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_syncMotorList</b> (defined in <a class="el" href="class_electric_calculation.html">ElectricCalculation</a>)</td><td class="entry"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>m_systemFreq</b> (defined in <a class="el" href="class_electromechanical.html">Electromechanical</a>)</td><td class="entry"><a class="el" href="class_electromechanical.html">Electromechanical</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> diff --git a/docs/doxygen/html/class_electromechanical.html b/docs/doxygen/html/class_electromechanical.html index e7e158d..1cc28de 100644 --- a/docs/doxygen/html/class_electromechanical.html +++ b/docs/doxygen/html/class_electromechanical.html @@ -21,6 +21,12 @@ <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> @@ -88,6 +94,8 @@ $(document).ready(function(){initNavTree('class_electromechanical.html','');}); <div class="title">Electromechanical Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p><code>#include <<a class="el" href="_electromechanical_8h_source.html">Electromechanical.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Electromechanical:</div> <div class="dyncontent"> @@ -199,6 +207,12 @@ std::vector< double > </td><td class="memItemRight" valign="bottom">< <tr class="memitem:a1e7fff4570b7a983f79a22aafed2112d"><td class="memItemLeft" align="right" valign="top"><a id="a1e7fff4570b7a983f79a22aafed2112d"></a> std::vector< double > </td><td class="memItemRight" valign="bottom"><b>m_numItVector</b></td></tr> <tr class="separator:a1e7fff4570b7a983f79a22aafed2112d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4c82ed8fc748149bb116ee532e6ee978"><td class="memItemLeft" align="right" valign="top"><a id="a4c82ed8fc748149bb116ee532e6ee978"></a> +std::vector< double > </td><td class="memItemRight" valign="bottom"><b>m_sdCVector</b></td></tr> +<tr class="separator:a4c82ed8fc748149bb116ee532e6ee978"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a237471acf9a372a9b1cd1481803571d5"><td class="memItemLeft" align="right" valign="top"><a id="a237471acf9a372a9b1cd1481803571d5"></a> +std::vector< double > </td><td class="memItemRight" valign="bottom"><b>m_sqCVector</b></td></tr> +<tr class="separator:a237471acf9a372a9b1cd1481803571d5"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a> Protected Member Functions</h2></td></tr> @@ -214,9 +228,6 @@ void </td><td class="memItemRight" valign="bottom"><b>SetEvent</b> (double <tr class="memitem:a9b076237d26ff011552ed624a5d9bbe2"><td class="memItemLeft" align="right" valign="top"><a id="a9b076237d26ff011552ed624a5d9bbe2"></a> bool </td><td class="memItemRight" valign="bottom"><b>EventTrigger</b> (double eventTime, double currentTime)</td></tr> <tr class="separator:a9b076237d26ff011552ed624a5d9bbe2"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:aad655c165bc53cce5d5fdd8ae9339ba2"><td class="memItemLeft" align="right" valign="top"><a id="aad655c165bc53cce5d5fdd8ae9339ba2"></a> -double </td><td class="memItemRight" valign="bottom"><b>GetPowerValue</b> (double value, <a class="el" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> unit)</td></tr> -<tr class="separator:aad655c165bc53cce5d5fdd8ae9339ba2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a790c142f8d9db534c7e368711e84f61e"><td class="memItemLeft" align="right" valign="top"><a id="a790c142f8d9db534c7e368711e84f61e"></a> void </td><td class="memItemRight" valign="bottom"><b>InsertSyncMachinesOnYBus</b> ()</td></tr> <tr class="separator:a790c142f8d9db534c7e368711e84f61e"><td class="memSeparator" colspan="2"> </td></tr> @@ -226,9 +237,9 @@ std::complex< double > </td><td class="memItemRight" valign="bottom"> <tr class="memitem:a4ccf60ce21c83ff757e1a7de99a00704"><td class="memItemLeft" align="right" valign="top"><a id="a4ccf60ce21c83ff757e1a7de99a00704"></a> bool </td><td class="memItemRight" valign="bottom"><b>InitializeDynamicElements</b> ()</td></tr> <tr class="separator:a4ccf60ce21c83ff757e1a7de99a00704"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a4e3c1766ff06883a681f39d536a41136"><td class="memItemLeft" align="right" valign="top"><a id="a4e3c1766ff06883a681f39d536a41136"></a> -void </td><td class="memItemRight" valign="bottom"><b>CalculateMachinesCurrents</b> ()</td></tr> -<tr class="separator:a4e3c1766ff06883a681f39d536a41136"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa59f55e739c674f4ede073eadbb79ac0"><td class="memItemLeft" align="right" valign="top"><a id="aa59f55e739c674f4ede073eadbb79ac0"></a> +bool </td><td class="memItemRight" valign="bottom"><b>CalculateMachinesCurrents</b> ()</td></tr> +<tr class="separator:aa59f55e739c674f4ede073eadbb79ac0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a488985a77171f915145ecc5d891db04f"><td class="memItemLeft" align="right" valign="top"><a id="a488985a77171f915145ecc5d891db04f"></a> void </td><td class="memItemRight" valign="bottom"><b>CalculateIntegrationConstants</b> (<a class="el" href="class_sync_generator.html">SyncGenerator</a> *syncGenerator, double id, double iq, double k=1.0)</td></tr> <tr class="separator:a488985a77171f915145ecc5d891db04f"><td class="memSeparator" colspan="2"> </td></tr> @@ -238,15 +249,21 @@ bool </td><td class="memItemRight" valign="bottom"><b>SolveSynchronousMachi <tr class="memitem:a7cce38fb26c4e1e6a70bd605285848e8"><td class="memItemLeft" align="right" valign="top"><a id="a7cce38fb26c4e1e6a70bd605285848e8"></a> void </td><td class="memItemRight" valign="bottom"><b>SetSyncMachinesModel</b> ()</td></tr> <tr class="separator:a7cce38fb26c4e1e6a70bd605285848e8"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a82b5c5c2aeefd49706199d0ba140d300"><td class="memItemLeft" align="right" valign="top"><a id="a82b5c5c2aeefd49706199d0ba140d300"></a> -double </td><td class="memItemRight" valign="bottom"><b>CalculateSyncMachineIntVariables</b> (<a class="el" href="class_sync_generator.html">SyncGenerator</a> *syncGenerator, double id, double iq, double pe, double k=1.0)</td></tr> -<tr class="separator:a82b5c5c2aeefd49706199d0ba140d300"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a10b7ceb1a8066461c5369d210cff48d5"><td class="memItemLeft" align="right" valign="top"><a id="a10b7ceb1a8066461c5369d210cff48d5"></a> -void </td><td class="memItemRight" valign="bottom"><b>CalculateSyncMachineNonIntVariables</b> (<a class="el" href="class_sync_generator.html">SyncGenerator</a> *syncGenerator, double &id, double &iq, double &pe, double k=1.0)</td></tr> -<tr class="separator:a10b7ceb1a8066461c5369d210cff48d5"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa191e34b2a6cbfd0d89c78da14f1d7f7"><td class="memItemLeft" align="right" valign="top"><a id="aa191e34b2a6cbfd0d89c78da14f1d7f7"></a> +<a class="el" href="struct_sync_machine_model_data.html">SyncMachineModelData</a> </td><td class="memItemRight" valign="bottom"><b>GetSyncMachineModelData</b> (<a class="el" href="class_sync_generator.html">SyncGenerator</a> *syncMachine)</td></tr> +<tr class="separator:aa191e34b2a6cbfd0d89c78da14f1d7f7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac185e65f3073319fc4ac4ec11c328337"><td class="memItemLeft" align="right" valign="top"><a id="ac185e65f3073319fc4ac4ec11c328337"></a> +double </td><td class="memItemRight" valign="bottom"><b>CalculateSyncMachineIntVariables</b> (<a class="el" href="class_sync_generator.html">SyncGenerator</a> *syncGenerator, double id, double iq, double sd, double sq, double pe, double k=1.0)</td></tr> +<tr class="separator:ac185e65f3073319fc4ac4ec11c328337"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a8ca8ab15ead93ee615277698bf0b3867"><td class="memItemLeft" align="right" valign="top"><a id="a8ca8ab15ead93ee615277698bf0b3867"></a> +bool </td><td class="memItemRight" valign="bottom"><b>CalculateSyncMachineNonIntVariables</b> (<a class="el" href="class_sync_generator.html">SyncGenerator</a> *syncGenerator, double &id, double &iq, double &sd, double &sq, double &pe, double k=1.0)</td></tr> +<tr class="separator:a8ca8ab15ead93ee615277698bf0b3867"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af02c1382b8a7d3085831d3a1e89526f6"><td class="memItemLeft" align="right" valign="top"><a id="af02c1382b8a7d3085831d3a1e89526f6"></a> void </td><td class="memItemRight" valign="bottom"><b>CalculateReferenceSpeed</b> ()</td></tr> <tr class="separator:af02c1382b8a7d3085831d3a1e89526f6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a900832be747b8b3e41e901235012bf87"><td class="memItemLeft" align="right" valign="top"><a id="a900832be747b8b3e41e901235012bf87"></a> +bool </td><td class="memItemRight" valign="bottom"><b>CalculateSyncMachineSaturation</b> (<a class="el" href="class_sync_generator.html">SyncGenerator</a> *syncMachine, double &id, double &iq, double &sd, double &sq, bool updateCurrents=true, double k=1.0)</td></tr> +<tr class="separator:a900832be747b8b3e41e901235012bf87"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae5f5162b53e8969fd933af2ef80d1b67"><td class="memItemLeft" align="right" valign="top"><a id="ae5f5162b53e8969fd933af2ef80d1b67"></a> void </td><td class="memItemRight" valign="bottom"><b>SaveData</b> ()</td></tr> <tr class="separator:ae5f5162b53e8969fd933af2ef80d1b67"><td class="memSeparator" colspan="2"> </td></tr> @@ -304,6 +321,9 @@ double </td><td class="memItemRight" valign="bottom"><b>m_tolerance</b> = 1 <tr class="memitem:ad963e529cd06cf42a9eef98dbbf04edb"><td class="memItemLeft" align="right" valign="top"><a id="ad963e529cd06cf42a9eef98dbbf04edb"></a> int </td><td class="memItemRight" valign="bottom"><b>m_maxIterations</b> = 100</td></tr> <tr class="separator:ad963e529cd06cf42a9eef98dbbf04edb"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4029ebc888d91ec49b9bdf9f7cdf2631"><td class="memItemLeft" align="right" valign="top"><a id="a4029ebc888d91ec49b9bdf9f7cdf2631"></a> +double </td><td class="memItemRight" valign="bottom"><b>m_saturationTolerance</b> = 1e-8</td></tr> +<tr class="separator:a4029ebc888d91ec49b9bdf9f7cdf2631"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:adb77fe8bf93882f3cd039c126ab79f7d"><td class="memItemLeft" align="right" valign="top"><a id="adb77fe8bf93882f3cd039c126ab79f7d"></a> std::vector< double > </td><td class="memItemRight" valign="bottom"><b>m_eventTimeList</b></td></tr> <tr class="separator:adb77fe8bf93882f3cd039c126ab79f7d"><td class="memSeparator" colspan="2"> </td></tr> @@ -316,6 +336,12 @@ std::vector< double > </td><td class="memItemRight" valign="bottom">< <tr class="memitem:a23d720e7a18a781b808cc7ca0f130ceb"><td class="memItemLeft" align="right" valign="top"><a id="a23d720e7a18a781b808cc7ca0f130ceb"></a> double </td><td class="memItemRight" valign="bottom"><b>m_wError</b> = 0.0</td></tr> <tr class="separator:a23d720e7a18a781b808cc7ca0f130ceb"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3a7d7043e936b7649a741cf9d39e01b9"><td class="memItemLeft" align="right" valign="top"><a id="a3a7d7043e936b7649a741cf9d39e01b9"></a> +double </td><td class="memItemRight" valign="bottom"><b>m_sdC</b> = 1.0</td></tr> +<tr class="separator:a3a7d7043e936b7649a741cf9d39e01b9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac684393f47d36a6038d562e92df56ab6"><td class="memItemLeft" align="right" valign="top"><a id="ac684393f47d36a6038d562e92df56ab6"></a> +double </td><td class="memItemRight" valign="bottom"><b>m_sqC</b> = 1.0</td></tr> +<tr class="separator:ac684393f47d36a6038d562e92df56ab6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4fe6bcd83ae05c0cf6827eed9d0eb029"><td class="memItemLeft" align="right" valign="top"><a id="a4fe6bcd83ae05c0cf6827eed9d0eb029"></a> double </td><td class="memItemRight" valign="bottom"><b>m_numIt</b> = 0</td></tr> <tr class="separator:a4fe6bcd83ae05c0cf6827eed9d0eb029"><td class="memSeparator" colspan="2"> </td></tr> @@ -352,8 +378,10 @@ 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="_electromechanical_8h_source.html#l00010">10</a> of file <a class="el" href="_electromechanical_8h_source.html">Electromechanical.h</a>.</p> +<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> +<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> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_electromechanical_8h_source.html">Electromechanical.h</a></li> <li>Project/<a class="el" href="_electromechanical_8cpp_source.html">Electromechanical.cpp</a></li> diff --git a/docs/doxygen/html/class_electromechanical.js b/docs/doxygen/html/class_electromechanical.js index d6cd3d5..2aa1aa9 100644 --- a/docs/doxygen/html/class_electromechanical.js +++ b/docs/doxygen/html/class_electromechanical.js @@ -3,14 +3,15 @@ var class_electromechanical = [ "Electromechanical", "class_electromechanical.html#a30ecddf5249f545e73b2aaaf19cbec50", null ], [ "~Electromechanical", "class_electromechanical.html#a001abfe3809e6425f7f0bd67adaf28f4", null ], [ "CalculateIntegrationConstants", "class_electromechanical.html#a488985a77171f915145ecc5d891db04f", null ], - [ "CalculateMachinesCurrents", "class_electromechanical.html#a4e3c1766ff06883a681f39d536a41136", null ], + [ "CalculateMachinesCurrents", "class_electromechanical.html#aa59f55e739c674f4ede073eadbb79ac0", null ], [ "CalculateReferenceSpeed", "class_electromechanical.html#af02c1382b8a7d3085831d3a1e89526f6", null ], - [ "CalculateSyncMachineIntVariables", "class_electromechanical.html#a82b5c5c2aeefd49706199d0ba140d300", null ], - [ "CalculateSyncMachineNonIntVariables", "class_electromechanical.html#a10b7ceb1a8066461c5369d210cff48d5", null ], + [ "CalculateSyncMachineIntVariables", "class_electromechanical.html#ac185e65f3073319fc4ac4ec11c328337", null ], + [ "CalculateSyncMachineNonIntVariables", "class_electromechanical.html#a8ca8ab15ead93ee615277698bf0b3867", null ], + [ "CalculateSyncMachineSaturation", "class_electromechanical.html#a900832be747b8b3e41e901235012bf87", null ], [ "EventTrigger", "class_electromechanical.html#a9b076237d26ff011552ed624a5d9bbe2", null ], [ "GetErrorMessage", "class_electromechanical.html#a7972213c6043ca7c890b9f15d3e4162f", null ], - [ "GetPowerValue", "class_electromechanical.html#aad655c165bc53cce5d5fdd8ae9339ba2", null ], [ "GetSyncMachineAdmittance", "class_electromechanical.html#a6192a9b4152353c983b623048b1da460", null ], + [ "GetSyncMachineModelData", "class_electromechanical.html#aa191e34b2a6cbfd0d89c78da14f1d7f7", null ], [ "GetTimeVector", "class_electromechanical.html#ab0d7d031ccc501d5101fabc7b48eb70e", null ], [ "HasEvent", "class_electromechanical.html#a8fc1d8f7b697f8383681e3d3e7d66c72", null ], [ "InitializeDynamicElements", "class_electromechanical.html#a4ccf60ce21c83ff757e1a7de99a00704", null ], @@ -34,7 +35,12 @@ var class_electromechanical = [ "m_plotTime", "class_electromechanical.html#a6c016a1470a0d910e4522b6027f3b95c", null ], [ "m_powerSystemBase", "class_electromechanical.html#a18e698b73396100928175811236eebf4", null ], [ "m_refSpeed", "class_electromechanical.html#aa00d6b356a74649a12fbdd06d44b1d28", null ], + [ "m_saturationTolerance", "class_electromechanical.html#a4029ebc888d91ec49b9bdf9f7cdf2631", null ], + [ "m_sdC", "class_electromechanical.html#a3a7d7043e936b7649a741cf9d39e01b9", null ], + [ "m_sdCVector", "class_electromechanical.html#a4c82ed8fc748149bb116ee532e6ee978", null ], [ "m_simTime", "class_electromechanical.html#a827e9862cf10ebdc65c50f7542b67020", null ], + [ "m_sqC", "class_electromechanical.html#ac684393f47d36a6038d562e92df56ab6", null ], + [ "m_sqCVector", "class_electromechanical.html#a237471acf9a372a9b1cd1481803571d5", null ], [ "m_systemFreq", "class_electromechanical.html#a110cd09af0070718c95d5300adcf754f", null ], [ "m_timeStep", "class_electromechanical.html#a1070faed7544316f653e1a09fcccf475", null ], [ "m_timeVector", "class_electromechanical.html#a3e7a7dfe02d9277957552f5a46f96dd1", null ], diff --git a/docs/doxygen/html/class_element-members.html b/docs/doxygen/html/class_element-members.html index 5b82a3a..2f1fc10 100644 --- a/docs/doxygen/html/class_element-members.html +++ b/docs/doxygen/html/class_element-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_element.html b/docs/doxygen/html/class_element.html index 8f8a29a..e22ec4d 100644 --- a/docs/doxygen/html/class_element.html +++ b/docs/doxygen/html/class_element.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,8 @@ $(document).ready(function(){initNavTree('class_element.html','');}); <div class="title">Element Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div> </div><!--header--> <div class="contents"> + +<p><code>#include <<a class="el" href="_element_8h_source.html">Element.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Element:</div> <div class="dyncontent"> @@ -96,14 +104,14 @@ Inheritance diagram for Element:</div> <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_connection_line.html" alt="ConnectionLine" shape="rect" coords="121,112,232,136"/> -<area href="class_constant.html" alt="Constant" shape="rect" coords="121,168,232,192"/> -<area href="class_exponential.html" alt="Exponential" shape="rect" coords="121,224,232,248"/> -<area href="class_gain.html" alt="Gain" shape="rect" coords="121,280,232,304"/> -<area href="class_i_o_control.html" alt="IOControl" shape="rect" coords="121,336,232,360"/> -<area href="class_limiter.html" alt="Limiter" shape="rect" coords="121,392,232,416"/> -<area href="class_multiplier.html" alt="Multiplier" shape="rect" coords="121,448,232,472"/> -<area href="class_rate_limiter.html" alt="RateLimiter" shape="rect" coords="121,504,232,528"/> +<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_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"/> @@ -417,8 +425,10 @@ 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"> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00088">88</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<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> +<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> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="ac38d6707d08cb5c057032aa94b511a62"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac38d6707d08cb5c057032aa94b511a62">◆ </a></span>AddChild()</h2> @@ -452,7 +462,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00333">333</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00353">353</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -494,14 +504,14 @@ 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><a class="el" href="class_element.html">Element</a> parent. </td></tr> - <tr><td class="paramname">position</td><td><a class="el" href="class_node.html">Node</a> position in the 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> </dl> <p>Reimplemented in <a class="el" href="class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6">Transformer</a>, <a class="el" href="class_text.html#a4f273ea7008c72533327c25caff2e917">Text</a>, <a class="el" href="class_bus.html#ab046baebe4bfe0a52905148d78f44681">Bus</a>, <a class="el" href="class_line.html#a26c69f7f703dca718edc28d5093934a3">Line</a>, <a class="el" href="class_load.html#ac9f449be9b919b36924a844324bf37ee">Load</a>, <a class="el" href="class_capacitor.html#ace755e5bc3cc72b491ce31c24c54a5cf">Capacitor</a>, <a class="el" href="class_inductor.html#a4e404c6e15f206fe0f5de06fc19dedf5">Inductor</a>, and <a class="el" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">Machines</a>.</p> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00234">234</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00240">240</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -537,7 +547,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00240">240</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00245">245</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -575,7 +585,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Reimplemented in <a class="el" href="class_line.html#a046a7b2ebff50f237f73dbc182f7ff6f">Line</a>, and <a class="el" href="class_branch.html#a8d6d80c50f849c5be2bccffd5b524e21">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00321">321</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00318">318</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -624,7 +634,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Reimplemented in <a class="el" href="class_line.html#aa146d6b0c7f3b74204f2c88dcbd7f4b0">Line</a>.</p> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00243">243</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00263">263</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -660,7 +670,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_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> +<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> </div> </div> @@ -721,7 +731,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00272">272</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00292">292</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -768,7 +778,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_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>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 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> @@ -831,7 +841,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00017">17</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00033">33</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -878,7 +888,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00073">73</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00089">89</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -914,7 +924,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00082">82</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00098">98</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -961,7 +971,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00124">124</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00139">139</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -1022,7 +1032,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00053">53</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00069">69</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -1069,7 +1079,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00063">63</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00079">79</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -1116,7 +1126,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00044">44</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00060">60</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -1152,7 +1162,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00228">228</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00245">245</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -1182,7 +1192,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Get the element angle. </p> <dl class="section return"><dt>Returns</dt><dd>Angle value. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00201">201</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00212">212</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -1214,7 +1224,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Reimplemented in <a class="el" href="class_bus.html#ac43fc37f8c8a8bc120d9a4bb68da3345">Bus</a>, <a class="el" href="class_line.html#a7c72fc585eb96bf9565cca0ce300cfd9">Line</a>, and <a class="el" href="class_branch.html#a62418f767cc9bb894d6b7cc73645e43e">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00401">401</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00389">389</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -1244,7 +1254,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Get the Child list. </p> <dl class="section return"><dt>Returns</dt><dd>Child List. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00523">523</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00511">511</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -1283,7 +1293,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Reimplemented in <a class="el" href="class_sync_generator.html#a24b9894fa42473dfb8bcf82221401a97">SyncGenerator</a>, <a class="el" href="class_sync_motor.html#a7b3102220ea5f7e19690af045a6c8278">SyncMotor</a>, <a class="el" href="class_transformer.html#adfe51a2198cfc10e1095af9c034681bd">Transformer</a>, <a class="el" href="class_bus.html#ae731d57078982f0bd08e92e6a24f3057">Bus</a>, <a class="el" href="class_line.html#a978de0ff06b6f57401ade84045e1a55f">Line</a>, <a class="el" href="class_load.html#a25b4a3e553f8400114ac8effa11287da">Load</a>, <a class="el" href="class_branch.html#a6ddd901403c46f5d9aa179644467b088">Branch</a>, <a class="el" href="class_capacitor.html#a05d5517b64dd8a8888817ca28b72294d">Capacitor</a>, <a class="el" href="class_inductor.html#aa0ae00d91b40307141a8bd3aebf1a0c2">Inductor</a>, and <a class="el" href="class_ind_motor.html#a87666565ae1380993d94e7886e9a1f59">IndMotor</a>.</p> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00315">315</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00313">313</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -1313,9 +1323,9 @@ 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_line.html#afc4916268d2a32014e4ab0f8308165a1">Line</a>, <a class="el" href="class_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7">IOControl</a>, <a class="el" href="class_transfer_function.html#a3312f7e9499aa99742093d3b60547862">TransferFunction</a>, <a class="el" href="class_connection_line.html#a131a890bd54059c5370f1dc5156c192c">ConnectionLine</a>, <a class="el" href="class_sum.html#a0da96514e0462e47d3f57b79ddc457b6">Sum</a>, <a class="el" href="class_gain.html#a489572e289935d7256c037af682b9351">Gain</a>, <a class="el" href="class_load.html#a27309c24b2c70bde37ba6afbb9679da2">Load</a>, <a class="el" href="class_limiter.html#a6071e2308baa7b42f189f09fd1878245">Limiter</a>, <a class="el" href="class_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823">RateLimiter</a>, <a class="el" href="class_constant.html#ac566e3a63326d3f543a55af14ae0f8fa">Constant</a>, <a class="el" href="class_exponential.html#a85cda0dba6549828a9045e478e24609f">Exponential</a>, <a class="el" href="class_ind_motor.html#ace3ce34ba500ec33bf37b9216ad636a8">IndMotor</a>, <a class="el" href="class_multiplier.html#ab487232a96ed3c3f3a7c3628ddaa4c77">Multiplier</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_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 class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00258">258</a> of file <a class="el" href="_element_8h_source.html">Element.h</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> </div> </div> @@ -1345,7 +1355,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <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> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00183">183</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<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> </div> </div> @@ -1375,7 +1385,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <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> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00270">270</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<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> </div> </div> @@ -1405,7 +1415,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Get the parent list. </p> <dl class="section return"><dt>Returns</dt><dd>Parent list. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00517">517</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00506">506</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -1435,7 +1445,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Get the list of points that connect the element to bus. </p> <dl class="section return"><dt>Returns</dt><dd>List of points. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00225">225</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00232">232</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -1465,7 +1475,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <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> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00171">171</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<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> </div> </div> @@ -1495,7 +1505,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <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> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00165">165</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<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> </div> </div> @@ -1525,7 +1535,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Get the angle of rotation. </p> <dl class="section return"><dt>Returns</dt><dd>Rotation angle. </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> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00217">217</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -1557,7 +1567,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Reimplemented in <a class="el" href="class_sync_generator.html#a9454438d059269c194e1aa648e122f7e">SyncGenerator</a>, <a class="el" href="class_sync_motor.html#a2ab8e43d5452f5d7f9ac375566a65210">SyncMotor</a>, <a class="el" href="class_transformer.html#a169064f996341f8f8b6881c6a3909f0b">Transformer</a>, <a class="el" href="class_bus.html#a0cf17a7aec23d436ff1eeb9834eb2b70">Bus</a>, <a class="el" href="class_line.html#a51e7bff578cd280464a70200fc323efc">Line</a>, <a class="el" href="class_load.html#a00acfbf7dc907e5de79ceb4803632279">Load</a>, <a class="el" href="class_capacitor.html#a00e808708e16b87c80fc650e5710b84e">Capacitor</a>, <a class="el" href="class_inductor.html#ac16663899a076f0e84722b27193fe530">Inductor</a>, and <a class="el" href="class_ind_motor.html#ae785c4055db23b4ae1ef03f00468a532">IndMotor</a>.</p> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00295">295</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00296">296</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -1587,7 +1597,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <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> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00195">195</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<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> </div> </div> @@ -1623,7 +1633,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_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> +<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> </div> </div> @@ -1684,7 +1694,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00286">286</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00306">306</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -1714,7 +1724,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Checks if the element is being dragged. </p> <dl class="section return"><dt>Returns</dt><dd>True if is being dragged, false otherwise. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00177">177</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00192">192</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -1744,7 +1754,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Checks if the element is online or offline. </p> <dl class="section return"><dt>Returns</dt><dd>True if online, false if offline. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00219">219</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00227">227</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -1774,7 +1784,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Checks if the pickbox is shown. </p> <dl class="section return"><dt>Returns</dt><dd>True if the pickbox is show, false otherwise. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00213">213</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00222">222</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -1804,7 +1814,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Checks if the element is selected. </p> <dl class="section return"><dt>Returns</dt><dd>True if selected, false otherwise. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00189">189</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00202">202</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -1840,9 +1850,9 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p>Reimplemented in <a class="el" href="class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8">Transformer</a>, <a class="el" href="class_control_element.html#ac8bd52ddb8eed51a217fecb2eed65708">ControlElement</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>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 class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00107">107</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</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> </div> </div> @@ -1883,7 +1893,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Move a node. <a class="el" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4" title="Update the element attributes related to the movement. ">StartMove(wxPoint2DDouble position)</a> before start moving. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a>'s parent. </td></tr> + <tr><td class="paramname">parent</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>'s parent. </td></tr> <tr><td class="paramname">position</td><td>New node position. </td></tr> </table> </dd> @@ -1891,7 +1901,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Reimplemented in <a class="el" href="class_transformer.html#a9652232a076cca0fe3753477ec88f63a">Transformer</a>, <a class="el" href="class_line.html#ac8be7d7136d86830c262280f51b79ea4">Line</a>, <a class="el" href="class_machines.html#aeab8436c33f74a10e252b418028ec491">Machines</a>, <a class="el" href="class_branch.html#aef2ffe79c9b239fb5a1ad175555a9f5a">Branch</a>, and <a class="el" href="class_shunt.html#a23d2fed4e9b6a69bc4527b4345bd5bbd">Shunt</a>.</p> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00341">341</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00337">337</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -1929,7 +1939,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Reimplemented in <a class="el" href="class_bus.html#ad569e2192bf95efe668d401583382a04">Bus</a>, <a class="el" href="class_line.html#afa67498961416e645e0aa5358959ef1d">Line</a>, and <a class="el" href="class_branch.html#af7879ee138170b1421f745f1c942ea05">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00395">395</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00384">384</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -1968,7 +1978,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Reimplemented in <a class="el" href="class_machines.html#a63597b82a1db17a9e4aac9f1058d7dff">Machines</a>, <a class="el" href="class_shunt.html#ae325a441a44c2a78c08289292fa00979">Shunt</a>, and <a class="el" href="class_branch.html#a3a651769f183290af8a91494f5e9047b">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00348">348</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00343">343</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -2007,7 +2017,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Reimplemented in <a class="el" href="class_bus.html#a0b8f3ed6e0049dafca8c52358f96bf4b">Bus</a>, <a class="el" href="class_line.html#acac760d9d67d9c4d007e03592d0e96b4">Line</a>, and <a class="el" href="class_branch.html#a88ab67c930d37daa723c94d7e59a5cf8">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00389">389</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00379">379</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -2055,7 +2065,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dl> <dl class="section return"><dt>Returns</dt><dd>The distance between the point and the line. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00365">365</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00383">383</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -2091,7 +2101,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00335">335</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00354">354</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -2127,9 +2137,9 @@ 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_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>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 class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00367">367</a> of file <a class="el" href="_element_8h_source.html">Element.h</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> </div> </div> @@ -2176,7 +2186,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00343">343</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00362">362</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -2223,7 +2233,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00326">326</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00346">346</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -2259,9 +2269,9 @@ 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_load.html#a46e9f2e0935ecca77b3a46568404d8e3">Load</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_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>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 class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00308">308</a> of file <a class="el" href="_element_8h_source.html">Element.h</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> </div> </div> @@ -2315,7 +2325,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00091">91</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00107">107</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -2376,7 +2386,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00132">132</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00147">147</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -2417,7 +2427,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Rotate a node. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a>'s parent. </td></tr> + <tr><td class="paramname">parent</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>'s parent. </td></tr> <tr><td class="paramname">clockwise</td><td>True to rotate clockwise, false to rotate counter-clockwise. </td></tr> </table> </dd> @@ -2425,7 +2435,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Reimplemented in <a class="el" href="class_transformer.html#adf0b20286f3de359346b8877d65c1996">Transformer</a>, <a class="el" href="class_line.html#ab73d74778b5aa9807d21f156d15fadf7">Line</a>, <a class="el" href="class_branch.html#a190d3da81276751c5b9ab23c5d3f37df">Branch</a>, <a class="el" href="class_machines.html#a914faa054440402cad74c3b70f62ad92">Machines</a>, and <a class="el" href="class_shunt.html#a7a732f1fb5f54b89e33957194fefd703">Shunt</a>.</p> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00381">381</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00372">372</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -2461,7 +2471,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00135">135</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00156">156</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -2497,7 +2507,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00147">147</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00166">166</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -2533,7 +2543,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00105">105</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00130">130</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -2569,7 +2579,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00111">111</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00135">135</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -2605,7 +2615,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00264">264</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00267">267</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -2636,7 +2646,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Set a perent to the node. If all conditions are met, a new parent are added to the element and the points related to the nodes will be calculated. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a> parent. </td></tr> + <tr><td class="paramname">parent</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> parent. </td></tr> </table> </dd> </dl> @@ -2644,7 +2654,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Reimplemented in <a class="el" href="class_transformer.html#a4f9137e6190fb630167f671a0da51ab6">Transformer</a>, <a class="el" href="class_line.html#a6d35082da4d30bd432b73b72dd86fadb">Line</a>, <a class="el" href="class_machines.html#aed7664d5b85585fc13f4a1ad48457901">Machines</a>, <a class="el" href="class_shunt.html#aacb9fdd05533a8322596b130c70774ef">Shunt</a>, and <a class="el" href="class_branch.html#aaf64ea58631438e3a16b1b2ede793875">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00361">361</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00354">354</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -2672,7 +2682,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00218">218</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00235">235</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -2710,7 +2720,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Reimplemented in <a class="el" href="class_line.html#af9a931bdb7e0693cacae010a19b744e6">Line</a>.</p> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00159">159</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00177">177</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -2738,7 +2748,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00010">10</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00025">25</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -2774,7 +2784,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00123">123</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00146">146</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -2810,7 +2820,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00129">129</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00151">151</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -2858,9 +2868,9 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </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_motor.html#a3201b22e0271517f5ed3df85da6cee6f">SyncMotor</a>, <a class="el" href="class_sync_generator.html#a4a9dd07d901f26cc8304399fe241afec">SyncGenerator</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>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 class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00547">547</a> of file <a class="el" href="_element_8h_source.html">Element.h</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> </div> </div> @@ -2896,7 +2906,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00141">141</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00161">161</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -2932,9 +2942,9 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<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>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 class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00101">101</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</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> </div> </div> @@ -2981,7 +2991,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00300">300</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00320">320</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -3042,7 +3052,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00109">109</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00124">124</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -3110,7 +3120,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00115">115</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00130">130</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_element_data_object-members.html b/docs/doxygen/html/class_element_data_object-members.html index 7bebc8c..5c95471 100644 --- a/docs/doxygen/html/class_element_data_object-members.html +++ b/docs/doxygen/html/class_element_data_object-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_element_data_object.html b/docs/doxygen/html/class_element_data_object.html index a9283b0..f8fc6b8 100644 --- a/docs/doxygen/html/class_element_data_object.html +++ b/docs/doxygen/html/class_element_data_object.html @@ -21,6 +21,12 @@ <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> @@ -121,7 +127,7 @@ Protected Attributes</h2></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#l00012">12</a> of file <a class="el" href="_element_data_object_8h_source.html">ElementDataObject.h</a>.</p> +<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><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-members.html b/docs/doxygen/html/class_element_plot_data-members.html index 7812211..ff2c7c3 100644 --- a/docs/doxygen/html/class_element_plot_data-members.html +++ b/docs/doxygen/html/class_element_plot_data-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_element_plot_data.html b/docs/doxygen/html/class_element_plot_data.html index 4436e06..49e37fa 100644 --- a/docs/doxygen/html/class_element_plot_data.html +++ b/docs/doxygen/html/class_element_plot_data.html @@ -21,6 +21,12 @@ <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> @@ -189,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#l00039">39</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#l00056">56</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 67d1db9..dea5915 100644 --- a/docs/doxygen/html/class_exponential-members.html +++ b/docs/doxygen/html/class_exponential-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_exponential.html b/docs/doxygen/html/class_exponential.html index 833e923..c5a7707 100644 --- a/docs/doxygen/html/class_exponential.html +++ b/docs/doxygen/html/class_exponential.html @@ -21,6 +21,12 @@ <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> @@ -86,6 +92,11 @@ $(document).ready(function(){initNavTree('class_exponential.html','');}); <div class="title">Exponential Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Generates an output following an exponential function. \( output = A\cdot e^{B\cdot input} \). + <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> <div class="dynheader"> Inheritance diagram for Exponential:</div> <div class="dyncontent"> @@ -465,8 +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 class="definition">Definition at line <a class="el" href="_exponential_8h_source.html#l00008">8</a> of file <a class="el" href="_exponential_8h_source.html">Exponential.h</a>.</p> +<div class="textblock"><p>Generates an output following an exponential function. \( output = A\cdot e^{B\cdot input} \). </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> </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> @@ -502,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#l00015">15</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> @@ -551,7 +565,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_exponential_8cpp_source.html#l00017">17</a> of file <a class="el" href="_exponential_8cpp_source.html">Exponential.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_exponential_8cpp_source.html#l00034">34</a> of file <a class="el" href="_exponential_8cpp_source.html">Exponential.cpp</a>.</p> </div> </div> @@ -583,7 +597,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="_exponential_8cpp_source.html#l00121">121</a> of file <a class="el" href="_exponential_8cpp_source.html">Exponential.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_exponential_8cpp_source.html#l00138">138</a> of file <a class="el" href="_exponential_8cpp_source.html">Exponential.cpp</a>.</p> </div> </div> @@ -621,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#l00016">16</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#l00041">41</a> of file <a class="el" href="_exponential_8h_source.html">Exponential.h</a>.</p> </div> </div> @@ -659,7 +673,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_exponential_8cpp_source.html#l00067">67</a> of file <a class="el" href="_exponential_8cpp_source.html">Exponential.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_exponential_8cpp_source.html#l00084">84</a> of file <a class="el" href="_exponential_8cpp_source.html">Exponential.cpp</a>.</p> </div> </div> @@ -709,7 +723,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_exponential_8cpp_source.html#l00056">56</a> of file <a class="el" href="_exponential_8cpp_source.html">Exponential.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_exponential_8cpp_source.html#l00073">73</a> of file <a class="el" href="_exponential_8cpp_source.html">Exponential.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_exponential_form-members.html b/docs/doxygen/html/class_exponential_form-members.html index 51cd6d3..8289206 100644 --- a/docs/doxygen/html/class_exponential_form-members.html +++ b/docs/doxygen/html/class_exponential_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_exponential_form.html b/docs/doxygen/html/class_exponential_form.html index d080e79..a8e5e9b 100644 --- a/docs/doxygen/html/class_exponential_form.html +++ b/docs/doxygen/html/class_exponential_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_exponential_form.html','');}); <div class="title">ExponentialForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the exponential control data. + <a href="class_exponential_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_exponential_form_8h_source.html">ExponentialForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for ExponentialForm:</div> <div class="dyncontent"> @@ -184,8 +195,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_buttonCancel< <tr class="separator:a7d6e9e849659fc66e4c6ec3031570032 inherit pro_attribs_class_exponential_form_base"><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="_exponential_form_8h_source.html#l00007">7</a> of file <a class="el" href="_exponential_form_8h_source.html">ExponentialForm.h</a>.</p> +<div class="textblock"><p>Form to edit the exponential control 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_exponential_form_8h_source.html#l00031">31</a> of file <a class="el" href="_exponential_form_8h_source.html">ExponentialForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_exponential_form_8h_source.html">ExponentialForm.h</a></li> <li>Project/<a class="el" href="_exponential_form_8cpp_source.html">ExponentialForm.cpp</a></li> diff --git a/docs/doxygen/html/class_exponential_form_base-members.html b/docs/doxygen/html/class_exponential_form_base-members.html index de38276..359511e 100644 --- a/docs/doxygen/html/class_exponential_form_base-members.html +++ b/docs/doxygen/html/class_exponential_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_exponential_form_base.html b/docs/doxygen/html/class_exponential_form_base.html index e7ffc5f..17bc4b5 100644 --- a/docs/doxygen/html/class_exponential_form_base.html +++ b/docs/doxygen/html/class_exponential_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for ExponentialFormBase:</div> <div class="center"> <img src="class_exponential_form_base.png" usemap="#ExponentialFormBase_map" alt=""/> <map id="ExponentialFormBase_map" name="ExponentialFormBase_map"> -<area href="class_exponential_form.html" alt="ExponentialForm" shape="rect" coords="0,112,134,136"/> +<area href="class_exponential_form.html" title="Form to edit the exponential control data. " alt="ExponentialForm" shape="rect" coords="0,112,134,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_fault-members.html b/docs/doxygen/html/class_fault-members.html index 8ab2b89..843046f 100644 --- a/docs/doxygen/html/class_fault-members.html +++ b/docs/doxygen/html/class_fault-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_fault.html b/docs/doxygen/html/class_fault.html index 1abe6d0..bfc3d5d 100644 --- a/docs/doxygen/html/class_fault.html +++ b/docs/doxygen/html/class_fault.html @@ -21,6 +21,12 @@ <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> @@ -273,7 +279,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g <div class="textblock"><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#l00013">13</a> of file <a class="el" href="_fault_8h_source.html">Fault.h</a>.</p> +<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> </div><h2 class="groupheader">Constructor & Destructor Documentation</h2> <a id="a8fbe3ce9f7288c4f8261db2d9a89adbb"></a> <h2 class="memtitle"><span class="permalink"><a href="#a8fbe3ce9f7288c4f8261db2d9a89adbb">◆ </a></span>Fault()</h2> @@ -299,7 +305,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_fault_8cpp_source.html#l00007">7</a> of file <a class="el" href="_fault_8cpp_source.html">Fault.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_fault_8cpp_source.html#l00024">24</a> of file <a class="el" href="_fault_8cpp_source.html">Fault.cpp</a>.</p> </div> </div> @@ -330,7 +336,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g <p>Get the error message generated in <a class="el" href="class_fault.html#a4120f861b073783b4fb82385171fbd0f" title="Calculate the fault of the system. Return true if was possible the calculation. ">RunFaultCalculation(double systemPowerBase)</a>. </p> <dl class="section return"><dt>Returns</dt><dd>Error message. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_fault_8h_source.html#l00054">54</a> of file <a class="el" href="_fault_8h_source.html">Fault.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_fault_8h_source.html#l00071">71</a> of file <a class="el" href="_fault_8h_source.html">Fault.h</a>.</p> </div> </div> @@ -366,7 +372,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_fault_8cpp_source.html#l00009">9</a> of file <a class="el" href="_fault_8cpp_source.html">Fault.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_fault_8cpp_source.html#l00026">26</a> of file <a class="el" href="_fault_8cpp_source.html">Fault.cpp</a>.</p> </div> </div> @@ -402,7 +408,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_fault_8cpp_source.html#l00382">382</a> of file <a class="el" href="_fault_8cpp_source.html">Fault.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_fault_8cpp_source.html#l00399">399</a> of file <a class="el" href="_fault_8cpp_source.html">Fault.cpp</a>.</p> </div> </div> @@ -438,7 +444,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_fault_8cpp_source.html#l00176">176</a> of file <a class="el" href="_fault_8cpp_source.html">Fault.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_fault_8cpp_source.html#l00193">193</a> of file <a class="el" href="_fault_8cpp_source.html">Fault.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_file_handing-members.html b/docs/doxygen/html/class_file_handing-members.html index 96b7eee..aa442aa 100644 --- a/docs/doxygen/html/class_file_handing-members.html +++ b/docs/doxygen/html/class_file_handing-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_file_handing.html b/docs/doxygen/html/class_file_handing.html index 9d9bb64..dc4a87b 100644 --- a/docs/doxygen/html/class_file_handing.html +++ b/docs/doxygen/html/class_file_handing.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_file_handing.html','');}); <div class="title">FileHanding Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Save and opens the projects created on disk. + <a href="class_file_handing.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_file_handing_8h_source.html">FileHanding.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> @@ -176,8 +187,11 @@ Protected Attributes</h2></td></tr> <tr class="separator:a46142226e6ce37032008523a3095bba8"><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="_file_handing_8h_source.html#l00019">19</a> of file <a class="el" href="_file_handing_8h_source.html">FileHanding.h</a>.</p> +<div class="textblock"><p>Save and opens the projects created on disk. </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="_file_handing_8h_source.html#l00043">43</a> of file <a class="el" href="_file_handing_8h_source.html">FileHanding.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_file_handing_8h_source.html">FileHanding.h</a></li> <li>Project/<a class="el" href="_file_handing_8cpp_source.html">FileHanding.cpp</a></li> diff --git a/docs/doxygen/html/class_gain-members.html b/docs/doxygen/html/class_gain-members.html index 6845354..347d9b2 100644 --- a/docs/doxygen/html/class_gain-members.html +++ b/docs/doxygen/html/class_gain-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_gain.html b/docs/doxygen/html/class_gain.html index 8c502b5..4dd5e4f 100644 --- a/docs/doxygen/html/class_gain.html +++ b/docs/doxygen/html/class_gain.html @@ -21,6 +21,12 @@ <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> @@ -86,6 +92,11 @@ $(document).ready(function(){initNavTree('class_gain.html','');}); <div class="title">Gain Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Provide an output multiplying the input by a constant. \( output = K \cdot input \). + <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> <div class="dynheader"> Inheritance diagram for Gain:</div> <div class="dyncontent"> @@ -471,8 +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 class="definition">Definition at line <a class="el" href="_gain_8h_source.html#l00011">11</a> of file <a class="el" href="_gain_8h_source.html">Gain.h</a>.</p> +<div class="textblock"><p>Provide an output multiplying the input by a constant. \( output = K \cdot input \). </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> </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> @@ -508,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#l00018">18</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> @@ -557,7 +571,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_gain_8cpp_source.html#l00018">18</a> of file <a class="el" href="_gain_8cpp_source.html">Gain.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_gain_8cpp_source.html#l00035">35</a> of file <a class="el" href="_gain_8cpp_source.html">Gain.cpp</a>.</p> </div> </div> @@ -589,7 +603,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="_gain_8cpp_source.html#l00177">177</a> of file <a class="el" href="_gain_8cpp_source.html">Gain.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_gain_8cpp_source.html#l00194">194</a> of file <a class="el" href="_gain_8cpp_source.html">Gain.cpp</a>.</p> </div> </div> @@ -627,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#l00019">19</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#l00044">44</a> of file <a class="el" href="_gain_8h_source.html">Gain.h</a>.</p> </div> </div> @@ -665,7 +679,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_control_element.html#ac8bd52ddb8eed51a217fecb2eed65708">ControlElement</a>.</p> -<p class="definition">Definition at line <a class="el" href="_gain_8cpp_source.html#l00165">165</a> of file <a class="el" href="_gain_8cpp_source.html">Gain.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_gain_8cpp_source.html#l00182">182</a> of file <a class="el" href="_gain_8cpp_source.html">Gain.cpp</a>.</p> </div> </div> @@ -703,7 +717,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_gain_8cpp_source.html#l00082">82</a> of file <a class="el" href="_gain_8cpp_source.html">Gain.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_gain_8cpp_source.html#l00099">99</a> of file <a class="el" href="_gain_8cpp_source.html">Gain.cpp</a>.</p> </div> </div> @@ -753,7 +767,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_gain_8cpp_source.html#l00071">71</a> of file <a class="el" href="_gain_8cpp_source.html">Gain.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_gain_8cpp_source.html#l00088">88</a> of file <a class="el" href="_gain_8cpp_source.html">Gain.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_gain_form-members.html b/docs/doxygen/html/class_gain_form-members.html index cb8d49a..685ba32 100644 --- a/docs/doxygen/html/class_gain_form-members.html +++ b/docs/doxygen/html/class_gain_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_gain_form.html b/docs/doxygen/html/class_gain_form.html index 8cc242c..e7bad86 100644 --- a/docs/doxygen/html/class_gain_form.html +++ b/docs/doxygen/html/class_gain_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_gain_form.html','');}); <div class="title">GainForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the gain control data. + <a href="class_gain_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_gain_form_8h_source.html">GainForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for GainForm:</div> <div class="dyncontent"> @@ -166,8 +177,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_buttonCancel< <tr class="separator:ab0c009d67c2a5b8ab7fefe9f25b390a3 inherit pro_attribs_class_gain_form_base"><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="_gain_form_8h_source.html#l00007">7</a> of file <a class="el" href="_gain_form_8h_source.html">GainForm.h</a>.</p> +<div class="textblock"><p>Form to edit the gain control 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_gain_form_8h_source.html#l00031">31</a> of file <a class="el" href="_gain_form_8h_source.html">GainForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_gain_form_8h_source.html">GainForm.h</a></li> <li>Project/<a class="el" href="_gain_form_8cpp_source.html">GainForm.cpp</a></li> diff --git a/docs/doxygen/html/class_gain_form_base-members.html b/docs/doxygen/html/class_gain_form_base-members.html index cb6774a..a3ffbf9 100644 --- a/docs/doxygen/html/class_gain_form_base-members.html +++ b/docs/doxygen/html/class_gain_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_gain_form_base.html b/docs/doxygen/html/class_gain_form_base.html index 316e708..002a162 100644 --- a/docs/doxygen/html/class_gain_form_base.html +++ b/docs/doxygen/html/class_gain_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for GainFormBase:</div> <div class="center"> <img src="class_gain_form_base.png" usemap="#GainFormBase_map" alt=""/> <map id="GainFormBase_map" name="GainFormBase_map"> -<area href="class_gain_form.html" alt="GainForm" shape="rect" coords="0,112,95,136"/> +<area href="class_gain_form.html" title="Form to edit the gain control data. " alt="GainForm" shape="rect" coords="0,112,95,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_general_properties_form-members.html b/docs/doxygen/html/class_general_properties_form-members.html index afcb9f1..5318c57 100644 --- a/docs/doxygen/html/class_general_properties_form-members.html +++ b/docs/doxygen/html/class_general_properties_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_general_properties_form.html b/docs/doxygen/html/class_general_properties_form.html index 8a54a3b..bbf1322 100644 --- a/docs/doxygen/html/class_general_properties_form.html +++ b/docs/doxygen/html/class_general_properties_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_general_properties_form.html','' <div class="title">GeneralPropertiesForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the software's general data. + <a href="class_general_properties_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_general_properties_form_8h_source.html">GeneralPropertiesForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for GeneralPropertiesForm:</div> <div class="dyncontent"> @@ -175,8 +186,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_buttonCancel< <tr class="separator:ad2c78dd45aa38a5dfb44ad4a5b08beed inherit pro_attribs_class_general_properties_form_base"><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="_general_properties_form_8h_source.html#l00011">11</a> of file <a class="el" href="_general_properties_form_8h_source.html">GeneralPropertiesForm.h</a>.</p> +<div class="textblock"><p>Form to edit the software's general 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_general_properties_form_8h_source.html#l00035">35</a> of file <a class="el" href="_general_properties_form_8h_source.html">GeneralPropertiesForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_general_properties_form_8h_source.html">GeneralPropertiesForm.h</a></li> <li>Project/<a class="el" href="_general_properties_form_8cpp_source.html">GeneralPropertiesForm.cpp</a></li> diff --git a/docs/doxygen/html/class_general_properties_form_base-members.html b/docs/doxygen/html/class_general_properties_form_base-members.html index dccb945..8f87bdb 100644 --- a/docs/doxygen/html/class_general_properties_form_base-members.html +++ b/docs/doxygen/html/class_general_properties_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_general_properties_form_base.html b/docs/doxygen/html/class_general_properties_form_base.html index 14752da..c94c938 100644 --- a/docs/doxygen/html/class_general_properties_form_base.html +++ b/docs/doxygen/html/class_general_properties_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for GeneralPropertiesFormBase:</div> <div class="center"> <img src="class_general_properties_form_base.png" usemap="#GeneralPropertiesFormBase_map" alt=""/> <map id="GeneralPropertiesFormBase_map" name="GeneralPropertiesFormBase_map"> -<area href="class_general_properties_form.html" alt="GeneralPropertiesForm" shape="rect" coords="0,112,172,136"/> +<area href="class_general_properties_form.html" title="Form to edit the software's general data. " alt="GeneralPropertiesForm" shape="rect" coords="0,112,172,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_generator_stab_form-members.html b/docs/doxygen/html/class_generator_stab_form-members.html index b004079..f839113 100644 --- a/docs/doxygen/html/class_generator_stab_form-members.html +++ b/docs/doxygen/html/class_generator_stab_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_generator_stab_form.html b/docs/doxygen/html/class_generator_stab_form.html index 25fcd1a..e44bdc3 100644 --- a/docs/doxygen/html/class_generator_stab_form.html +++ b/docs/doxygen/html/class_generator_stab_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_generator_stab_form.html','');}) <div class="title">GeneratorStabForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the synchronous generator data for electromechanical studies. + <a href="class_generator_stab_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_generator_stab_form_8h_source.html">GeneratorStabForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for GeneratorStabForm:</div> <div class="dyncontent"> @@ -469,8 +480,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_ButtonCancel< <tr class="separator:a72f8e66e91538326eb815371b4d6e967 inherit pro_attribs_class_generator_stab_form_base"><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="_generator_stab_form_8h_source.html#l00011">11</a> of file <a class="el" href="_generator_stab_form_8h_source.html">GeneratorStabForm.h</a>.</p> +<div class="textblock"><p>Form to edit the synchronous generator data for electromechanical studies. </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="_generator_stab_form_8h_source.html#l00035">35</a> of file <a class="el" href="_generator_stab_form_8h_source.html">GeneratorStabForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_generator_stab_form_8h_source.html">GeneratorStabForm.h</a></li> <li>Project/<a class="el" href="_generator_stab_form_8cpp_source.html">GeneratorStabForm.cpp</a></li> diff --git a/docs/doxygen/html/class_generator_stab_form_base-members.html b/docs/doxygen/html/class_generator_stab_form_base-members.html index a45fb99..24497f2 100644 --- a/docs/doxygen/html/class_generator_stab_form_base-members.html +++ b/docs/doxygen/html/class_generator_stab_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_generator_stab_form_base.html b/docs/doxygen/html/class_generator_stab_form_base.html index fc89cfc..51cbeb5 100644 --- a/docs/doxygen/html/class_generator_stab_form_base.html +++ b/docs/doxygen/html/class_generator_stab_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for GeneratorStabFormBase:</div> <div class="center"> <img src="class_generator_stab_form_base.png" usemap="#GeneratorStabFormBase_map" alt=""/> <map id="GeneratorStabFormBase_map" name="GeneratorStabFormBase_map"> -<area href="class_generator_stab_form.html" alt="GeneratorStabForm" shape="rect" coords="0,112,151,136"/> +<area href="class_generator_stab_form.html" title="Form to edit the synchronous generator data for electromechanical studies. " alt="GeneratorStabForm" shape="rect" coords="0,112,151,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_graphical_element-members.html b/docs/doxygen/html/class_graphical_element-members.html index 9305fd8..710354b 100644 --- a/docs/doxygen/html/class_graphical_element-members.html +++ b/docs/doxygen/html/class_graphical_element-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_graphical_element.html b/docs/doxygen/html/class_graphical_element.html index c7ef84b..119dc75 100644 --- a/docs/doxygen/html/class_graphical_element.html +++ b/docs/doxygen/html/class_graphical_element.html @@ -21,6 +21,12 @@ <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> @@ -396,7 +402,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </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#l00006">6</a> of file <a class="el" href="_graphical_element_8h_source.html">GraphicalElement.h</a>.</p> +<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><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-members.html b/docs/doxygen/html/class_i_o_control-members.html index 955ee6b..3cd401a 100644 --- a/docs/doxygen/html/class_i_o_control-members.html +++ b/docs/doxygen/html/class_i_o_control-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_i_o_control.html b/docs/doxygen/html/class_i_o_control.html index c8a0e9e..e2ebe66 100644 --- a/docs/doxygen/html/class_i_o_control.html +++ b/docs/doxygen/html/class_i_o_control.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_i_o_control.html','');}); <div class="title">IOControl Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Provides the communication with the power element. + <a href="class_i_o_control.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_i_o_control_8h_source.html">IOControl.h</a>></code></p> <div class="dynheader"> Inheritance diagram for IOControl:</div> <div class="dyncontent"> @@ -498,8 +509,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="_i_o_control_8h_source.html#l00011">11</a> of file <a class="el" href="_i_o_control_8h_source.html">IOControl.h</a>.</p> +<div class="textblock"><p>Provides the communication with the 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_i_o_control_8h_source.html#l00035">35</a> of file <a class="el" href="_i_o_control_8h_source.html">IOControl.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="aa064c5d70e562334e2b374f919f42ef1"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa064c5d70e562334e2b374f919f42ef1">◆ </a></span>Contains()</h2> @@ -535,7 +549,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="_i_o_control_8h_source.html#l00027">27</a> of file <a class="el" href="_i_o_control_8h_source.html">IOControl.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_i_o_control_8h_source.html#l00051">51</a> of file <a class="el" href="_i_o_control_8h_source.html">IOControl.h</a>.</p> </div> </div> @@ -584,7 +598,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_i_o_control_8cpp_source.html#l00019">19</a> of file <a class="el" href="_i_o_control_8cpp_source.html">IOControl.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_i_o_control_8cpp_source.html#l00036">36</a> of file <a class="el" href="_i_o_control_8cpp_source.html">IOControl.cpp</a>.</p> </div> </div> @@ -616,7 +630,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="_i_o_control_8cpp_source.html#l00226">226</a> of file <a class="el" href="_i_o_control_8cpp_source.html">IOControl.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_i_o_control_8cpp_source.html#l00243">243</a> of file <a class="el" href="_i_o_control_8cpp_source.html">IOControl.cpp</a>.</p> </div> </div> @@ -654,7 +668,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="_i_o_control_8h_source.html#l00028">28</a> of file <a class="el" href="_i_o_control_8h_source.html">IOControl.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_i_o_control_8h_source.html#l00052">52</a> of file <a class="el" href="_i_o_control_8h_source.html">IOControl.h</a>.</p> </div> </div> @@ -692,7 +706,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_i_o_control_8cpp_source.html#l00116">116</a> of file <a class="el" href="_i_o_control_8cpp_source.html">IOControl.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_i_o_control_8cpp_source.html#l00133">133</a> of file <a class="el" href="_i_o_control_8cpp_source.html">IOControl.cpp</a>.</p> </div> </div> @@ -742,7 +756,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_i_o_control_8cpp_source.html#l00105">105</a> of file <a class="el" href="_i_o_control_8cpp_source.html">IOControl.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_i_o_control_8cpp_source.html#l00122">122</a> of file <a class="el" href="_i_o_control_8cpp_source.html">IOControl.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_i_o_control_form-members.html b/docs/doxygen/html/class_i_o_control_form-members.html index 55c0c8f..74bad93 100644 --- a/docs/doxygen/html/class_i_o_control_form-members.html +++ b/docs/doxygen/html/class_i_o_control_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_i_o_control_form.html b/docs/doxygen/html/class_i_o_control_form.html index 70aee61..dc6a93d 100644 --- a/docs/doxygen/html/class_i_o_control_form.html +++ b/docs/doxygen/html/class_i_o_control_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_i_o_control_form.html','');}); <div class="title">IOControlForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the input/output control data. + <a href="class_i_o_control_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_i_o_control_form_8h_source.html">IOControlForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for IOControlForm:</div> <div class="dyncontent"> @@ -190,8 +201,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_ButtonCancel< <tr class="separator:acb3fd01eeeab7e543724d84b3f87322b inherit pro_attribs_class_i_o_control_form_base"><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="_i_o_control_form_8h_source.html#l00007">7</a> of file <a class="el" href="_i_o_control_form_8h_source.html">IOControlForm.h</a>.</p> +<div class="textblock"><p>Form to edit the input/output control 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_i_o_control_form_8h_source.html#l00031">31</a> of file <a class="el" href="_i_o_control_form_8h_source.html">IOControlForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_i_o_control_form_8h_source.html">IOControlForm.h</a></li> <li>Project/<a class="el" href="_i_o_control_form_8cpp_source.html">IOControlForm.cpp</a></li> diff --git a/docs/doxygen/html/class_i_o_control_form_base-members.html b/docs/doxygen/html/class_i_o_control_form_base-members.html index 7573535..7e8bdad 100644 --- a/docs/doxygen/html/class_i_o_control_form_base-members.html +++ b/docs/doxygen/html/class_i_o_control_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_i_o_control_form_base.html b/docs/doxygen/html/class_i_o_control_form_base.html index 07be9ec..10e1934 100644 --- a/docs/doxygen/html/class_i_o_control_form_base.html +++ b/docs/doxygen/html/class_i_o_control_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for IOControlFormBase:</div> <div class="center"> <img src="class_i_o_control_form_base.png" usemap="#IOControlFormBase_map" alt=""/> <map id="IOControlFormBase_map" name="IOControlFormBase_map"> -<area href="class_i_o_control_form.html" alt="IOControlForm" shape="rect" coords="0,112,123,136"/> +<area href="class_i_o_control_form.html" title="Form to edit the input/output control data. " alt="IOControlForm" shape="rect" coords="0,112,123,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_ind_motor-members.html b/docs/doxygen/html/class_ind_motor-members.html index 21de1cf..ed184f3 100644 --- a/docs/doxygen/html/class_ind_motor-members.html +++ b/docs/doxygen/html/class_ind_motor-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_ind_motor.html b/docs/doxygen/html/class_ind_motor.html index 2685a0c..0d80395 100644 --- a/docs/doxygen/html/class_ind_motor.html +++ b/docs/doxygen/html/class_ind_motor.html @@ -21,6 +21,12 @@ <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> @@ -537,7 +543,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows </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#l00017">17</a> of file <a class="el" href="_ind_motor_8h_source.html">IndMotor.h</a>.</p> +<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><h2 class="groupheader">Member Function Documentation</h2> <a id="a87666565ae1380993d94e7886e9a1f59"></a> <h2 class="memtitle"><span class="permalink"><a href="#a87666565ae1380993d94e7886e9a1f59">◆ </a></span>GetContextMenu()</h2> @@ -574,7 +580,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <p>Reimplemented from <a class="el" href="class_element.html#a2a436b0497017a1c3d03dba5e59f037e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_ind_motor_8cpp_source.html#l00025">25</a> of file <a class="el" href="_ind_motor_8cpp_source.html">IndMotor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_ind_motor_8cpp_source.html#l00035">35</a> of file <a class="el" href="_ind_motor_8cpp_source.html">IndMotor.cpp</a>.</p> </div> </div> @@ -606,7 +612,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <p>Reimplemented from <a class="el" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_ind_motor_8cpp_source.html#l00083">83</a> of file <a class="el" href="_ind_motor_8cpp_source.html">IndMotor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_ind_motor_8cpp_source.html#l00093">93</a> of file <a class="el" href="_ind_motor_8cpp_source.html">IndMotor.cpp</a>.</p> </div> </div> @@ -638,7 +644,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <p>Reimplemented from <a class="el" href="class_element.html#aa79db7f54ba9754e953b5059a1d79486">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_ind_motor_8cpp_source.html#l00090">90</a> of file <a class="el" href="_ind_motor_8cpp_source.html">IndMotor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_ind_motor_8cpp_source.html#l00100">100</a> of file <a class="el" href="_ind_motor_8cpp_source.html">IndMotor.cpp</a>.</p> </div> </div> @@ -688,7 +694,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_ind_motor_8cpp_source.html#l00032">32</a> of file <a class="el" href="_ind_motor_8cpp_source.html">IndMotor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_ind_motor_8cpp_source.html#l00042">42</a> of file <a class="el" href="_ind_motor_8cpp_source.html">IndMotor.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_ind_motor_form-members.html b/docs/doxygen/html/class_ind_motor_form-members.html index 82385d8..40230c2 100644 --- a/docs/doxygen/html/class_ind_motor_form-members.html +++ b/docs/doxygen/html/class_ind_motor_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_ind_motor_form.html b/docs/doxygen/html/class_ind_motor_form.html index ac6498b..24b4a09 100644 --- a/docs/doxygen/html/class_ind_motor_form.html +++ b/docs/doxygen/html/class_ind_motor_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_ind_motor_form.html','');}); <div class="title">IndMotorForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the induction motor power data. + <a href="class_ind_motor_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_ind_motor_form_8h_source.html">IndMotorForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for IndMotorForm:</div> <div class="dyncontent"> @@ -211,8 +222,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_ButtonCancel< <tr class="separator:a4519b549589b293788d81c97901f9be7 inherit pro_attribs_class_ind_motor_form_base"><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_form_8h_source.html#l00007">7</a> of file <a class="el" href="_ind_motor_form_8h_source.html">IndMotorForm.h</a>.</p> +<div class="textblock"><p>Form to edit the induction motor power 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_ind_motor_form_8h_source.html#l00031">31</a> of file <a class="el" href="_ind_motor_form_8h_source.html">IndMotorForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_ind_motor_form_8h_source.html">IndMotorForm.h</a></li> <li>Project/<a class="el" href="_ind_motor_form_8cpp_source.html">IndMotorForm.cpp</a></li> diff --git a/docs/doxygen/html/class_ind_motor_form_base-members.html b/docs/doxygen/html/class_ind_motor_form_base-members.html index 511915d..7e5d02b 100644 --- a/docs/doxygen/html/class_ind_motor_form_base-members.html +++ b/docs/doxygen/html/class_ind_motor_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_ind_motor_form_base.html b/docs/doxygen/html/class_ind_motor_form_base.html index 0dab4d6..e96ebee 100644 --- a/docs/doxygen/html/class_ind_motor_form_base.html +++ b/docs/doxygen/html/class_ind_motor_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for IndMotorFormBase:</div> <div class="center"> <img src="class_ind_motor_form_base.png" usemap="#IndMotorFormBase_map" alt=""/> <map id="IndMotorFormBase_map" name="IndMotorFormBase_map"> -<area href="class_ind_motor_form.html" alt="IndMotorForm" shape="rect" coords="0,112,119,136"/> +<area href="class_ind_motor_form.html" title="Form to edit the induction motor power data. " alt="IndMotorForm" shape="rect" coords="0,112,119,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_inductor-members.html b/docs/doxygen/html/class_inductor-members.html index 51287a9..d91e97d 100644 --- a/docs/doxygen/html/class_inductor-members.html +++ b/docs/doxygen/html/class_inductor-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_inductor.html b/docs/doxygen/html/class_inductor.html index 0a3fbd0..f80de12 100644 --- a/docs/doxygen/html/class_inductor.html +++ b/docs/doxygen/html/class_inductor.html @@ -21,6 +21,12 @@ <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> @@ -526,7 +532,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi </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#l00014">14</a> of file <a class="el" href="_inductor_8h_source.html">Inductor.h</a>.</p> +<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><h2 class="groupheader">Member Function Documentation</h2> <a id="a4e404c6e15f206fe0f5de06fc19dedf5"></a> <h2 class="memtitle"><span class="permalink"><a href="#a4e404c6e15f206fe0f5de06fc19dedf5">◆ </a></span>AddParent()</h2> @@ -566,14 +572,14 @@ 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><a class="el" href="class_element.html">Element</a> parent. </td></tr> - <tr><td class="paramname">position</td><td><a class="el" href="class_node.html">Node</a> position in the 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> </dl> <p>Reimplemented from <a class="el" href="class_element.html#a569178e9138490a981511a644536c0f9">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00007">7</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00024">24</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> </div> </div> @@ -611,7 +617,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_shunt.html#a449431a2044b838d35cbb991aa1de658">Shunt</a>.</p> -<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00115">115</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00132">132</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> </div> </div> @@ -660,7 +666,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00038">38</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00055">55</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> </div> </div> @@ -699,7 +705,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#a2a436b0497017a1c3d03dba5e59f037e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00108">108</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00125">125</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> </div> </div> @@ -731,7 +737,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00157">157</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00174">174</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> </div> </div> @@ -763,7 +769,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#aa79db7f54ba9754e953b5059a1d79486">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00164">164</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00181">181</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> </div> </div> @@ -801,7 +807,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_shunt.html#afdbf0c51f9630589937298329bb041fe">Shunt</a>.</p> -<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00121">121</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00138">138</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> </div> </div> @@ -839,7 +845,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00096">96</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00113">113</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> </div> </div> @@ -889,7 +895,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00122">122</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_inductor_8cpp_source.html#l00139">139</a> of file <a class="el" href="_inductor_8cpp_source.html">Inductor.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_limiter-members.html b/docs/doxygen/html/class_limiter-members.html index a535a0d..a3e392e 100644 --- a/docs/doxygen/html/class_limiter-members.html +++ b/docs/doxygen/html/class_limiter-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_limiter.html b/docs/doxygen/html/class_limiter.html index 024dbd6..ab00761 100644 --- a/docs/doxygen/html/class_limiter.html +++ b/docs/doxygen/html/class_limiter.html @@ -21,6 +21,12 @@ <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> @@ -86,6 +92,11 @@ $(document).ready(function(){initNavTree('class_limiter.html','');}); <div class="title">Limiter Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Limits the input value by superior and inferior values. + <a href="class_limiter.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_limiter_8h_source.html">Limiter.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Limiter:</div> <div class="dyncontent"> @@ -471,8 +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 class="definition">Definition at line <a class="el" href="_limiter_8h_source.html#l00008">8</a> of file <a class="el" href="_limiter_8h_source.html">Limiter.h</a>.</p> +<div class="textblock"><p>Limits the input value by superior and inferior values. </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="_limiter_8h_source.html#l00032">32</a> of file <a class="el" href="_limiter_8h_source.html">Limiter.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="ac6506d59da4ea682d9e556564ec3ad11"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac6506d59da4ea682d9e556564ec3ad11">◆ </a></span>Contains()</h2> @@ -508,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="_limiter_8h_source.html#l00015">15</a> of file <a class="el" href="_limiter_8h_source.html">Limiter.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_limiter_8h_source.html#l00039">39</a> of file <a class="el" href="_limiter_8h_source.html">Limiter.h</a>.</p> </div> </div> @@ -557,7 +571,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_limiter_8cpp_source.html#l00017">17</a> of file <a class="el" href="_limiter_8cpp_source.html">Limiter.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_limiter_8cpp_source.html#l00034">34</a> of file <a class="el" href="_limiter_8cpp_source.html">Limiter.cpp</a>.</p> </div> </div> @@ -589,7 +603,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="_limiter_8cpp_source.html#l00100">100</a> of file <a class="el" href="_limiter_8cpp_source.html">Limiter.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_limiter_8cpp_source.html#l00119">119</a> of file <a class="el" href="_limiter_8cpp_source.html">Limiter.cpp</a>.</p> </div> </div> @@ -627,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="_limiter_8h_source.html#l00016">16</a> of file <a class="el" href="_limiter_8h_source.html">Limiter.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_limiter_8h_source.html#l00040">40</a> of file <a class="el" href="_limiter_8h_source.html">Limiter.h</a>.</p> </div> </div> @@ -665,7 +679,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_limiter_8cpp_source.html#l00055">55</a> of file <a class="el" href="_limiter_8cpp_source.html">Limiter.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_limiter_8cpp_source.html#l00072">72</a> of file <a class="el" href="_limiter_8cpp_source.html">Limiter.cpp</a>.</p> </div> </div> @@ -715,7 +729,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_limiter_8cpp_source.html#l00044">44</a> of file <a class="el" href="_limiter_8cpp_source.html">Limiter.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_limiter_8cpp_source.html#l00061">61</a> of file <a class="el" href="_limiter_8cpp_source.html">Limiter.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_limiter_form-members.html b/docs/doxygen/html/class_limiter_form-members.html index e84277e..01419d9 100644 --- a/docs/doxygen/html/class_limiter_form-members.html +++ b/docs/doxygen/html/class_limiter_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_limiter_form.html b/docs/doxygen/html/class_limiter_form.html index 89591fe..935e8de 100644 --- a/docs/doxygen/html/class_limiter_form.html +++ b/docs/doxygen/html/class_limiter_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_limiter_form.html','');}); <div class="title">LimiterForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the limit control data. + <a href="class_limiter_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_limiter_form_8h_source.html">LimiterForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for LimiterForm:</div> <div class="dyncontent"> @@ -178,8 +189,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_ButtonCancel< <tr class="separator:aaa967f3b7a80dc872ff50e002dcc7074 inherit pro_attribs_class_limiter_form_base"><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="_limiter_form_8h_source.html#l00007">7</a> of file <a class="el" href="_limiter_form_8h_source.html">LimiterForm.h</a>.</p> +<div class="textblock"><p>Form to edit the limit control 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_limiter_form_8h_source.html#l00031">31</a> of file <a class="el" href="_limiter_form_8h_source.html">LimiterForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_limiter_form_8h_source.html">LimiterForm.h</a></li> <li>Project/<a class="el" href="_limiter_form_8cpp_source.html">LimiterForm.cpp</a></li> diff --git a/docs/doxygen/html/class_limiter_form_base-members.html b/docs/doxygen/html/class_limiter_form_base-members.html index 9baab18..ceb2b77 100644 --- a/docs/doxygen/html/class_limiter_form_base-members.html +++ b/docs/doxygen/html/class_limiter_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_limiter_form_base.html b/docs/doxygen/html/class_limiter_form_base.html index 79c6648..b835d4b 100644 --- a/docs/doxygen/html/class_limiter_form_base.html +++ b/docs/doxygen/html/class_limiter_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for LimiterFormBase:</div> <div class="center"> <img src="class_limiter_form_base.png" usemap="#LimiterFormBase_map" alt=""/> <map id="LimiterFormBase_map" name="LimiterFormBase_map"> -<area href="class_limiter_form.html" alt="LimiterForm" shape="rect" coords="0,112,106,136"/> +<area href="class_limiter_form.html" title="Form to edit the limit control data. " alt="LimiterForm" shape="rect" coords="0,112,106,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_line-members.html b/docs/doxygen/html/class_line-members.html index 98a79a4..5258159 100644 --- a/docs/doxygen/html/class_line-members.html +++ b/docs/doxygen/html/class_line-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_line.html b/docs/doxygen/html/class_line.html index 75049f5..f389522 100644 --- a/docs/doxygen/html/class_line.html +++ b/docs/doxygen/html/class_line.html @@ -21,6 +21,12 @@ <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> @@ -532,7 +538,7 @@ Additional Inherited Members</h2></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#l00035">35</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#l00052">52</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> @@ -572,14 +578,14 @@ Additional Inherited Members</h2></td></tr> <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">position</td><td><a class="el" href="class_node.html">Node</a> position in the 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> </dl> <p>Reimplemented from <a class="el" href="class_element.html#a569178e9138490a981511a644536c0f9">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00119">119</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00136">136</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -617,7 +623,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#a8d6d80c50f849c5be2bccffd5b524e21">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00217">217</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00234">234</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -666,7 +672,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a57f5771fd003020fef3866a1d1dc7487">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00315">315</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00335">335</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -704,7 +710,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#a691f94c3cd2abe1274e870d2882634d8">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00022">22</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00039">39</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -753,7 +759,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#a7037f496f9b9c9e64c74eb638debe278">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00030">30</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00047">47</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -785,7 +791,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#l00047">47</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#l00064">64</a> of file <a class="el" href="_line_8h_source.html">Line.h</a>.</p> </div> </div> @@ -824,7 +830,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#a6ddd901403c46f5d9aa179644467b088">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00272">272</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00289">289</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -856,7 +862,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="_line_8cpp_source.html#l00479">479</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00499">499</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -888,7 +894,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#aa79db7f54ba9754e953b5059a1d79486">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00486">486</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00506">506</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -926,7 +932,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#aa23b1014c947e46996f1c0c4caa187e1">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00186">186</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00203">203</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -964,7 +970,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#a7cf4b117f43f49bb76cce3df5521fb70">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00099">99</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00116">116</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -1005,7 +1011,7 @@ Additional Inherited Members</h2></td></tr> <p>Move a node. <a class="el" href="class_line.html#abb812387508a9971570bfa1d38e41041" title="Update the element attributes related to the movement. ">StartMove(wxPoint2DDouble position)</a> before start moving. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a>'s parent. </td></tr> + <tr><td class="paramname">parent</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>'s parent. </td></tr> <tr><td class="paramname">position</td><td>New node position. </td></tr> </table> </dd> @@ -1013,7 +1019,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#aef2ffe79c9b239fb5a1ad175555a9f5a">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00230">230</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00247">247</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -1051,7 +1057,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#af7879ee138170b1421f745f1c942ea05">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00193">193</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00210">210</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -1090,7 +1096,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#a88ab67c930d37daa723c94d7e59a5cf8">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00205">205</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00222">222</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -1131,7 +1137,7 @@ Additional Inherited Members</h2></td></tr> <p>Rotate a node. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a>'s parent. </td></tr> + <tr><td class="paramname">parent</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>'s parent. </td></tr> <tr><td class="paramname">clockwise</td><td>True to rotate clockwise, false to rotate counter-clockwise. </td></tr> </table> </dd> @@ -1139,7 +1145,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#a190d3da81276751c5b9ab23c5d3f37df">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00458">458</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00478">478</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -1170,7 +1176,7 @@ Additional Inherited Members</h2></td></tr> <p>Set a perent to the node. If all conditions are met, a new parent are added to the element and the points related to the nodes will be calculated. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a> parent. </td></tr> + <tr><td class="paramname">parent</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> parent. </td></tr> </table> </dd> </dl> @@ -1178,7 +1184,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#aaf64ea58631438e3a16b1b2ede793875">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00349">349</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00369">369</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -1227,7 +1233,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_power_element.html#a0730506d0417089d69f7ce64b05daed4">PowerElement</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00341">341</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00361">361</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -1265,7 +1271,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a88941f383fb321b1be441838e2b8700f">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00472">472</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00492">492</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -1303,7 +1309,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_power_element.html#a2ee71f9eb90beadf5439ce9f70469b49">PowerElement</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00429">429</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00449">449</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -1353,7 +1359,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00330">330</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00350">350</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> @@ -1391,7 +1397,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#a947cec45fcdc78d01eaabe19d23daf64">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00224">224</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8cpp_source.html#l00241">241</a> of file <a class="el" href="_line_8cpp_source.html">Line.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_line_form-members.html b/docs/doxygen/html/class_line_form-members.html index 108ff58..969a833 100644 --- a/docs/doxygen/html/class_line_form-members.html +++ b/docs/doxygen/html/class_line_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_line_form.html b/docs/doxygen/html/class_line_form.html index f0b3678..fece702 100644 --- a/docs/doxygen/html/class_line_form.html +++ b/docs/doxygen/html/class_line_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_line_form.html','');}); <div class="title">LineForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the line power data. + <a href="class_line_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_line_form_8h_source.html">LineForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for LineForm:</div> <div class="dyncontent"> @@ -328,8 +339,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_buttonCancel< <tr class="separator:a2cf2cf9916228e7422349d082cd2b897 inherit pro_attribs_class_line_form_base"><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_form_8h_source.html#l00008">8</a> of file <a class="el" href="_line_form_8h_source.html">LineForm.h</a>.</p> +<div class="textblock"><p>Form to edit the line power 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_line_form_8h_source.html#l00032">32</a> of file <a class="el" href="_line_form_8h_source.html">LineForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_line_form_8h_source.html">LineForm.h</a></li> <li>Project/<a class="el" href="_line_form_8cpp_source.html">LineForm.cpp</a></li> diff --git a/docs/doxygen/html/class_line_form_base-members.html b/docs/doxygen/html/class_line_form_base-members.html index 7f242fe..7951696 100644 --- a/docs/doxygen/html/class_line_form_base-members.html +++ b/docs/doxygen/html/class_line_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_line_form_base.html b/docs/doxygen/html/class_line_form_base.html index af41940..d83e65f 100644 --- a/docs/doxygen/html/class_line_form_base.html +++ b/docs/doxygen/html/class_line_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for LineFormBase:</div> <div class="center"> <img src="class_line_form_base.png" usemap="#LineFormBase_map" alt=""/> <map id="LineFormBase_map" name="LineFormBase_map"> -<area href="class_line_form.html" alt="LineForm" shape="rect" coords="0,112,93,136"/> +<area href="class_line_form.html" title="Form to edit the line power data. " alt="LineForm" shape="rect" coords="0,112,93,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_load-members.html b/docs/doxygen/html/class_load-members.html index c5738f5..9e58351 100644 --- a/docs/doxygen/html/class_load-members.html +++ b/docs/doxygen/html/class_load-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_load.html b/docs/doxygen/html/class_load.html index 13dcb2b..9c5c62d 100644 --- a/docs/doxygen/html/class_load.html +++ b/docs/doxygen/html/class_load.html @@ -21,6 +21,12 @@ <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> @@ -529,7 +535,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi </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#l00023">23</a> of file <a class="el" href="_load_8h_source.html">Load.h</a>.</p> +<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><h2 class="groupheader">Member Function Documentation</h2> <a id="ac9f449be9b919b36924a844324bf37ee"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac9f449be9b919b36924a844324bf37ee">◆ </a></span>AddParent()</h2> @@ -569,14 +575,14 @@ 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><a class="el" href="class_element.html">Element</a> parent. </td></tr> - <tr><td class="paramname">position</td><td><a class="el" href="class_node.html">Node</a> position in the 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> </dl> <p>Reimplemented from <a class="el" href="class_element.html#a569178e9138490a981511a644536c0f9">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_load_8cpp_source.html#l00006">6</a> of file <a class="el" href="_load_8cpp_source.html">Load.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_load_8cpp_source.html#l00023">23</a> of file <a class="el" href="_load_8cpp_source.html">Load.cpp</a>.</p> </div> </div> @@ -625,7 +631,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_load_8cpp_source.html#l00042">42</a> of file <a class="el" href="_load_8cpp_source.html">Load.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_load_8cpp_source.html#l00059">59</a> of file <a class="el" href="_load_8cpp_source.html">Load.cpp</a>.</p> </div> </div> @@ -664,7 +670,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#a2a436b0497017a1c3d03dba5e59f037e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_load_8cpp_source.html#l00117">117</a> of file <a class="el" href="_load_8cpp_source.html">Load.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_load_8cpp_source.html#l00134">134</a> of file <a class="el" href="_load_8cpp_source.html">Load.cpp</a>.</p> </div> </div> @@ -696,7 +702,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_load_8cpp_source.html#l00174">174</a> of file <a class="el" href="_load_8cpp_source.html">Load.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_load_8cpp_source.html#l00191">191</a> of file <a class="el" href="_load_8cpp_source.html">Load.cpp</a>.</p> </div> </div> @@ -728,7 +734,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#aa79db7f54ba9754e953b5059a1d79486">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_load_8cpp_source.html#l00181">181</a> of file <a class="el" href="_load_8cpp_source.html">Load.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_load_8cpp_source.html#l00198">198</a> of file <a class="el" href="_load_8cpp_source.html">Load.cpp</a>.</p> </div> </div> @@ -766,7 +772,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_load_8cpp_source.html#l00104">104</a> of file <a class="el" href="_load_8cpp_source.html">Load.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_load_8cpp_source.html#l00121">121</a> of file <a class="el" href="_load_8cpp_source.html">Load.cpp</a>.</p> </div> </div> @@ -816,7 +822,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_load_8cpp_source.html#l00124">124</a> of file <a class="el" href="_load_8cpp_source.html">Load.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_load_8cpp_source.html#l00141">141</a> of file <a class="el" href="_load_8cpp_source.html">Load.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_load_form-members.html b/docs/doxygen/html/class_load_form-members.html index fd5055f..342ac84 100644 --- a/docs/doxygen/html/class_load_form-members.html +++ b/docs/doxygen/html/class_load_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_load_form.html b/docs/doxygen/html/class_load_form.html index 60fa295..536f637 100644 --- a/docs/doxygen/html/class_load_form.html +++ b/docs/doxygen/html/class_load_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_load_form.html','');}); <div class="title">LoadForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the load power data. + <a href="class_load_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_load_form_8h_source.html">LoadForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for LoadForm:</div> <div class="dyncontent"> @@ -223,8 +234,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_ButtonCancel< <tr class="separator:a485886d585c53b6d833373b4800f4ec4 inherit pro_attribs_class_load_form_base"><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_form_8h_source.html#l00008">8</a> of file <a class="el" href="_load_form_8h_source.html">LoadForm.h</a>.</p> +<div class="textblock"><p>Form to edit the load power 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_load_form_8h_source.html#l00032">32</a> of file <a class="el" href="_load_form_8h_source.html">LoadForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_load_form_8h_source.html">LoadForm.h</a></li> <li>Project/<a class="el" href="_load_form_8cpp_source.html">LoadForm.cpp</a></li> diff --git a/docs/doxygen/html/class_load_form_base-members.html b/docs/doxygen/html/class_load_form_base-members.html index 235029c..084386b 100644 --- a/docs/doxygen/html/class_load_form_base-members.html +++ b/docs/doxygen/html/class_load_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_load_form_base.html b/docs/doxygen/html/class_load_form_base.html index 217e812..d83caa5 100644 --- a/docs/doxygen/html/class_load_form_base.html +++ b/docs/doxygen/html/class_load_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for LoadFormBase:</div> <div class="center"> <img src="class_load_form_base.png" usemap="#LoadFormBase_map" alt=""/> <map id="LoadFormBase_map" name="LoadFormBase_map"> -<area href="class_load_form.html" alt="LoadForm" shape="rect" coords="0,112,97,136"/> +<area href="class_load_form.html" title="Form to edit the load power data. " alt="LoadForm" shape="rect" coords="0,112,97,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_machines-members.html b/docs/doxygen/html/class_machines-members.html index b1245be..23d779a 100644 --- a/docs/doxygen/html/class_machines-members.html +++ b/docs/doxygen/html/class_machines-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_machines.html b/docs/doxygen/html/class_machines.html index 90e706a..fca9c4c 100644 --- a/docs/doxygen/html/class_machines.html +++ b/docs/doxygen/html/class_machines.html @@ -21,6 +21,12 @@ <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> @@ -528,7 +534,7 @@ Additional Inherited Members</h2></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#l00009">9</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#l00026">26</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> @@ -568,14 +574,14 @@ Additional Inherited Members</h2></td></tr> <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">position</td><td><a class="el" href="class_node.html">Node</a> position in the 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> </dl> <p>Reimplemented from <a class="el" href="class_element.html#a569178e9138490a981511a644536c0f9">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00008">8</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00025">25</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> </div> </div> @@ -613,7 +619,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#l00018">18</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#l00035">35</a> of file <a class="el" href="_machines_8h_source.html">Machines.h</a>.</p> </div> </div> @@ -662,7 +668,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00037">37</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00054">54</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> </div> </div> @@ -700,7 +706,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#l00020">20</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#l00037">37</a> of file <a class="el" href="_machines_8h_source.html">Machines.h</a>.</p> </div> </div> @@ -738,7 +744,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#abe884d99d12d5252e18956162115b025">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00094">94</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00111">111</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> </div> </div> @@ -779,7 +785,7 @@ Additional Inherited Members</h2></td></tr> <p>Move a node. <a class="el" href="class_machines.html#acbefe76cd5161b5684a27205b155e797" title="Update the element attributes related to the movement. ">StartMove(wxPoint2DDouble position)</a> before start moving. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a>'s parent. </td></tr> + <tr><td class="paramname">parent</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>'s parent. </td></tr> <tr><td class="paramname">position</td><td>New node position. </td></tr> </table> </dd> @@ -787,7 +793,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00107">107</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00124">124</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> </div> </div> @@ -826,7 +832,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a95b4f7e9341883ec39d0201148afffb4">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00158">158</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00175">175</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> </div> </div> @@ -864,7 +870,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a9504437b60faf2c5a27584de8a24810c">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00148">148</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00165">165</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> </div> </div> @@ -902,7 +908,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00215">215</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00232">232</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> </div> </div> @@ -943,7 +949,7 @@ Additional Inherited Members</h2></td></tr> <p>Rotate a node. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a>'s parent. </td></tr> + <tr><td class="paramname">parent</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>'s parent. </td></tr> <tr><td class="paramname">clockwise</td><td>True to rotate clockwise, false to rotate counter-clockwise. </td></tr> </table> </dd> @@ -951,7 +957,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#af26c67b6dd32eb1b3e417fddf54818c3">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00136">136</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00153">153</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> </div> </div> @@ -982,7 +988,7 @@ Additional Inherited Members</h2></td></tr> <p>Set a perent to the node. If all conditions are met, a new parent are added to the element and the points related to the nodes will be calculated. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a> parent. </td></tr> + <tr><td class="paramname">parent</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> parent. </td></tr> </table> </dd> </dl> @@ -990,7 +996,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#ac7490a91f3edfff08584567cc84d86b5">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00172">172</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00189">189</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> </div> </div> @@ -1028,7 +1034,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_power_element.html#a2ee71f9eb90beadf5439ce9f70469b49">PowerElement</a>.</p> -<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00250">250</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00267">267</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> </div> </div> @@ -1066,7 +1072,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00129">129</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_machines_8cpp_source.html#l00146">146</a> of file <a class="el" href="_machines_8cpp_source.html">Machines.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_main_app-members.html b/docs/doxygen/html/class_main_app-members.html index a9c986b..bf25d4a 100644 --- a/docs/doxygen/html/class_main_app-members.html +++ b/docs/doxygen/html/class_main_app-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_main_app.html b/docs/doxygen/html/class_main_app.html index a223ed1..935803c 100644 --- a/docs/doxygen/html/class_main_app.html +++ b/docs/doxygen/html/class_main_app.html @@ -21,6 +21,12 @@ <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> @@ -108,7 +114,7 @@ virtual bool </td><td class="memItemRight" valign="bottom"><b>OnInit</b> () </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="main_8cpp_source.html#l00011">11</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="main_8cpp_source.html#l00012">12</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p> </div><hr/>The documentation for this class was generated from the following file:<ul> <li>Project/<a class="el" href="main_8cpp_source.html">main.cpp</a></li> </ul> diff --git a/docs/doxygen/html/class_main_frame-members.html b/docs/doxygen/html/class_main_frame-members.html index eb4863d..868b7e4 100644 --- a/docs/doxygen/html/class_main_frame-members.html +++ b/docs/doxygen/html/class_main_frame-members.html @@ -21,6 +21,12 @@ <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> @@ -151,8 +157,8 @@ $(document).ready(function(){initNavTree('class_main_frame.html','');}); <tr bgcolor="#f0f0f0"><td class="entry"><b>m_ribbonPanelSimulations</b> (defined in <a class="el" href="class_main_frame_base.html">MainFrameBase</a>)</td><td class="entry"><a class="el" href="class_main_frame_base.html">MainFrameBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_statusBar</b> (defined in <a class="el" href="class_main_frame_base.html">MainFrameBase</a>)</td><td class="entry"><a class="el" href="class_main_frame_base.html">MainFrameBase</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>m_workspaceList</b> (defined in <a class="el" href="class_main_frame.html">MainFrame</a>)</td><td class="entry"><a class="el" href="class_main_frame.html">MainFrame</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MainFrame</b>() (defined in <a class="el" href="class_main_frame.html">MainFrame</a>)</td><td class="entry"><a class="el" href="class_main_frame.html">MainFrame</a></td><td class="entry"></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>MainFrame</b>(wxWindow *parent, wxLocale *locale, PropertiesData *initProperties) (defined in <a class="el" href="class_main_frame.html">MainFrame</a>)</td><td class="entry"><a class="el" href="class_main_frame.html">MainFrame</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_main_frame.html#a667b44053cae174a361cfd21124ef995">MainFrame</a>()</td><td class="entry"><a class="el" href="class_main_frame.html">MainFrame</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_main_frame.html#ac3288e93c5b8682863574bc47c9e9ff8">MainFrame</a>(wxWindow *parent, wxLocale *locale, PropertiesData *initProperties, wxString openPath="")</td><td class="entry"><a class="el" href="class_main_frame.html">MainFrame</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MainFrameBase</b>(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("PSP-UFU"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(800, 600), long style=wxCAPTION|wxRESIZE_BORDER|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxSYSTEM_MENU|wxCLOSE_BOX) (defined in <a class="el" href="class_main_frame_base.html">MainFrameBase</a>)</td><td class="entry"><a class="el" href="class_main_frame_base.html">MainFrameBase</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>NotebookPageClosed</b>(wxAuiNotebookEvent &event) (defined in <a class="el" href="class_main_frame.html">MainFrame</a>)</td><td class="entry"><a class="el" href="class_main_frame.html">MainFrame</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr> <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>NotebookPageClosing</b>(wxAuiNotebookEvent &event) (defined in <a class="el" href="class_main_frame.html">MainFrame</a>)</td><td class="entry"><a class="el" href="class_main_frame.html">MainFrame</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr> @@ -189,7 +195,7 @@ $(document).ready(function(){initNavTree('class_main_frame.html','');}); <tr bgcolor="#f0f0f0"><td class="entry"><b>OnSimulationSettingsClick</b>(wxRibbonButtonBarEvent &event) (defined in <a class="el" href="class_main_frame.html">MainFrame</a>)</td><td class="entry"><a class="el" href="class_main_frame.html">MainFrame</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr> <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>OnSnapshotClick</b>(wxRibbonButtonBarEvent &event) (defined in <a class="el" href="class_main_frame.html">MainFrame</a>)</td><td class="entry"><a class="el" href="class_main_frame.html">MainFrame</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>OnUndoClick</b>(wxRibbonButtonBarEvent &event) (defined in <a class="el" href="class_main_frame.html">MainFrame</a>)</td><td class="entry"><a class="el" href="class_main_frame.html">MainFrame</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">virtual</span></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~MainFrame</b>() (defined in <a class="el" href="class_main_frame.html">MainFrame</a>)</td><td class="entry"><a class="el" href="class_main_frame.html">MainFrame</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_main_frame.html#a0cfd88ece4836e0ea5430bd55370bf11">~MainFrame</a>()</td><td class="entry"><a class="el" href="class_main_frame.html">MainFrame</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>~MainFrameBase</b>() (defined in <a class="el" href="class_main_frame_base.html">MainFrameBase</a>)</td><td class="entry"><a class="el" href="class_main_frame_base.html">MainFrameBase</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> </table></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/class_main_frame.html b/docs/doxygen/html/class_main_frame.html index d49d4e4..2a3b364 100644 --- a/docs/doxygen/html/class_main_frame.html +++ b/docs/doxygen/html/class_main_frame.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_main_frame.html','');}); <div class="title">MainFrame Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Main frame of the program. This class manage the ribbon menu and the notebook behavior. + <a href="class_main_frame.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_main_frame_8h_source.html">MainFrame.h</a>></code></p> <div class="dynheader"> Inheritance diagram for MainFrame:</div> <div class="dyncontent"> @@ -99,9 +110,17 @@ Inheritance diagram for MainFrame:</div> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> Public Member Functions</h2></td></tr> -<tr class="memitem:ac5d3dc03594f76ed6e5fd1ccecfc5b0b"><td class="memItemLeft" align="right" valign="top"><a id="ac5d3dc03594f76ed6e5fd1ccecfc5b0b"></a> - </td><td class="memItemRight" valign="bottom"><b>MainFrame</b> (wxWindow *parent, wxLocale *locale, <a class="el" href="class_properties_data.html">PropertiesData</a> *initProperties)</td></tr> -<tr class="separator:ac5d3dc03594f76ed6e5fd1ccecfc5b0b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a667b44053cae174a361cfd21124ef995"><td class="memItemLeft" align="right" valign="top"><a id="a667b44053cae174a361cfd21124ef995"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_frame.html#a667b44053cae174a361cfd21124ef995">MainFrame</a> ()</td></tr> +<tr class="memdesc:a667b44053cae174a361cfd21124ef995"><td class="mdescLeft"> </td><td class="mdescRight">Default constructor. <br /></td></tr> +<tr class="separator:a667b44053cae174a361cfd21124ef995"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac3288e93c5b8682863574bc47c9e9ff8"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_frame.html#ac3288e93c5b8682863574bc47c9e9ff8">MainFrame</a> (wxWindow *parent, wxLocale *locale, <a class="el" href="class_properties_data.html">PropertiesData</a> *initProperties, wxString openPath="")</td></tr> +<tr class="memdesc:ac3288e93c5b8682863574bc47c9e9ff8"><td class="mdescLeft"> </td><td class="mdescRight">Main frame contructor. <a href="#ac3288e93c5b8682863574bc47c9e9ff8">More...</a><br /></td></tr> +<tr class="separator:ac3288e93c5b8682863574bc47c9e9ff8"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a0cfd88ece4836e0ea5430bd55370bf11"><td class="memItemLeft" align="right" valign="top"><a id="a0cfd88ece4836e0ea5430bd55370bf11"></a> + </td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_frame.html#a0cfd88ece4836e0ea5430bd55370bf11">~MainFrame</a> ()</td></tr> +<tr class="memdesc:a0cfd88ece4836e0ea5430bd55370bf11"><td class="mdescLeft"> </td><td class="mdescRight">Default destructor. <br /></td></tr> +<tr class="separator:a0cfd88ece4836e0ea5430bd55370bf11"><td class="memSeparator" colspan="2"> </td></tr> <tr class="inherit_header pub_methods_class_main_frame_base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_main_frame_base')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_main_frame_base.html">MainFrameBase</a></td></tr> <tr class="memitem:ae32925edbbd4ab14b2ce775b733b7c50 inherit pub_methods_class_main_frame_base"><td class="memItemLeft" align="right" valign="top"><a id="ae32925edbbd4ab14b2ce775b733b7c50"></a> wxRibbonBar * </td><td class="memItemRight" valign="bottom"><b>GetRibbonBar</b> ()</td></tr> @@ -369,9 +388,65 @@ Additional Inherited Members</h2></td></tr> <tr class="separator:ae7e11ee827b7ec42dbd94f90891d15c9 inherit pub_types_class_main_frame_base"><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="_main_frame_8h_source.html#l00033">33</a> of file <a class="el" href="_main_frame_8h_source.html">MainFrame.h</a>.</p> -</div><hr/>The documentation for this class was generated from the following files:<ul> +<div class="textblock"><p>Main frame of the program. This class manage the ribbon menu and the notebook behavior. </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="_main_frame_8h_source.html#l00057">57</a> of file <a class="el" href="_main_frame_8h_source.html">MainFrame.h</a>.</p> +</div><h2 class="groupheader">Constructor & Destructor Documentation</h2> +<a id="ac3288e93c5b8682863574bc47c9e9ff8"></a> +<h2 class="memtitle"><span class="permalink"><a href="#ac3288e93c5b8682863574bc47c9e9ff8">◆ </a></span>MainFrame()</h2> + +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">MainFrame::MainFrame </td> + <td>(</td> + <td class="paramtype">wxWindow * </td> + <td class="paramname"><em>parent</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">wxLocale * </td> + <td class="paramname"><em>locale</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="class_properties_data.html">PropertiesData</a> * </td> + <td class="paramname"><em>initProperties</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">wxString </td> + <td class="paramname"><em>openPath</em> = <code>""</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Main frame contructor. </p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">parent</td><td>Parent window. </td></tr> + <tr><td class="paramname">locale</td><td>Locale settings. </td></tr> + <tr><td class="paramname">initProperties</td><td>Initial properties. </td></tr> + </table> + </dd> +</dl> + +<p class="definition">Definition at line <a class="el" href="_main_frame_8cpp_source.html#l00039">39</a> of file <a class="el" href="_main_frame_8cpp_source.html">MainFrame.cpp</a>.</p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_main_frame_8h_source.html">MainFrame.h</a></li> <li>Project/<a class="el" href="_main_frame_8cpp_source.html">MainFrame.cpp</a></li> </ul> diff --git a/docs/doxygen/html/class_main_frame.js b/docs/doxygen/html/class_main_frame.js index 39a53f6..d45f170 100644 --- a/docs/doxygen/html/class_main_frame.js +++ b/docs/doxygen/html/class_main_frame.js @@ -1,7 +1,7 @@ var class_main_frame = [ [ "MainFrame", "class_main_frame.html#a667b44053cae174a361cfd21124ef995", null ], - [ "MainFrame", "class_main_frame.html#ac5d3dc03594f76ed6e5fd1ccecfc5b0b", null ], + [ "MainFrame", "class_main_frame.html#ac3288e93c5b8682863574bc47c9e9ff8", null ], [ "~MainFrame", "class_main_frame.html#a0cfd88ece4836e0ea5430bd55370bf11", null ], [ "CreateAddElementsMenu", "class_main_frame.html#aade761601af16dadcbf24cd2a4e8d289", null ], [ "EnableCurrentProjectRibbon", "class_main_frame.html#ad1475f1bb8a05169b3d3d462008c887b", null ], diff --git a/docs/doxygen/html/class_main_frame_base-members.html b/docs/doxygen/html/class_main_frame_base-members.html index fae7e86..6c00475 100644 --- a/docs/doxygen/html/class_main_frame_base-members.html +++ b/docs/doxygen/html/class_main_frame_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_main_frame_base.html b/docs/doxygen/html/class_main_frame_base.html index a838e09..f2897bb 100644 --- a/docs/doxygen/html/class_main_frame_base.html +++ b/docs/doxygen/html/class_main_frame_base.html @@ -21,6 +21,12 @@ <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> @@ -94,7 +100,7 @@ Inheritance diagram for MainFrameBase:</div> <div class="center"> <img src="class_main_frame_base.png" usemap="#MainFrameBase_map" alt=""/> <map id="MainFrameBase_map" name="MainFrameBase_map"> -<area href="class_main_frame.html" alt="MainFrame" shape="rect" coords="0,112,104,136"/> +<area href="class_main_frame.html" title="Main frame of the program. This class manage the ribbon menu and the notebook behavior. " alt="MainFrame" shape="rect" coords="0,112,104,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_multiplier-members.html b/docs/doxygen/html/class_multiplier-members.html index 4e21455..3763cbb 100644 --- a/docs/doxygen/html/class_multiplier-members.html +++ b/docs/doxygen/html/class_multiplier-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_multiplier.html b/docs/doxygen/html/class_multiplier.html index a444a0c..2aa50e8 100644 --- a/docs/doxygen/html/class_multiplier.html +++ b/docs/doxygen/html/class_multiplier.html @@ -21,6 +21,12 @@ <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> @@ -85,6 +91,11 @@ $(document).ready(function(){initNavTree('class_multiplier.html','');}); <div class="title">Multiplier Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Multiplies two inputs. + <a href="class_multiplier.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_multiplier_8h_source.html">Multiplier.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Multiplier:</div> <div class="dyncontent"> @@ -449,8 +460,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="_multiplier_8h_source.html#l00008">8</a> of file <a class="el" href="_multiplier_8h_source.html">Multiplier.h</a>.</p> +<div class="textblock"><p>Multiplies two inputs. </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="_multiplier_8h_source.html#l00032">32</a> of file <a class="el" href="_multiplier_8h_source.html">Multiplier.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="acee6216a03b550f3a9cad2bef3963a18"></a> <h2 class="memtitle"><span class="permalink"><a href="#acee6216a03b550f3a9cad2bef3963a18">◆ </a></span>Contains()</h2> @@ -486,7 +500,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Implements <a class="el" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_multiplier_8h_source.html#l00015">15</a> of file <a class="el" href="_multiplier_8h_source.html">Multiplier.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_multiplier_8h_source.html#l00039">39</a> of file <a class="el" href="_multiplier_8h_source.html">Multiplier.h</a>.</p> </div> </div> @@ -535,7 +549,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Reimplemented from <a class="el" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_multiplier_8cpp_source.html#l00020">20</a> of file <a class="el" href="_multiplier_8cpp_source.html">Multiplier.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_multiplier_8cpp_source.html#l00037">37</a> of file <a class="el" href="_multiplier_8cpp_source.html">Multiplier.cpp</a>.</p> </div> </div> @@ -567,7 +581,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Reimplemented from <a class="el" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_multiplier_8cpp_source.html#l00119">119</a> of file <a class="el" href="_multiplier_8cpp_source.html">Multiplier.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_multiplier_8cpp_source.html#l00136">136</a> of file <a class="el" href="_multiplier_8cpp_source.html">Multiplier.cpp</a>.</p> </div> </div> @@ -605,7 +619,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Implements <a class="el" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_multiplier_8h_source.html#l00016">16</a> of file <a class="el" href="_multiplier_8h_source.html">Multiplier.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_multiplier_8h_source.html#l00040">40</a> of file <a class="el" href="_multiplier_8h_source.html">Multiplier.h</a>.</p> </div> </div> @@ -643,7 +657,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Reimplemented from <a class="el" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_multiplier_8cpp_source.html#l00047">47</a> of file <a class="el" href="_multiplier_8cpp_source.html">Multiplier.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_multiplier_8cpp_source.html#l00064">64</a> of file <a class="el" href="_multiplier_8cpp_source.html">Multiplier.cpp</a>.</p> </div> </div> @@ -693,7 +707,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_multiplier_8h_source.html#l00017">17</a> of file <a class="el" href="_multiplier_8h_source.html">Multiplier.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_multiplier_8h_source.html#l00041">41</a> of file <a class="el" href="_multiplier_8h_source.html">Multiplier.h</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_node-members.html b/docs/doxygen/html/class_node-members.html index 91d338f..6b70c73 100644 --- a/docs/doxygen/html/class_node-members.html +++ b/docs/doxygen/html/class_node-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_node.html b/docs/doxygen/html/class_node.html index 9fab95c..c6cdda8 100644 --- a/docs/doxygen/html/class_node.html +++ b/docs/doxygen/html/class_node.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_node.html','');}); <div class="title">Node 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> of a control element. This class manages the user interaction with the connection and control elements. + <a href="class_node.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_control_element_8h_source.html">ControlElement.h</a>></code></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a> Public Types</h2></td></tr> @@ -189,8 +200,11 @@ double </td><td class="memItemRight" valign="bottom"><b>m_angle</b> = 0.0</ <tr class="separator:aee3f9f6739a14d034b5e26d70e3c2aa8"><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="_control_element_8h_source.html#l00006">6</a> of file <a class="el" href="_control_element_8h_source.html">ControlElement.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> of a control element. This class manages the user interaction with the connection and control 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_control_element_8h_source.html#l00030">30</a> of file <a class="el" href="_control_element_8h_source.html">ControlElement.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_control_element_8h_source.html">ControlElement.h</a></li> <li>Project/<a class="el" href="_control_element_8cpp_source.html">ControlElement.cpp</a></li> diff --git a/docs/doxygen/html/class_open_g_l_colour-members.html b/docs/doxygen/html/class_open_g_l_colour-members.html index f97d480..2f9d5db 100644 --- a/docs/doxygen/html/class_open_g_l_colour-members.html +++ b/docs/doxygen/html/class_open_g_l_colour-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_open_g_l_colour.html b/docs/doxygen/html/class_open_g_l_colour.html index 02cc58e..33d35bd 100644 --- a/docs/doxygen/html/class_open_g_l_colour.html +++ b/docs/doxygen/html/class_open_g_l_colour.html @@ -21,6 +21,12 @@ <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> @@ -119,7 +125,7 @@ GLdouble </td><td class="memItemRight" valign="bottom"><b>rgba</b> [4]</td> <div class="textblock"><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#l00048">48</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<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> </div><h2 class="groupheader">Constructor & Destructor Documentation</h2> <a id="a273751fe4b9efccc28565ec5be7d7967"></a> <h2 class="memtitle"><span class="permalink"><a href="#a273751fe4b9efccc28565ec5be7d7967">◆ </a></span>OpenGLColour()</h2> @@ -170,7 +176,7 @@ GLdouble </td><td class="memItemRight" valign="bottom"><b>rgba</b> [4]</td> </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00360">360</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00378">378</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> @@ -201,7 +207,7 @@ GLdouble </td><td class="memItemRight" valign="bottom"><b>rgba</b> [4]</td> <p>Get colour in RGBA. </p> <dl class="section return"><dt>Returns</dt><dd>RGBA colour. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00083">83</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00101">101</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> </div> </div> @@ -254,7 +260,7 @@ GLdouble </td><td class="memItemRight" valign="bottom"><b>rgba</b> [4]</td> </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00350">350</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00369">369</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_plot_data-members.html b/docs/doxygen/html/class_plot_data-members.html index ef96235..0024fa6 100644 --- a/docs/doxygen/html/class_plot_data-members.html +++ b/docs/doxygen/html/class_plot_data-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_plot_data.html b/docs/doxygen/html/class_plot_data.html index 9978ba0..adfb181 100644 --- a/docs/doxygen/html/class_plot_data.html +++ b/docs/doxygen/html/class_plot_data.html @@ -21,6 +21,12 @@ <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> @@ -166,7 +172,7 @@ int </td><td class="memItemRight" valign="bottom"><b>m_axis</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="_element_plot_data_8h_source.html#l00010">10</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#l00027">27</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-members.html b/docs/doxygen/html/class_power_element-members.html index 1fc7283..ca24191 100644 --- a/docs/doxygen/html/class_power_element-members.html +++ b/docs/doxygen/html/class_power_element-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_power_element.html b/docs/doxygen/html/class_power_element.html index 1a8d117..2a3d755 100644 --- a/docs/doxygen/html/class_power_element.html +++ b/docs/doxygen/html/class_power_element.html @@ -21,6 +21,12 @@ <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> @@ -508,7 +514,7 @@ Additional Inherited Members</h2></td></tr> <div class="textblock"><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#l00100">100</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<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> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="a6c656ef223d36e96b19b0a9ec2115e9e"></a> <h2 class="memtitle"><span class="permalink"><a href="#a6c656ef223d36e96b19b0a9ec2115e9e">◆ </a></span>CalculatePowerFlowPts()</h2> @@ -542,7 +548,7 @@ Additional Inherited Members</h2></td></tr> </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_power_element_8cpp_source.html#l00093">93</a> of file <a class="el" href="_power_element_8cpp_source.html">PowerElement.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8cpp_source.html#l00110">110</a> of file <a class="el" href="_power_element_8cpp_source.html">PowerElement.cpp</a>.</p> </div> </div> @@ -581,7 +587,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_sync_generator.html#afcb0a1c03dab5ede586e5d15231f2cab">SyncGenerator</a>, and <a class="el" href="class_bus.html#a1ccb74b15ba07f867f2d73b976577e2a">Bus</a>.</p> -<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00181">181</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00198">198</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> </div> </div> @@ -611,7 +617,7 @@ Additional Inherited Members</h2></td></tr> <p>Return the direction of the power flow. </p> <dl class="section return"><dt>Returns</dt><dd>Power flow direction. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00175">175</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00192">192</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> </div> </div> @@ -641,7 +647,7 @@ Additional Inherited Members</h2></td></tr> <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> -<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00165">165</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<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> </div> </div> @@ -695,7 +701,7 @@ Additional Inherited Members</h2></td></tr> </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_power_element_8cpp_source.html#l00022">22</a> of file <a class="el" href="_power_element_8cpp_source.html">PowerElement.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8cpp_source.html#l00039">39</a> of file <a class="el" href="_power_element_8cpp_source.html">PowerElement.cpp</a>.</p> </div> </div> @@ -725,7 +731,7 @@ Additional Inherited Members</h2></td></tr> <p>Check if the power element have dynamic event. </p> <dl class="section return"><dt>Returns</dt><dd>true if the element have dynamic an event, false otherwise. </dd></dl> -<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00186">186</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00203">203</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> </div> </div> @@ -761,7 +767,7 @@ Additional Inherited Members</h2></td></tr> </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00191">191</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00208">208</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> </div> </div> @@ -810,7 +816,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_sync_generator.html#aaa4c5978dc6d344747d74e36fb3e71d8">SyncGenerator</a>, <a class="el" href="class_sync_motor.html#a038162c828595f58782fe97dea2c864d">SyncMotor</a>, <a class="el" href="class_transformer.html#a7e3cd54e20d795ab9b0b8533ce03b728">Transformer</a>, and <a class="el" href="class_line.html#a1f3ef94716c52a357ecbcbdf00b0e072">Line</a>.</p> -<p class="definition">Definition at line <a class="el" href="_power_element_8cpp_source.html#l00018">18</a> of file <a class="el" href="_power_element_8cpp_source.html">PowerElement.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8cpp_source.html#l00035">35</a> of file <a class="el" href="_power_element_8cpp_source.html">PowerElement.cpp</a>.</p> </div> </div> @@ -848,7 +854,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_transformer.html#a328c419af15701734168c8db62eefa36">Transformer</a>, <a class="el" href="class_line.html#a400c8d0397ecdfe6c0a8380ee6bc7e1e">Line</a>, and <a class="el" href="class_machines.html#a293cb955dcacaaebca564b8a91ce57d3">Machines</a>.</p> -<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00170">170</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00187">187</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> </div> </div> @@ -884,7 +890,7 @@ Additional Inherited Members</h2></td></tr> </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00160">160</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00177">177</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> </div> </div> @@ -920,7 +926,7 @@ Additional Inherited Members</h2></td></tr> </dd> </dl> -<p class="definition">Definition at line <a class="el" href="_power_element_8cpp_source.html#l00046">46</a> of file <a class="el" href="_power_element_8cpp_source.html">PowerElement.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8cpp_source.html#l00063">63</a> of file <a class="el" href="_power_element_8cpp_source.html">PowerElement.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_power_flow-members.html b/docs/doxygen/html/class_power_flow-members.html index 148f3a7..28fc616 100644 --- a/docs/doxygen/html/class_power_flow-members.html +++ b/docs/doxygen/html/class_power_flow-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_power_flow.html b/docs/doxygen/html/class_power_flow.html index f4d0fbf..768aee7 100644 --- a/docs/doxygen/html/class_power_flow.html +++ b/docs/doxygen/html/class_power_flow.html @@ -21,6 +21,12 @@ <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> @@ -219,7 +225,7 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g </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#l00009">9</a> of file <a class="el" href="_power_flow_8h_source.html">PowerFlow.h</a>.</p> +<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><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-members.html b/docs/doxygen/html/class_properties_data-members.html index f54f6cb..2271c0a 100644 --- a/docs/doxygen/html/class_properties_data-members.html +++ b/docs/doxygen/html/class_properties_data-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_properties_data.html b/docs/doxygen/html/class_properties_data.html index 9ee0144..9b79392 100644 --- a/docs/doxygen/html/class_properties_data.html +++ b/docs/doxygen/html/class_properties_data.html @@ -21,6 +21,12 @@ <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> @@ -113,7 +119,7 @@ Protected Attributes</h2></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#l00040">40</a> of file <a class="el" href="_properties_data_8h_source.html">PropertiesData.h</a>.</p> +<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><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-members.html b/docs/doxygen/html/class_rate_limiter-members.html index 0cab65f..6297241 100644 --- a/docs/doxygen/html/class_rate_limiter-members.html +++ b/docs/doxygen/html/class_rate_limiter-members.html @@ -21,6 +21,12 @@ <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> @@ -194,7 +200,7 @@ $(document).ready(function(){initNavTree('class_rate_limiter.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_rate_limiter.html#a7d16df402b56e0025bab076aa071be60">ShowForm</a>(wxWindow *parent, Element *element)</td><td class="entry"><a class="el" href="class_rate_limiter.html">RateLimiter</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_rate_limiter.html">RateLimiter</a>)</td><td class="entry"><a class="el" href="class_rate_limiter.html">RateLimiter</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29">Solve</a>(double input, double timeStep)</td><td class="entry"><a class="el" href="class_rate_limiter.html">RateLimiter</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_rate_limiter.html b/docs/doxygen/html/class_rate_limiter.html index 826d091..5811c2e 100644 --- a/docs/doxygen/html/class_rate_limiter.html +++ b/docs/doxygen/html/class_rate_limiter.html @@ -21,6 +21,12 @@ <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> @@ -86,6 +92,12 @@ $(document).ready(function(){initNavTree('class_rate_limiter.html','');}); <div class="title">RateLimiter Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Limits the rising and/or falling rate.<br /> + + <a href="class_rate_limiter.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_rate_limiter_8h_source.html">RateLimiter.h</a>></code></p> <div class="dynheader"> Inheritance diagram for RateLimiter:</div> <div class="dyncontent"> @@ -132,8 +144,24 @@ void </td><td class="memItemRight" valign="bottom"><b>SetUpLimit</b> (doubl <tr class="memitem:ac9e938191a9cb73f2062424bb7ef3d6a"><td class="memItemLeft" align="right" valign="top"><a id="ac9e938191a9cb73f2062424bb7ef3d6a"></a> void </td><td class="memItemRight" valign="bottom"><b>SetLowLimit</b> (double lowLimit)</td></tr> <tr class="separator:ac9e938191a9cb73f2062424bb7ef3d6a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a2697e0f56b574739651fa2126b315e29"><td class="memItemLeft" align="right" valign="top"><a id="a2697e0f56b574739651fa2126b315e29"></a> -virtual bool </td><td class="memItemRight" valign="bottom"><b>Solve</b> (double input, double timeStep)</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> <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> @@ -471,8 +499,12 @@ 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="_rate_limiter_8h_source.html#l00008">8</a> of file <a class="el" href="_rate_limiter_8h_source.html">RateLimiter.h</a>.</p> +<div class="textblock"><p>Limits the rising and/or falling rate.<br /> + </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="_rate_limiter_8h_source.html#l00032">32</a> of file <a class="el" href="_rate_limiter_8h_source.html">RateLimiter.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="addf0eef395781b8584063a9061be59dc"></a> <h2 class="memtitle"><span class="permalink"><a href="#addf0eef395781b8584063a9061be59dc">◆ </a></span>Contains()</h2> @@ -508,7 +540,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="_rate_limiter_8h_source.html#l00015">15</a> of file <a class="el" href="_rate_limiter_8h_source.html">RateLimiter.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_rate_limiter_8h_source.html#l00039">39</a> of file <a class="el" href="_rate_limiter_8h_source.html">RateLimiter.h</a>.</p> </div> </div> @@ -557,7 +589,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_rate_limiter_8cpp_source.html#l00017">17</a> of file <a class="el" href="_rate_limiter_8cpp_source.html">RateLimiter.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_rate_limiter_8cpp_source.html#l00034">34</a> of file <a class="el" href="_rate_limiter_8cpp_source.html">RateLimiter.cpp</a>.</p> </div> </div> @@ -589,7 +621,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="_rate_limiter_8cpp_source.html#l00116">116</a> of file <a class="el" href="_rate_limiter_8cpp_source.html">RateLimiter.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_rate_limiter_8cpp_source.html#l00133">133</a> of file <a class="el" href="_rate_limiter_8cpp_source.html">RateLimiter.cpp</a>.</p> </div> </div> @@ -627,7 +659,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="_rate_limiter_8h_source.html#l00016">16</a> of file <a class="el" href="_rate_limiter_8h_source.html">RateLimiter.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_rate_limiter_8h_source.html#l00040">40</a> of file <a class="el" href="_rate_limiter_8h_source.html">RateLimiter.h</a>.</p> </div> </div> @@ -665,7 +697,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_rate_limiter_8cpp_source.html#l00060">60</a> of file <a class="el" href="_rate_limiter_8cpp_source.html">RateLimiter.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_rate_limiter_8cpp_source.html#l00077">77</a> of file <a class="el" href="_rate_limiter_8cpp_source.html">RateLimiter.cpp</a>.</p> </div> </div> @@ -715,7 +747,73 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_rate_limiter_8cpp_source.html#l00049">49</a> of file <a class="el" href="_rate_limiter_8cpp_source.html">RateLimiter.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_rate_limiter_8cpp_source.html#l00066">66</a> of file <a class="el" href="_rate_limiter_8cpp_source.html">RateLimiter.cpp</a>.</p> + +</div> +</div> +<a id="a2697e0f56b574739651fa2126b315e29"></a> +<h2 class="memtitle"><span class="permalink"><a href="#a2697e0f56b574739651fa2126b315e29">◆ </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 RateLimiter::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>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 \). </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">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="_rate_limiter_8cpp_source.html#l00113">113</a> of file <a class="el" href="_rate_limiter_8cpp_source.html">RateLimiter.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_rate_limiter_form-members.html b/docs/doxygen/html/class_rate_limiter_form-members.html index 0903e20..89c2c8a 100644 --- a/docs/doxygen/html/class_rate_limiter_form-members.html +++ b/docs/doxygen/html/class_rate_limiter_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_rate_limiter_form.html b/docs/doxygen/html/class_rate_limiter_form.html index 73419f1..5b04bd3 100644 --- a/docs/doxygen/html/class_rate_limiter_form.html +++ b/docs/doxygen/html/class_rate_limiter_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_rate_limiter_form.html','');}); <div class="title">RateLimiterForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the rate limit control data. + <a href="class_rate_limiter_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_rate_limiter_form_8h_source.html">RateLimiterForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for RateLimiterForm:</div> <div class="dyncontent"> @@ -178,8 +189,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_ButtonCancel< <tr class="separator:a55be917c732dec21f8cb29809dff2203 inherit pro_attribs_class_rate_limiter_form_base"><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="_rate_limiter_form_8h_source.html#l00007">7</a> of file <a class="el" href="_rate_limiter_form_8h_source.html">RateLimiterForm.h</a>.</p> +<div class="textblock"><p>Form to edit the rate limit control 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_rate_limiter_form_8h_source.html#l00031">31</a> of file <a class="el" href="_rate_limiter_form_8h_source.html">RateLimiterForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_rate_limiter_form_8h_source.html">RateLimiterForm.h</a></li> <li>Project/<a class="el" href="_rate_limiter_form_8cpp_source.html">RateLimiterForm.cpp</a></li> diff --git a/docs/doxygen/html/class_rate_limiter_form_base-members.html b/docs/doxygen/html/class_rate_limiter_form_base-members.html index c6281fd..d8e0de4 100644 --- a/docs/doxygen/html/class_rate_limiter_form_base-members.html +++ b/docs/doxygen/html/class_rate_limiter_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_rate_limiter_form_base.html b/docs/doxygen/html/class_rate_limiter_form_base.html index 334ed81..12511fd 100644 --- a/docs/doxygen/html/class_rate_limiter_form_base.html +++ b/docs/doxygen/html/class_rate_limiter_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for RateLimiterFormBase:</div> <div class="center"> <img src="class_rate_limiter_form_base.png" usemap="#RateLimiterFormBase_map" alt=""/> <map id="RateLimiterFormBase_map" name="RateLimiterFormBase_map"> -<area href="class_rate_limiter_form.html" alt="RateLimiterForm" shape="rect" coords="0,112,131,136"/> +<area href="class_rate_limiter_form.html" title="Form to edit the rate limit control data. " alt="RateLimiterForm" shape="rect" coords="0,112,131,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_reactive_shunt_element_form-members.html b/docs/doxygen/html/class_reactive_shunt_element_form-members.html index 2c1089d..2589859 100644 --- a/docs/doxygen/html/class_reactive_shunt_element_form-members.html +++ b/docs/doxygen/html/class_reactive_shunt_element_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_reactive_shunt_element_form.html b/docs/doxygen/html/class_reactive_shunt_element_form.html index cf83849..8dbb017 100644 --- a/docs/doxygen/html/class_reactive_shunt_element_form.html +++ b/docs/doxygen/html/class_reactive_shunt_element_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_reactive_shunt_element_form.html <div class="title">ReactiveShuntElementForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the reactive shunt element power data. + <a href="class_reactive_shunt_element_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_reactive_shunt_element_form_8h_source.html">ReactiveShuntElementForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for ReactiveShuntElementForm:</div> <div class="dyncontent"> @@ -199,8 +210,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_buttonCancel< <tr class="separator:aee2a26f08d25bb9989a03e8228dd1e69 inherit pro_attribs_class_reactive_shunt_element_form_base"><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="_reactive_shunt_element_form_8h_source.html#l00010">10</a> of file <a class="el" href="_reactive_shunt_element_form_8h_source.html">ReactiveShuntElementForm.h</a>.</p> +<div class="textblock"><p>Form to edit the reactive shunt element power 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_reactive_shunt_element_form_8h_source.html#l00034">34</a> of file <a class="el" href="_reactive_shunt_element_form_8h_source.html">ReactiveShuntElementForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_reactive_shunt_element_form_8h_source.html">ReactiveShuntElementForm.h</a></li> <li>Project/<a class="el" href="_reactive_shunt_element_form_8cpp_source.html">ReactiveShuntElementForm.cpp</a></li> diff --git a/docs/doxygen/html/class_reactive_shunt_element_form_base-members.html b/docs/doxygen/html/class_reactive_shunt_element_form_base-members.html index 9b3a3a1..d9bc768 100644 --- a/docs/doxygen/html/class_reactive_shunt_element_form_base-members.html +++ b/docs/doxygen/html/class_reactive_shunt_element_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_reactive_shunt_element_form_base.html b/docs/doxygen/html/class_reactive_shunt_element_form_base.html index 6ccfdde..ae72812 100644 --- a/docs/doxygen/html/class_reactive_shunt_element_form_base.html +++ b/docs/doxygen/html/class_reactive_shunt_element_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for ReactiveShuntElementFormBase:</div> <div class="center"> <img src="class_reactive_shunt_element_form_base.png" usemap="#ReactiveShuntElementFormBase_map" alt=""/> <map id="ReactiveShuntElementFormBase_map" name="ReactiveShuntElementFormBase_map"> -<area href="class_reactive_shunt_element_form.html" alt="ReactiveShuntElementForm" shape="rect" coords="0,112,194,136"/> +<area href="class_reactive_shunt_element_form.html" title="Form to edit the reactive shunt element power data. " alt="ReactiveShuntElementForm" shape="rect" coords="0,112,194,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_shunt-members.html b/docs/doxygen/html/class_shunt-members.html index 9da574b..fe99bd8 100644 --- a/docs/doxygen/html/class_shunt-members.html +++ b/docs/doxygen/html/class_shunt-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_shunt.html b/docs/doxygen/html/class_shunt.html index ff7db81..65074b3 100644 --- a/docs/doxygen/html/class_shunt.html +++ b/docs/doxygen/html/class_shunt.html @@ -21,6 +21,12 @@ <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> @@ -514,7 +520,7 @@ Additional Inherited Members</h2></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#l00007">7</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#l00024">24</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> @@ -552,7 +558,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#l00013">13</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#l00030">30</a> of file <a class="el" href="_shunt_8h_source.html">Shunt.h</a>.</p> </div> </div> @@ -592,7 +598,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#l00014">14</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#l00031">31</a> of file <a class="el" href="_shunt_8h_source.html">Shunt.h</a>.</p> </div> </div> @@ -630,7 +636,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#abe884d99d12d5252e18956162115b025">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_shunt_8cpp_source.html#l00015">15</a> of file <a class="el" href="_shunt_8cpp_source.html">Shunt.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_shunt_8cpp_source.html#l00032">32</a> of file <a class="el" href="_shunt_8cpp_source.html">Shunt.cpp</a>.</p> </div> </div> @@ -671,7 +677,7 @@ Additional Inherited Members</h2></td></tr> <p>Move a node. <a class="el" href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865" title="Update the element attributes related to the movement. ">StartMove(wxPoint2DDouble position)</a> before start moving. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a>'s parent. </td></tr> + <tr><td class="paramname">parent</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>'s parent. </td></tr> <tr><td class="paramname">position</td><td>New node position. </td></tr> </table> </dd> @@ -679,7 +685,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_shunt_8cpp_source.html#l00028">28</a> of file <a class="el" href="_shunt_8cpp_source.html">Shunt.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_shunt_8cpp_source.html#l00045">45</a> of file <a class="el" href="_shunt_8cpp_source.html">Shunt.cpp</a>.</p> </div> </div> @@ -718,7 +724,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a95b4f7e9341883ec39d0201148afffb4">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_shunt_8cpp_source.html#l00067">67</a> of file <a class="el" href="_shunt_8cpp_source.html">Shunt.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_shunt_8cpp_source.html#l00084">84</a> of file <a class="el" href="_shunt_8cpp_source.html">Shunt.cpp</a>.</p> </div> </div> @@ -756,7 +762,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a9504437b60faf2c5a27584de8a24810c">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_shunt_8cpp_source.html#l00057">57</a> of file <a class="el" href="_shunt_8cpp_source.html">Shunt.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_shunt_8cpp_source.html#l00074">74</a> of file <a class="el" href="_shunt_8cpp_source.html">Shunt.cpp</a>.</p> </div> </div> @@ -797,7 +803,7 @@ Additional Inherited Members</h2></td></tr> <p>Rotate a node. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a>'s parent. </td></tr> + <tr><td class="paramname">parent</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>'s parent. </td></tr> <tr><td class="paramname">clockwise</td><td>True to rotate clockwise, false to rotate counter-clockwise. </td></tr> </table> </dd> @@ -805,7 +811,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#af26c67b6dd32eb1b3e417fddf54818c3">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_shunt_8cpp_source.html#l00124">124</a> of file <a class="el" href="_shunt_8cpp_source.html">Shunt.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_shunt_8cpp_source.html#l00141">141</a> of file <a class="el" href="_shunt_8cpp_source.html">Shunt.cpp</a>.</p> </div> </div> @@ -836,7 +842,7 @@ Additional Inherited Members</h2></td></tr> <p>Set a perent to the node. If all conditions are met, a new parent are added to the element and the points related to the nodes will be calculated. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a> parent. </td></tr> + <tr><td class="paramname">parent</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> parent. </td></tr> </table> </dd> </dl> @@ -844,7 +850,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#ac7490a91f3edfff08584567cc84d86b5">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_shunt_8cpp_source.html#l00081">81</a> of file <a class="el" href="_shunt_8cpp_source.html">Shunt.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_shunt_8cpp_source.html#l00098">98</a> of file <a class="el" href="_shunt_8cpp_source.html">Shunt.cpp</a>.</p> </div> </div> @@ -882,7 +888,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_shunt_8cpp_source.html#l00050">50</a> of file <a class="el" href="_shunt_8cpp_source.html">Shunt.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_shunt_8cpp_source.html#l00067">67</a> of file <a class="el" href="_shunt_8cpp_source.html">Shunt.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_simulations_settings_form-members.html b/docs/doxygen/html/class_simulations_settings_form-members.html index 3a6528c..3bc9015 100644 --- a/docs/doxygen/html/class_simulations_settings_form-members.html +++ b/docs/doxygen/html/class_simulations_settings_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_simulations_settings_form.html b/docs/doxygen/html/class_simulations_settings_form.html index daa2942..d0ffd5f 100644 --- a/docs/doxygen/html/class_simulations_settings_form.html +++ b/docs/doxygen/html/class_simulations_settings_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_simulations_settings_form.html', <div class="title">SimulationsSettingsForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the simulation data. + <a href="class_simulations_settings_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_simulations_settings_form_8h_source.html">SimulationsSettingsForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for SimulationsSettingsForm:</div> <div class="dyncontent"> @@ -358,8 +369,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_buttonCancel< <tr class="separator:aa21432ddb46b6c57c6e15c3866f6fda3 inherit pro_attribs_class_simulations_settings_form_base"><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="_simulations_settings_form_8h_source.html#l00008">8</a> of file <a class="el" href="_simulations_settings_form_8h_source.html">SimulationsSettingsForm.h</a>.</p> +<div class="textblock"><p>Form to edit the simulation 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_simulations_settings_form_8h_source.html#l00032">32</a> of file <a class="el" href="_simulations_settings_form_8h_source.html">SimulationsSettingsForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_simulations_settings_form_8h_source.html">SimulationsSettingsForm.h</a></li> <li>Project/<a class="el" href="_simulations_settings_form_8cpp_source.html">SimulationsSettingsForm.cpp</a></li> diff --git a/docs/doxygen/html/class_simulations_settings_form_base-members.html b/docs/doxygen/html/class_simulations_settings_form_base-members.html index 4d9145d..389d830 100644 --- a/docs/doxygen/html/class_simulations_settings_form_base-members.html +++ b/docs/doxygen/html/class_simulations_settings_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_simulations_settings_form_base.html b/docs/doxygen/html/class_simulations_settings_form_base.html index 7df6a32..ec3da0c 100644 --- a/docs/doxygen/html/class_simulations_settings_form_base.html +++ b/docs/doxygen/html/class_simulations_settings_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for SimulationsSettingsFormBase:</div> <div class="center"> <img src="class_simulations_settings_form_base.png" usemap="#SimulationsSettingsFormBase_map" alt=""/> <map id="SimulationsSettingsFormBase_map" name="SimulationsSettingsFormBase_map"> -<area href="class_simulations_settings_form.html" alt="SimulationsSettingsForm" shape="rect" coords="0,112,176,136"/> +<area href="class_simulations_settings_form.html" title="Form to edit the simulation data. " alt="SimulationsSettingsForm" shape="rect" coords="0,112,176,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_sum-members.html b/docs/doxygen/html/class_sum-members.html index 9c0ef15..539be17 100644 --- a/docs/doxygen/html/class_sum-members.html +++ b/docs/doxygen/html/class_sum-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_sum.html b/docs/doxygen/html/class_sum.html index c34b36e..61ae547 100644 --- a/docs/doxygen/html/class_sum.html +++ b/docs/doxygen/html/class_sum.html @@ -21,6 +21,12 @@ <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> @@ -477,7 +483,7 @@ Additional Inherited Members</h2></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#l00009">9</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#l00026">26</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> @@ -513,7 +519,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#l00017">17</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#l00034">34</a> of file <a class="el" href="_sum_8h_source.html">Sum.h</a>.</p> </div> </div> @@ -562,7 +568,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_sum_8cpp_source.html#l00026">26</a> of file <a class="el" href="_sum_8cpp_source.html">Sum.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sum_8cpp_source.html#l00043">43</a> of file <a class="el" href="_sum_8cpp_source.html">Sum.cpp</a>.</p> </div> </div> @@ -594,7 +600,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="_sum_8cpp_source.html#l00221">221</a> of file <a class="el" href="_sum_8cpp_source.html">Sum.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sum_8cpp_source.html#l00238">238</a> of file <a class="el" href="_sum_8cpp_source.html">Sum.cpp</a>.</p> </div> </div> @@ -632,7 +638,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#l00018">18</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#l00035">35</a> of file <a class="el" href="_sum_8h_source.html">Sum.h</a>.</p> </div> </div> @@ -670,7 +676,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_sum_8cpp_source.html#l00166">166</a> of file <a class="el" href="_sum_8cpp_source.html">Sum.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sum_8cpp_source.html#l00183">183</a> of file <a class="el" href="_sum_8cpp_source.html">Sum.cpp</a>.</p> </div> </div> @@ -720,7 +726,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_sum_8cpp_source.html#l00095">95</a> of file <a class="el" href="_sum_8cpp_source.html">Sum.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sum_8cpp_source.html#l00112">112</a> of file <a class="el" href="_sum_8cpp_source.html">Sum.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_sum_form-members.html b/docs/doxygen/html/class_sum_form-members.html index 755a486..d5ba395 100644 --- a/docs/doxygen/html/class_sum_form-members.html +++ b/docs/doxygen/html/class_sum_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_sum_form.html b/docs/doxygen/html/class_sum_form.html index 8a07abd..69fac3e 100644 --- a/docs/doxygen/html/class_sum_form.html +++ b/docs/doxygen/html/class_sum_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_sum_form.html','');}); <div class="title">SumForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the sum control data. + <a href="class_sum_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_sum_form_8h_source.html">SumForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for SumForm:</div> <div class="dyncontent"> @@ -166,8 +177,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_ButtonCancel< <tr class="separator:a76390a7b2ed8f6b48ecacc44e169e3d0 inherit pro_attribs_class_sum_form_base"><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_form_8h_source.html#l00008">8</a> of file <a class="el" href="_sum_form_8h_source.html">SumForm.h</a>.</p> +<div class="textblock"><p>Form to edit the sum control 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_sum_form_8h_source.html#l00032">32</a> of file <a class="el" href="_sum_form_8h_source.html">SumForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_sum_form_8h_source.html">SumForm.h</a></li> <li>Project/<a class="el" href="_sum_form_8cpp_source.html">SumForm.cpp</a></li> diff --git a/docs/doxygen/html/class_sum_form_base-members.html b/docs/doxygen/html/class_sum_form_base-members.html index 1d44fc8..cda5c99 100644 --- a/docs/doxygen/html/class_sum_form_base-members.html +++ b/docs/doxygen/html/class_sum_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_sum_form_base.html b/docs/doxygen/html/class_sum_form_base.html index f267892..3eccbbb 100644 --- a/docs/doxygen/html/class_sum_form_base.html +++ b/docs/doxygen/html/class_sum_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for SumFormBase:</div> <div class="center"> <img src="class_sum_form_base.png" usemap="#SumFormBase_map" alt=""/> <map id="SumFormBase_map" name="SumFormBase_map"> -<area href="class_sum_form.html" alt="SumForm" shape="rect" coords="0,112,93,136"/> +<area href="class_sum_form.html" title="Form to edit the sum control data. " alt="SumForm" shape="rect" coords="0,112,93,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_switching_form-members.html b/docs/doxygen/html/class_switching_form-members.html index b815b4d..c07ef20 100644 --- a/docs/doxygen/html/class_switching_form-members.html +++ b/docs/doxygen/html/class_switching_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_switching_form.html b/docs/doxygen/html/class_switching_form.html index 37f2646..1b08f06 100644 --- a/docs/doxygen/html/class_switching_form.html +++ b/docs/doxygen/html/class_switching_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_switching_form.html','');}); <div class="title">SwitchingForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the switching data of power elements for electromechanical transient studies. + <a href="class_switching_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_switching_form_8h_source.html">SwitchingForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for SwitchingForm:</div> <div class="dyncontent"> @@ -211,8 +222,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_buttonCancel< <tr class="separator:ab8d540ac6bae77e44f30b8ffce030e07 inherit pro_attribs_class_switching_form_base"><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="_switching_form_8h_source.html#l00008">8</a> of file <a class="el" href="_switching_form_8h_source.html">SwitchingForm.h</a>.</p> +<div class="textblock"><p>Form to edit the switching data of power elements for electromechanical transient studies. </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="_switching_form_8h_source.html#l00032">32</a> of file <a class="el" href="_switching_form_8h_source.html">SwitchingForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_switching_form_8h_source.html">SwitchingForm.h</a></li> <li>Project/<a class="el" href="_switching_form_8cpp_source.html">SwitchingForm.cpp</a></li> diff --git a/docs/doxygen/html/class_switching_form_base-members.html b/docs/doxygen/html/class_switching_form_base-members.html index e904d1f..d96c7f2 100644 --- a/docs/doxygen/html/class_switching_form_base-members.html +++ b/docs/doxygen/html/class_switching_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_switching_form_base.html b/docs/doxygen/html/class_switching_form_base.html index d0cd430..0beffb9 100644 --- a/docs/doxygen/html/class_switching_form_base.html +++ b/docs/doxygen/html/class_switching_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for SwitchingFormBase:</div> <div class="center"> <img src="class_switching_form_base.png" usemap="#SwitchingFormBase_map" alt=""/> <map id="SwitchingFormBase_map" name="SwitchingFormBase_map"> -<area href="class_switching_form.html" alt="SwitchingForm" shape="rect" coords="0,112,123,136"/> +<area href="class_switching_form.html" title="Form to edit the switching data of power elements for electromechanical transient studies..." alt="SwitchingForm" shape="rect" coords="0,112,123,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_sync_generator-members.html b/docs/doxygen/html/class_sync_generator-members.html index d919f41..06c70dd 100644 --- a/docs/doxygen/html/class_sync_generator-members.html +++ b/docs/doxygen/html/class_sync_generator-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_sync_generator.html b/docs/doxygen/html/class_sync_generator.html index b177bfd..944f21a 100644 --- a/docs/doxygen/html/class_sync_generator.html +++ b/docs/doxygen/html/class_sync_generator.html @@ -21,6 +21,12 @@ <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> @@ -543,7 +549,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows </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#l00110">110</a> of file <a class="el" href="_sync_generator_8h_source.html">SyncGenerator.h</a>.</p> +<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><h2 class="groupheader">Member Function Documentation</h2> <a id="a24b9894fa42473dfb8bcf82221401a97"></a> <h2 class="memtitle"><span class="permalink"><a href="#a24b9894fa42473dfb8bcf82221401a97">◆ </a></span>GetContextMenu()</h2> @@ -580,7 +586,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <p>Reimplemented from <a class="el" href="class_element.html#a2a436b0497017a1c3d03dba5e59f037e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_sync_generator_8cpp_source.html#l00039">39</a> of file <a class="el" href="_sync_generator_8cpp_source.html">SyncGenerator.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sync_generator_8cpp_source.html#l00056">56</a> of file <a class="el" href="_sync_generator_8cpp_source.html">SyncGenerator.cpp</a>.</p> </div> </div> @@ -612,7 +618,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <p>Reimplemented from <a class="el" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_sync_generator_8cpp_source.html#l00139">139</a> of file <a class="el" href="_sync_generator_8cpp_source.html">SyncGenerator.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sync_generator_8cpp_source.html#l00156">156</a> of file <a class="el" href="_sync_generator_8cpp_source.html">SyncGenerator.cpp</a>.</p> </div> </div> @@ -651,7 +657,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <p>Reimplemented from <a class="el" href="class_power_element.html#acadf6712b430f9fadfbd7015903eaeaf">PowerElement</a>.</p> -<p class="definition">Definition at line <a class="el" href="_sync_generator_8cpp_source.html#l00213">213</a> of file <a class="el" href="_sync_generator_8cpp_source.html">SyncGenerator.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sync_generator_8cpp_source.html#l00230">230</a> of file <a class="el" href="_sync_generator_8cpp_source.html">SyncGenerator.cpp</a>.</p> </div> </div> @@ -683,7 +689,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <p>Reimplemented from <a class="el" href="class_element.html#aa79db7f54ba9754e953b5059a1d79486">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_sync_generator_8cpp_source.html#l00167">167</a> of file <a class="el" href="_sync_generator_8cpp_source.html">SyncGenerator.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sync_generator_8cpp_source.html#l00184">184</a> of file <a class="el" href="_sync_generator_8cpp_source.html">SyncGenerator.cpp</a>.</p> </div> </div> @@ -732,7 +738,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <p>Reimplemented from <a class="el" href="class_power_element.html#a0730506d0417089d69f7ce64b05daed4">PowerElement</a>.</p> -<p class="definition">Definition at line <a class="el" href="_sync_generator_8cpp_source.html#l00130">130</a> of file <a class="el" href="_sync_generator_8cpp_source.html">SyncGenerator.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sync_generator_8cpp_source.html#l00147">147</a> of file <a class="el" href="_sync_generator_8cpp_source.html">SyncGenerator.cpp</a>.</p> </div> </div> @@ -782,7 +788,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_sync_generator_8cpp_source.html#l00046">46</a> of file <a class="el" href="_sync_generator_8cpp_source.html">SyncGenerator.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sync_generator_8cpp_source.html#l00063">63</a> of file <a class="el" href="_sync_generator_8cpp_source.html">SyncGenerator.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_sync_machine_form-members.html b/docs/doxygen/html/class_sync_machine_form-members.html index b7c901c..2e21c61 100644 --- a/docs/doxygen/html/class_sync_machine_form-members.html +++ b/docs/doxygen/html/class_sync_machine_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_sync_machine_form.html b/docs/doxygen/html/class_sync_machine_form.html index d06b6f8..c28af84 100644 --- a/docs/doxygen/html/class_sync_machine_form.html +++ b/docs/doxygen/html/class_sync_machine_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_sync_machine_form.html','');}); <div class="title">SyncMachineForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the synchronous machine power data. + <a href="class_sync_machine_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_sync_machine_form_8h_source.html">SyncMachineForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for SyncMachineForm:</div> <div class="dyncontent"> @@ -394,8 +405,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_ButtonCancel< <tr class="separator:a97509be24b2add48e9d23d5b7020b076 inherit pro_attribs_class_sync_machine_form_base"><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_machine_form_8h_source.html#l00010">10</a> of file <a class="el" href="_sync_machine_form_8h_source.html">SyncMachineForm.h</a>.</p> +<div class="textblock"><p>Form to edit the synchronous machine power 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_sync_machine_form_8h_source.html#l00034">34</a> of file <a class="el" href="_sync_machine_form_8h_source.html">SyncMachineForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_sync_machine_form_8h_source.html">SyncMachineForm.h</a></li> <li>Project/<a class="el" href="_sync_machine_form_8cpp_source.html">SyncMachineForm.cpp</a></li> diff --git a/docs/doxygen/html/class_sync_machine_form_base-members.html b/docs/doxygen/html/class_sync_machine_form_base-members.html index 7edaded..13f837f 100644 --- a/docs/doxygen/html/class_sync_machine_form_base-members.html +++ b/docs/doxygen/html/class_sync_machine_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_sync_machine_form_base.html b/docs/doxygen/html/class_sync_machine_form_base.html index 68797e8..9e4d640 100644 --- a/docs/doxygen/html/class_sync_machine_form_base.html +++ b/docs/doxygen/html/class_sync_machine_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for SyncMachineFormBase:</div> <div class="center"> <img src="class_sync_machine_form_base.png" usemap="#SyncMachineFormBase_map" alt=""/> <map id="SyncMachineFormBase_map" name="SyncMachineFormBase_map"> -<area href="class_sync_machine_form.html" alt="SyncMachineForm" shape="rect" coords="0,112,147,136"/> +<area href="class_sync_machine_form.html" title="Form to edit the synchronous machine power data. " alt="SyncMachineForm" shape="rect" coords="0,112,147,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_sync_motor-members.html b/docs/doxygen/html/class_sync_motor-members.html index 7c3220f..b3bab3a 100644 --- a/docs/doxygen/html/class_sync_motor-members.html +++ b/docs/doxygen/html/class_sync_motor-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_sync_motor.html b/docs/doxygen/html/class_sync_motor.html index 04cf51c..09d23a7 100644 --- a/docs/doxygen/html/class_sync_motor.html +++ b/docs/doxygen/html/class_sync_motor.html @@ -21,6 +21,12 @@ <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> @@ -537,7 +543,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows </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#l00110">110</a> of file <a class="el" href="_sync_motor_8h_source.html">SyncMotor.h</a>.</p> +<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><h2 class="groupheader">Member Function Documentation</h2> <a id="a7b3102220ea5f7e19690af045a6c8278"></a> <h2 class="memtitle"><span class="permalink"><a href="#a7b3102220ea5f7e19690af045a6c8278">◆ </a></span>GetContextMenu()</h2> @@ -574,7 +580,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <p>Reimplemented from <a class="el" href="class_element.html#a2a436b0497017a1c3d03dba5e59f037e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_sync_motor_8cpp_source.html#l00008">8</a> of file <a class="el" href="_sync_motor_8cpp_source.html">SyncMotor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sync_motor_8cpp_source.html#l00025">25</a> of file <a class="el" href="_sync_motor_8cpp_source.html">SyncMotor.cpp</a>.</p> </div> </div> @@ -606,7 +612,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <p>Reimplemented from <a class="el" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_sync_motor_8cpp_source.html#l00108">108</a> of file <a class="el" href="_sync_motor_8cpp_source.html">SyncMotor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sync_motor_8cpp_source.html#l00125">125</a> of file <a class="el" href="_sync_motor_8cpp_source.html">SyncMotor.cpp</a>.</p> </div> </div> @@ -638,7 +644,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <p>Reimplemented from <a class="el" href="class_element.html#aa79db7f54ba9754e953b5059a1d79486">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_sync_motor_8cpp_source.html#l00115">115</a> of file <a class="el" href="_sync_motor_8cpp_source.html">SyncMotor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sync_motor_8cpp_source.html#l00132">132</a> of file <a class="el" href="_sync_motor_8cpp_source.html">SyncMotor.cpp</a>.</p> </div> </div> @@ -687,7 +693,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <p>Reimplemented from <a class="el" href="class_power_element.html#a0730506d0417089d69f7ce64b05daed4">PowerElement</a>.</p> -<p class="definition">Definition at line <a class="el" href="_sync_motor_8cpp_source.html#l00100">100</a> of file <a class="el" href="_sync_motor_8cpp_source.html">SyncMotor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sync_motor_8cpp_source.html#l00117">117</a> of file <a class="el" href="_sync_motor_8cpp_source.html">SyncMotor.cpp</a>.</p> </div> </div> @@ -737,7 +743,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_sync_motor_8cpp_source.html#l00016">16</a> of file <a class="el" href="_sync_motor_8cpp_source.html">SyncMotor.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sync_motor_8cpp_source.html#l00033">33</a> of file <a class="el" href="_sync_motor_8cpp_source.html">SyncMotor.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_text-members.html b/docs/doxygen/html/class_text-members.html index ad59b62..8fd37cd 100644 --- a/docs/doxygen/html/class_text-members.html +++ b/docs/doxygen/html/class_text-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_text.html b/docs/doxygen/html/class_text.html index 0489e35..8ed6bb4 100644 --- a/docs/doxygen/html/class_text.html +++ b/docs/doxygen/html/class_text.html @@ -21,6 +21,12 @@ <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> @@ -509,7 +515,7 @@ Additional Inherited Members</h2></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#l00048">48</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#l00065">65</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> @@ -549,14 +555,14 @@ Additional Inherited Members</h2></td></tr> <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">position</td><td><a class="el" href="class_node.html">Node</a> position in the 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> </dl> <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#l00056">56</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#l00073">73</a> of file <a class="el" href="_text_8h_source.html">Text.h</a>.</p> </div> </div> @@ -594,7 +600,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="_text_8cpp_source.html#l00030">30</a> of file <a class="el" href="_text_8cpp_source.html">Text.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_text_8cpp_source.html#l00047">47</a> of file <a class="el" href="_text_8cpp_source.html">Text.cpp</a>.</p> </div> </div> @@ -626,7 +632,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="_text_8cpp_source.html#l00950">950</a> of file <a class="el" href="_text_8cpp_source.html">Text.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_text_8cpp_source.html#l00967">967</a> of file <a class="el" href="_text_8cpp_source.html">Text.cpp</a>.</p> </div> </div> @@ -664,7 +670,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="_text_8cpp_source.html#l00075">75</a> of file <a class="el" href="_text_8cpp_source.html">Text.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_text_8cpp_source.html#l00092">92</a> of file <a class="el" href="_text_8cpp_source.html">Text.cpp</a>.</p> </div> </div> @@ -702,7 +708,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_text_8cpp_source.html#l00145">145</a> of file <a class="el" href="_text_8cpp_source.html">Text.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_text_8cpp_source.html#l00162">162</a> of file <a class="el" href="_text_8cpp_source.html">Text.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_text_form-members.html b/docs/doxygen/html/class_text_form-members.html index ad47a5d..aac7f47 100644 --- a/docs/doxygen/html/class_text_form-members.html +++ b/docs/doxygen/html/class_text_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_text_form.html b/docs/doxygen/html/class_text_form.html index 5db0495..9a8c3ea 100644 --- a/docs/doxygen/html/class_text_form.html +++ b/docs/doxygen/html/class_text_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_text_form.html','');}); <div class="title">TextForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the text graphical data. + <a href="class_text_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_text_form_8h_source.html">TextForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for TextForm:</div> <div class="dyncontent"> @@ -298,8 +309,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_ButtonCancel< <tr class="separator:ab4220dcb19935bebb8aefb2c486378ef inherit pro_attribs_class_text_form_base"><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_form_8h_source.html#l00008">8</a> of file <a class="el" href="_text_form_8h_source.html">TextForm.h</a>.</p> +<div class="textblock"><p>Form to edit the text graphical 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_text_form_8h_source.html#l00032">32</a> of file <a class="el" href="_text_form_8h_source.html">TextForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_text_form_8h_source.html">TextForm.h</a></li> <li>Project/<a class="el" href="_text_form_8cpp_source.html">TextForm.cpp</a></li> diff --git a/docs/doxygen/html/class_text_form_base-members.html b/docs/doxygen/html/class_text_form_base-members.html index dce7917..4187755 100644 --- a/docs/doxygen/html/class_text_form_base-members.html +++ b/docs/doxygen/html/class_text_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_text_form_base.html b/docs/doxygen/html/class_text_form_base.html index 251d438..9a7a2e2 100644 --- a/docs/doxygen/html/class_text_form_base.html +++ b/docs/doxygen/html/class_text_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for TextFormBase:</div> <div class="center"> <img src="class_text_form_base.png" usemap="#TextFormBase_map" alt=""/> <map id="TextFormBase_map" name="TextFormBase_map"> -<area href="class_text_form.html" alt="TextForm" shape="rect" coords="0,112,92,136"/> +<area href="class_text_form.html" title="Form to edit the text graphical data. " alt="TextForm" shape="rect" coords="0,112,92,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_text_g_l_drawable-members.html b/docs/doxygen/html/class_text_g_l_drawable-members.html index 159733e..028c01c 100644 --- a/docs/doxygen/html/class_text_g_l_drawable-members.html +++ b/docs/doxygen/html/class_text_g_l_drawable-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_text_g_l_drawable.html b/docs/doxygen/html/class_text_g_l_drawable.html index 3a0d3da..6874f12 100644 --- a/docs/doxygen/html/class_text_g_l_drawable.html +++ b/docs/doxygen/html/class_text_g_l_drawable.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_text_texture-members.html b/docs/doxygen/html/class_text_texture-members.html index 5e1a556..57c6314 100644 --- a/docs/doxygen/html/class_text_texture-members.html +++ b/docs/doxygen/html/class_text_texture-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_text_texture.html b/docs/doxygen/html/class_text_texture.html index 6ce4a53..f7458eb 100644 --- a/docs/doxygen/html/class_text_texture.html +++ b/docs/doxygen/html/class_text_texture.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_transfer_function-members.html b/docs/doxygen/html/class_transfer_function-members.html index 0bb91a6..175cdc4 100644 --- a/docs/doxygen/html/class_transfer_function-members.html +++ b/docs/doxygen/html/class_transfer_function-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_transfer_function.html b/docs/doxygen/html/class_transfer_function.html index 724432e..396cb07 100644 --- a/docs/doxygen/html/class_transfer_function.html +++ b/docs/doxygen/html/class_transfer_function.html @@ -21,6 +21,12 @@ <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> @@ -524,7 +530,7 @@ Additional Inherited Members</h2></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#l00011">11</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#l00028">28</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="a6a4415d2cf0af290494ea30d586cc187"></a> <h2 class="memtitle"><span class="permalink"><a href="#a6a4415d2cf0af290494ea30d586cc187">◆ </a></span>Contains()</h2> @@ -560,7 +566,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#l00025">25</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#l00042">42</a> of file <a class="el" href="_transfer_function_8h_source.html">TransferFunction.h</a>.</p> </div> </div> @@ -609,7 +615,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transfer_function_8cpp_source.html#l00035">35</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#l00052">52</a> of file <a class="el" href="_transfer_function_8cpp_source.html">TransferFunction.cpp</a>.</p> </div> </div> @@ -641,7 +647,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#l00359">359</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#l00376">376</a> of file <a class="el" href="_transfer_function_8cpp_source.html">TransferFunction.cpp</a>.</p> </div> </div> @@ -679,7 +685,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#l00026">26</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#l00043">43</a> of file <a class="el" href="_transfer_function_8h_source.html">TransferFunction.h</a>.</p> </div> </div> @@ -717,7 +723,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transfer_function_8cpp_source.html#l00220">220</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#l00237">237</a> of file <a class="el" href="_transfer_function_8cpp_source.html">TransferFunction.cpp</a>.</p> </div> </div> @@ -767,7 +773,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transfer_function_8cpp_source.html#l00209">209</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#l00226">226</a> of file <a class="el" href="_transfer_function_8cpp_source.html">TransferFunction.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_transfer_function_form-members.html b/docs/doxygen/html/class_transfer_function_form-members.html index 7d6d0f0..8523d5d 100644 --- a/docs/doxygen/html/class_transfer_function_form-members.html +++ b/docs/doxygen/html/class_transfer_function_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_transfer_function_form.html b/docs/doxygen/html/class_transfer_function_form.html index c7ab425..c0aa57c 100644 --- a/docs/doxygen/html/class_transfer_function_form.html +++ b/docs/doxygen/html/class_transfer_function_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_transfer_function_form.html','') <div class="title">TransferFunctionForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the transfer function control data. + <a href="class_transfer_function_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_transfer_function_form_8h_source.html">TransferFunctionForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for TransferFunctionForm:</div> <div class="dyncontent"> @@ -181,8 +192,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_ButtonCancel< <tr class="separator:ae1a557b170a2966b73a87d6ffd6eaf0e inherit pro_attribs_class_transfer_function_form_base"><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_form_8h_source.html#l00008">8</a> of file <a class="el" href="_transfer_function_form_8h_source.html">TransferFunctionForm.h</a>.</p> +<div class="textblock"><p>Form to edit the transfer function control 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_transfer_function_form_8h_source.html#l00032">32</a> of file <a class="el" href="_transfer_function_form_8h_source.html">TransferFunctionForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_transfer_function_form_8h_source.html">TransferFunctionForm.h</a></li> <li>Project/<a class="el" href="_transfer_function_form_8cpp_source.html">TransferFunctionForm.cpp</a></li> diff --git a/docs/doxygen/html/class_transfer_function_form_base-members.html b/docs/doxygen/html/class_transfer_function_form_base-members.html index bf724ff..dba1754 100644 --- a/docs/doxygen/html/class_transfer_function_form_base-members.html +++ b/docs/doxygen/html/class_transfer_function_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_transfer_function_form_base.html b/docs/doxygen/html/class_transfer_function_form_base.html index 508ebcf..6b87cb7 100644 --- a/docs/doxygen/html/class_transfer_function_form_base.html +++ b/docs/doxygen/html/class_transfer_function_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for TransferFunctionFormBase:</div> <div class="center"> <img src="class_transfer_function_form_base.png" usemap="#TransferFunctionFormBase_map" alt=""/> <map id="TransferFunctionFormBase_map" name="TransferFunctionFormBase_map"> -<area href="class_transfer_function_form.html" alt="TransferFunctionForm" shape="rect" coords="0,112,166,136"/> +<area href="class_transfer_function_form.html" title="Form to edit the transfer function control data. " alt="TransferFunctionForm" shape="rect" coords="0,112,166,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_transformer-members.html b/docs/doxygen/html/class_transformer-members.html index 7f9e223..13b5787 100644 --- a/docs/doxygen/html/class_transformer-members.html +++ b/docs/doxygen/html/class_transformer-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_transformer.html b/docs/doxygen/html/class_transformer.html index 3ebe873..12236de 100644 --- a/docs/doxygen/html/class_transformer.html +++ b/docs/doxygen/html/class_transformer.html @@ -21,6 +21,12 @@ <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> @@ -526,7 +532,7 @@ Additional Inherited Members</h2></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#l00054">54</a> of file <a class="el" href="_transformer_8h_source.html">Transformer.h</a>.</p> +<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><h2 class="groupheader">Member Function Documentation</h2> <a id="aea52a4562ec5b4a79bf82b8ede32ecc6"></a> <h2 class="memtitle"><span class="permalink"><a href="#aea52a4562ec5b4a79bf82b8ede32ecc6">◆ </a></span>AddParent()</h2> @@ -566,14 +572,14 @@ Additional Inherited Members</h2></td></tr> <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">position</td><td><a class="el" href="class_node.html">Node</a> position in the 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> </dl> <p>Reimplemented from <a class="el" href="class_element.html#a569178e9138490a981511a644536c0f9">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00022">22</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00039">39</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> </div> </div> @@ -611,7 +617,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#a691f94c3cd2abe1274e870d2882634d8">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00088">88</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00105">105</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> </div> </div> @@ -660,7 +666,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#a7037f496f9b9c9e64c74eb638debe278">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00094">94</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00111">111</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> </div> </div> @@ -699,7 +705,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#a6ddd901403c46f5d9aa179644467b088">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00256">256</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00273">273</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> </div> </div> @@ -731,7 +737,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="_transformer_8cpp_source.html#l00394">394</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00411">411</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> </div> </div> @@ -763,7 +769,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#aa79db7f54ba9754e953b5059a1d79486">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00401">401</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00418">418</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> </div> </div> @@ -801,7 +807,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#aa23b1014c947e46996f1c0c4caa187e1">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00173">173</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00190">190</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> </div> </div> @@ -839,7 +845,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#a7cf4b117f43f49bb76cce3df5521fb70">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00195">195</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00212">212</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> </div> </div> @@ -880,7 +886,7 @@ Additional Inherited Members</h2></td></tr> <p>Move a node. <a class="el" href="class_transformer.html#a0395a11dc8173e511a0596ac96bf05e5" title="Update the element attributes related to the movement. ">StartMove(wxPoint2DDouble position)</a> before start moving. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a>'s parent. </td></tr> + <tr><td class="paramname">parent</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>'s parent. </td></tr> <tr><td class="paramname">position</td><td>New node position. </td></tr> </table> </dd> @@ -888,7 +894,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#aef2ffe79c9b239fb5a1ad175555a9f5a">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00215">215</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00232">232</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> </div> </div> @@ -926,7 +932,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00179">179</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00196">196</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> </div> </div> @@ -967,7 +973,7 @@ Additional Inherited Members</h2></td></tr> <p>Rotate a node. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a>'s parent. </td></tr> + <tr><td class="paramname">parent</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>'s parent. </td></tr> <tr><td class="paramname">clockwise</td><td>True to rotate clockwise, false to rotate counter-clockwise. </td></tr> </table> </dd> @@ -975,7 +981,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#a190d3da81276751c5b9ab23c5d3f37df">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00310">310</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00327">327</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> </div> </div> @@ -1006,7 +1012,7 @@ Additional Inherited Members</h2></td></tr> <p>Set a perent to the node. If all conditions are met, a new parent are added to the element and the points related to the nodes will be calculated. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_node.html">Node</a> parent. </td></tr> + <tr><td class="paramname">parent</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> parent. </td></tr> </table> </dd> </dl> @@ -1014,7 +1020,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#aaf64ea58631438e3a16b1b2ede793875">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00324">324</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00341">341</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> </div> </div> @@ -1063,7 +1069,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_power_element.html#a0730506d0417089d69f7ce64b05daed4">PowerElement</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00274">274</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00291">291</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> </div> </div> @@ -1101,7 +1107,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_power_element.html#a2ee71f9eb90beadf5439ce9f70469b49">PowerElement</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00388">388</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00405">405</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> </div> </div> @@ -1151,7 +1157,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00263">263</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00280">280</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> </div> </div> @@ -1189,7 +1195,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#a947cec45fcdc78d01eaabe19d23daf64">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00249">249</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8cpp_source.html#l00266">266</a> of file <a class="el" href="_transformer_8cpp_source.html">Transformer.cpp</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_transformer_form-members.html b/docs/doxygen/html/class_transformer_form-members.html index e9d669e..a0d1a0a 100644 --- a/docs/doxygen/html/class_transformer_form-members.html +++ b/docs/doxygen/html/class_transformer_form-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_transformer_form.html b/docs/doxygen/html/class_transformer_form.html index a72534e..5520bad 100644 --- a/docs/doxygen/html/class_transformer_form.html +++ b/docs/doxygen/html/class_transformer_form.html @@ -21,6 +21,12 @@ <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> @@ -87,6 +93,11 @@ $(document).ready(function(){initNavTree('class_transformer_form.html','');}); <div class="title">TransformerForm Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Form to edit the transformer power data. + <a href="class_transformer_form.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_transformer_form_8h_source.html">TransformerForm.h</a>></code></p> <div class="dynheader"> Inheritance diagram for TransformerForm:</div> <div class="dyncontent"> @@ -385,8 +396,11 @@ wxButton * </td><td class="memItemRight" valign="bottom"><b>m_buttonCancel< <tr class="separator:af65e4801b524b44b075a6218777777f0 inherit pro_attribs_class_transformer_form_base"><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_form_8h_source.html#l00009">9</a> of file <a class="el" href="_transformer_form_8h_source.html">TransformerForm.h</a>.</p> +<div class="textblock"><p>Form to edit the transformer power 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>05/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_transformer_form_8h_source.html#l00033">33</a> of file <a class="el" href="_transformer_form_8h_source.html">TransformerForm.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_transformer_form_8h_source.html">TransformerForm.h</a></li> <li>Project/<a class="el" href="_transformer_form_8cpp_source.html">TransformerForm.cpp</a></li> diff --git a/docs/doxygen/html/class_transformer_form_base-members.html b/docs/doxygen/html/class_transformer_form_base-members.html index d24d8ea..a7adb41 100644 --- a/docs/doxygen/html/class_transformer_form_base-members.html +++ b/docs/doxygen/html/class_transformer_form_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_transformer_form_base.html b/docs/doxygen/html/class_transformer_form_base.html index 9c3ff46..e0799a3 100644 --- a/docs/doxygen/html/class_transformer_form_base.html +++ b/docs/doxygen/html/class_transformer_form_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for TransformerFormBase:</div> <div class="center"> <img src="class_transformer_form_base.png" usemap="#TransformerFormBase_map" alt=""/> <map id="TransformerFormBase_map" name="TransformerFormBase_map"> -<area href="class_transformer_form.html" alt="TransformerForm" shape="rect" coords="0,112,138,136"/> +<area href="class_transformer_form.html" title="Form to edit the transformer power data. " alt="TransformerForm" shape="rect" coords="0,112,138,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_workspace-members.html b/docs/doxygen/html/class_workspace-members.html index e133fec..59efc3c 100644 --- a/docs/doxygen/html/class_workspace-members.html +++ b/docs/doxygen/html/class_workspace-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_workspace.html b/docs/doxygen/html/class_workspace.html index 0e6eea2..cd9d6e0 100644 --- a/docs/doxygen/html/class_workspace.html +++ b/docs/doxygen/html/class_workspace.html @@ -21,6 +21,12 @@ <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> @@ -88,6 +94,11 @@ $(document).ready(function(){initNavTree('class_workspace.html','');}); <div class="title">Workspace Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>This class manages the graphical and power elements. It is responsible for handling the user's interaction with the elements. + <a href="class_workspace.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_workspace_8h_source.html">Workspace.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Workspace:</div> <div class="dyncontent"> @@ -359,8 +370,11 @@ wxTimer * </td><td class="memItemRight" valign="bottom"><b>m_timer</b></td> <tr class="separator:a70d926c1f83f7510f487f9f1f474083f inherit pro_attribs_class_workspace_base"><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="_workspace_8h_source.html#l00056">56</a> of file <a class="el" href="_workspace_8h_source.html">Workspace.h</a>.</p> +<div class="textblock"><p>This class manages the graphical and power elements. It is responsible for handling the user's interaction with the 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>19/09/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_workspace_8h_source.html#l00081">81</a> of file <a class="el" href="_workspace_8h_source.html">Workspace.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_workspace_8h_source.html">Workspace.h</a></li> <li>Project/<a class="el" href="_workspace_8cpp_source.html">Workspace.cpp</a></li> diff --git a/docs/doxygen/html/class_workspace_base-members.html b/docs/doxygen/html/class_workspace_base-members.html index 0ec8e27..7dfb42f 100644 --- a/docs/doxygen/html/class_workspace_base-members.html +++ b/docs/doxygen/html/class_workspace_base-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/class_workspace_base.html b/docs/doxygen/html/class_workspace_base.html index d6c6ae4..4a309f6 100644 --- a/docs/doxygen/html/class_workspace_base.html +++ b/docs/doxygen/html/class_workspace_base.html @@ -21,6 +21,12 @@ <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> @@ -93,7 +99,7 @@ Inheritance diagram for WorkspaceBase:</div> <div class="center"> <img src="class_workspace_base.png" usemap="#WorkspaceBase_map" alt=""/> <map id="WorkspaceBase_map" name="WorkspaceBase_map"> -<area href="class_workspace.html" alt="Workspace" shape="rect" coords="0,112,103,136"/> +<area href="class_workspace.html" title="This class manages the graphical and power elements. It is responsible for handling the user's intera..." alt="Workspace" shape="rect" coords="0,112,103,136"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/classes.html b/docs/doxygen/html/classes.html index 6abb09f..918de89 100644 --- a/docs/doxygen/html/classes.html +++ b/docs/doxygen/html/classes.html @@ -21,6 +21,12 @@ <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> @@ -91,42 +97,42 @@ $(document).ready(function(){initNavTree('classes.html','');}); </td><td valign="top"><a class="el" href="class_ind_motor_form_base.html">IndMotorFormBase</a>   </td><td valign="top"><a class="el" href="class_sync_machine_form.html">SyncMachineForm</a>   </td></tr> <tr><td valign="top"><a class="el" href="class_about_form.html">AboutForm</a>   </td><td valign="top"><a class="el" href="class_inductor.html">Inductor</a>   </td><td valign="top"><a class="el" href="class_open_g_l_colour.html">OpenGLColour</a>   </td><td valign="top"><a class="el" href="class_sync_machine_form_base.html">SyncMachineFormBase</a>   </td></tr> <tr><td valign="top"><a class="el" href="class_about_form_base.html">AboutFormBase</a>   </td><td valign="top"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a>   </td><td valign="top"><a class="el" href="struct_inductor_electrical_data.html">InductorElectricalData</a>   </td><td rowspan="2" valign="bottom"><a name="letter_p"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  p  </div></td></tr></table> -</td><td valign="top"><a class="el" href="class_sync_motor.html">SyncMotor</a>   </td></tr> +</td><td valign="top"><a class="el" href="struct_sync_machine_model_data.html">SyncMachineModelData</a>   </td></tr> <tr><td rowspan="2" valign="bottom"><a name="letter_b"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  b  </div></td></tr></table> -</td><td valign="top"><a class="el" href="class_electromechanical.html">Electromechanical</a>   </td><td valign="top"><a class="el" href="struct_integration_constant.html">IntegrationConstant</a>   </td><td valign="top"><a class="el" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a>   </td></tr> -<tr><td valign="top"><a class="el" href="class_element.html">Element</a>   </td><td valign="top"><a class="el" href="class_i_o_control.html">IOControl</a>   </td><td valign="top"><a class="el" href="class_plot_data.html">PlotData</a>   </td><td rowspan="2" valign="bottom"><a name="letter_t"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  t  </div></td></tr></table> +</td><td valign="top"><a class="el" href="class_electromechanical.html">Electromechanical</a>   </td><td valign="top"><a class="el" href="struct_integration_constant.html">IntegrationConstant</a>   </td><td valign="top"><a class="el" href="class_sync_motor.html">SyncMotor</a>   </td></tr> +<tr><td valign="top"><a class="el" href="class_element.html">Element</a>   </td><td valign="top"><a class="el" href="class_i_o_control.html">IOControl</a>   </td><td valign="top"><a class="el" href="class_plot_data.html">PlotData</a>   </td><td valign="top"><a class="el" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a>   </td></tr> +<tr><td valign="top"><a class="el" href="class_branch.html">Branch</a>   </td><td valign="top"><a class="el" href="class_element_data_object.html">ElementDataObject</a>   </td><td valign="top"><a class="el" href="class_i_o_control_form.html">IOControlForm</a>   </td><td valign="top"><a class="el" href="class_power_element.html">PowerElement</a>   </td><td rowspan="2" valign="bottom"><a name="letter_t"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  t  </div></td></tr></table> </td></tr> -<tr><td valign="top"><a class="el" href="class_branch.html">Branch</a>   </td><td valign="top"><a class="el" href="class_element_data_object.html">ElementDataObject</a>   </td><td valign="top"><a class="el" href="class_i_o_control_form.html">IOControlForm</a>   </td><td valign="top"><a class="el" href="class_power_element.html">PowerElement</a>   </td></tr> -<tr><td valign="top"><a class="el" href="class_bus.html">Bus</a>   </td><td valign="top"><a class="el" href="class_element_plot_data.html">ElementPlotData</a>   </td><td valign="top"><a class="el" href="class_i_o_control_form_base.html">IOControlFormBase</a>   </td><td valign="top"><a class="el" href="class_power_flow.html">PowerFlow</a>   </td><td valign="top"><a class="el" href="class_text.html">Text</a>   </td></tr> +<tr><td valign="top"><a class="el" href="class_bus.html">Bus</a>   </td><td valign="top"><a class="el" href="class_element_plot_data.html">ElementPlotData</a>   </td><td valign="top"><a class="el" href="class_i_o_control_form_base.html">IOControlFormBase</a>   </td><td valign="top"><a class="el" href="class_power_flow.html">PowerFlow</a>   </td></tr> <tr><td valign="top"><a class="el" href="struct_bus_electrical_data.html">BusElectricalData</a>   </td><td valign="top"><a class="el" href="struct_elements_lists.html">ElementsLists</a>   </td><td rowspan="2" valign="bottom"><a name="letter_l"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  l  </div></td></tr></table> -</td><td valign="top"><a class="el" href="class_properties_data.html">PropertiesData</a>   </td><td valign="top"><a class="el" href="class_text_form.html">TextForm</a>   </td></tr> +</td><td valign="top"><a class="el" href="class_properties_data.html">PropertiesData</a>   </td><td valign="top"><a class="el" href="class_text.html">Text</a>   </td></tr> <tr><td valign="top"><a class="el" href="class_bus_form.html">BusForm</a>   </td><td valign="top"><a class="el" href="class_exponential.html">Exponential</a>   </td><td rowspan="2" valign="bottom"><a name="letter_r"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  r  </div></td></tr></table> -</td><td valign="top"><a class="el" href="class_text_form_base.html">TextFormBase</a>   </td></tr> -<tr><td valign="top"><a class="el" href="class_bus_form_base.html">BusFormBase</a>   </td><td valign="top"><a class="el" href="class_exponential_form.html">ExponentialForm</a>   </td><td valign="top"><a class="el" href="class_limiter.html">Limiter</a>   </td><td valign="top"><a class="el" href="class_text_g_l_drawable.html">TextGLDrawable</a>   </td></tr> +</td><td valign="top"><a class="el" href="class_text_form.html">TextForm</a>   </td></tr> +<tr><td valign="top"><a class="el" href="class_bus_form_base.html">BusFormBase</a>   </td><td valign="top"><a class="el" href="class_exponential_form.html">ExponentialForm</a>   </td><td valign="top"><a class="el" href="class_limiter.html">Limiter</a>   </td><td valign="top"><a class="el" href="class_text_form_base.html">TextFormBase</a>   </td></tr> <tr><td rowspan="2" valign="bottom"><a name="letter_c"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  c  </div></td></tr></table> -</td><td valign="top"><a class="el" href="class_exponential_form_base.html">ExponentialFormBase</a>   </td><td valign="top"><a class="el" href="class_limiter_form.html">LimiterForm</a>   </td><td valign="top"><a class="el" href="class_rate_limiter.html">RateLimiter</a>   </td><td valign="top"><a class="el" href="class_text_texture.html">TextTexture</a>   </td></tr> +</td><td valign="top"><a class="el" href="class_exponential_form_base.html">ExponentialFormBase</a>   </td><td valign="top"><a class="el" href="class_limiter_form.html">LimiterForm</a>   </td><td valign="top"><a class="el" href="class_rate_limiter.html">RateLimiter</a>   </td><td valign="top"><a class="el" href="class_text_g_l_drawable.html">TextGLDrawable</a>   </td></tr> <tr><td rowspan="2" valign="bottom"><a name="letter_f"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  f  </div></td></tr></table> -</td><td valign="top"><a class="el" href="class_limiter_form_base.html">LimiterFormBase</a>   </td><td valign="top"><a class="el" href="class_rate_limiter_form.html">RateLimiterForm</a>   </td><td valign="top"><a class="el" href="class_transfer_function.html">TransferFunction</a>   </td></tr> -<tr><td valign="top"><a class="el" href="class_camera.html">Camera</a>   </td><td valign="top"><a class="el" href="class_line.html">Line</a>   </td><td valign="top"><a class="el" href="class_rate_limiter_form_base.html">RateLimiterFormBase</a>   </td><td valign="top"><a class="el" href="class_transfer_function_form.html">TransferFunctionForm</a>   </td></tr> -<tr><td valign="top"><a class="el" href="class_capacitor.html">Capacitor</a>   </td><td valign="top"><a class="el" href="class_fault.html">Fault</a>   </td><td valign="top"><a class="el" href="struct_line_electrical_data.html">LineElectricalData</a>   </td><td valign="top"><a class="el" href="struct_reactive_limits.html">ReactiveLimits</a>   </td><td valign="top"><a class="el" href="class_transfer_function_form_base.html">TransferFunctionFormBase</a>   </td></tr> -<tr><td valign="top"><a class="el" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a>   </td><td valign="top"><a class="el" href="class_file_handing.html">FileHanding</a>   </td><td valign="top"><a class="el" href="class_line_form.html">LineForm</a>   </td><td valign="top"><a class="el" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>   </td><td valign="top"><a class="el" href="class_transformer.html">Transformer</a>   </td></tr> +</td><td valign="top"><a class="el" href="class_limiter_form_base.html">LimiterFormBase</a>   </td><td valign="top"><a class="el" href="class_rate_limiter_form.html">RateLimiterForm</a>   </td><td valign="top"><a class="el" href="class_text_texture.html">TextTexture</a>   </td></tr> +<tr><td valign="top"><a class="el" href="class_camera.html">Camera</a>   </td><td valign="top"><a class="el" href="class_line.html">Line</a>   </td><td valign="top"><a class="el" href="class_rate_limiter_form_base.html">RateLimiterFormBase</a>   </td><td valign="top"><a class="el" href="class_transfer_function.html">TransferFunction</a>   </td></tr> +<tr><td valign="top"><a class="el" href="class_capacitor.html">Capacitor</a>   </td><td valign="top"><a class="el" href="class_fault.html">Fault</a>   </td><td valign="top"><a class="el" href="struct_line_electrical_data.html">LineElectricalData</a>   </td><td valign="top"><a class="el" href="struct_reactive_limits.html">ReactiveLimits</a>   </td><td valign="top"><a class="el" href="class_transfer_function_form.html">TransferFunctionForm</a>   </td></tr> +<tr><td valign="top"><a class="el" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a>   </td><td valign="top"><a class="el" href="class_file_handing.html">FileHanding</a>   </td><td valign="top"><a class="el" href="class_line_form.html">LineForm</a>   </td><td valign="top"><a class="el" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>   </td><td valign="top"><a class="el" href="class_transfer_function_form_base.html">TransferFunctionFormBase</a>   </td></tr> <tr><td valign="top"><a class="el" href="class_chart_view.html">ChartView</a>   </td><td rowspan="2" valign="bottom"><a name="letter_g"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  g  </div></td></tr></table> -</td><td valign="top"><a class="el" href="class_line_form_base.html">LineFormBase</a>   </td><td valign="top"><a class="el" href="class_reactive_shunt_element_form_base.html">ReactiveShuntElementFormBase</a>   </td><td valign="top"><a class="el" href="struct_transformer_electrical_data.html">TransformerElectricalData</a>   </td></tr> +</td><td valign="top"><a class="el" href="class_line_form_base.html">LineFormBase</a>   </td><td valign="top"><a class="el" href="class_reactive_shunt_element_form_base.html">ReactiveShuntElementFormBase</a>   </td><td valign="top"><a class="el" href="class_transformer.html">Transformer</a>   </td></tr> <tr><td valign="top"><a class="el" href="class_chart_view_base.html">ChartViewBase</a>   </td><td valign="top"><a class="el" href="class_load.html">Load</a>   </td><td rowspan="2" valign="bottom"><a name="letter_s"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  s  </div></td></tr></table> -</td><td valign="top"><a class="el" href="class_transformer_form.html">TransformerForm</a>   </td></tr> -<tr><td valign="top"><a class="el" href="class_connection_line.html">ConnectionLine</a>   </td><td valign="top"><a class="el" href="class_gain.html">Gain</a>   </td><td valign="top"><a class="el" href="struct_load_electrical_data.html">LoadElectricalData</a>   </td><td valign="top"><a class="el" href="class_transformer_form_base.html">TransformerFormBase</a>   </td></tr> -<tr><td valign="top"><a class="el" href="class_constant.html">Constant</a>   </td><td valign="top"><a class="el" href="class_gain_form.html">GainForm</a>   </td><td valign="top"><a class="el" href="class_load_form.html">LoadForm</a>   </td><td valign="top"><a class="el" href="class_shunt.html">Shunt</a>   </td><td rowspan="2" valign="bottom"><a name="letter_w"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  w  </div></td></tr></table> +</td><td valign="top"><a class="el" href="struct_transformer_electrical_data.html">TransformerElectricalData</a>   </td></tr> +<tr><td valign="top"><a class="el" href="class_connection_line.html">ConnectionLine</a>   </td><td valign="top"><a class="el" href="class_gain.html">Gain</a>   </td><td valign="top"><a class="el" href="struct_load_electrical_data.html">LoadElectricalData</a>   </td><td valign="top"><a class="el" href="class_transformer_form.html">TransformerForm</a>   </td></tr> +<tr><td valign="top"><a class="el" href="class_constant.html">Constant</a>   </td><td valign="top"><a class="el" href="class_gain_form.html">GainForm</a>   </td><td valign="top"><a class="el" href="class_load_form.html">LoadForm</a>   </td><td valign="top"><a class="el" href="class_shunt.html">Shunt</a>   </td><td valign="top"><a class="el" href="class_transformer_form_base.html">TransformerFormBase</a>   </td></tr> +<tr><td valign="top"><a class="el" href="class_constant_form.html">ConstantForm</a>   </td><td valign="top"><a class="el" href="class_gain_form_base.html">GainFormBase</a>   </td><td valign="top"><a class="el" href="class_load_form_base.html">LoadFormBase</a>   </td><td valign="top"><a class="el" href="struct_simulation_data.html">SimulationData</a>   </td><td rowspan="2" valign="bottom"><a name="letter_w"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  w  </div></td></tr></table> </td></tr> -<tr><td valign="top"><a class="el" href="class_constant_form.html">ConstantForm</a>   </td><td valign="top"><a class="el" href="class_gain_form_base.html">GainFormBase</a>   </td><td valign="top"><a class="el" href="class_load_form_base.html">LoadFormBase</a>   </td><td valign="top"><a class="el" href="struct_simulation_data.html">SimulationData</a>   </td></tr> <tr><td valign="top"><a class="el" href="class_constant_form_base.html">ConstantFormBase</a>   </td><td valign="top"><a class="el" href="struct_general_data.html">GeneralData</a>   </td><td rowspan="2" valign="bottom"><a name="letter_m"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  m  </div></td></tr></table> -</td><td valign="top"><a class="el" href="class_simulations_settings_form.html">SimulationsSettingsForm</a>   </td><td valign="top"><a class="el" href="class_workspace.html">Workspace</a>   </td></tr> -<tr><td valign="top"><a class="el" href="class_control_editor.html">ControlEditor</a>   </td><td valign="top"><a class="el" href="class_general_properties_form.html">GeneralPropertiesForm</a>   </td><td valign="top"><a class="el" href="class_simulations_settings_form_base.html">SimulationsSettingsFormBase</a>   </td><td valign="top"><a class="el" href="class_workspace_base.html">WorkspaceBase</a>   </td></tr> -<tr><td valign="top"><a class="el" href="class_control_editor_base.html">ControlEditorBase</a>   </td><td valign="top"><a class="el" href="class_general_properties_form_base.html">GeneralPropertiesFormBase</a>   </td><td valign="top"><a class="el" href="class_machines.html">Machines</a>   </td><td valign="top"><a class="el" href="struct_transfer_function_1_1_space_state.html">TransferFunction::SpaceState</a>   </td><td valign="top"><a class="el" href="classwx_g_l_number_renderer.html">wxGLNumberRenderer</a>   </td></tr> -<tr><td valign="top"><a class="el" href="class_control_element.html">ControlElement</a>   </td><td valign="top"><a class="el" href="class_generator_stab_form.html">GeneratorStabForm</a>   </td><td valign="top"><a class="el" href="class_main_app.html">MainApp</a>   </td><td valign="top"><a class="el" href="class_sum.html">Sum</a>   </td><td valign="top"><a class="el" href="classwx_g_l_string.html">wxGLString</a>   </td></tr> -<tr><td valign="top"><a class="el" href="class_control_element_button.html">ControlElementButton</a>   </td><td valign="top"><a class="el" href="class_generator_stab_form_base.html">GeneratorStabFormBase</a>   </td><td valign="top"><a class="el" href="class_main_frame.html">MainFrame</a>   </td><td valign="top"><a class="el" href="class_sum_form.html">SumForm</a>   </td><td valign="top"><a class="el" href="classwx_g_l_string_array.html">wxGLStringArray</a>   </td></tr> -<tr><td valign="top"><a class="el" href="class_control_element_container.html">ControlElementContainer</a>   </td><td valign="top"><a class="el" href="class_graphical_element.html">GraphicalElement</a>   </td><td valign="top"><a class="el" href="class_main_frame_base.html">MainFrameBase</a>   </td><td valign="top"><a class="el" href="class_sum_form_base.html">SumFormBase</a>   </td><td valign="top"><a class="el" href="classwx_ribbon_metro_art_provider.html">wxRibbonMetroArtProvider</a>   </td></tr> +</td><td valign="top"><a class="el" href="class_simulations_settings_form.html">SimulationsSettingsForm</a>   </td></tr> +<tr><td valign="top"><a class="el" href="class_control_editor.html">ControlEditor</a>   </td><td valign="top"><a class="el" href="class_general_properties_form.html">GeneralPropertiesForm</a>   </td><td valign="top"><a class="el" href="class_simulations_settings_form_base.html">SimulationsSettingsFormBase</a>   </td><td valign="top"><a class="el" href="class_workspace.html">Workspace</a>   </td></tr> +<tr><td valign="top"><a class="el" href="class_control_editor_base.html">ControlEditorBase</a>   </td><td valign="top"><a class="el" href="class_general_properties_form_base.html">GeneralPropertiesFormBase</a>   </td><td valign="top"><a class="el" href="class_machines.html">Machines</a>   </td><td valign="top"><a class="el" href="struct_transfer_function_1_1_space_state.html">TransferFunction::SpaceState</a>   </td><td valign="top"><a class="el" href="class_workspace_base.html">WorkspaceBase</a>   </td></tr> +<tr><td valign="top"><a class="el" href="class_control_element.html">ControlElement</a>   </td><td valign="top"><a class="el" href="class_generator_stab_form.html">GeneratorStabForm</a>   </td><td valign="top"><a class="el" href="class_main_app.html">MainApp</a>   </td><td valign="top"><a class="el" href="class_sum.html">Sum</a>   </td><td valign="top"><a class="el" href="classwx_g_l_number_renderer.html">wxGLNumberRenderer</a>   </td></tr> +<tr><td valign="top"><a class="el" href="class_control_element_button.html">ControlElementButton</a>   </td><td valign="top"><a class="el" href="class_generator_stab_form_base.html">GeneratorStabFormBase</a>   </td><td valign="top"><a class="el" href="class_main_frame.html">MainFrame</a>   </td><td valign="top"><a class="el" href="class_sum_form.html">SumForm</a>   </td><td valign="top"><a class="el" href="classwx_g_l_string.html">wxGLString</a>   </td></tr> +<tr><td valign="top"><a class="el" href="class_control_element_container.html">ControlElementContainer</a>   </td><td valign="top"><a class="el" href="class_graphical_element.html">GraphicalElement</a>   </td><td valign="top"><a class="el" href="class_main_frame_base.html">MainFrameBase</a>   </td><td valign="top"><a class="el" href="class_sum_form_base.html">SumFormBase</a>   </td><td valign="top"><a class="el" href="classwx_g_l_string_array.html">wxGLStringArray</a>   </td></tr> <tr><td valign="top"><a class="el" href="class_control_element_solver.html">ControlElementSolver</a>   </td><td rowspan="2" valign="bottom"><a name="letter_i"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  i  </div></td></tr></table> -</td><td valign="top"><a class="el" href="class_multiplier.html">Multiplier</a>   </td><td valign="top"><a class="el" href="struct_switching_data.html">SwitchingData</a>   </td><td></td></tr> +</td><td valign="top"><a class="el" href="class_multiplier.html">Multiplier</a>   </td><td valign="top"><a class="el" href="struct_switching_data.html">SwitchingData</a>   </td><td valign="top"><a class="el" href="classwx_ribbon_metro_art_provider.html">wxRibbonMetroArtProvider</a>   </td></tr> <tr><td valign="top"><a class="el" href="class_control_system_test.html">ControlSystemTest</a>   </td><td rowspan="2" valign="bottom"><a name="letter_n"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  n  </div></td></tr></table> </td><td valign="top"><a class="el" href="class_switching_form.html">SwitchingForm</a>   </td><td></td></tr> <tr><td valign="top"><a class="el" href="class_control_system_test_base.html">ControlSystemTestBase</a>   </td><td valign="top"><a class="el" href="class_ind_motor.html">IndMotor</a>   </td><td valign="top"><a class="el" href="class_switching_form_base.html">SwitchingFormBase</a>   </td><td></td></tr> diff --git a/docs/doxygen/html/classwx_g_l_number_renderer-members.html b/docs/doxygen/html/classwx_g_l_number_renderer-members.html index 35f716a..83ee202 100644 --- a/docs/doxygen/html/classwx_g_l_number_renderer-members.html +++ b/docs/doxygen/html/classwx_g_l_number_renderer-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/classwx_g_l_number_renderer.html b/docs/doxygen/html/classwx_g_l_number_renderer.html index 2aecb95..bb3b8d8 100644 --- a/docs/doxygen/html/classwx_g_l_number_renderer.html +++ b/docs/doxygen/html/classwx_g_l_number_renderer.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/classwx_g_l_string-members.html b/docs/doxygen/html/classwx_g_l_string-members.html index 29b4296..8460eea 100644 --- a/docs/doxygen/html/classwx_g_l_string-members.html +++ b/docs/doxygen/html/classwx_g_l_string-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/classwx_g_l_string.html b/docs/doxygen/html/classwx_g_l_string.html index 50f103e..3b01817 100644 --- a/docs/doxygen/html/classwx_g_l_string.html +++ b/docs/doxygen/html/classwx_g_l_string.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/classwx_g_l_string_array-members.html b/docs/doxygen/html/classwx_g_l_string_array-members.html index 2471063..6c2b122 100644 --- a/docs/doxygen/html/classwx_g_l_string_array-members.html +++ b/docs/doxygen/html/classwx_g_l_string_array-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/classwx_g_l_string_array.html b/docs/doxygen/html/classwx_g_l_string_array.html index 58ba530..15335b3 100644 --- a/docs/doxygen/html/classwx_g_l_string_array.html +++ b/docs/doxygen/html/classwx_g_l_string_array.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/classwx_ribbon_metro_art_provider-members.html b/docs/doxygen/html/classwx_ribbon_metro_art_provider-members.html index 1d4cd26..a874837 100644 --- a/docs/doxygen/html/classwx_ribbon_metro_art_provider-members.html +++ b/docs/doxygen/html/classwx_ribbon_metro_art_provider-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/classwx_ribbon_metro_art_provider.html b/docs/doxygen/html/classwx_ribbon_metro_art_provider.html index 2fbf462..8019df1 100644 --- a/docs/doxygen/html/classwx_ribbon_metro_art_provider.html +++ b/docs/doxygen/html/classwx_ribbon_metro_art_provider.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/dir_ffd1f789ec7bd0a45fc6ad92579c5070.html b/docs/doxygen/html/dir_ffd1f789ec7bd0a45fc6ad92579c5070.html index a19b9a9..5a7d08d 100644 --- a/docs/doxygen/html/dir_ffd1f789ec7bd0a45fc6ad92579c5070.html +++ b/docs/doxygen/html/dir_ffd1f789ec7bd0a45fc6ad92579c5070.html @@ -21,6 +21,12 @@ <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> @@ -85,18 +91,102 @@ $(document).ready(function(){initNavTree('dir_ffd1f789ec7bd0a45fc6ad92579c5070.h <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a> 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:_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:_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> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_constant_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_constant_8h.html">Constant.h</a> <a href="_constant_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_constant_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_constant_form_8h.html">ConstantForm.h</a> <a href="_constant_form_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_control_editor_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_control_editor_8h.html">ControlEditor.h</a> <a href="_control_editor_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_control_element_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_control_element_8h.html">ControlElement.h</a> <a href="_control_element_8h_source.html">[code]</a></td></tr> +<tr class="memdesc:_control_element_8h"><td class="mdescLeft"> </td><td class="mdescRight">Base class of a control element. Provide general methods to other control classes. <br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_control_element_container_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_control_element_container_8h.html">ControlElementContainer.h</a> <a href="_control_element_container_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_control_element_solver_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_control_element_solver_8h.html">ControlElementSolver.h</a> <a href="_control_element_solver_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_control_system_test_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_control_system_test_8h.html">ControlSystemTest.h</a> <a href="_control_system_test_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </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:_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> +<tr class="memitem:_gain_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_gain_8h.html">Gain.h</a> <a href="_gain_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_gain_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_gain_form_8h.html">GainForm.h</a> <a href="_gain_form_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_general_properties_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_general_properties_form_8h.html">GeneralPropertiesForm.h</a> <a href="_general_properties_form_8h_source.html">[code]</a></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:_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:_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> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_limiter_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_limiter_8h.html">Limiter.h</a> <a href="_limiter_8h_source.html">[code]</a></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_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_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:_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:_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> +<tr class="memitem:_rate_limiter_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_rate_limiter_form_8h.html">RateLimiterForm.h</a> <a href="_rate_limiter_form_8h_source.html">[code]</a></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:_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_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_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:_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_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_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> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table> </div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/dir_ffd1f789ec7bd0a45fc6ad92579c5070.js b/docs/doxygen/html/dir_ffd1f789ec7bd0a45fc6ad92579c5070.js index 89bbc0b..241c27d 100644 --- a/docs/doxygen/html/dir_ffd1f789ec7bd0a45fc6ad92579c5070.js +++ b/docs/doxygen/html/dir_ffd1f789ec7bd0a45fc6ad92579c5070.js @@ -1,7 +1,9 @@ var dir_ffd1f789ec7bd0a45fc6ad92579c5070 = [ [ "AboutForm.cpp", "_about_form_8cpp_source.html", null ], - [ "AboutForm.h", "_about_form_8h_source.html", null ], + [ "AboutForm.h", "_about_form_8h.html", [ + [ "AboutForm", "class_about_form.html", "class_about_form" ] + ] ], [ "ArtMetro.cpp", "_art_metro_8cpp_source.html", null ], [ "ArtMetro.h", "_art_metro_8h_source.html", null ], [ "Branch.cpp", "_branch_8cpp_source.html", null ], @@ -9,38 +11,61 @@ var dir_ffd1f789ec7bd0a45fc6ad92579c5070 = [ "Bus.cpp", "_bus_8cpp_source.html", null ], [ "Bus.h", "_bus_8h_source.html", null ], [ "BusForm.cpp", "_bus_form_8cpp_source.html", null ], - [ "BusForm.h", "_bus_form_8h_source.html", null ], + [ "BusForm.h", "_bus_form_8h.html", [ + [ "BusForm", "class_bus_form.html", "class_bus_form" ] + ] ], [ "BusFormBitmaps.cpp", "_bus_form_bitmaps_8cpp_source.html", null ], [ "Camera.cpp", "_camera_8cpp_source.html", null ], - [ "Camera.h", "_camera_8h_source.html", null ], + [ "Camera.h", "_camera_8h.html", [ + [ "Camera", "class_camera.html", "class_camera" ] + ] ], [ "Capacitor.cpp", "_capacitor_8cpp_source.html", null ], [ "Capacitor.h", "_capacitor_8h_source.html", null ], [ "ChartView.cpp", "_chart_view_8cpp_source.html", null ], - [ "ChartView.h", "_chart_view_8h_source.html", null ], + [ "ChartView.h", "_chart_view_8h.html", [ + [ "ChartView", "class_chart_view.html", "class_chart_view" ] + ] ], [ "ChartViewBase.cpp", "_chart_view_base_8cpp_source.html", null ], [ "ChartViewBase.h", "_chart_view_base_8h_source.html", null ], [ "ChartViewBitmaps.cpp", "_chart_view_bitmaps_8cpp_source.html", null ], [ "ConnectionLine.cpp", "_connection_line_8cpp_source.html", null ], - [ "ConnectionLine.h", "_connection_line_8h_source.html", null ], + [ "ConnectionLine.h", "_connection_line_8h.html", [ + [ "ConnectionLine", "class_connection_line.html", "class_connection_line" ] + ] ], [ "Constant.cpp", "_constant_8cpp_source.html", null ], - [ "Constant.h", "_constant_8h_source.html", null ], + [ "Constant.h", "_constant_8h.html", [ + [ "Constant", "class_constant.html", "class_constant" ] + ] ], [ "ConstantForm.cpp", "_constant_form_8cpp_source.html", null ], - [ "ConstantForm.h", "_constant_form_8h_source.html", null ], + [ "ConstantForm.h", "_constant_form_8h.html", [ + [ "ConstantForm", "class_constant_form.html", "class_constant_form" ] + ] ], [ "ControlEditor.cpp", "_control_editor_8cpp_source.html", null ], - [ "ControlEditor.h", "_control_editor_8h_source.html", null ], + [ "ControlEditor.h", "_control_editor_8h.html", "_control_editor_8h" ], [ "ControlEditorBase.cpp", "_control_editor_base_8cpp_source.html", null ], [ "ControlEditorBase.h", "_control_editor_base_8h_source.html", null ], [ "ControlEditorBitmaps.cpp", "_control_editor_bitmaps_8cpp_source.html", null ], [ "ControlElement.cpp", "_control_element_8cpp_source.html", null ], - [ "ControlElement.h", "_control_element_8h_source.html", null ], + [ "ControlElement.h", "_control_element_8h.html", [ + [ "Node", "class_node.html", "class_node" ], + [ "ControlElement", "class_control_element.html", "class_control_element" ] + ] ], [ "ControlElementContainer.cpp", "_control_element_container_8cpp_source.html", null ], - [ "ControlElementContainer.h", "_control_element_container_8h_source.html", null ], + [ "ControlElementContainer.h", "_control_element_container_8h.html", [ + [ "ControlElementContainer", "class_control_element_container.html", "class_control_element_container" ] + ] ], [ "ControlElementSolver.cpp", "_control_element_solver_8cpp_source.html", null ], - [ "ControlElementSolver.h", "_control_element_solver_8h_source.html", null ], + [ "ControlElementSolver.h", "_control_element_solver_8h.html", [ + [ "ControlElementSolver", "class_control_element_solver.html", "class_control_element_solver" ] + ] ], [ "ControlSystemTest.cpp", "_control_system_test_8cpp_source.html", null ], - [ "ControlSystemTest.h", "_control_system_test_8h_source.html", null ], + [ "ControlSystemTest.h", "_control_system_test_8h.html", [ + [ "ControlSystemTest", "class_control_system_test.html", "class_control_system_test" ] + ] ], [ "DataReport.cpp", "_data_report_8cpp_source.html", null ], - [ "DataReport.h", "_data_report_8h_source.html", null ], + [ "DataReport.h", "_data_report_8h.html", [ + [ "DataReport", "class_data_report.html", "class_data_report" ] + ] ], [ "DataReportBase.cpp", "_data_report_base_8cpp_source.html", null ], [ "DataReportBase.h", "_data_report_base_8h_source.html", null ], [ "DataReportBitmaps.cpp", "_data_report_bitmaps_8cpp_source.html", null ], @@ -48,7 +73,10 @@ var dir_ffd1f789ec7bd0a45fc6ad92579c5070 = [ "ElectricCalculation.cpp", "_electric_calculation_8cpp_source.html", null ], [ "ElectricCalculation.h", "_electric_calculation_8h.html", "_electric_calculation_8h" ], [ "Electromechanical.cpp", "_electromechanical_8cpp_source.html", null ], - [ "Electromechanical.h", "_electromechanical_8h_source.html", null ], + [ "Electromechanical.h", "_electromechanical_8h.html", [ + [ "SyncMachineModelData", "struct_sync_machine_model_data.html", "struct_sync_machine_model_data" ], + [ "Electromechanical", "class_electromechanical.html", "class_electromechanical" ] + ] ], [ "Element.cpp", "_element_8cpp_source.html", null ], [ "Element.h", "_element_8h.html", "_element_8h" ], [ "ElementDataObject.cpp", "_element_data_object_8cpp_source.html", null ], @@ -59,57 +87,87 @@ var dir_ffd1f789ec7bd0a45fc6ad92579c5070 = [ "ElementPlotData.cpp", "_element_plot_data_8cpp_source.html", null ], [ "ElementPlotData.h", "_element_plot_data_8h_source.html", null ], [ "Exponential.cpp", "_exponential_8cpp_source.html", null ], - [ "Exponential.h", "_exponential_8h_source.html", null ], + [ "Exponential.h", "_exponential_8h.html", [ + [ "Exponential", "class_exponential.html", "class_exponential" ] + ] ], [ "ExponentialForm.cpp", "_exponential_form_8cpp_source.html", null ], - [ "ExponentialForm.h", "_exponential_form_8h_source.html", null ], + [ "ExponentialForm.h", "_exponential_form_8h.html", [ + [ "ExponentialForm", "class_exponential_form.html", "class_exponential_form" ] + ] ], [ "Fault.cpp", "_fault_8cpp_source.html", null ], [ "Fault.h", "_fault_8h.html", [ [ "Fault", "class_fault.html", "class_fault" ] ] ], [ "FileHanding.cpp", "_file_handing_8cpp_source.html", null ], - [ "FileHanding.h", "_file_handing_8h_source.html", null ], + [ "FileHanding.h", "_file_handing_8h.html", [ + [ "FileHanding", "class_file_handing.html", "class_file_handing" ] + ] ], [ "Gain.cpp", "_gain_8cpp_source.html", null ], - [ "Gain.h", "_gain_8h_source.html", null ], + [ "Gain.h", "_gain_8h.html", [ + [ "Gain", "class_gain.html", "class_gain" ] + ] ], [ "GainForm.cpp", "_gain_form_8cpp_source.html", null ], - [ "GainForm.h", "_gain_form_8h_source.html", null ], + [ "GainForm.h", "_gain_form_8h.html", [ + [ "GainForm", "class_gain_form.html", "class_gain_form" ] + ] ], [ "GeneralPropertiesForm.cpp", "_general_properties_form_8cpp_source.html", null ], - [ "GeneralPropertiesForm.h", "_general_properties_form_8h_source.html", null ], + [ "GeneralPropertiesForm.h", "_general_properties_form_8h.html", [ + [ "GeneralPropertiesForm", "class_general_properties_form.html", "class_general_properties_form" ] + ] ], [ "GeneratorStabForm.cpp", "_generator_stab_form_8cpp_source.html", null ], - [ "GeneratorStabForm.h", "_generator_stab_form_8h_source.html", null ], + [ "GeneratorStabForm.h", "_generator_stab_form_8h.html", [ + [ "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 ], [ "IndMotor.cpp", "_ind_motor_8cpp_source.html", null ], [ "IndMotor.h", "_ind_motor_8h_source.html", null ], [ "IndMotorForm.cpp", "_ind_motor_form_8cpp_source.html", null ], - [ "IndMotorForm.h", "_ind_motor_form_8h_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 ], [ "IOControl.cpp", "_i_o_control_8cpp_source.html", null ], - [ "IOControl.h", "_i_o_control_8h_source.html", null ], + [ "IOControl.h", "_i_o_control_8h.html", [ + [ "IOControl", "class_i_o_control.html", "class_i_o_control" ] + ] ], [ "IOControlForm.cpp", "_i_o_control_form_8cpp_source.html", null ], - [ "IOControlForm.h", "_i_o_control_form_8h_source.html", null ], + [ "IOControlForm.h", "_i_o_control_form_8h.html", [ + [ "IOControlForm", "class_i_o_control_form.html", "class_i_o_control_form" ] + ] ], [ "Limiter.cpp", "_limiter_8cpp_source.html", null ], - [ "Limiter.h", "_limiter_8h_source.html", null ], + [ "Limiter.h", "_limiter_8h.html", [ + [ "Limiter", "class_limiter.html", "class_limiter" ] + ] ], [ "LimiterForm.cpp", "_limiter_form_8cpp_source.html", null ], - [ "LimiterForm.h", "_limiter_form_8h_source.html", null ], + [ "LimiterForm.h", "_limiter_form_8h.html", [ + [ "LimiterForm", "class_limiter_form.html", "class_limiter_form" ] + ] ], [ "Line.cpp", "_line_8cpp_source.html", null ], [ "Line.h", "_line_8h_source.html", null ], [ "LineForm.cpp", "_line_form_8cpp_source.html", null ], - [ "LineForm.h", "_line_form_8h_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 ], [ "LoadForm.cpp", "_load_form_8cpp_source.html", null ], - [ "LoadForm.h", "_load_form_8h_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 ], [ "main.cpp", "main_8cpp_source.html", null ], [ "MainFrame.cpp", "_main_frame_8cpp_source.html", null ], - [ "MainFrame.h", "_main_frame_8h_source.html", null ], + [ "MainFrame.h", "_main_frame_8h.html", "_main_frame_8h" ], [ "MainFrameBase.cpp", "_main_frame_base_8cpp_source.html", null ], [ "MainFrameBase.h", "_main_frame_base_8h_source.html", null ], [ "MainFrameBitmaps.cpp", "_main_frame_bitmaps_8cpp_source.html", null ], [ "Multiplier.cpp", "_multiplier_8cpp_source.html", null ], - [ "Multiplier.h", "_multiplier_8h_source.html", null ], + [ "Multiplier.h", "_multiplier_8h.html", [ + [ "Multiplier", "class_multiplier.html", "class_multiplier" ] + ] ], [ "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 ], @@ -120,41 +178,61 @@ var dir_ffd1f789ec7bd0a45fc6ad92579c5070 = [ "PropertiesForm.h", "_properties_form_8h_source.html", null ], [ "PropertiesFormBitmaps.cpp", "_properties_form_bitmaps_8cpp_source.html", null ], [ "RateLimiter.cpp", "_rate_limiter_8cpp_source.html", null ], - [ "RateLimiter.h", "_rate_limiter_8h_source.html", null ], + [ "RateLimiter.h", "_rate_limiter_8h.html", [ + [ "RateLimiter", "class_rate_limiter.html", "class_rate_limiter" ] + ] ], [ "RateLimiterForm.cpp", "_rate_limiter_form_8cpp_source.html", null ], - [ "RateLimiterForm.h", "_rate_limiter_form_8h_source.html", null ], + [ "RateLimiterForm.h", "_rate_limiter_form_8h.html", [ + [ "RateLimiterForm", "class_rate_limiter_form.html", "class_rate_limiter_form" ] + ] ], [ "ReactiveShuntElementForm.cpp", "_reactive_shunt_element_form_8cpp_source.html", null ], - [ "ReactiveShuntElementForm.h", "_reactive_shunt_element_form_8h_source.html", null ], + [ "ReactiveShuntElementForm.h", "_reactive_shunt_element_form_8h.html", [ + [ "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 ], [ "SimulationsSettingsForm.cpp", "_simulations_settings_form_8cpp_source.html", null ], - [ "SimulationsSettingsForm.h", "_simulations_settings_form_8h_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 ], [ "SumForm.cpp", "_sum_form_8cpp_source.html", null ], - [ "SumForm.h", "_sum_form_8h_source.html", null ], + [ "SumForm.h", "_sum_form_8h.html", [ + [ "SumForm", "class_sum_form.html", "class_sum_form" ] + ] ], [ "SwitchingForm.cpp", "_switching_form_8cpp_source.html", null ], - [ "SwitchingForm.h", "_switching_form_8h_source.html", null ], + [ "SwitchingForm.h", "_switching_form_8h.html", [ + [ "SwitchingForm", "class_switching_form.html", "class_switching_form" ] + ] ], [ "SyncGenerator.cpp", "_sync_generator_8cpp_source.html", null ], [ "SyncGenerator.h", "_sync_generator_8h_source.html", null ], [ "SyncMachineForm.cpp", "_sync_machine_form_8cpp_source.html", null ], - [ "SyncMachineForm.h", "_sync_machine_form_8h_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 ], [ "Text.cpp", "_text_8cpp_source.html", null ], [ "Text.h", "_text_8h_source.html", null ], [ "TextForm.cpp", "_text_form_8cpp_source.html", null ], - [ "TextForm.h", "_text_form_8h_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 ], [ "TransferFunctionForm.cpp", "_transfer_function_form_8cpp_source.html", null ], - [ "TransferFunctionForm.h", "_transfer_function_form_8h_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 ], [ "TransformerForm.cpp", "_transformer_form_8cpp_source.html", null ], - [ "TransformerForm.h", "_transformer_form_8h_source.html", null ], + [ "TransformerForm.h", "_transformer_form_8h.html", [ + [ "TransformerForm", "class_transformer_form.html", "class_transformer_form" ] + ] ], [ "Workspace.cpp", "_workspace_8cpp_source.html", null ], - [ "Workspace.h", "_workspace_8h_source.html", null ], + [ "Workspace.h", "_workspace_8h.html", "_workspace_8h" ], [ "WorkspaceBase.cpp", "_workspace_base_8cpp_source.html", null ], [ "WorkspaceBase.h", "_workspace_base_8h_source.html", null ], [ "WorkspaceBitmaps.cpp", "_workspace_bitmaps_8cpp_source.html", null ], diff --git a/docs/doxygen/html/files.html b/docs/doxygen/html/files.html index d9a8eb6..f045c65 100644 --- a/docs/doxygen/html/files.html +++ b/docs/doxygen/html/files.html @@ -21,6 +21,12 @@ <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> @@ -86,7 +92,7 @@ $(document).ready(function(){initNavTree('files.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:0px;display:inline-block;"> </span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">►</span><span id="img_0_" class="iconfclosed" onclick="toggleFolder('0_')"> </span><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html" target="_self">Project</a></td><td class="desc"></td></tr> <tr id="row_0_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_about_form_8cpp_source.html"><span class="icondoc"></span></a><b>AboutForm.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_1_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_about_form_8h_source.html"><span class="icondoc"></span></a><b>AboutForm.h</b></td><td class="desc"></td></tr> +<tr id="row_0_1_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_about_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_about_form_8h.html" target="_self">AboutForm.h</a></td><td class="desc"></td></tr> <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> @@ -94,38 +100,38 @@ $(document).ready(function(){initNavTree('files.html','');}); <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_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><b>BusForm.h</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><b>Camera.h</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_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><b>ChartView.h</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> <tr id="row_0_18_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_chart_view_base_8h_source.html"><span class="icondoc"></span></a><b>ChartViewBase.h</b></td><td class="desc"></td></tr> <tr id="row_0_19_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_chart_view_bitmaps_8cpp_source.html"><span class="icondoc"></span></a><b>ChartViewBitmaps.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_20_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_connection_line_8cpp_source.html"><span class="icondoc"></span></a><b>ConnectionLine.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_21_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_connection_line_8h_source.html"><span class="icondoc"></span></a><b>ConnectionLine.h</b></td><td class="desc"></td></tr> +<tr id="row_0_21_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_connection_line_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_connection_line_8h.html" target="_self">ConnectionLine.h</a></td><td class="desc"></td></tr> <tr id="row_0_22_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_constant_8cpp_source.html"><span class="icondoc"></span></a><b>Constant.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_23_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_constant_8h_source.html"><span class="icondoc"></span></a><b>Constant.h</b></td><td class="desc"></td></tr> +<tr id="row_0_23_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_constant_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_constant_8h.html" target="_self">Constant.h</a></td><td class="desc"></td></tr> <tr id="row_0_24_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_constant_form_8cpp_source.html"><span class="icondoc"></span></a><b>ConstantForm.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_25_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_constant_form_8h_source.html"><span class="icondoc"></span></a><b>ConstantForm.h</b></td><td class="desc"></td></tr> +<tr id="row_0_25_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_constant_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_constant_form_8h.html" target="_self">ConstantForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_26_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_editor_8cpp_source.html"><span class="icondoc"></span></a><b>ControlEditor.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_27_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_editor_8h_source.html"><span class="icondoc"></span></a><b>ControlEditor.h</b></td><td class="desc"></td></tr> +<tr id="row_0_27_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_editor_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_control_editor_8h.html" target="_self">ControlEditor.h</a></td><td class="desc"></td></tr> <tr id="row_0_28_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_editor_base_8cpp_source.html"><span class="icondoc"></span></a><b>ControlEditorBase.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_29_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_editor_base_8h_source.html"><span class="icondoc"></span></a><b>ControlEditorBase.h</b></td><td class="desc"></td></tr> <tr id="row_0_30_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_editor_bitmaps_8cpp_source.html"><span class="icondoc"></span></a><b>ControlEditorBitmaps.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_31_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_element_8cpp_source.html"><span class="icondoc"></span></a><b>ControlElement.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_32_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_element_8h_source.html"><span class="icondoc"></span></a><b>ControlElement.h</b></td><td class="desc"></td></tr> +<tr id="row_0_32_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_element_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_control_element_8h.html" target="_self">ControlElement.h</a></td><td class="desc">Base class of a control element. Provide general methods to other control classes </td></tr> <tr id="row_0_33_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_element_container_8cpp_source.html"><span class="icondoc"></span></a><b>ControlElementContainer.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_34_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_element_container_8h_source.html"><span class="icondoc"></span></a><b>ControlElementContainer.h</b></td><td class="desc"></td></tr> +<tr id="row_0_34_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_element_container_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_control_element_container_8h.html" target="_self">ControlElementContainer.h</a></td><td class="desc"></td></tr> <tr id="row_0_35_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_element_solver_8cpp_source.html"><span class="icondoc"></span></a><b>ControlElementSolver.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_36_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_element_solver_8h_source.html"><span class="icondoc"></span></a><b>ControlElementSolver.h</b></td><td class="desc"></td></tr> +<tr id="row_0_36_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_element_solver_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_control_element_solver_8h.html" target="_self">ControlElementSolver.h</a></td><td class="desc"></td></tr> <tr id="row_0_37_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_system_test_8cpp_source.html"><span class="icondoc"></span></a><b>ControlSystemTest.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_38_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_system_test_8h_source.html"><span class="icondoc"></span></a><b>ControlSystemTest.h</b></td><td class="desc"></td></tr> +<tr id="row_0_38_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_control_system_test_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_control_system_test_8h.html" target="_self">ControlSystemTest.h</a></td><td class="desc"></td></tr> <tr id="row_0_39_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_data_report_8cpp_source.html"><span class="icondoc"></span></a><b>DataReport.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_40_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_data_report_8h_source.html"><span class="icondoc"></span></a><b>DataReport.h</b></td><td class="desc"></td></tr> +<tr id="row_0_40_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_data_report_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_data_report_8h.html" target="_self">DataReport.h</a></td><td class="desc"></td></tr> <tr id="row_0_41_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_data_report_base_8cpp_source.html"><span class="icondoc"></span></a><b>DataReportBase.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_42_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_data_report_base_8h_source.html"><span class="icondoc"></span></a><b>DataReportBase.h</b></td><td class="desc"></td></tr> <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> @@ -133,7 +139,7 @@ $(document).ready(function(){initNavTree('files.html','');}); <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_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><b>Electromechanical.h</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_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_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> @@ -144,55 +150,55 @@ $(document).ready(function(){initNavTree('files.html','');}); <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_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><b>Exponential.h</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><b>ExponentialForm.h</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_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><b>FileHanding.h</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> -<tr id="row_0_67_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_gain_8h_source.html"><span class="icondoc"></span></a><b>Gain.h</b></td><td class="desc"></td></tr> +<tr id="row_0_67_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_gain_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_gain_8h.html" target="_self">Gain.h</a></td><td class="desc"></td></tr> <tr id="row_0_68_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_gain_form_8cpp_source.html"><span class="icondoc"></span></a><b>GainForm.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_69_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_gain_form_8h_source.html"><span class="icondoc"></span></a><b>GainForm.h</b></td><td class="desc"></td></tr> +<tr id="row_0_69_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_gain_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_gain_form_8h.html" target="_self">GainForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_70_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_general_properties_form_8cpp_source.html"><span class="icondoc"></span></a><b>GeneralPropertiesForm.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_71_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_general_properties_form_8h_source.html"><span class="icondoc"></span></a><b>GeneralPropertiesForm.h</b></td><td class="desc"></td></tr> +<tr id="row_0_71_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_general_properties_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_general_properties_form_8h.html" target="_self">GeneralPropertiesForm.h</a></td><td class="desc"></td></tr> <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><b>GeneratorStabForm.h</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_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_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><b>IndMotorForm.h</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_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><b>IOControl.h</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> -<tr id="row_0_85_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_i_o_control_form_8h_source.html"><span class="icondoc"></span></a><b>IOControlForm.h</b></td><td class="desc"></td></tr> +<tr id="row_0_85_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_i_o_control_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_i_o_control_form_8h.html" target="_self">IOControlForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_86_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_limiter_8cpp_source.html"><span class="icondoc"></span></a><b>Limiter.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_87_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_limiter_8h_source.html"><span class="icondoc"></span></a><b>Limiter.h</b></td><td class="desc"></td></tr> +<tr id="row_0_87_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_limiter_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_limiter_8h.html" target="_self">Limiter.h</a></td><td class="desc"></td></tr> <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><b>LimiterForm.h</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_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><b>LineForm.h</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_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><b>LoadForm.h</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_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><b>MainFrame.h</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> <tr id="row_0_103_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_main_frame_base_8cpp_source.html"><span class="icondoc"></span></a><b>MainFrameBase.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_104_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_main_frame_base_8h_source.html"><span class="icondoc"></span></a><b>MainFrameBase.h</b></td><td class="desc"></td></tr> <tr id="row_0_105_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_main_frame_bitmaps_8cpp_source.html"><span class="icondoc"></span></a><b>MainFrameBitmaps.cpp</b></td><td class="desc"></td></tr> <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><b>Multiplier.h</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_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> @@ -203,41 +209,41 @@ $(document).ready(function(){initNavTree('files.html','');}); <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> <tr id="row_0_117_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_rate_limiter_8cpp_source.html"><span class="icondoc"></span></a><b>RateLimiter.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_118_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_rate_limiter_8h_source.html"><span class="icondoc"></span></a><b>RateLimiter.h</b></td><td class="desc"></td></tr> +<tr id="row_0_118_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_rate_limiter_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_rate_limiter_8h.html" target="_self">RateLimiter.h</a></td><td class="desc"></td></tr> <tr id="row_0_119_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_rate_limiter_form_8cpp_source.html"><span class="icondoc"></span></a><b>RateLimiterForm.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_120_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_rate_limiter_form_8h_source.html"><span class="icondoc"></span></a><b>RateLimiterForm.h</b></td><td class="desc"></td></tr> +<tr id="row_0_120_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_rate_limiter_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_rate_limiter_form_8h.html" target="_self">RateLimiterForm.h</a></td><td class="desc"></td></tr> <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><b>ReactiveShuntElementForm.h</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_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><b>SimulationsSettingsForm.h</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_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><b>SumForm.h</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><b>SwitchingForm.h</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_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><b>SyncMachineForm.h</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_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_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><b>TextForm.h</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_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><b>TransferFunctionForm.h</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_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><b>TransformerForm.h</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> -<tr id="row_0_152_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_workspace_8h_source.html"><span class="icondoc"></span></a><b>Workspace.h</b></td><td class="desc"></td></tr> +<tr id="row_0_152_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_workspace_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_workspace_8h.html" target="_self">Workspace.h</a></td><td class="desc"></td></tr> <tr id="row_0_153_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_workspace_base_8cpp_source.html"><span class="icondoc"></span></a><b>WorkspaceBase.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_154_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_workspace_base_8h_source.html"><span class="icondoc"></span></a><b>WorkspaceBase.h</b></td><td class="desc"></td></tr> <tr id="row_0_155_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_workspace_bitmaps_8cpp_source.html"><span class="icondoc"></span></a><b>WorkspaceBitmaps.cpp</b></td><td class="desc"></td></tr> diff --git a/docs/doxygen/html/functions.html b/docs/doxygen/html/functions.html index 87942d3..d88ea1f 100644 --- a/docs/doxygen/html/functions.html +++ b/docs/doxygen/html/functions.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_0x7e.html b/docs/doxygen/html/functions_0x7e.html index 3b57d24..039d464 100644 --- a/docs/doxygen/html/functions_0x7e.html +++ b/docs/doxygen/html/functions_0x7e.html @@ -21,6 +21,12 @@ <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> @@ -90,6 +96,9 @@ $(document).ready(function(){initNavTree('functions_0x7e.html','');}); <li>~Fault() : <a class="el" href="class_fault.html#a42019654142cd8187b314e43d70262eb">Fault</a> </li> +<li>~MainFrame() +: <a class="el" href="class_main_frame.html#a0cfd88ece4836e0ea5430bd55370bf11">MainFrame</a> +</li> <li>~OpenGLColour() : <a class="el" href="class_open_g_l_colour.html#a4b9a726773b4c82935f15add648ed2a0">OpenGLColour</a> </li> diff --git a/docs/doxygen/html/functions_b.html b/docs/doxygen/html/functions_b.html index 5a50ef8..37a86ac 100644 --- a/docs/doxygen/html/functions_b.html +++ b/docs/doxygen/html/functions_b.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_c.html b/docs/doxygen/html/functions_c.html index ac040a0..9313eeb 100644 --- a/docs/doxygen/html/functions_c.html +++ b/docs/doxygen/html/functions_c.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_d.html b/docs/doxygen/html/functions_d.html index c5d1285..22efd8e 100644 --- a/docs/doxygen/html/functions_d.html +++ b/docs/doxygen/html/functions_d.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_dup.js b/docs/doxygen/html/functions_dup.js index fbb7b94..0478871 100644 --- a/docs/doxygen/html/functions_dup.js +++ b/docs/doxygen/html/functions_dup.js @@ -17,5 +17,6 @@ var functions_dup = [ "s", "functions_s.html", null ], [ "u", "functions_u.html", null ], [ "w", "functions_w.html", null ], + [ "x", "functions_x.html", null ], [ "~", "functions_0x7e.html", null ] ];
\ No newline at end of file diff --git a/docs/doxygen/html/functions_e.html b/docs/doxygen/html/functions_e.html index 2190b7b..2f9eccf 100644 --- a/docs/doxygen/html/functions_e.html +++ b/docs/doxygen/html/functions_e.html @@ -21,6 +21,12 @@ <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> @@ -81,12 +87,18 @@ $(document).ready(function(){initNavTree('functions_e.html','');}); <div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div> <h3><a id="index_e"></a>- e -</h3><ul> +<li>ed +: <a class="el" href="struct_sync_machine_model_data.html#ad2bda1ac696b664571e33f657f4a81b6">SyncMachineModelData</a> +</li> <li>ElectricCalculation() : <a class="el" href="class_electric_calculation.html#a6663e7a20e96ee975bd0f7d54b8a6f70">ElectricCalculation</a> </li> <li>Element() : <a class="el" href="class_element.html#ab0d0e20be9a36ae676202db753faeec9">Element</a> </li> +<li>eq +: <a class="el" href="struct_sync_machine_model_data.html#a810b9e3250ebb8f3d4176f6e5a2b1076">SyncMachineModelData</a> +</li> </ul> </div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/functions_f.html b/docs/doxygen/html/functions_f.html index e02fa0a..abaf0b0 100644 --- a/docs/doxygen/html/functions_f.html +++ b/docs/doxygen/html/functions_f.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_func.html b/docs/doxygen/html/functions_func.html index 43ec58f..47ba1b5 100644 --- a/docs/doxygen/html/functions_func.html +++ b/docs/doxygen/html/functions_func.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_func_0x7e.html b/docs/doxygen/html/functions_func_0x7e.html index ec04ab7..32db6a2 100644 --- a/docs/doxygen/html/functions_func_0x7e.html +++ b/docs/doxygen/html/functions_func_0x7e.html @@ -21,6 +21,12 @@ <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> @@ -90,6 +96,9 @@ $(document).ready(function(){initNavTree('functions_func_0x7e.html','');}); <li>~Fault() : <a class="el" href="class_fault.html#a42019654142cd8187b314e43d70262eb">Fault</a> </li> +<li>~MainFrame() +: <a class="el" href="class_main_frame.html#a0cfd88ece4836e0ea5430bd55370bf11">MainFrame</a> +</li> <li>~OpenGLColour() : <a class="el" href="class_open_g_l_colour.html#a4b9a726773b4c82935f15add648ed2a0">OpenGLColour</a> </li> diff --git a/docs/doxygen/html/functions_func_b.html b/docs/doxygen/html/functions_func_b.html index eac5c8a..c756e0d 100644 --- a/docs/doxygen/html/functions_func_b.html +++ b/docs/doxygen/html/functions_func_b.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_func_c.html b/docs/doxygen/html/functions_func_c.html index 5e24983..9663c8b 100644 --- a/docs/doxygen/html/functions_func_c.html +++ b/docs/doxygen/html/functions_func_c.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_func_d.html b/docs/doxygen/html/functions_func_d.html index 55cf683..0c8d85f 100644 --- a/docs/doxygen/html/functions_func_d.html +++ b/docs/doxygen/html/functions_func_d.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_func_e.html b/docs/doxygen/html/functions_func_e.html index 354dfde..9629404 100644 --- a/docs/doxygen/html/functions_func_e.html +++ b/docs/doxygen/html/functions_func_e.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_func_f.html b/docs/doxygen/html/functions_func_f.html index 200f223..9e5d825 100644 --- a/docs/doxygen/html/functions_func_f.html +++ b/docs/doxygen/html/functions_func_f.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_func_g.html b/docs/doxygen/html/functions_func_g.html index 3c6571b..9990e70 100644 --- a/docs/doxygen/html/functions_func_g.html +++ b/docs/doxygen/html/functions_func_g.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_func_h.html b/docs/doxygen/html/functions_func_h.html index 97d8a98..fb6ab85 100644 --- a/docs/doxygen/html/functions_func_h.html +++ b/docs/doxygen/html/functions_func_h.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_func_i.html b/docs/doxygen/html/functions_func_i.html index e65ea25..994ffa1 100644 --- a/docs/doxygen/html/functions_func_i.html +++ b/docs/doxygen/html/functions_func_i.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_func_m.html b/docs/doxygen/html/functions_func_m.html index 7f25004..059247f 100644 --- a/docs/doxygen/html/functions_func_m.html +++ b/docs/doxygen/html/functions_func_m.html @@ -21,6 +21,12 @@ <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> @@ -81,6 +87,9 @@ $(document).ready(function(){initNavTree('functions_func_m.html','');});   <h3><a id="index_m"></a>- m -</h3><ul> +<li>MainFrame() +: <a class="el" href="class_main_frame.html#a667b44053cae174a361cfd21124ef995">MainFrame</a> +</li> <li>Move() : <a class="el" href="class_branch.html#a7cf4b117f43f49bb76cce3df5521fb70">Branch</a> , <a class="el" href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7">ConnectionLine</a> diff --git a/docs/doxygen/html/functions_func_n.html b/docs/doxygen/html/functions_func_n.html index 68647c1..0092d43 100644 --- a/docs/doxygen/html/functions_func_n.html +++ b/docs/doxygen/html/functions_func_n.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_func_o.html b/docs/doxygen/html/functions_func_o.html index 6562f3f..cbc1792 100644 --- a/docs/doxygen/html/functions_func_o.html +++ b/docs/doxygen/html/functions_func_o.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_func_p.html b/docs/doxygen/html/functions_func_p.html index ea93c75..1fc08c0 100644 --- a/docs/doxygen/html/functions_func_p.html +++ b/docs/doxygen/html/functions_func_p.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_func_r.html b/docs/doxygen/html/functions_func_r.html index 63a3e70..5e4cecb 100644 --- a/docs/doxygen/html/functions_func_r.html +++ b/docs/doxygen/html/functions_func_r.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_func_s.html b/docs/doxygen/html/functions_func_s.html index 5d1cb9f..2de3bc7 100644 --- a/docs/doxygen/html/functions_func_s.html +++ b/docs/doxygen/html/functions_func_s.html @@ -21,6 +21,12 @@ <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> @@ -176,6 +182,9 @@ $(document).ready(function(){initNavTree('functions_func_s.html','');}); <li>ShowPickbox() : <a class="el" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">Element</a> </li> +<li>Solve() +: <a class="el" href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29">RateLimiter</a> +</li> <li>StartMove() : <a class="el" href="class_branch.html#a947cec45fcdc78d01eaabe19d23daf64">Branch</a> , <a class="el" href="class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36">ConnectionLine</a> diff --git a/docs/doxygen/html/functions_func_u.html b/docs/doxygen/html/functions_func_u.html index 00adefe..78e4a3f 100644 --- a/docs/doxygen/html/functions_func_u.html +++ b/docs/doxygen/html/functions_func_u.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_func_w.html b/docs/doxygen/html/functions_func_w.html index 3f86c30..b9ae11f 100644 --- a/docs/doxygen/html/functions_func_w.html +++ b/docs/doxygen/html/functions_func_w.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_g.html b/docs/doxygen/html/functions_g.html index 196387f..5ea6bb4 100644 --- a/docs/doxygen/html/functions_g.html +++ b/docs/doxygen/html/functions_g.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_h.html b/docs/doxygen/html/functions_h.html index 578f5d1..a89a4ae 100644 --- a/docs/doxygen/html/functions_h.html +++ b/docs/doxygen/html/functions_h.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_i.html b/docs/doxygen/html/functions_i.html index 275eca4..62654ab 100644 --- a/docs/doxygen/html/functions_i.html +++ b/docs/doxygen/html/functions_i.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_m.html b/docs/doxygen/html/functions_m.html index 22b0427..2287903 100644 --- a/docs/doxygen/html/functions_m.html +++ b/docs/doxygen/html/functions_m.html @@ -21,6 +21,12 @@ <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> @@ -84,6 +90,9 @@ $(document).ready(function(){initNavTree('functions_m.html','');}); <li>m : <a class="el" href="struct_integration_constant.html#adafabd0d37a52d4ed054a800cbce3d65">IntegrationConstant</a> </li> +<li>MainFrame() +: <a class="el" href="class_main_frame.html#a667b44053cae174a361cfd21124ef995">MainFrame</a> +</li> <li>Move() : <a class="el" href="class_branch.html#a7cf4b117f43f49bb76cce3df5521fb70">Branch</a> , <a class="el" href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7">ConnectionLine</a> diff --git a/docs/doxygen/html/functions_n.html b/docs/doxygen/html/functions_n.html index 4ef753d..d184509 100644 --- a/docs/doxygen/html/functions_n.html +++ b/docs/doxygen/html/functions_n.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_o.html b/docs/doxygen/html/functions_o.html index 8d61f81..00eb930 100644 --- a/docs/doxygen/html/functions_o.html +++ b/docs/doxygen/html/functions_o.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_p.html b/docs/doxygen/html/functions_p.html index 336cb9d..7344a84 100644 --- a/docs/doxygen/html/functions_p.html +++ b/docs/doxygen/html/functions_p.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_r.html b/docs/doxygen/html/functions_r.html index bb33999..83e1ddf 100644 --- a/docs/doxygen/html/functions_r.html +++ b/docs/doxygen/html/functions_r.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_s.html b/docs/doxygen/html/functions_s.html index 4ff8fc5..0a6ad94 100644 --- a/docs/doxygen/html/functions_s.html +++ b/docs/doxygen/html/functions_s.html @@ -21,6 +21,12 @@ <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> @@ -176,6 +182,9 @@ $(document).ready(function(){initNavTree('functions_s.html','');}); <li>ShowPickbox() : <a class="el" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">Element</a> </li> +<li>Solve() +: <a class="el" href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29">RateLimiter</a> +</li> <li>StartMove() : <a class="el" href="class_branch.html#a947cec45fcdc78d01eaabe19d23daf64">Branch</a> , <a class="el" href="class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36">ConnectionLine</a> diff --git a/docs/doxygen/html/functions_u.html b/docs/doxygen/html/functions_u.html index e94d380..1cbccf5 100644 --- a/docs/doxygen/html/functions_u.html +++ b/docs/doxygen/html/functions_u.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_vars.html b/docs/doxygen/html/functions_vars.html index 9192693..dad8f11 100644 --- a/docs/doxygen/html/functions_vars.html +++ b/docs/doxygen/html/functions_vars.html @@ -21,6 +21,12 @@ <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> @@ -82,6 +88,12 @@ $(document).ready(function(){initNavTree('functions_vars.html','');}); <li>c : <a class="el" href="struct_integration_constant.html#afc3598097377951b84492d087a06b455">IntegrationConstant</a> </li> +<li>ed +: <a class="el" href="struct_sync_machine_model_data.html#ad2bda1ac696b664571e33f657f4a81b6">SyncMachineModelData</a> +</li> +<li>eq +: <a class="el" href="struct_sync_machine_model_data.html#a810b9e3250ebb8f3d4176f6e5a2b1076">SyncMachineModelData</a> +</li> <li>m : <a class="el" href="struct_integration_constant.html#adafabd0d37a52d4ed054a800cbce3d65">IntegrationConstant</a> </li> @@ -91,6 +103,12 @@ $(document).ready(function(){initNavTree('functions_vars.html','');}); <li>swType : <a class="el" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">SwitchingData</a> </li> +<li>xd +: <a class="el" href="struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330">SyncMachineModelData</a> +</li> +<li>xq +: <a class="el" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">SyncMachineModelData</a> +</li> </ul> </div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/functions_w.html b/docs/doxygen/html/functions_w.html index 7cb51ad..4fcee61 100644 --- a/docs/doxygen/html/functions_w.html +++ b/docs/doxygen/html/functions_w.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/functions_x.html b/docs/doxygen/html/functions_x.html new file mode 100644 index 0000000..7782f52 --- /dev/null +++ b/docs/doxygen/html/functions_x.html @@ -0,0 +1,108 @@ +<!-- 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>Class Members</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('functions_x.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="contents"> +<div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div> + +<h3><a id="index_x"></a>- x -</h3><ul> +<li>xd +: <a class="el" href="struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330">SyncMachineModelData</a> +</li> +<li>xq +: <a class="el" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">SyncMachineModelData</a> +</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <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/globals.html b/docs/doxygen/html/globals.html index 19ade4d..43a7bc4 100644 --- a/docs/doxygen/html/globals.html +++ b/docs/doxygen/html/globals.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/globals_enum.html b/docs/doxygen/html/globals_enum.html index 85e484a..ffbca27 100644 --- a/docs/doxygen/html/globals_enum.html +++ b/docs/doxygen/html/globals_enum.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/globals_eval.html b/docs/doxygen/html/globals_eval.html index ea8fc6e..c7a65f8 100644 --- a/docs/doxygen/html/globals_eval.html +++ b/docs/doxygen/html/globals_eval.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/hierarchy.html b/docs/doxygen/html/hierarchy.html index 762b63c..8d0d95e 100644 --- a/docs/doxygen/html/hierarchy.html +++ b/docs/doxygen/html/hierarchy.html @@ -21,6 +21,12 @@ <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> @@ -85,24 +91,25 @@ $(document).ready(function(){initNavTree('hierarchy.html','');}); <div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory"> <div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</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="struct_bus_electrical_data.html" target="_self">BusElectricalData</a></td><td class="desc"></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_camera.html" target="_self">Camera</a></td><td class="desc"></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_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_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"></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"></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_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"></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"></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"></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"></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"></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"></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"></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"></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_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> @@ -122,14 +129,14 @@ $(document).ready(function(){initNavTree('hierarchy.html','');}); <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_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"></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_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"></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_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> @@ -137,82 +144,83 @@ $(document).ready(function(){initNavTree('hierarchy.html','');}); <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_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_motor_electrical_data.html" target="_self">SyncMotorElectricalData</a></td><td class="desc"></td></tr> -<tr id="row_25_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_25_" class="arrow" onclick="toggleFolder('25_')">▼</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_25_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_25_0_" class="arrow" onclick="toggleFolder('25_0_')">►</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_25_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="classwx_g_l_number_renderer.html" target="_self">wxGLNumberRenderer</a></td><td class="desc"></td></tr> -<tr id="row_26_"><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_27_" 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_28_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_28_" class="arrow" onclick="toggleFolder('28_')">▼</span><span class="icona"><span class="icon">C</span></span><b>wxApp</b></td><td class="desc"></td></tr> -<tr id="row_28_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_main_app.html" target="_self">MainApp</a></td><td class="desc"></td></tr> -<tr id="row_29_"><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>wxDataObjectSimple</b></td><td class="desc"></td></tr> -<tr id="row_29_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_element_data_object.html" target="_self">ElementDataObject</a></td><td class="desc"></td></tr> -<tr id="row_30_"><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>wxDialog</b></td><td class="desc"></td></tr> -<tr id="row_30_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_0_" class="arrow" onclick="toggleFolder('30_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_30_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_about_form.html" target="_self">AboutForm</a></td><td class="desc"></td></tr> -<tr id="row_30_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_1_" class="arrow" onclick="toggleFolder('30_1_')">►</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_30_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_bus_form.html" target="_self">BusForm</a></td><td class="desc"></td></tr> -<tr id="row_30_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_2_" class="arrow" onclick="toggleFolder('30_2_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_constant_form_base.html" target="_self">ConstantFormBase</a></td><td class="desc"></td></tr> -<tr id="row_30_2_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_constant_form.html" target="_self">ConstantForm</a></td><td class="desc"></td></tr> -<tr id="row_30_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_3_" class="arrow" onclick="toggleFolder('30_3_')">►</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_30_3_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_control_system_test.html" target="_self">ControlSystemTest</a></td><td class="desc"></td></tr> -<tr id="row_30_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_4_" class="arrow" onclick="toggleFolder('30_4_')">►</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_30_4_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_exponential_form.html" target="_self">ExponentialForm</a></td><td class="desc"></td></tr> -<tr id="row_30_5_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_5_" class="arrow" onclick="toggleFolder('30_5_')">►</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_30_5_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_gain_form.html" target="_self">GainForm</a></td><td class="desc"></td></tr> -<tr id="row_30_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_6_" class="arrow" onclick="toggleFolder('30_6_')">►</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_30_6_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_general_properties_form.html" target="_self">GeneralPropertiesForm</a></td><td class="desc"></td></tr> -<tr id="row_30_7_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_7_" class="arrow" onclick="toggleFolder('30_7_')">►</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_30_7_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_generator_stab_form.html" target="_self">GeneratorStabForm</a></td><td class="desc"></td></tr> -<tr id="row_30_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_8_" class="arrow" onclick="toggleFolder('30_8_')">►</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_30_8_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_ind_motor_form.html" target="_self">IndMotorForm</a></td><td class="desc"></td></tr> -<tr id="row_30_9_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_9_" class="arrow" onclick="toggleFolder('30_9_')">►</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_30_9_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_i_o_control_form.html" target="_self">IOControlForm</a></td><td class="desc"></td></tr> -<tr id="row_30_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_10_" class="arrow" onclick="toggleFolder('30_10_')">►</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_30_10_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_limiter_form.html" target="_self">LimiterForm</a></td><td class="desc"></td></tr> -<tr id="row_30_11_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_11_" class="arrow" onclick="toggleFolder('30_11_')">►</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_30_11_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_line_form.html" target="_self">LineForm</a></td><td class="desc"></td></tr> -<tr id="row_30_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_12_" class="arrow" onclick="toggleFolder('30_12_')">►</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_30_12_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_load_form.html" target="_self">LoadForm</a></td><td class="desc"></td></tr> -<tr id="row_30_13_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_13_" class="arrow" onclick="toggleFolder('30_13_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_rate_limiter_form_base.html" target="_self">RateLimiterFormBase</a></td><td class="desc"></td></tr> -<tr id="row_30_13_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_rate_limiter_form.html" target="_self">RateLimiterForm</a></td><td class="desc"></td></tr> -<tr id="row_30_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_14_" class="arrow" onclick="toggleFolder('30_14_')">►</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_30_14_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_reactive_shunt_element_form.html" target="_self">ReactiveShuntElementForm</a></td><td class="desc"></td></tr> -<tr id="row_30_15_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_15_" class="arrow" onclick="toggleFolder('30_15_')">►</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_30_15_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_simulations_settings_form.html" target="_self">SimulationsSettingsForm</a></td><td class="desc"></td></tr> -<tr id="row_30_16_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_16_" class="arrow" onclick="toggleFolder('30_16_')">►</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_30_16_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_sum_form.html" target="_self">SumForm</a></td><td class="desc"></td></tr> -<tr id="row_30_17_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_17_" class="arrow" onclick="toggleFolder('30_17_')">►</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_30_17_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_switching_form.html" target="_self">SwitchingForm</a></td><td class="desc"></td></tr> -<tr id="row_30_18_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_18_" class="arrow" onclick="toggleFolder('30_18_')">►</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_30_18_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_sync_machine_form.html" target="_self">SyncMachineForm</a></td><td class="desc"></td></tr> -<tr id="row_30_19_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_19_" class="arrow" onclick="toggleFolder('30_19_')">►</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_30_19_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_form.html" target="_self">TextForm</a></td><td class="desc"></td></tr> -<tr id="row_30_20_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_20_" class="arrow" onclick="toggleFolder('30_20_')">►</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_30_20_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_transfer_function_form.html" target="_self">TransferFunctionForm</a></td><td class="desc"></td></tr> -<tr id="row_30_21_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_30_21_" class="arrow" onclick="toggleFolder('30_21_')">►</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> -<tr id="row_30_21_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_transformer_form.html" target="_self">TransformerForm</a></td><td class="desc"></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>wxFrame</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_chart_view_base.html" target="_self">ChartViewBase</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_chart_view.html" target="_self">ChartView</a></td><td class="desc"></td></tr> -<tr id="row_31_1_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_1_" class="arrow" onclick="toggleFolder('31_1_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_control_editor_base.html" target="_self">ControlEditorBase</a></td><td class="desc"></td></tr> -<tr id="row_31_1_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_control_editor.html" target="_self">ControlEditor</a></td><td class="desc"></td></tr> -<tr id="row_31_2_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_2_" class="arrow" onclick="toggleFolder('31_2_')">►</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_31_2_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_data_report.html" target="_self">DataReport</a></td><td class="desc"></td></tr> -<tr id="row_31_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_3_" class="arrow" onclick="toggleFolder('31_3_')">►</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_31_3_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_main_frame.html" target="_self">MainFrame</a></td><td class="desc"></td></tr> -<tr id="row_32_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwx_g_l_string_array.html" target="_self">wxGLStringArray</a></td><td class="desc"></td></tr> -<tr id="row_33_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_33_" class="arrow" onclick="toggleFolder('33_')">▼</span><span class="icona"><span class="icon">C</span></span><b>wxPanel</b></td><td class="desc"></td></tr> -<tr id="row_33_0_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_33_0_" class="arrow" onclick="toggleFolder('33_0_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_workspace_base.html" target="_self">WorkspaceBase</a></td><td class="desc"></td></tr> -<tr id="row_33_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_workspace.html" target="_self">Workspace</a></td><td class="desc"></td></tr> -<tr id="row_34_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_34_" class="arrow" onclick="toggleFolder('34_')">▼</span><span class="icona"><span class="icon">C</span></span><b>wxRibbonMSWArtProvider</b></td><td class="desc"></td></tr> -<tr id="row_34_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="classwx_ribbon_metro_art_provider.html" target="_self">wxRibbonMetroArtProvider</a></td><td class="desc"></td></tr> -<tr id="row_35_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_35_" class="arrow" onclick="toggleFolder('35_')">▼</span><span class="icona"><span class="icon">C</span></span><b>wxString</b></td><td class="desc"></td></tr> -<tr id="row_35_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="classwx_g_l_string.html" target="_self">wxGLString</a></td><td class="desc"></td></tr> -<tr id="row_36_" class="even"><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>wxTreeItemData</b></td><td class="desc"></td></tr> -<tr id="row_36_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_plot_data.html" target="_self">PlotData</a></td><td class="desc"></td></tr> -<tr id="row_37_" class="even"><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>wxWindow</b></td><td class="desc"></td></tr> -<tr id="row_37_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_control_element_button.html" target="_self">ControlElementButton</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> +<tr id="row_26_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_26_" class="arrow" onclick="toggleFolder('26_')">▼</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_26_0_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_26_0_" class="arrow" onclick="toggleFolder('26_0_')">►</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_26_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="classwx_g_l_number_renderer.html" target="_self">wxGLNumberRenderer</a></td><td class="desc"></td></tr> +<tr id="row_27_" 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_texture.html" target="_self">TextTexture</a></td><td class="desc"></td></tr> +<tr id="row_28_"><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_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_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> +<tr id="row_31_1_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_1_" class="arrow" onclick="toggleFolder('31_1_')">►</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_31_1_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_bus_form.html" target="_self">BusForm</a></td><td class="desc">Form to edit the bus power data </td></tr> +<tr id="row_31_2_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_2_" class="arrow" onclick="toggleFolder('31_2_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_constant_form_base.html" target="_self">ConstantFormBase</a></td><td class="desc"></td></tr> +<tr id="row_31_2_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_constant_form.html" target="_self">ConstantForm</a></td><td class="desc">Form to edit the constant control data </td></tr> +<tr id="row_31_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_3_" class="arrow" onclick="toggleFolder('31_3_')">►</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_31_3_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_control_system_test.html" target="_self">ControlSystemTest</a></td><td class="desc">Form to edit properties to test the control system created </td></tr> +<tr id="row_31_4_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_4_" class="arrow" onclick="toggleFolder('31_4_')">►</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_31_4_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_exponential_form.html" target="_self">ExponentialForm</a></td><td class="desc">Form to edit the exponential control data </td></tr> +<tr id="row_31_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_5_" class="arrow" onclick="toggleFolder('31_5_')">►</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_31_5_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_gain_form.html" target="_self">GainForm</a></td><td class="desc">Form to edit the gain control data </td></tr> +<tr id="row_31_6_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_6_" class="arrow" onclick="toggleFolder('31_6_')">►</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_31_6_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_general_properties_form.html" target="_self">GeneralPropertiesForm</a></td><td class="desc">Form to edit the software's general data </td></tr> +<tr id="row_31_7_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_7_" class="arrow" onclick="toggleFolder('31_7_')">►</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_31_7_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_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_31_8_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_8_" class="arrow" onclick="toggleFolder('31_8_')">►</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_31_8_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_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_31_9_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_9_" class="arrow" onclick="toggleFolder('31_9_')">►</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_31_9_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_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_31_10_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_10_" class="arrow" onclick="toggleFolder('31_10_')">►</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_31_10_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_limiter_form.html" target="_self">LimiterForm</a></td><td class="desc">Form to edit the limit control data </td></tr> +<tr id="row_31_11_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_11_" class="arrow" onclick="toggleFolder('31_11_')">►</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_31_11_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_line_form.html" target="_self">LineForm</a></td><td class="desc">Form to edit the line power data </td></tr> +<tr id="row_31_12_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_12_" class="arrow" onclick="toggleFolder('31_12_')">►</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_31_12_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_load_form.html" target="_self">LoadForm</a></td><td class="desc">Form to edit the load power data </td></tr> +<tr id="row_31_13_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_13_" class="arrow" onclick="toggleFolder('31_13_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_rate_limiter_form_base.html" target="_self">RateLimiterFormBase</a></td><td class="desc"></td></tr> +<tr id="row_31_13_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_rate_limiter_form.html" target="_self">RateLimiterForm</a></td><td class="desc">Form to edit the rate limit control data </td></tr> +<tr id="row_31_14_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_14_" class="arrow" onclick="toggleFolder('31_14_')">►</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_31_14_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_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_31_15_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_15_" class="arrow" onclick="toggleFolder('31_15_')">►</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_31_15_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_simulations_settings_form.html" target="_self">SimulationsSettingsForm</a></td><td class="desc">Form to edit the simulation data </td></tr> +<tr id="row_31_16_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_16_" class="arrow" onclick="toggleFolder('31_16_')">►</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_31_16_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_sum_form.html" target="_self">SumForm</a></td><td class="desc">Form to edit the sum control data </td></tr> +<tr id="row_31_17_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_17_" class="arrow" onclick="toggleFolder('31_17_')">►</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_31_17_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_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_31_18_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_18_" class="arrow" onclick="toggleFolder('31_18_')">►</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_31_18_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_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_31_19_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_19_" class="arrow" onclick="toggleFolder('31_19_')">►</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_31_19_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_text_form.html" target="_self">TextForm</a></td><td class="desc">Form to edit the text graphical data </td></tr> +<tr id="row_31_20_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_20_" class="arrow" onclick="toggleFolder('31_20_')">►</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_31_20_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_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_31_21_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_21_" class="arrow" onclick="toggleFolder('31_21_')">►</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> +<tr id="row_31_21_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_transformer_form.html" target="_self">TransformerForm</a></td><td class="desc">Form to edit the transformer power data </td></tr> +<tr id="row_32_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_32_" class="arrow" onclick="toggleFolder('32_')">▼</span><span class="icona"><span class="icon">C</span></span><b>wxFrame</b></td><td class="desc"></td></tr> +<tr id="row_32_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_32_0_" class="arrow" onclick="toggleFolder('32_0_')">►</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> +<tr id="row_32_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_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_32_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_32_1_" class="arrow" onclick="toggleFolder('32_1_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_control_editor_base.html" target="_self">ControlEditorBase</a></td><td class="desc"></td></tr> +<tr id="row_32_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_control_editor.html" target="_self">ControlEditor</a></td><td class="desc"></td></tr> +<tr id="row_32_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_32_2_" class="arrow" onclick="toggleFolder('32_2_')">►</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_32_2_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_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_32_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_32_3_" class="arrow" onclick="toggleFolder('32_3_')">►</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_32_3_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_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_33_" 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="classwx_g_l_string_array.html" target="_self">wxGLStringArray</a></td><td class="desc"></td></tr> +<tr id="row_34_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_34_" class="arrow" onclick="toggleFolder('34_')">▼</span><span class="icona"><span class="icon">C</span></span><b>wxPanel</b></td><td class="desc"></td></tr> +<tr id="row_34_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_34_0_" class="arrow" onclick="toggleFolder('34_0_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_workspace_base.html" target="_self">WorkspaceBase</a></td><td class="desc"></td></tr> +<tr id="row_34_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_workspace.html" target="_self">Workspace</a></td><td class="desc">This class manages the graphical and power elements. It is responsible for handling the user's interaction with the elements </td></tr> +<tr id="row_35_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_35_" class="arrow" onclick="toggleFolder('35_')">▼</span><span class="icona"><span class="icon">C</span></span><b>wxRibbonMSWArtProvider</b></td><td class="desc"></td></tr> +<tr id="row_35_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_ribbon_metro_art_provider.html" target="_self">wxRibbonMetroArtProvider</a></td><td class="desc"></td></tr> +<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_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> </div><!-- directory --> </div><!-- contents --> diff --git a/docs/doxygen/html/hierarchy.js b/docs/doxygen/html/hierarchy.js index 78ffac8..8746d59 100644 --- a/docs/doxygen/html/hierarchy.js +++ b/docs/doxygen/html/hierarchy.js @@ -61,6 +61,7 @@ var hierarchy = [ "TransferFunction::SpaceState", "struct_transfer_function_1_1_space_state.html", null ], [ "SwitchingData", "struct_switching_data.html", null ], [ "SyncGeneratorElectricalData", "struct_sync_generator_electrical_data.html", null ], + [ "SyncMachineModelData", "struct_sync_machine_model_data.html", null ], [ "SyncMotorElectricalData", "struct_sync_motor_electrical_data.html", null ], [ "TextGLDrawable", "class_text_g_l_drawable.html", [ [ "wxGLString", "classwx_g_l_string.html", [ diff --git a/docs/doxygen/html/index.html b/docs/doxygen/html/index.html index 3c9baea..0c4eb86 100644 --- a/docs/doxygen/html/index.html +++ b/docs/doxygen/html/index.html @@ -21,6 +21,12 @@ <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> @@ -84,8 +90,8 @@ $(document).ready(function(){initNavTree('index.html','');}); <div class="contents"> <div class="textblock"><h3>Developers</h3> <ul> -<li>Thales Lima Oliveira</li> -<li>Geraldo Caixeta Guimarães</li> +<li>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></li> +<li>Geraldo Caixeta Guimarães <a href="#" onclick="location.href='mai'+'lto:'+'gca'+'ix'+'eta'+'@u'+'fu.'+'br'; return false;">gcaix<span style="display: none;">.nosp@m.</span>eta@<span style="display: none;">.nosp@m.</span>ufu.b<span style="display: none;">.nosp@m.</span>r</a></li> </ul> <h3>Date</h3> <p>September 14, 2017</p> diff --git a/docs/doxygen/html/main_8cpp_source.html b/docs/doxygen/html/main_8cpp_source.html index 039e008..b9759c9 100644 --- a/docs/doxygen/html/main_8cpp_source.html +++ b/docs/doxygen/html/main_8cpp_source.html @@ -21,6 +21,12 @@ <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> @@ -82,9 +88,10 @@ $(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> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "MainFrame.h"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "PropertiesData.h"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Define the MainApp</span></div><div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="class_main_app.html"> 11</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="l00012"></a><span class="lineno"> 12</span> {</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <a class="code" href="class_main_app.html">MainApp</a>() {}</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">virtual</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="keywordtype">bool</span> LoadInitFile(<a class="code" href="class_properties_data.html">PropertiesData</a>* propertiesData)</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>  wxTextFile file(<span class="stringliteral">"config.ini"</span>);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keyword">auto</span> data = propertiesData->GetGeneralPropertiesData();</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="keywordflow">if</span>(!file.Create()) {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keywordflow">if</span>(!file.Open()) <span class="keywordflow">return</span> <span class="keyword">false</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>  wxString line;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">for</span>(line = file.GetFirstLine(); !file.Eof(); line = file.GetNextLine()) {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxString tag = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  wxString tagValue = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">bool</span> parseValue = <span class="keyword">false</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</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="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">if</span>(line[i] == <span class="charliteral">'='</span>) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  parseValue = <span class="keyword">true</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">if</span>(parseValue)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  tagValue += line[i];</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>  tag += line[i];</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>  <span class="comment">// Language</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">if</span>(tag == <span class="stringliteral">"lang"</span>) {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</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="l00042"></a><span class="lineno"> 42</span>  data.language = wxLANGUAGE_PORTUGUESE_BRAZILIAN;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</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="l00044"></a><span class="lineno"> 44</span>  data.language = wxLANGUAGE_ENGLISH;</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="keywordflow">if</span>(tag == <span class="stringliteral">"theme"</span>) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span>(tagValue == <span class="stringliteral">"light"</span>) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  data.theme = THEME_LIGHT;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagValue == <span class="stringliteral">"dark"</span>) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  data.theme = THEME_DARK;</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>  }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  file.Close();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  } <span class="keywordflow">else</span> { <span class="comment">// Create default init file.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span>(!file.Open()) <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">// Default parameters.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  file.AddLine(<span class="stringliteral">"lang=en"</span>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  file.AddLine(<span class="stringliteral">"theme=light"</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>  file.Write();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  file.Close();</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>  data.language = wxLANGUAGE_ENGLISH;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  data.theme = THEME_LIGHT;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  propertiesData->SetGeneralPropertiesData(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> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  propertiesData->SetGeneralPropertiesData(data);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> <span class="keyword">true</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> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</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="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  locale->Init(propertiesData->GetGeneralPropertiesData().language, wxLOCALE_DONT_LOAD_DEFAULT);</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>  wxFileName fn(wxStandardPaths::Get().GetExecutablePath());</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  wxString langPath = fn.GetPath() + <span class="stringliteral">"\\..\\data\\lang"</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  locale->AddCatalogLookupPathPrefix(langPath);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// Load translation catalogs.</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  locale->AddCatalog(wxT(<span class="stringliteral">"pt_BR"</span>), wxLANGUAGE_PORTUGUESE_BRAZILIAN);</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="keyword">virtual</span> <span class="keywordtype">bool</span> OnInit()</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">// Add image handlers</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  wxImage::AddHandler(<span class="keyword">new</span> wxPNGHandler);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  wxImage::AddHandler(<span class="keyword">new</span> wxJPEGHandler);</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>  <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="l00093"></a><span class="lineno"> 93</span>  LoadInitFile(propertiesData);</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>  wxLocale* locale = <span class="keyword">new</span> wxLocale();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  LoadCatalogs(locale, propertiesData);</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>  <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);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  mainFrame->SetIcon(wxICON(aaaaprogicon));</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  SetTopWindow(mainFrame);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> GetTopWindow()->Show();</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> DECLARE_APP(<a class="code" href="class_main_app.html">MainApp</a>)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</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#l00040">PropertiesData.h:40</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="ttdef"><b>Definition:</b> <a href="_main_frame_8h_source.html#l00033">MainFrame.h:33</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#l00011">main.cpp:11</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 "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="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> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/menudata.js b/docs/doxygen/html/menudata.js index a35c4c6..d712cee 100644 --- a/docs/doxygen/html/menudata.js +++ b/docs/doxygen/html/menudata.js @@ -23,6 +23,7 @@ var menudata={children:[ {text:"s",url:"functions_s.html#index_s"}, {text:"u",url:"functions_u.html#index_u"}, {text:"w",url:"functions_w.html#index_w"}, +{text:"x",url:"functions_x.html#index_x"}, {text:"~",url:"functions_0x7e.html#index_0x7e"}]}, {text:"Functions",url:"functions_func.html",children:[ {text:"a",url:"functions_func.html#index_a"}, diff --git a/docs/doxygen/html/navtreedata.js b/docs/doxygen/html/navtreedata.js index 9d2bfe1..f3c89b9 100644 --- a/docs/doxygen/html/navtreedata.js +++ b/docs/doxygen/html/navtreedata.js @@ -25,19 +25,19 @@ var NAVTREE = var NAVTREEINDEX = [ "_about_form_8cpp_source.html", -"class_about_form_base.html#a74341fb9c17f6320745444ea4eb76df8", -"class_chart_view_base.html#a4083de6c29b7ab0997217c32e246ee0b", -"class_control_element_container.html", -"class_electromechanical.html#ac51fdb6f0ae13514b6986f99a782532a", -"class_file_handing.html#ae85e5c9173a850b8165939fef18c8c88", -"class_i_o_control_form_base.html#a0e3c563e83daad1b146c3145a1f344dc", -"class_load.html", -"class_node.html#a16217ea768b7bad76285e779bdc819c7", -"class_simulations_settings_form_base.html#a76d9c02a5e8293274ff5ca30da5f3875", -"class_sync_machine_form_base.html#aedf1ffdbc6b3cec7614126d733a12f4a", -"class_transformer.html#a328c419af15701734168c8db62eefa36", -"classwx_g_l_string_array.html#a6923a709d67ada5b713549bc706bdddd", -"struct_sync_generator_electrical_data.html#aef18b7163c5e2b9e6e2c671b3939480d" +"_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" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/docs/doxygen/html/navtreeindex0.js b/docs/doxygen/html/navtreeindex0.js index ebe2a90..baa673c 100644 --- a/docs/doxygen/html/navtreeindex0.js +++ b/docs/doxygen/html/navtreeindex0.js @@ -1,6 +1,7 @@ var NAVTREEINDEX0 = { "_about_form_8cpp_source.html":[1,0,0,0], +"_about_form_8h.html":[1,0,0,1], "_about_form_8h_source.html":[1,0,0,1], "_art_metro_8cpp_source.html":[1,0,0,2], "_art_metro_8h_source.html":[1,0,0,3], @@ -9,37 +10,59 @@ var NAVTREEINDEX0 = "_bus_8cpp_source.html":[1,0,0,6], "_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], "_bus_form_8h_source.html":[1,0,0,9], "_bus_form_bitmaps_8cpp_source.html":[1,0,0,10], "_camera_8cpp_source.html":[1,0,0,11], +"_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_source.html":[1,0,0,14], "_chart_view_8cpp_source.html":[1,0,0,15], +"_chart_view_8h.html":[1,0,0,16], "_chart_view_8h_source.html":[1,0,0,16], "_chart_view_base_8cpp_source.html":[1,0,0,17], "_chart_view_base_8h_source.html":[1,0,0,18], "_chart_view_bitmaps_8cpp_source.html":[1,0,0,19], "_connection_line_8cpp_source.html":[1,0,0,20], +"_connection_line_8h.html":[1,0,0,21], "_connection_line_8h_source.html":[1,0,0,21], "_constant_8cpp_source.html":[1,0,0,22], +"_constant_8h.html":[1,0,0,23], "_constant_8h_source.html":[1,0,0,23], "_constant_form_8cpp_source.html":[1,0,0,24], +"_constant_form_8h.html":[1,0,0,25], "_constant_form_8h_source.html":[1,0,0,25], "_control_editor_8cpp_source.html":[1,0,0,26], +"_control_editor_8h.html":[1,0,0,27], +"_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076":[1,0,0,27,2], +"_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076a007742cc97c341c08b014bc2e0385c40":[1,0,0,27,2,4], +"_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076a39af4bb4f8a6a60d53796dc24c7ef52e":[1,0,0,27,2,3], +"_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076a4db14943629d93315bc091b2d7e8ac1b":[1,0,0,27,2,6], +"_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076a82d160d51a00e0512485fb0afff4a09a":[1,0,0,27,2,0], +"_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076a9f541dfe8890f2636816ed2d7f8d07d7":[1,0,0,27,2,7], +"_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076aa141db7d0f650ecdc828cb8f36fe6ac8":[1,0,0,27,2,1], +"_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076abc8cc51c937d00684cb6967548dbbe12":[1,0,0,27,2,5], +"_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076ac09b0c2232a1d94b9cf4caeeff65a959":[1,0,0,27,2,2], +"_control_editor_8h.html#a8b2fbb4494abb95ea860e1b6b3cb7076aec5fbed678b51ff6e1b215cb36ac9bfa":[1,0,0,27,2,8], "_control_editor_8h_source.html":[1,0,0,27], "_control_editor_base_8cpp_source.html":[1,0,0,28], "_control_editor_base_8h_source.html":[1,0,0,29], "_control_editor_bitmaps_8cpp_source.html":[1,0,0,30], "_control_element_8cpp_source.html":[1,0,0,31], +"_control_element_8h.html":[1,0,0,32], "_control_element_8h_source.html":[1,0,0,32], "_control_element_container_8cpp_source.html":[1,0,0,33], +"_control_element_container_8h.html":[1,0,0,34], "_control_element_container_8h_source.html":[1,0,0,34], "_control_element_solver_8cpp_source.html":[1,0,0,35], +"_control_element_solver_8h.html":[1,0,0,36], "_control_element_solver_8h_source.html":[1,0,0,36], "_control_system_test_8cpp_source.html":[1,0,0,37], +"_control_system_test_8h.html":[1,0,0,38], "_control_system_test_8h_source.html":[1,0,0,38], "_data_report_8cpp_source.html":[1,0,0,39], +"_data_report_8h.html":[1,0,0,40], "_data_report_8h_source.html":[1,0,0,40], "_data_report_base_8cpp_source.html":[1,0,0,41], "_data_report_base_8h_source.html":[1,0,0,42], @@ -64,6 +87,7 @@ var NAVTREEINDEX0 = "_electric_calculation_8h.html#aa48d3d150889a89c491c9792ca3bc8a5afe82ead3835d251dfa6f0e453465caec":[1,0,0,46,3,2], "_electric_calculation_8h_source.html":[1,0,0,46], "_electromechanical_8cpp_source.html":[1,0,0,47], +"_electromechanical_8h.html":[1,0,0,48], "_electromechanical_8h_source.html":[1,0,0,48], "_element_8cpp_source.html":[1,0,0,49], "_element_8h.html":[1,0,0,50], @@ -91,54 +115,79 @@ var NAVTREEINDEX0 = "_element_plot_data_8cpp_source.html":[1,0,0,56], "_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], "_exponential_8h_source.html":[1,0,0,59], "_exponential_form_8cpp_source.html":[1,0,0,60], +"_exponential_form_8h.html":[1,0,0,61], "_exponential_form_8h_source.html":[1,0,0,61], "_fault_8cpp_source.html":[1,0,0,62], "_fault_8h.html":[1,0,0,63], "_fault_8h_source.html":[1,0,0,63], "_file_handing_8cpp_source.html":[1,0,0,64], +"_file_handing_8h.html":[1,0,0,65], "_file_handing_8h_source.html":[1,0,0,65], "_gain_8cpp_source.html":[1,0,0,66], +"_gain_8h.html":[1,0,0,67], "_gain_8h_source.html":[1,0,0,67], "_gain_form_8cpp_source.html":[1,0,0,68], +"_gain_form_8h.html":[1,0,0,69], "_gain_form_8h_source.html":[1,0,0,69], "_general_properties_form_8cpp_source.html":[1,0,0,70], +"_general_properties_form_8h.html":[1,0,0,71], "_general_properties_form_8h_source.html":[1,0,0,71], "_generator_stab_form_8cpp_source.html":[1,0,0,72], +"_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_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], "_i_o_control_8h_source.html":[1,0,0,83], "_i_o_control_form_8cpp_source.html":[1,0,0,84], +"_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_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_source.html":[1,0,0,81], "_limiter_8cpp_source.html":[1,0,0,86], +"_limiter_8h.html":[1,0,0,87], "_limiter_8h_source.html":[1,0,0,87], "_limiter_form_8cpp_source.html":[1,0,0,88], +"_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_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_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_source.html":[1,0,0,99], "_main_frame_8cpp_source.html":[1,0,0,101], +"_main_frame_8h.html":[1,0,0,102], +"_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a0448f71ade0850cce41f666113d61646":[1,0,0,102,5], +"_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a19b41804a810ff58604d9a2e98a12d9b":[1,0,0,102,6], +"_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a713348ad9d91573d5729b0a8b8e66e04":[1,0,0,102,9], +"_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a78ef6f7d5925a2d3f66fb4b985cde4c8":[1,0,0,102,4], +"_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a88478f64002d3686cd141ab42431c654":[1,0,0,102,8], +"_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a8f622d047e7be05ca22e68cf3c495891":[1,0,0,102,2], +"_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7a972a4490c2c106d50fad31bf61c954ee":[1,0,0,102,1], +"_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7ac723eda89da3d08df66556102f04fb3f":[1,0,0,102,3], +"_main_frame_8h.html#adf764cbdea00d65edcd07bb9953ad2b7ae8447bb338d69f233187fa7ecddb269b":[1,0,0,102,7], "_main_frame_8h_source.html":[1,0,0,102], "_main_frame_base_8cpp_source.html":[1,0,0,103], "_main_frame_base_8h_source.html":[1,0,0,104], "_main_frame_bitmaps_8cpp_source.html":[1,0,0,105], "_multiplier_8cpp_source.html":[1,0,0,106], +"_multiplier_8h.html":[1,0,0,107], "_multiplier_8h_source.html":[1,0,0,107], "_power_element_8cpp_source.html":[1,0,0,108], "_power_element_8h.html":[1,0,0,109], @@ -189,65 +238,16 @@ var NAVTREEINDEX0 = "_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_source.html":[1,0,0,126], -"_sum_8cpp_source.html":[1,0,0,127], -"_sum_8h_source.html":[1,0,0,128], -"_sum_form_8cpp_source.html":[1,0,0,129], -"_sum_form_8h_source.html":[1,0,0,130], -"_switching_form_8cpp_source.html":[1,0,0,131], -"_switching_form_8h_source.html":[1,0,0,132], -"_sync_generator_8cpp_source.html":[1,0,0,133], -"_sync_generator_8h_source.html":[1,0,0,134], -"_sync_machine_form_8cpp_source.html":[1,0,0,135], -"_sync_machine_form_8h_source.html":[1,0,0,136], -"_sync_motor_8cpp_source.html":[1,0,0,137], -"_sync_motor_8h_source.html":[1,0,0,138], -"_text_8cpp_source.html":[1,0,0,139], -"_text_8h_source.html":[1,0,0,140], -"_text_form_8cpp_source.html":[1,0,0,141], -"_text_form_8h_source.html":[1,0,0,142], -"_transfer_function_8cpp_source.html":[1,0,0,143], -"_transfer_function_8h_source.html":[1,0,0,144], -"_transfer_function_form_8cpp_source.html":[1,0,0,145], -"_transfer_function_form_8h_source.html":[1,0,0,146], -"_transformer_8cpp_source.html":[1,0,0,147], -"_transformer_8h_source.html":[1,0,0,148], -"_transformer_form_8cpp_source.html":[1,0,0,149], -"_transformer_form_8h_source.html":[1,0,0,150], -"_workspace_8cpp_source.html":[1,0,0,151], -"_workspace_8h_source.html":[1,0,0,152], -"_workspace_base_8cpp_source.html":[1,0,0,153], -"_workspace_base_8h_source.html":[1,0,0,154], -"_workspace_bitmaps_8cpp_source.html":[1,0,0,155], -"annotated.html":[0,0], -"class_about_form.html":[0,0,0], -"class_about_form.html#a30a97b3857200c4cd50364b26d4cd3bb":[0,0,0,3], -"class_about_form.html#a7c793ce416f184e009c72a198af116da":[0,0,0,2], -"class_about_form.html#a856a64c4b8545cf8c8fa1b6f23080341":[0,0,0,0], -"class_about_form.html#a87f1730d731ee0c7529d4af84fac92fc":[0,0,0,1], -"class_about_form_base.html":[0,0,1], -"class_about_form_base.html#a01a0cbc42c52e7eb69fa1337f756af7d":[0,0,1,18], -"class_about_form_base.html#a02da06240394048e693c6ae3e2a69282":[0,0,1,16], -"class_about_form_base.html#a1fae6815dc4f49df45f05f3893a332c7":[0,0,1,13], -"class_about_form_base.html#a306c84f41395aee3200b887ec71ff11a":[0,0,1,21], -"class_about_form_base.html#a34d37030073f1e71cc233a8d0d4a27dc":[0,0,1,19], -"class_about_form_base.html#a37e22612779e67b33b66f6a3a7bb60c1":[0,0,1,11], -"class_about_form_base.html#a3dbb1a9739786e22307f7ae4fb0617f1":[0,0,1,20], -"class_about_form_base.html#a428f630068bebd4e0fdd258c0b8cd2ac":[0,0,1,7], -"class_about_form_base.html#a4438eded1319f84ed19cf0350d819efb":[0,0,1,8], -"class_about_form_base.html#a4470b5bcf193376d3a8849bdcba2acd4":[0,0,1,24], -"class_about_form_base.html#a490a133019381aa2569ca04f517829ea":[0,0,1,9], -"class_about_form_base.html#a5a2bb84e1eb7fc3b92d82a68fc93858a":[0,0,1,4], -"class_about_form_base.html#a64ea9b42b326b773067de6d1b4f649f4":[0,0,1,14], -"class_about_form_base.html#a6a33f787646eea29e95441b05c0409df":[0,0,1,26], -"class_about_form_base.html#a6d243c886c28b231279798dd3cca6df4":[0,0,1,22], -"class_about_form_base.html#a6fcacff0bfb56d11923d0f80e5560f70":[0,0,1,17] +"_simulations_settings_form_8h.html":[1,0,0,126] }; diff --git a/docs/doxygen/html/navtreeindex1.js b/docs/doxygen/html/navtreeindex1.js index efac229..5ec91ef 100644 --- a/docs/doxygen/html/navtreeindex1.js +++ b/docs/doxygen/html/navtreeindex1.js @@ -1,5 +1,77 @@ var NAVTREEINDEX1 = { +"_simulations_settings_form_8h_source.html":[1,0,0,126], +"_sum_8cpp_source.html":[1,0,0,127], +"_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], +"_sum_form_8h_source.html":[1,0,0,130], +"_switching_form_8cpp_source.html":[1,0,0,131], +"_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_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_source.html":[1,0,0,138], +"_text_8cpp_source.html":[1,0,0,139], +"_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_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_source.html":[1,0,0,148], +"_transformer_form_8cpp_source.html":[1,0,0,149], +"_transformer_form_8h.html":[1,0,0,150], +"_transformer_form_8h_source.html":[1,0,0,150], +"_workspace_8cpp_source.html":[1,0,0,151], +"_workspace_8h.html":[1,0,0,152], +"_workspace_8h.html#a8f434816783a791128b48a39ae663f15":[1,0,0,152,1], +"_workspace_8h.html#a8f434816783a791128b48a39ae663f15a0b19c55f1dfecc32f6572a67d37e8cc2":[1,0,0,152,1,9], +"_workspace_8h.html#a8f434816783a791128b48a39ae663f15a1ef615af10b75825208fe612934cd993":[1,0,0,152,1,0], +"_workspace_8h.html#a8f434816783a791128b48a39ae663f15a51add6c28e024f17f0d0dde52e23f466":[1,0,0,152,1,10], +"_workspace_8h.html#a8f434816783a791128b48a39ae663f15a7088a60d72d0730404f0965f10dd0786":[1,0,0,152,1,5], +"_workspace_8h.html#a8f434816783a791128b48a39ae663f15a7ce9843fb67511c2e4b20c707ad590d8":[1,0,0,152,1,1], +"_workspace_8h.html#a8f434816783a791128b48a39ae663f15a85788d6fc58afde943ce8bb130461ac1":[1,0,0,152,1,3], +"_workspace_8h.html#a8f434816783a791128b48a39ae663f15a89ae894b55baca13320fdc0f71345795":[1,0,0,152,1,7], +"_workspace_8h.html#a8f434816783a791128b48a39ae663f15ac3e3dcfd8b3450a32dd2665d542695f2":[1,0,0,152,1,6], +"_workspace_8h.html#a8f434816783a791128b48a39ae663f15ad22104a7215f22fd9bcca5d8b56889ef":[1,0,0,152,1,8], +"_workspace_8h.html#a8f434816783a791128b48a39ae663f15adc8df3f3cd5a626ee5c327423dd7d825":[1,0,0,152,1,4], +"_workspace_8h.html#a8f434816783a791128b48a39ae663f15aec53219b0d127b0c7c48bce6bc6618bb":[1,0,0,152,1,2], +"_workspace_8h_source.html":[1,0,0,152], +"_workspace_base_8cpp_source.html":[1,0,0,153], +"_workspace_base_8h_source.html":[1,0,0,154], +"_workspace_bitmaps_8cpp_source.html":[1,0,0,155], +"annotated.html":[0,0], +"class_about_form.html":[0,0,0], +"class_about_form.html#a30a97b3857200c4cd50364b26d4cd3bb":[0,0,0,3], +"class_about_form.html#a7c793ce416f184e009c72a198af116da":[0,0,0,2], +"class_about_form.html#a856a64c4b8545cf8c8fa1b6f23080341":[0,0,0,0], +"class_about_form.html#a87f1730d731ee0c7529d4af84fac92fc":[0,0,0,1], +"class_about_form_base.html":[0,0,1], +"class_about_form_base.html#a01a0cbc42c52e7eb69fa1337f756af7d":[0,0,1,18], +"class_about_form_base.html#a02da06240394048e693c6ae3e2a69282":[0,0,1,16], +"class_about_form_base.html#a1fae6815dc4f49df45f05f3893a332c7":[0,0,1,13], +"class_about_form_base.html#a306c84f41395aee3200b887ec71ff11a":[0,0,1,21], +"class_about_form_base.html#a34d37030073f1e71cc233a8d0d4a27dc":[0,0,1,19], +"class_about_form_base.html#a37e22612779e67b33b66f6a3a7bb60c1":[0,0,1,11], +"class_about_form_base.html#a3dbb1a9739786e22307f7ae4fb0617f1":[0,0,1,20], +"class_about_form_base.html#a428f630068bebd4e0fdd258c0b8cd2ac":[0,0,1,7], +"class_about_form_base.html#a4438eded1319f84ed19cf0350d819efb":[0,0,1,8], +"class_about_form_base.html#a4470b5bcf193376d3a8849bdcba2acd4":[0,0,1,24], +"class_about_form_base.html#a490a133019381aa2569ca04f517829ea":[0,0,1,9], +"class_about_form_base.html#a5a2bb84e1eb7fc3b92d82a68fc93858a":[0,0,1,4], +"class_about_form_base.html#a64ea9b42b326b773067de6d1b4f649f4":[0,0,1,14], +"class_about_form_base.html#a6a33f787646eea29e95441b05c0409df":[0,0,1,26], +"class_about_form_base.html#a6d243c886c28b231279798dd3cca6df4":[0,0,1,22], +"class_about_form_base.html#a6fcacff0bfb56d11923d0f80e5560f70":[0,0,1,17], "class_about_form_base.html#a74341fb9c17f6320745444ea4eb76df8":[0,0,1,10], "class_about_form_base.html#a8d70d38cc7eb8f41bd833f18aafeaf30":[0,0,1,2], "class_about_form_base.html#aa52e54457b4cf595f1714a0320458e6c":[0,0,1,0], @@ -177,77 +249,5 @@ var NAVTREEINDEX1 = "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], -"class_capacitor.html#a00e808708e16b87c80fc650e5710b84e":[0,0,8,10], -"class_capacitor.html#a05d5517b64dd8a8888817ca28b72294d":[0,0,8,6], -"class_capacitor.html#a2c3f0949c2b791c6a0b69866e9aaff7a":[0,0,8,12], -"class_capacitor.html#a422e353b594ac6e4ef34e1f613f7d580":[0,0,8,7], -"class_capacitor.html#a459b1bbdb153bb9720176661e2960ea6":[0,0,8,14], -"class_capacitor.html#a503100032b983414ef469907e4f3fd6a":[0,0,8,8], -"class_capacitor.html#a581f07c0fa802bbdd0f35a70cc79d3b4":[0,0,8,15], -"class_capacitor.html#a6b06adb1ef3545b220e0b94ee6210b7a":[0,0,8,11], -"class_capacitor.html#a94d378c922467214b394931ec0eb01c8":[0,0,8,5], -"class_capacitor.html#a994039e59a8ae0ec3fe7cf7f5b66e4e5":[0,0,8,4], -"class_capacitor.html#ab2c5403403c3f8b4ee1ae737ece4e1cc":[0,0,8,13], -"class_capacitor.html#ab7047062b5e731e86815fe5b61e622da":[0,0,8,1], -"class_capacitor.html#ac5e08b3cca7884bb5f26a8ffcf8fcccf":[0,0,8,2], -"class_capacitor.html#ace755e5bc3cc72b491ce31c24c54a5cf":[0,0,8,3], -"class_capacitor.html#aeba70b8c4a1ed3609481b46c5ace8c6c":[0,0,8,0], -"class_capacitor.html#aef6926699c93145d4b3c62efd942b269":[0,0,8,9], -"class_chart_view.html":[0,0,10], -"class_chart_view.html#a06514137ceea55c0fe387978ea13e214":[0,0,10,20], -"class_chart_view.html#a0fe6be1c5bf29fd058787f1a47325c1a":[0,0,10,10], -"class_chart_view.html#a143b7ffc99d2dbcc82ad4cf4b96d5db2":[0,0,10,22], -"class_chart_view.html#a1e92dd6533c5ebcf6875cb9e517b7b4e":[0,0,10,19], -"class_chart_view.html#a1fe1991c6239632b4af01186b05e062f":[0,0,10,35], -"class_chart_view.html#a201c868954eb1c79dda37ffdcc2a0eeb":[0,0,10,36], -"class_chart_view.html#a231d6a0f6298df0c764f0dcc601e9f9f":[0,0,10,28], -"class_chart_view.html#a28da38ba24dad74b833b7bc5652358ed":[0,0,10,16], -"class_chart_view.html#a293128b4b91a4a838a792076f87cde0a":[0,0,10,17], -"class_chart_view.html#a2b74fcf37a33a8654c3c06008f4e9278":[0,0,10,37], -"class_chart_view.html#a38699e754304878e9a589f730c027dec":[0,0,10,14], -"class_chart_view.html#a4957f22dfe582cd2557b005a010cf2d2":[0,0,10,1], -"class_chart_view.html#a4a2abddb77a734eeb7992ca8434bb358":[0,0,10,7], -"class_chart_view.html#a4b43a87338084b4d163b1a2f002ff9d7":[0,0,10,15], -"class_chart_view.html#a5111d9293952ca916aecd5ff7f597950":[0,0,10,21], -"class_chart_view.html#a5666f8aedecd943ad19d72fc533dcfd9":[0,0,10,6], -"class_chart_view.html#a597a1cde3693f14427a898b61bdc05a9":[0,0,10,9], -"class_chart_view.html#a598645b015715cdc22d08d3875a0a5bb":[0,0,10,31], -"class_chart_view.html#a6034bc00b41785d6003e499778a6a69f":[0,0,10,5], -"class_chart_view.html#a621ebe0264d241f54cf4b65efe705618":[0,0,10,0], -"class_chart_view.html#a6aacbc6267d7c01cc5b3f78fc4ba50fe":[0,0,10,40], -"class_chart_view.html#a6e29b198271efa3c6d5ca9d5ae3ae773":[0,0,10,24], -"class_chart_view.html#a70200389b94906b89d2454b27ac2469c":[0,0,10,30], -"class_chart_view.html#a7e069208db024a903a90f72f9057b951":[0,0,10,29], -"class_chart_view.html#a7f7e1d962ab76be37b89f05e6b97cfc0":[0,0,10,34], -"class_chart_view.html#a877c14527e957c85037b7705d196733d":[0,0,10,18], -"class_chart_view.html#a88dfb946342df7c344bd3578d207dcd9":[0,0,10,23], -"class_chart_view.html#a89e198037f79887a33ce21c949021455":[0,0,10,32], -"class_chart_view.html#a8a374b2c62da0ef13a7d292482abb845":[0,0,10,12], -"class_chart_view.html#a8abb35d06074a8370b222fafae8db028":[0,0,10,8], -"class_chart_view.html#a8f57c26ce982fcf91626e8121b625f70":[0,0,10,13], -"class_chart_view.html#a91cae14a0b48e5755cb44f05e1d9c0b0":[0,0,10,27], -"class_chart_view.html#a95e9181dd41eeff08964054746be305b":[0,0,10,26], -"class_chart_view.html#a9b4099d6352e09be545265a7168860f2":[0,0,10,2], -"class_chart_view.html#ac72c20e03443d91fca200305fc6bbad1":[0,0,10,4], -"class_chart_view.html#ad174b0057b89c6dd4b6aed93a467acd1":[0,0,10,33], -"class_chart_view.html#ad3a0740630473e266d6406a561053ef4":[0,0,10,3], -"class_chart_view.html#ae6593489cbd815282f77f5a073c34e55":[0,0,10,25], -"class_chart_view.html#aec5e3605401ad966f03113a60f05fe1c":[0,0,10,38], -"class_chart_view.html#af9953c97ae04ccb534ee8d8f772330a4":[0,0,10,11], -"class_chart_view.html#affb3ae7ee1147240f5180926a07425b5":[0,0,10,39], -"class_chart_view_base.html":[0,0,11], -"class_chart_view_base.html#a0ab362bd15f37bf94201b6e40d0ba3fa":[0,0,11,15], -"class_chart_view_base.html#a0d66080c5a61b4a544111cd829cd88b8":[0,0,11,50], -"class_chart_view_base.html#a237d5355111659d84fa4e61569deeecc":[0,0,11,30], -"class_chart_view_base.html#a23f74f17c47b4352def0919e9efd3afa":[0,0,11,13], -"class_chart_view_base.html#a250a4f7292e38ffadf609f07dbbc0323":[0,0,11,27], -"class_chart_view_base.html#a27408a2fa4cc3c63a7655ddc6bca7412":[0,0,11,8], -"class_chart_view_base.html#a27f1cf05d785e4f230b3093ab807972c":[0,0,11,26], -"class_chart_view_base.html#a321240363d83ca86670fb4934f1d67f7":[0,0,11,5], -"class_chart_view_base.html#a34f689775bc42f1f11a7b84067a98808":[0,0,11,37], -"class_chart_view_base.html#a407b4fc3b5f891ff37cd8475f0f6ab19":[0,0,11,20] +"class_camera.html#aeb4eb52f0f05f5641cd71e4b8505e50a":[0,0,7,18] }; diff --git a/docs/doxygen/html/navtreeindex10.js b/docs/doxygen/html/navtreeindex10.js index e50d7f2..012d319 100644 --- a/docs/doxygen/html/navtreeindex10.js +++ b/docs/doxygen/html/navtreeindex10.js @@ -1,5 +1,83 @@ var NAVTREEINDEX10 = { +"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], +"class_sync_machine_form_base.html#a0dbd47d991d7750b3368d84b06d3c361":[0,0,97,0], +"class_sync_machine_form_base.html#a102368df6855d5ba275a49ffae593168":[0,0,97,15], +"class_sync_machine_form_base.html#a11249eb9f833be5b91c3f684477be7aa":[0,0,97,12], +"class_sync_machine_form_base.html#a138fa57d3582962bae07d035e63b586d":[0,0,97,74], +"class_sync_machine_form_base.html#a15b9a853d75e1e59084cf84130bfbbc2":[0,0,97,78], +"class_sync_machine_form_base.html#a1c9124d5e5449d28ae8b0af31a651a25":[0,0,97,28], +"class_sync_machine_form_base.html#a1ed492083cd0abec88ace3965553308b":[0,0,97,56], +"class_sync_machine_form_base.html#a21dbc2fc03aef37e45e1cf3a63da9551":[0,0,97,55], +"class_sync_machine_form_base.html#a230d01b1c29375bdfd3063d9097f9f88":[0,0,97,8], +"class_sync_machine_form_base.html#a24d1c0a769de296404d9697ff6bba278":[0,0,97,9], +"class_sync_machine_form_base.html#a25dfe7fcf1465ef808fd652a5cd6b2e1":[0,0,97,64], +"class_sync_machine_form_base.html#a2d7690b252b2b22d5b950d04b9757bb4":[0,0,97,21], +"class_sync_machine_form_base.html#a2f22b959d0d97b7ad3ee6de5557ad976":[0,0,97,52], +"class_sync_machine_form_base.html#a38a81a205d2112a58084b2d6cc13380a":[0,0,97,24], +"class_sync_machine_form_base.html#a3aa2c493b7430078bc17a34bb8cc476b":[0,0,97,43], +"class_sync_machine_form_base.html#a3db4e4cfd2fd42f9ce6ab3f72952f6ba":[0,0,97,44], +"class_sync_machine_form_base.html#a3f1c8401a39935ef1f589d68af2be97a":[0,0,97,40], +"class_sync_machine_form_base.html#a4112b3c631d0ceec0178fc05ea1b120c":[0,0,97,2], +"class_sync_machine_form_base.html#a4496bfac69450fe5a10baa9dbc4888a6":[0,0,97,80], +"class_sync_machine_form_base.html#a45f5bf24827dfcda99e71f83cfb3fa5b":[0,0,97,29], +"class_sync_machine_form_base.html#a46fe41a58c06bedeab99cd190921e545":[0,0,97,4], +"class_sync_machine_form_base.html#a4ba97e9dc30c24a0daf0ad3771823df0":[0,0,97,77], +"class_sync_machine_form_base.html#a4fca8015f54006f8b79faf8bb6d3eb09":[0,0,97,26], +"class_sync_machine_form_base.html#a5133c66f455c7a5597e72b9b367e0fc8":[0,0,97,47], +"class_sync_machine_form_base.html#a5735d89d9451e76734467e14779a7ab0":[0,0,97,49], +"class_sync_machine_form_base.html#a5a091446eebeeb3c5116fa87aeda535b":[0,0,97,79], +"class_sync_machine_form_base.html#a5dcc03c3e17f06e0914f3209120a6329":[0,0,97,35], +"class_sync_machine_form_base.html#a5fd0741a7ac3e8613cc01a28933b4ea8":[0,0,97,11], +"class_sync_machine_form_base.html#a681513dcfa84f4aab5803299fd8ae766":[0,0,97,37], +"class_sync_machine_form_base.html#a6b3830705a2208493714c1abdb8fa0b8":[0,0,97,70], +"class_sync_machine_form_base.html#a6c2c10dd63d1ace53d882b477d037d75":[0,0,97,30], +"class_sync_machine_form_base.html#a6dba8c557f3e20f9982c084e5e5a74e3":[0,0,97,59], +"class_sync_machine_form_base.html#a6fedceb84c293f69fbcb6290ea529798":[0,0,97,84], +"class_sync_machine_form_base.html#a717b5ba1d7ed6b4026b527ce12b2bf41":[0,0,97,72], +"class_sync_machine_form_base.html#a7367ed87a446dc08067af218b8bb2215":[0,0,97,31], +"class_sync_machine_form_base.html#a7530a37ed44f0732758708aabf7f748c":[0,0,97,19], +"class_sync_machine_form_base.html#a76040f3058374ee765d4baa6b1b07df7":[0,0,97,7], +"class_sync_machine_form_base.html#a7849d5f397e132e164b0c1952ddaa0a3":[0,0,97,82], +"class_sync_machine_form_base.html#a79579458c023bf56d0df6f0356e58c9b":[0,0,97,53], +"class_sync_machine_form_base.html#a7a035fe2031ab6eae1513f73adabd0c3":[0,0,97,32], +"class_sync_machine_form_base.html#a7c6a05f65b77bdad43f7f92c2b184077":[0,0,97,50], +"class_sync_machine_form_base.html#a909b922a1f157d6013a7baaf22796d24":[0,0,97,86], +"class_sync_machine_form_base.html#a93fd03ae353875c5e04ccdb57800f821":[0,0,97,58], +"class_sync_machine_form_base.html#a959fea39df34cb124ab6a0ad78d78712":[0,0,97,3], +"class_sync_machine_form_base.html#a97509be24b2add48e9d23d5b7020b076":[0,0,97,48], +"class_sync_machine_form_base.html#a9c402618cc9ae56ca3780d7420bf5722":[0,0,97,69], +"class_sync_machine_form_base.html#a9d4d3f8b66519903eaac859b0a5314e9":[0,0,97,6], +"class_sync_machine_form_base.html#a9e63594f861d223182734011b24030dc":[0,0,97,14], +"class_sync_machine_form_base.html#a9fd3b15e35d1753059759886bf918130":[0,0,97,81], +"class_sync_machine_form_base.html#aa2a774f00e17cfec0ef2efccc086b990":[0,0,97,25], +"class_sync_machine_form_base.html#aa53388881170a5aceb737b0c58315351":[0,0,97,16], +"class_sync_machine_form_base.html#aab2926cd0e56d2cb283fc74e5aa20f5d":[0,0,97,10], +"class_sync_machine_form_base.html#aacac6cfe475bf4176dcf746417cdd432":[0,0,97,88], +"class_sync_machine_form_base.html#aaff0a6a0030e1d0928f6a69f27bb1180":[0,0,97,46], +"class_sync_machine_form_base.html#ab221b3b73b231252dfe605efa5268f59":[0,0,97,39], +"class_sync_machine_form_base.html#ab922478387b0a89d0d5a4ab0d1500a4a":[0,0,97,27], +"class_sync_machine_form_base.html#aba28c35b0281a75f7ed7b57e6ceed52c":[0,0,97,5], +"class_sync_machine_form_base.html#ac195ae144957568ef98e5e3f9ba31388":[0,0,97,76], +"class_sync_machine_form_base.html#ac3d26a423d2fd7243c9361d360b0e6d3":[0,0,97,42], +"class_sync_machine_form_base.html#ac4a8ed68ffba04940adbf6e3070291a4":[0,0,97,65], +"class_sync_machine_form_base.html#ac71f3c270c8c796dd427ee6bd32f1c60":[0,0,97,38], +"class_sync_machine_form_base.html#acc82ce4087f0fcde8e42e2b7f111cfcc":[0,0,97,57], +"class_sync_machine_form_base.html#acef45c78c5bbaf1dee5b3abc895e8baf":[0,0,97,17], +"class_sync_machine_form_base.html#ad3b5932a14988843670c516861029517":[0,0,97,33], +"class_sync_machine_form_base.html#ad3dab6cd719a3464b4bca0e92063b20c":[0,0,97,23], +"class_sync_machine_form_base.html#ad4789258aa31c9d3c699013ce6f3406f":[0,0,97,66], +"class_sync_machine_form_base.html#ad47c151f396bbad83787de190055ea65":[0,0,97,20], +"class_sync_machine_form_base.html#ad6e4bc150fc34819eaa2333d1d4cb2b8":[0,0,97,13], +"class_sync_machine_form_base.html#ad720f87582570c72919f9094987bda08":[0,0,97,67], +"class_sync_machine_form_base.html#ade8616fc5502cc760867821d52b2a697":[0,0,97,75], +"class_sync_machine_form_base.html#ae0b5c587ae39b5e558bb298eb1f180b0":[0,0,97,41], +"class_sync_machine_form_base.html#ae2aa2eb6ad549c8b918389df69b6af36":[0,0,97,18], +"class_sync_machine_form_base.html#ae4c8099099059b6e5b8d4791991929c5":[0,0,97,51], +"class_sync_machine_form_base.html#ae69f427b9931e920bcb615a15e74484e":[0,0,97,68], +"class_sync_machine_form_base.html#aec2123bb23ad47344e000bf2e460117e":[0,0,97,45], "class_sync_machine_form_base.html#aedf1ffdbc6b3cec7614126d733a12f4a":[0,0,97,36], "class_sync_machine_form_base.html#aeebf10df4806932d008ed063fcbb9730":[0,0,97,1], "class_sync_machine_form_base.html#af0a0b3141b006a8578e841ce3c124c70":[0,0,97,73], @@ -8,246 +86,168 @@ var NAVTREEINDEX10 = "class_sync_machine_form_base.html#af6cadcca8459ce7d9e63a43fa739534c":[0,0,97,54], "class_sync_machine_form_base.html#af83e4364f1f073fcfd96abc6ff38c70e":[0,0,97,85], "class_sync_machine_form_base.html#affe47bc4b7b233dcf04ba9241d2d399f":[0,0,97,71], -"class_sync_motor.html":[0,0,98], -"class_sync_motor.html#a035b63a3dfd356daff0bf1cee9672313":[0,0,98,5], -"class_sync_motor.html#a038162c828595f58782fe97dea2c864d":[0,0,98,10], -"class_sync_motor.html#a0fedd06ef0833ce4d17869343b0810cb":[0,0,98,6], -"class_sync_motor.html#a12ac76afa871fc58cc0f27332723fc38":[0,0,98,12], -"class_sync_motor.html#a222d998e274674a0e0ce4a1ed53e8654":[0,0,98,0], -"class_sync_motor.html#a2ab8e43d5452f5d7f9ac375566a65210":[0,0,98,8], -"class_sync_motor.html#a3201b22e0271517f5ed3df85da6cee6f":[0,0,98,11], -"class_sync_motor.html#a435a9cfd24d182d8ab76a856fa4d0bb7":[0,0,98,2], -"class_sync_motor.html#a6068c7d22470a3996df2efda54c24972":[0,0,98,1], -"class_sync_motor.html#a7b3102220ea5f7e19690af045a6c8278":[0,0,98,4], -"class_sync_motor.html#a9b42283370ea4d4707b78b97e8c6d864":[0,0,98,3], -"class_sync_motor.html#aca41191da8383d577e3717d3e38cdf2b":[0,0,98,9], -"class_sync_motor.html#ae04da3b89a530e1457ff490b22b9f028":[0,0,98,7], -"class_text.html":[0,0,100], -"class_text.html#a03c67acf11b90374ded2a8cb8ec1088f":[0,0,100,8], -"class_text.html#a06e740065c875633e458c0d8f860c43e":[0,0,100,6], -"class_text.html#a0d0629dec49cece668f41d2a85062f39":[0,0,100,40], -"class_text.html#a0d37b9c067e62e10ebd1f0f74dbb5e66":[0,0,100,24], -"class_text.html#a15e4192a98a95baa22fd7a423efb5df9":[0,0,100,9], -"class_text.html#a255ba9b693f614b16986ac238c28f66e":[0,0,100,25], -"class_text.html#a2d07db0c15bdbd9d7056ac794f524f57":[0,0,100,36], -"class_text.html#a2d49e5c280e205125b149f7777ae30c7":[0,0,100,2], -"class_text.html#a2f40cb8ed553f1680bf402f9c8e2b541":[0,0,100,35], -"class_text.html#a340b00ac7a17cd9a1f37f63275715638":[0,0,100,11], -"class_text.html#a3b050d27140840eadcdce567df42d1e2":[0,0,100,7], -"class_text.html#a3f58eb1736e822f96882ded57938dbbd":[0,0,100,13], -"class_text.html#a41eabb28f45124d5da3ec2d703ce9018":[0,0,100,15], -"class_text.html#a4d1b7f1b53288297dfc8f77be4c37ac4":[0,0,100,38], -"class_text.html#a4f273ea7008c72533327c25caff2e917":[0,0,100,3], -"class_text.html#a51c55b9272f653cfc3cdafe665d5dde0":[0,0,100,4], -"class_text.html#a5eb67f2bf595a78858733c96a5bc05d6":[0,0,100,26], -"class_text.html#a6743a08fc0d1d8b96db99eab48eadb8f":[0,0,100,19], -"class_text.html#a7010e26ac225166d3a7f23118bf45f74":[0,0,100,32], -"class_text.html#a7e88aef941ba0b3dba303c4370b0bb7a":[0,0,100,29], -"class_text.html#a80916b96c94d30abd8d76dcbf01d580d":[0,0,100,12], -"class_text.html#a8bab7377ac548d1883dcbbe2489c5ff1":[0,0,100,33], -"class_text.html#a9836ec9395fdd3e0ce1f1914219fe360":[0,0,100,37], -"class_text.html#a9923c820cd77b411257ba48beceafeaa":[0,0,100,16], -"class_text.html#a9f05c1520fe691515ee15a0b63ca9b28":[0,0,100,14], -"class_text.html#aa32f9156fbbe783fab5d90072667e2c3":[0,0,100,23], -"class_text.html#aa722e4df566518900e4f2cc1f1af2f9c":[0,0,100,28], -"class_text.html#ab3e26143fccc52699bcc5149cae852bc":[0,0,100,0], -"class_text.html#ab3f1487162842f26d6d50b298bb3142d":[0,0,100,18], -"class_text.html#abe911e27cd723c0ab51f63d8f27683d1":[0,0,100,20], -"class_text.html#ac045b28b3621a5fddb3e5ac86889bfca":[0,0,100,39], -"class_text.html#ac0ab42a8d5145cd1d780f695d0e6e64f":[0,0,100,34], -"class_text.html#ac19aa2e04d68965adadee0c67daca99e":[0,0,100,41], -"class_text.html#ac6383f5f8e424f3c8cf6f37ac9371dcf":[0,0,100,27], -"class_text.html#ac8107fb05d19dbaf681af76a91ea739b":[0,0,100,1], -"class_text.html#ad251de30122437e2a311aa60e8ed390a":[0,0,100,31], -"class_text.html#ad696293ace753aba46568c76b1adff4e":[0,0,100,21], -"class_text.html#aea6772b57e5129e87926b6a35d90f74e":[0,0,100,10], -"class_text.html#aef377b465f00fe9aec996e122c1bb23a":[0,0,100,22], -"class_text.html#af025bbbb8d5619929df7817f98e23597":[0,0,100,5], -"class_text.html#afcd995d8a0b3921cd33dd305b586e3f7":[0,0,100,30], -"class_text.html#afe1f86a497f34cee4809cbd7fda24dc3":[0,0,100,17], -"class_text_form.html":[0,0,101], -"class_text_form.html#a05f71762d18640d7ee7b85cf8cfde0ee":[0,0,101,15], -"class_text_form.html#a098066e96da254f13b5cd2b0e8977e43":[0,0,101,7], -"class_text_form.html#a1268fce1f817bd9ff0626a24c0aabda7":[0,0,101,21], -"class_text_form.html#a14ccad2b03e8017c02eb632fbe02df2a":[0,0,101,0], -"class_text_form.html#a21a3fa61ce11a198e4a0cf086a85e61b":[0,0,101,10], -"class_text_form.html#a2946f7590a66a55d3ae63a6def86a8f3":[0,0,101,8], -"class_text_form.html#a29a135685c4f5f6801abc50ab48d97f9":[0,0,101,11], -"class_text_form.html#a3b32cfbb221700c5cde1146dd9ba0ac3":[0,0,101,12], -"class_text_form.html#a4bbd73071ce20cf1c805139af58d2e77":[0,0,101,5], -"class_text_form.html#a4e3ecb63b41fe8e1592ba1bdb57cf89f":[0,0,101,18], -"class_text_form.html#a53d385f26fb4bf90e52db6e4c1d3b49a":[0,0,101,14], -"class_text_form.html#a55358259e75a1e262aa6f2f58dc70c80":[0,0,101,16], -"class_text_form.html#a553bf0b435f0d59d4c86ea7a004aab60":[0,0,101,17], -"class_text_form.html#a644cc688a5f54e202c451f403174a725":[0,0,101,13], -"class_text_form.html#a7cb43566e1ec8bb5d7be0e3ed86f1876":[0,0,101,2], -"class_text_form.html#aa15c4be9ce71f50b6ebdbabf1ddb26bb":[0,0,101,1], -"class_text_form.html#aad06ea6fcaec43465ea4e0aa7bd3b61d":[0,0,101,22], -"class_text_form.html#aae058177645a7b974003cf7ba3957e62":[0,0,101,9], -"class_text_form.html#ab9cad6d1dc2ea1406ca6f9b44ecd46c3":[0,0,101,6], -"class_text_form.html#ad11e9224ce96616ccc1fae802a65738e":[0,0,101,3], -"class_text_form.html#adc28fed9ecb5fb32957737af4e7827dc":[0,0,101,20], -"class_text_form.html#ae46074db075dacd127c78b16b0417c3a":[0,0,101,4], -"class_text_form.html#af96c830fe67da49fac36a7df58f0728b":[0,0,101,19], -"class_text_form_base.html":[0,0,102], -"class_text_form_base.html#a06b80e25d042052ef8b5ebbcf39a82e6":[0,0,102,11], -"class_text_form_base.html#a0df65c65bf9926eaa20792d803762fd2":[0,0,102,22], -"class_text_form_base.html#a0f854e9b93a101684308930464799a3c":[0,0,102,24], -"class_text_form_base.html#a0ff115ed58de4b9f83e8ac18fc1c11cc":[0,0,102,25], -"class_text_form_base.html#a1822a077536adfdfdbf7ba7853e2917c":[0,0,102,20], -"class_text_form_base.html#a20e495f9fe62e0eaee49ea2cfb7661fa":[0,0,102,27], -"class_text_form_base.html#a279db3897b91ff97ebdd410169b8c13d":[0,0,102,10], -"class_text_form_base.html#a28448ef3a106719e2863660bd9230bdc":[0,0,102,39], -"class_text_form_base.html#a29c62763df7c88f78a1fb8b4c65e0383":[0,0,102,14], -"class_text_form_base.html#a39677cde5e236fd32257a86543e8a3f5":[0,0,102,48], -"class_text_form_base.html#a3dad92d1a04122535626e259c24391ec":[0,0,102,17], -"class_text_form_base.html#a3eb125e5242692bcff954c0706634833":[0,0,102,30], -"class_text_form_base.html#a4300bcea7b6ffc6c8c0e278908c9bf5a":[0,0,102,40], -"class_text_form_base.html#a47a05d0cd3b24d516d7cd73e6f1801b6":[0,0,102,16], -"class_text_form_base.html#a4c72fb0574b2bd9214140df806848f02":[0,0,102,43], -"class_text_form_base.html#a4ca5f55e86ab0456c04e521094857369":[0,0,102,37], -"class_text_form_base.html#a4def79e764545dc050b355da45b091d1":[0,0,102,44], -"class_text_form_base.html#a6610d9f72f598b3f4e8f86aad7980c74":[0,0,102,4], -"class_text_form_base.html#a6ac5da788492cc037aec6b6a9dcbd4a8":[0,0,102,41], -"class_text_form_base.html#a6e8c2c55fcac20adba14d0ee92ee6560":[0,0,102,7], -"class_text_form_base.html#a6f796e5b87ec48aa812a401262a9fe93":[0,0,102,23], -"class_text_form_base.html#a7334788ba4af44ccb01547c348d2310c":[0,0,102,21], -"class_text_form_base.html#a73e92b286d13f68c697335df49c33b40":[0,0,102,29], -"class_text_form_base.html#a7464a3fc135d9a85ecb75c42f50bef0e":[0,0,102,38], -"class_text_form_base.html#a7edc22afae66bc4e91461584668a7d64":[0,0,102,42], -"class_text_form_base.html#a87c7b2df984b9fa32c99bc18b6207342":[0,0,102,6], -"class_text_form_base.html#a8d9c9eadf9e724d7c7c1fc9a6b5e09d6":[0,0,102,49], -"class_text_form_base.html#a97e9f9088c396c51645763f65f1fcae9":[0,0,102,34], -"class_text_form_base.html#a98382c1f1b903db868557cc3ab305143":[0,0,102,47], -"class_text_form_base.html#a9a2f9ad1a172ffed751944231cf26332":[0,0,102,5], -"class_text_form_base.html#a9e96d1d31cfb24ddb39ff24e366cbb1a":[0,0,102,26], -"class_text_form_base.html#a9f865ba5241dc9ba607e514a4b5a0e0d":[0,0,102,32], -"class_text_form_base.html#aa7bce0b447d510e11c52344e26019417":[0,0,102,0], -"class_text_form_base.html#aadf4ac576b11c235b43359df5e298942":[0,0,102,3], -"class_text_form_base.html#aaf38921dfe3bee5a769e906dbc6843f1":[0,0,102,19], -"class_text_form_base.html#ab4220dcb19935bebb8aefb2c486378ef":[0,0,102,31], -"class_text_form_base.html#ab486d5c675ebde25f89c763378b19f60":[0,0,102,2], -"class_text_form_base.html#abcde3d462cfa4632198b2dd0f5835041":[0,0,102,50], -"class_text_form_base.html#ac7dc780d44ca9c55d10a0d1012a1f8ba":[0,0,102,18], -"class_text_form_base.html#ac88b09dd08a5b01b69c04e644d25163a":[0,0,102,46], -"class_text_form_base.html#aca2e5f72c0d399f1e48f35f129b94b29":[0,0,102,1], -"class_text_form_base.html#acc40a994d976ea04f66dbb6790b5d7a5":[0,0,102,12], -"class_text_form_base.html#ad1edec95968fef33c94f96a2fe76e2e5":[0,0,102,33], -"class_text_form_base.html#addfe9749ca7aa07c2d14bbddbe8417c5":[0,0,102,13], -"class_text_form_base.html#adf2b35e57ba91096b1de72f761e95fa0":[0,0,102,28], -"class_text_form_base.html#ae70c96bb398576eff2ad8d151833c179":[0,0,102,8], -"class_text_form_base.html#ae723a4d74db7989a63ccd46eedc44bff":[0,0,102,45], -"class_text_form_base.html#ae9e39d45b4754ff1df2c1e0e552dd982":[0,0,102,35], -"class_text_form_base.html#af3457265fe6266b0ef61d30790fb33eb":[0,0,102,9], -"class_text_form_base.html#af34bc2311411715448bd41378f8a6895":[0,0,102,36], -"class_text_form_base.html#afc1a68f987a02df5df3c927351020450":[0,0,102,15], -"class_text_g_l_drawable.html":[0,0,103], -"class_text_g_l_drawable.html#a002950e57ddee2b366a428cf166d265a":[0,0,103,28], -"class_text_g_l_drawable.html#a12875f8cc1cdb675353c6b12112d05fe":[0,0,103,18], -"class_text_g_l_drawable.html#a25d765828a9ecd9629ff9ccd4a66fc43":[0,0,103,9], -"class_text_g_l_drawable.html#a2a8aa1255ae9546618d8a30051882c18":[0,0,103,4], -"class_text_g_l_drawable.html#a2df771de3dd7c16f1a88540ac6620ab4":[0,0,103,0], -"class_text_g_l_drawable.html#a30803a43c1f1ee4ae35900bc4f6a5a3c":[0,0,103,16], -"class_text_g_l_drawable.html#a30a8a416b10b04e877a0ae10528150d0":[0,0,103,26], -"class_text_g_l_drawable.html#a328d55b4c8e3684a1093872cad1d41bb":[0,0,103,5], -"class_text_g_l_drawable.html#a3694676b20848e16dedf11569639216c":[0,0,103,19], -"class_text_g_l_drawable.html#a385db5bcf159982ba006a8dd97ee1383":[0,0,103,7], -"class_text_g_l_drawable.html#a44b1a0129b8da33b2be9a1745415de93":[0,0,103,24], -"class_text_g_l_drawable.html#a4894c656b1c7016c8c8176cff2f8c66f":[0,0,103,15], -"class_text_g_l_drawable.html#a4a20344804fa6b34c02a7fd55ad96314":[0,0,103,10], -"class_text_g_l_drawable.html#a51bdeb52e839fc941ed3803f557f7911":[0,0,103,1], -"class_text_g_l_drawable.html#a61de4c6cec06534405b7ecc292b9bd28":[0,0,103,11], -"class_text_g_l_drawable.html#a7beff45d550827ce4e2f3335585a4f42":[0,0,103,6], -"class_text_g_l_drawable.html#a816623b682408889fa6893b41782453b":[0,0,103,14], -"class_text_g_l_drawable.html#a847984364f55bfd063419a359d9acc91":[0,0,103,20], -"class_text_g_l_drawable.html#a85eb711312c444322767319bd23a7795":[0,0,103,23], -"class_text_g_l_drawable.html#a8894b391174ffe37d1d372b8c4a31fe7":[0,0,103,12], -"class_text_g_l_drawable.html#a93b56ed45e3097129d4682c735a23fcf":[0,0,103,8], -"class_text_g_l_drawable.html#a965ac9bf245f1979a080193986874f18":[0,0,103,2], -"class_text_g_l_drawable.html#a9b461935514f4da4805889fdcff48be6":[0,0,103,25], -"class_text_g_l_drawable.html#ab1b363afde75d9f53aedea103c24f287":[0,0,103,22], -"class_text_g_l_drawable.html#acba312735b20ed532c80992e4777f262":[0,0,103,27], -"class_text_g_l_drawable.html#ad84933ea0f396ee9c18d463d22e4c3f8":[0,0,103,21], -"class_text_g_l_drawable.html#ae05f3bb671317d687421226c41277553":[0,0,103,13], -"class_text_g_l_drawable.html#af24996577c26268a514f2ee43e72ff4d":[0,0,103,17], -"class_text_g_l_drawable.html#af9bcd8c0e163302429ca8a17f587e8ec":[0,0,103,3], -"class_text_texture.html":[0,0,104], -"class_text_texture.html#a028855c450db4925652071c212cce8c7":[0,0,104,0], -"class_text_texture.html#a13d64c6afe292be4ccca8294dd501f0f":[0,0,104,1], -"class_text_texture.html#a4a20344804fa6b34c02a7fd55ad96314":[0,0,104,5], -"class_text_texture.html#a5819c3917f7be6e1fdd1f5d1b617dd2a":[0,0,104,2], -"class_text_texture.html#a61de4c6cec06534405b7ecc292b9bd28":[0,0,104,6], -"class_text_texture.html#a8894b391174ffe37d1d372b8c4a31fe7":[0,0,104,7], -"class_text_texture.html#aa7ab43a57d9767d92ee60933977d66ac":[0,0,104,3], -"class_text_texture.html#ac663a01462a341a279cc4cdf0c500fba":[0,0,104,4], -"class_transfer_function.html":[0,0,105], -"class_transfer_function.html#a0bc542d565e75938699d5e03f3a5e6f0":[0,0,105,15], -"class_transfer_function.html#a0cd1dec850117741abb04b608c7b3f1e":[0,0,105,5], -"class_transfer_function.html#a0cd48b67fbcc1afc400bdf6cadb824b4":[0,0,105,23], -"class_transfer_function.html#a0d4b3da271ecef4ec764a9f26b1ee488":[0,0,105,28], -"class_transfer_function.html#a3312f7e9499aa99742093d3b60547862":[0,0,105,6], -"class_transfer_function.html#a39e20dc5b20657d882fb820ee1178eee":[0,0,105,8], -"class_transfer_function.html#a39ec7eda2cc3737a1502af8bdf2a9bf5":[0,0,105,22], -"class_transfer_function.html#a4d3e5afb04d7196647814339cd15bc3a":[0,0,105,24], -"class_transfer_function.html#a5f09dd8e5c016a90c69a8e38ef302c8a":[0,0,105,3], -"class_transfer_function.html#a630099b92667aa3e4b455fba234d4eda":[0,0,105,10], -"class_transfer_function.html#a6325dec72c7b85178f490c5cf85229bd":[0,0,105,12], -"class_transfer_function.html#a6a4415d2cf0af290494ea30d586cc187":[0,0,105,4], -"class_transfer_function.html#a6b66df900c86cfb848d2e08591a4a0c9":[0,0,105,25], -"class_transfer_function.html#a70e6b38f9b4a45a29b3b2eb4947e8e2f":[0,0,105,7], -"class_transfer_function.html#a966c99fbd03b89662e0a340b7cffe717":[0,0,105,27], -"class_transfer_function.html#a96c6acddec588288c5883416ec926abe":[0,0,105,31], -"class_transfer_function.html#aa16c1f3e18149c153d78e0627a5e9972":[0,0,105,21], -"class_transfer_function.html#ab23ed101f7d4e953e4df0d4d480d9798":[0,0,105,18], -"class_transfer_function.html#ab736fb79486407e626364e1410c263f3":[0,0,105,1], -"class_transfer_function.html#aba60b46f243b3b0c8e9ccdeb391cba27":[0,0,105,2], -"class_transfer_function.html#ac6755bf723a1dfa90ee8254471136429":[0,0,105,29], -"class_transfer_function.html#ad10adb7a94ebc62349cca7b56b7cadb9":[0,0,105,19], -"class_transfer_function.html#ad5e7f4e17ce8ca7d3ab4a2ea2b688438":[0,0,105,14], -"class_transfer_function.html#ad708802d32428ddb20d33910bf348b55":[0,0,105,26], -"class_transfer_function.html#ae145b86db1450a19a3ed32084ee60423":[0,0,105,13], -"class_transfer_function.html#ae1ea0f8351796e932609e1c9494b5e76":[0,0,105,16], -"class_transfer_function.html#aec2d0676d112ccf849c0d3d6f3fee461":[0,0,105,11], -"class_transfer_function.html#aee524d83c25209202ba2b1e8a600ef21":[0,0,105,30], -"class_transfer_function.html#aee6c1440c4f527b7a839e07474a381f0":[0,0,105,9], -"class_transfer_function.html#af8c3f06742a7ffc9dabc0d4f5dbc98c3":[0,0,105,20], -"class_transfer_function.html#afe15de93ab4f93032560a6139091ef10":[0,0,105,17], -"class_transfer_function_form.html":[0,0,106], -"class_transfer_function_form.html#a1c565e92a52dd6e710db7ecf92083f37":[0,0,106,3], -"class_transfer_function_form.html#a27c6a37b520b4e3043ae492d9112a9df":[0,0,106,4], -"class_transfer_function_form.html#a38f692bf981cfb865a6d8d2528aa3b56":[0,0,106,6], -"class_transfer_function_form.html#a45b34337d0dbef9df6e4b35f169ccf98":[0,0,106,1], -"class_transfer_function_form.html#a546e732b865a8054231432df595246c2":[0,0,106,5], -"class_transfer_function_form.html#a681698673fea3d716ee383ae3d9d28eb":[0,0,106,2], -"class_transfer_function_form.html#a87648ffa2b1d88ff18135f1dce46ac97":[0,0,106,7], -"class_transfer_function_form.html#ab3973fc6d0585be5570682674041d21d":[0,0,106,0], -"class_transfer_function_form_base.html":[0,0,107], -"class_transfer_function_form_base.html#a0016c5144bc331f6348bea935bb8cc55":[0,0,107,16], -"class_transfer_function_form_base.html#a008be2fa5d9b01b841ae8689606d9b5b":[0,0,107,4], -"class_transfer_function_form_base.html#a049b09e73946dcca6306d72770e097fd":[0,0,107,18], -"class_transfer_function_form_base.html#a1be29f1cc2a4ecd64b5d368cb7a9dd8c":[0,0,107,14], -"class_transfer_function_form_base.html#a1d5de82c329970e967c75de0f99778ef":[0,0,107,19], -"class_transfer_function_form_base.html#a2be269d1b27821fd3bda48c34d2382be":[0,0,107,15], -"class_transfer_function_form_base.html#a2f8ad120d19ede3c79a2dbee404927d7":[0,0,107,5], -"class_transfer_function_form_base.html#a3dfe2400369e1ca1416b26f265f0ae4b":[0,0,107,3], -"class_transfer_function_form_base.html#a47346c56b626d41c6ddec9fc26060f6d":[0,0,107,13], -"class_transfer_function_form_base.html#a4ce3369a8557eced7b42b878016c9331":[0,0,107,0], -"class_transfer_function_form_base.html#a7f5da321a6297086cc6f5c3ea85be7f0":[0,0,107,1], -"class_transfer_function_form_base.html#a8618a2b5585ac0b665b8fdc3c9ceeae3":[0,0,107,6], -"class_transfer_function_form_base.html#a93731803bc32f17be6ae889182ab5bee":[0,0,107,11], -"class_transfer_function_form_base.html#aa4603a3f49179e61205862faa962ef4b":[0,0,107,8], -"class_transfer_function_form_base.html#aa8839934e71bf16b63a5cff34679be4b":[0,0,107,10], -"class_transfer_function_form_base.html#ab70bd59a35d2c588291e0fd65b7b043c":[0,0,107,9], -"class_transfer_function_form_base.html#ae1a557b170a2966b73a87d6ffd6eaf0e":[0,0,107,12], -"class_transfer_function_form_base.html#ae208b4b2e42f9d9e021e1db483b3c481":[0,0,107,2], -"class_transfer_function_form_base.html#afba56679122dbb55dce1ebf34482e519":[0,0,107,7], -"class_transfer_function_form_base.html#afca69d20a9b8f361e074ab5553f016b0":[0,0,107,17], -"class_transformer.html":[0,0,108], -"class_transformer.html#a0395a11dc8173e511a0596ac96bf05e5":[0,0,108,21], -"class_transformer.html#a169064f996341f8f8b6881c6a3909f0b":[0,0,108,10], -"class_transformer.html#a1e9e9ba48aa76bdd2ff2e973014ad422":[0,0,108,5], -"class_transformer.html#a286bcc94f7202a6ff81b66707424a9bd":[0,0,108,7], -"class_transformer.html#a312583e28394926c746f133137345c9d":[0,0,108,1], -"class_transformer.html#a31a3dc18c483d67b4a03038563ecce38":[0,0,108,16], -"class_transformer.html#a327ff3cf9194c18049e4feac6761ebc0":[0,0,108,4] +"class_sync_motor.html":[0,0,99], +"class_sync_motor.html#a035b63a3dfd356daff0bf1cee9672313":[0,0,99,5], +"class_sync_motor.html#a038162c828595f58782fe97dea2c864d":[0,0,99,10], +"class_sync_motor.html#a0fedd06ef0833ce4d17869343b0810cb":[0,0,99,6], +"class_sync_motor.html#a12ac76afa871fc58cc0f27332723fc38":[0,0,99,12], +"class_sync_motor.html#a222d998e274674a0e0ce4a1ed53e8654":[0,0,99,0], +"class_sync_motor.html#a2ab8e43d5452f5d7f9ac375566a65210":[0,0,99,8], +"class_sync_motor.html#a3201b22e0271517f5ed3df85da6cee6f":[0,0,99,11], +"class_sync_motor.html#a435a9cfd24d182d8ab76a856fa4d0bb7":[0,0,99,2], +"class_sync_motor.html#a6068c7d22470a3996df2efda54c24972":[0,0,99,1], +"class_sync_motor.html#a7b3102220ea5f7e19690af045a6c8278":[0,0,99,4], +"class_sync_motor.html#a9b42283370ea4d4707b78b97e8c6d864":[0,0,99,3], +"class_sync_motor.html#aca41191da8383d577e3717d3e38cdf2b":[0,0,99,9], +"class_sync_motor.html#ae04da3b89a530e1457ff490b22b9f028":[0,0,99,7], +"class_text.html":[0,0,101], +"class_text.html#a03c67acf11b90374ded2a8cb8ec1088f":[0,0,101,8], +"class_text.html#a06e740065c875633e458c0d8f860c43e":[0,0,101,6], +"class_text.html#a0d0629dec49cece668f41d2a85062f39":[0,0,101,40], +"class_text.html#a0d37b9c067e62e10ebd1f0f74dbb5e66":[0,0,101,24], +"class_text.html#a15e4192a98a95baa22fd7a423efb5df9":[0,0,101,9], +"class_text.html#a255ba9b693f614b16986ac238c28f66e":[0,0,101,25], +"class_text.html#a2d07db0c15bdbd9d7056ac794f524f57":[0,0,101,36], +"class_text.html#a2d49e5c280e205125b149f7777ae30c7":[0,0,101,2], +"class_text.html#a2f40cb8ed553f1680bf402f9c8e2b541":[0,0,101,35], +"class_text.html#a340b00ac7a17cd9a1f37f63275715638":[0,0,101,11], +"class_text.html#a3b050d27140840eadcdce567df42d1e2":[0,0,101,7], +"class_text.html#a3f58eb1736e822f96882ded57938dbbd":[0,0,101,13], +"class_text.html#a41eabb28f45124d5da3ec2d703ce9018":[0,0,101,15], +"class_text.html#a4d1b7f1b53288297dfc8f77be4c37ac4":[0,0,101,38], +"class_text.html#a4f273ea7008c72533327c25caff2e917":[0,0,101,3], +"class_text.html#a51c55b9272f653cfc3cdafe665d5dde0":[0,0,101,4], +"class_text.html#a5eb67f2bf595a78858733c96a5bc05d6":[0,0,101,26], +"class_text.html#a6743a08fc0d1d8b96db99eab48eadb8f":[0,0,101,19], +"class_text.html#a7010e26ac225166d3a7f23118bf45f74":[0,0,101,32], +"class_text.html#a7e88aef941ba0b3dba303c4370b0bb7a":[0,0,101,29], +"class_text.html#a80916b96c94d30abd8d76dcbf01d580d":[0,0,101,12], +"class_text.html#a8bab7377ac548d1883dcbbe2489c5ff1":[0,0,101,33], +"class_text.html#a9836ec9395fdd3e0ce1f1914219fe360":[0,0,101,37], +"class_text.html#a9923c820cd77b411257ba48beceafeaa":[0,0,101,16], +"class_text.html#a9f05c1520fe691515ee15a0b63ca9b28":[0,0,101,14], +"class_text.html#aa32f9156fbbe783fab5d90072667e2c3":[0,0,101,23], +"class_text.html#aa722e4df566518900e4f2cc1f1af2f9c":[0,0,101,28], +"class_text.html#ab3e26143fccc52699bcc5149cae852bc":[0,0,101,0], +"class_text.html#ab3f1487162842f26d6d50b298bb3142d":[0,0,101,18], +"class_text.html#abe911e27cd723c0ab51f63d8f27683d1":[0,0,101,20], +"class_text.html#ac045b28b3621a5fddb3e5ac86889bfca":[0,0,101,39], +"class_text.html#ac0ab42a8d5145cd1d780f695d0e6e64f":[0,0,101,34], +"class_text.html#ac19aa2e04d68965adadee0c67daca99e":[0,0,101,41], +"class_text.html#ac6383f5f8e424f3c8cf6f37ac9371dcf":[0,0,101,27], +"class_text.html#ac8107fb05d19dbaf681af76a91ea739b":[0,0,101,1], +"class_text.html#ad251de30122437e2a311aa60e8ed390a":[0,0,101,31], +"class_text.html#ad696293ace753aba46568c76b1adff4e":[0,0,101,21], +"class_text.html#aea6772b57e5129e87926b6a35d90f74e":[0,0,101,10], +"class_text.html#aef377b465f00fe9aec996e122c1bb23a":[0,0,101,22], +"class_text.html#af025bbbb8d5619929df7817f98e23597":[0,0,101,5], +"class_text.html#afcd995d8a0b3921cd33dd305b586e3f7":[0,0,101,30], +"class_text.html#afe1f86a497f34cee4809cbd7fda24dc3":[0,0,101,17], +"class_text_form.html":[0,0,102], +"class_text_form.html#a05f71762d18640d7ee7b85cf8cfde0ee":[0,0,102,15], +"class_text_form.html#a098066e96da254f13b5cd2b0e8977e43":[0,0,102,7], +"class_text_form.html#a1268fce1f817bd9ff0626a24c0aabda7":[0,0,102,21], +"class_text_form.html#a14ccad2b03e8017c02eb632fbe02df2a":[0,0,102,0], +"class_text_form.html#a21a3fa61ce11a198e4a0cf086a85e61b":[0,0,102,10], +"class_text_form.html#a2946f7590a66a55d3ae63a6def86a8f3":[0,0,102,8], +"class_text_form.html#a29a135685c4f5f6801abc50ab48d97f9":[0,0,102,11], +"class_text_form.html#a3b32cfbb221700c5cde1146dd9ba0ac3":[0,0,102,12], +"class_text_form.html#a4bbd73071ce20cf1c805139af58d2e77":[0,0,102,5], +"class_text_form.html#a4e3ecb63b41fe8e1592ba1bdb57cf89f":[0,0,102,18], +"class_text_form.html#a53d385f26fb4bf90e52db6e4c1d3b49a":[0,0,102,14], +"class_text_form.html#a55358259e75a1e262aa6f2f58dc70c80":[0,0,102,16], +"class_text_form.html#a553bf0b435f0d59d4c86ea7a004aab60":[0,0,102,17], +"class_text_form.html#a644cc688a5f54e202c451f403174a725":[0,0,102,13], +"class_text_form.html#a7cb43566e1ec8bb5d7be0e3ed86f1876":[0,0,102,2], +"class_text_form.html#aa15c4be9ce71f50b6ebdbabf1ddb26bb":[0,0,102,1], +"class_text_form.html#aad06ea6fcaec43465ea4e0aa7bd3b61d":[0,0,102,22], +"class_text_form.html#aae058177645a7b974003cf7ba3957e62":[0,0,102,9], +"class_text_form.html#ab9cad6d1dc2ea1406ca6f9b44ecd46c3":[0,0,102,6], +"class_text_form.html#ad11e9224ce96616ccc1fae802a65738e":[0,0,102,3], +"class_text_form.html#adc28fed9ecb5fb32957737af4e7827dc":[0,0,102,20], +"class_text_form.html#ae46074db075dacd127c78b16b0417c3a":[0,0,102,4], +"class_text_form.html#af96c830fe67da49fac36a7df58f0728b":[0,0,102,19], +"class_text_form_base.html":[0,0,103], +"class_text_form_base.html#a06b80e25d042052ef8b5ebbcf39a82e6":[0,0,103,11], +"class_text_form_base.html#a0df65c65bf9926eaa20792d803762fd2":[0,0,103,22], +"class_text_form_base.html#a0f854e9b93a101684308930464799a3c":[0,0,103,24], +"class_text_form_base.html#a0ff115ed58de4b9f83e8ac18fc1c11cc":[0,0,103,25], +"class_text_form_base.html#a1822a077536adfdfdbf7ba7853e2917c":[0,0,103,20], +"class_text_form_base.html#a20e495f9fe62e0eaee49ea2cfb7661fa":[0,0,103,27], +"class_text_form_base.html#a279db3897b91ff97ebdd410169b8c13d":[0,0,103,10], +"class_text_form_base.html#a28448ef3a106719e2863660bd9230bdc":[0,0,103,39], +"class_text_form_base.html#a29c62763df7c88f78a1fb8b4c65e0383":[0,0,103,14], +"class_text_form_base.html#a39677cde5e236fd32257a86543e8a3f5":[0,0,103,48], +"class_text_form_base.html#a3dad92d1a04122535626e259c24391ec":[0,0,103,17], +"class_text_form_base.html#a3eb125e5242692bcff954c0706634833":[0,0,103,30], +"class_text_form_base.html#a4300bcea7b6ffc6c8c0e278908c9bf5a":[0,0,103,40], +"class_text_form_base.html#a47a05d0cd3b24d516d7cd73e6f1801b6":[0,0,103,16], +"class_text_form_base.html#a4c72fb0574b2bd9214140df806848f02":[0,0,103,43], +"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] }; diff --git a/docs/doxygen/html/navtreeindex11.js b/docs/doxygen/html/navtreeindex11.js index badc9c5..76dbe47 100644 --- a/docs/doxygen/html/navtreeindex11.js +++ b/docs/doxygen/html/navtreeindex11.js @@ -1,253 +1,253 @@ var NAVTREEINDEX11 = { -"class_transformer.html#a328c419af15701734168c8db62eefa36":[0,0,108,19], -"class_transformer.html#a39b58fcf230970601c5d77c088559731":[0,0,108,11], -"class_transformer.html#a4e70f875967e60d8202fb6e3c6e3f79a":[0,0,108,9], -"class_transformer.html#a4f9137e6190fb630167f671a0da51ab6":[0,0,108,17], -"class_transformer.html#a504e72295ea190d9956c5055645a96d1":[0,0,108,8], -"class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8":[0,0,108,12], -"class_transformer.html#a7d56456dadf3aa0bc60f59e7e7eda7a2":[0,0,108,0], -"class_transformer.html#a7e3cd54e20d795ab9b0b8533ce03b728":[0,0,108,18], -"class_transformer.html#a9652232a076cca0fe3753477ec88f63a":[0,0,108,13], -"class_transformer.html#aa1f87f24c062258b1437be648032bb6e":[0,0,108,22], -"class_transformer.html#aaa6cc999eb77a94dafaec5debb4db3de":[0,0,108,14], -"class_transformer.html#acb55f182a7f6d7af0feb6a94cb62af4f":[0,0,108,20], -"class_transformer.html#ad2f2bcd287bd3bb3221ab584f2c2fc90":[0,0,108,23], -"class_transformer.html#adf0b20286f3de359346b8877d65c1996":[0,0,108,15], -"class_transformer.html#adfe51a2198cfc10e1095af9c034681bd":[0,0,108,6], -"class_transformer.html#ae2f7b06be0f585ab586ee501ad59285c":[0,0,108,2], -"class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6":[0,0,108,3], -"class_transformer_form.html":[0,0,110], -"class_transformer_form.html#a10f5f72d1fc3882d229a54ba4522154a":[0,0,110,5], -"class_transformer_form.html#a71966865b6a286c22034ef50849513ab":[0,0,110,4], -"class_transformer_form.html#a72d54f5a59363d33b02e9467833c0b6b":[0,0,110,3], -"class_transformer_form.html#a737b66275ba708412a06dd764510a968":[0,0,110,2], -"class_transformer_form.html#a8cac1e9fdb77f140db36c4efe2e0555c":[0,0,110,0], -"class_transformer_form.html#ac1db49bd821dd82b25737686ae394103":[0,0,110,6], -"class_transformer_form.html#ad227425d57a1a8b8b6209cd55ebdbd80":[0,0,110,7], -"class_transformer_form.html#af9ab8a52f336a931e5e690ad8f0fc903":[0,0,110,1], -"class_transformer_form_base.html":[0,0,111], -"class_transformer_form_base.html#a022d3748ff4c570aea35538a463b6773":[0,0,111,43], -"class_transformer_form_base.html#a0284032d1298fb2ad4ac2eb427077914":[0,0,111,36], -"class_transformer_form_base.html#a03bf43a865e368c51afeabd81bd5d8ee":[0,0,111,86], -"class_transformer_form_base.html#a045b70a953da5049d4f5d853a9ec8ed4":[0,0,111,52], -"class_transformer_form_base.html#a04c92b7d29cd3375a1415764aa536406":[0,0,111,51], -"class_transformer_form_base.html#a0d466ffb4b1f4c1bd026c5f3f46a4c79":[0,0,111,21], -"class_transformer_form_base.html#a0dd7a20e78c4effd68da4764109bb4f1":[0,0,111,29], -"class_transformer_form_base.html#a113edf034a7f07f84bedf62bda482ddc":[0,0,111,24], -"class_transformer_form_base.html#a13f64e73b1906163fd4faea4c76dda20":[0,0,111,5], -"class_transformer_form_base.html#a1a021847167a55f2050d974fbe6529ae":[0,0,111,3], -"class_transformer_form_base.html#a1b799c8717841772b84dbd4268b5d33f":[0,0,111,83], -"class_transformer_form_base.html#a24caf79933c5ce7224e7787b9887ff80":[0,0,111,85], -"class_transformer_form_base.html#a253fe9d0a6aac89813e38304a27e239f":[0,0,111,87], -"class_transformer_form_base.html#a270bc4d0bbedcd942902757783643fe4":[0,0,111,76], -"class_transformer_form_base.html#a2cc878c4779f0ba73d5deb700759ecb0":[0,0,111,1], -"class_transformer_form_base.html#a2fde91e5014982d570274e407362dae4":[0,0,111,50], -"class_transformer_form_base.html#a38c21aed3d1fd4fd4e1ba41f3a138d3e":[0,0,111,10], -"class_transformer_form_base.html#a3f434986c270c39b3b68f359b0e9ee9a":[0,0,111,82], -"class_transformer_form_base.html#a4487a3bc92e5539f19fd42c0d5506e3d":[0,0,111,58], -"class_transformer_form_base.html#a49c8239313228c0843d089ef5d63dd55":[0,0,111,37], -"class_transformer_form_base.html#a4d2e10a6c0358a578deb65acf6295b9d":[0,0,111,9], -"class_transformer_form_base.html#a4f8d3c5594371b78264cbc159de95fbc":[0,0,111,62], -"class_transformer_form_base.html#a50fc4ce1b4dda224a1a0f711bfc9f26c":[0,0,111,18], -"class_transformer_form_base.html#a531e49e6a056144e2f5047286e8a16da":[0,0,111,32], -"class_transformer_form_base.html#a55e86e376d766493f443fef08ff58fd8":[0,0,111,17], -"class_transformer_form_base.html#a5706999e17e2932b972187736419d505":[0,0,111,57], -"class_transformer_form_base.html#a5a687a0a567cc31b15b0adc96460079e":[0,0,111,66], -"class_transformer_form_base.html#a5c748e72231caaa693337347a343ee64":[0,0,111,30], -"class_transformer_form_base.html#a610937e52d3ca590618a992d33a0eeb6":[0,0,111,71], -"class_transformer_form_base.html#a640f38342e6d516d172eef982e952a7f":[0,0,111,60], -"class_transformer_form_base.html#a69e14483db595799ff4baf5cf1e23e59":[0,0,111,72], -"class_transformer_form_base.html#a6b826cda74882238c54280b1b727fa5d":[0,0,111,46], -"class_transformer_form_base.html#a6dbb4bd37b20982632dd728ff855b870":[0,0,111,27], -"class_transformer_form_base.html#a70c25076ba3a28f31822cb2f1273fbb6":[0,0,111,2], -"class_transformer_form_base.html#a714a3a0d023771c3dcee367b709a297e":[0,0,111,26], -"class_transformer_form_base.html#a7870d1ac8852c45cc58fbd290a6acef3":[0,0,111,13], -"class_transformer_form_base.html#a7bdcbe2ed487ba2da498d7a6c7ac8e7a":[0,0,111,14], -"class_transformer_form_base.html#a7d718aac8c90366c98d7ee94f382d62f":[0,0,111,53], -"class_transformer_form_base.html#a7e8def6859b1e38fd3c91bfe6288bb73":[0,0,111,56], -"class_transformer_form_base.html#a7fe977bdfe8780749bc3ee987a7729b7":[0,0,111,40], -"class_transformer_form_base.html#a807fc537dbf283a9b7ff6cbef2dbcc00":[0,0,111,34], -"class_transformer_form_base.html#a811b577ff9fd83c437379455d7e52c53":[0,0,111,63], -"class_transformer_form_base.html#a844597ca569fe6b06d77284c2f06b279":[0,0,111,61], -"class_transformer_form_base.html#a85a92227216e9ce953b121c97f96c5f2":[0,0,111,42], -"class_transformer_form_base.html#a88bd7d74f839e3cec36b15ebd7651948":[0,0,111,55], -"class_transformer_form_base.html#a8df8a1bcbf215b3e466595beb30f68d8":[0,0,111,59], -"class_transformer_form_base.html#a8e4d2a3046c69b01bd705ae652bdea86":[0,0,111,67], -"class_transformer_form_base.html#a8ec2523003aa34d4f84a81de3cbbbdd5":[0,0,111,23], -"class_transformer_form_base.html#a9307de748d184dc5f00bdaaa9a09fb6c":[0,0,111,48], -"class_transformer_form_base.html#a9357f82f40ce6a73eb4bff990d5ccead":[0,0,111,88], -"class_transformer_form_base.html#a96c25a55ea50c18e14022f2ff00a5051":[0,0,111,80], -"class_transformer_form_base.html#a98efcfc4d7455dad70c87c9de30a26d0":[0,0,111,20], -"class_transformer_form_base.html#a99f0a3d39c149d1d8ae1b478bb1ecce2":[0,0,111,22], -"class_transformer_form_base.html#aa1c6bbea49f60eb9962b07146757da64":[0,0,111,65], -"class_transformer_form_base.html#aa1e990df75f9e6025ed38b601851b914":[0,0,111,49], -"class_transformer_form_base.html#aa665859e3b696bef4b146f1efbab0eca":[0,0,111,81], -"class_transformer_form_base.html#aa69ec87ce83152dbf30ca86ef9a431c6":[0,0,111,8], -"class_transformer_form_base.html#aabdd5f43e5379ecd03f6a01086fa8e98":[0,0,111,15], -"class_transformer_form_base.html#ab31a2c526cb74f229e4340e01ab0e71e":[0,0,111,84], -"class_transformer_form_base.html#ab3290af329387311274652c78e978512":[0,0,111,74], -"class_transformer_form_base.html#ab3ab36d5d0be6e5cd6cd41b88616f8b4":[0,0,111,79], -"class_transformer_form_base.html#ab88da886634ae9d6d0f010c80053d457":[0,0,111,31], -"class_transformer_form_base.html#ac1cf3e353c40d74eeef6c3822a1c2c03":[0,0,111,11], -"class_transformer_form_base.html#ac38779c0e258f370854243eb6b31986f":[0,0,111,6], -"class_transformer_form_base.html#ac3d86f996ce77b7855b925c85c3f7317":[0,0,111,35], -"class_transformer_form_base.html#ac506972ad5a38969111a0e23357fdfde":[0,0,111,16], -"class_transformer_form_base.html#ac7e3d90ed49d3343237c7f170429e743":[0,0,111,28], -"class_transformer_form_base.html#ac88dea58cbb0dd8a93f2e2e6040ec823":[0,0,111,4], -"class_transformer_form_base.html#ac9880a1a9c0b6be177714b95396108de":[0,0,111,70], -"class_transformer_form_base.html#acdd32c513f7d4a1eb23ac55ab3d28995":[0,0,111,45], -"class_transformer_form_base.html#acfcddec0baebd8c6885c26224bbfa280":[0,0,111,12], -"class_transformer_form_base.html#ad1425a7f7ab1862cafb87f08f364ba8e":[0,0,111,75], -"class_transformer_form_base.html#ad1624c0498b54b5b0beb3f77d85f687d":[0,0,111,41], -"class_transformer_form_base.html#ad3c02626ca03e34914137d1b41f530e6":[0,0,111,73], -"class_transformer_form_base.html#ad3c3cfd26566f06a0c0fe9d116648e37":[0,0,111,68], -"class_transformer_form_base.html#ad62929ebbf445d52d283f863a77ccd1b":[0,0,111,77], -"class_transformer_form_base.html#ad96d875c08ef54e86ebccbf0c326598d":[0,0,111,33], -"class_transformer_form_base.html#adc8d387589bb5acdd75d4bbd985ad243":[0,0,111,69], -"class_transformer_form_base.html#ade4e3e90c5c0f4f0abe278ffba2443a0":[0,0,111,44], -"class_transformer_form_base.html#ade72da576a6bcd2182798e449f8ce8d5":[0,0,111,38], -"class_transformer_form_base.html#ae0c2fbf9475ee1e780896fa89c14b878":[0,0,111,0], -"class_transformer_form_base.html#ae2196cf62a3c277247a112d7971872b0":[0,0,111,78], -"class_transformer_form_base.html#ae7a24e53da32b8caf67fc5ef39618743":[0,0,111,54], -"class_transformer_form_base.html#aee0b43085f009f2517994967d080b794":[0,0,111,7], -"class_transformer_form_base.html#aee7759b13cf93e4722e7514f4ddcfa8f":[0,0,111,39], -"class_transformer_form_base.html#af01e4be05d790d0a2236846899418b53":[0,0,111,19], -"class_transformer_form_base.html#af088bc27c75828d7829f18c4c4a5d7df":[0,0,111,64], -"class_transformer_form_base.html#af1394f18900292398f9f317341f1e727":[0,0,111,25], -"class_transformer_form_base.html#af65e4801b524b44b075a6218777777f0":[0,0,111,47], -"class_workspace.html":[0,0,112], -"class_workspace.html#a013bdfced9e47c0a11d378409cda1376":[0,0,112,62], -"class_workspace.html#a057257829453518249ebc0fc971c2a68":[0,0,112,47], -"class_workspace.html#a0f25d318ff7310d11e510239953b92fc":[0,0,112,8], -"class_workspace.html#a10c751ef894a1ce02ca401a0a60b3333":[0,0,112,3], -"class_workspace.html#a16047d114ac4c9708eccf87ddc93c57f":[0,0,112,59], -"class_workspace.html#a16b55585d4fa51fc3a565df2ce16997e":[0,0,112,69], -"class_workspace.html#a239e2b579a4c1b640b4f5e2640c61044":[0,0,112,70], -"class_workspace.html#a259249b912ae1caae1c166eb2f9f4123":[0,0,112,25], -"class_workspace.html#a26add99100a783d857b52fe497d5a209":[0,0,112,71], -"class_workspace.html#a29e232a2810f36222f0b1ba2f775f606":[0,0,112,5], -"class_workspace.html#a2c1f915ba189d1dc3b9088fd79b2f31a":[0,0,112,54], -"class_workspace.html#a38a886655d99aae4dbaeec88e7f855ce":[0,0,112,19], -"class_workspace.html#a3ffd9682e5898f467b54748c5277e239":[0,0,112,2], -"class_workspace.html#a444c05695fd50548fa025a97567e8a55":[0,0,112,73], -"class_workspace.html#a47405d47dd54d98cd0b5e323a5cf9071":[0,0,112,43], -"class_workspace.html#a49bec4c0ddb83d1bcfe4bb6cdf688864":[0,0,112,21], -"class_workspace.html#a4fa9ee617ed7da22b84eced403bb512e":[0,0,112,48], -"class_workspace.html#a52b015440855fbab2ae1ba7a229a36c7":[0,0,112,31], -"class_workspace.html#a5347e4a880ed744ef20da988aaac534f":[0,0,112,72], -"class_workspace.html#a58e7526fe48d3fbff16c7bf7ac607b0c":[0,0,112,35], -"class_workspace.html#a5b71e0ec48f1d9ae1ce9e01b546c01b1":[0,0,112,18], -"class_workspace.html#a5bc77206269e7abdd75085b90385e934":[0,0,112,27], -"class_workspace.html#a5c7dcb5b022b37bce0647aab42bc764a":[0,0,112,57], -"class_workspace.html#a61dd47c1c36cab51f67f6652e560b635":[0,0,112,36], -"class_workspace.html#a6658ab0800105042a29b6fea1102f873":[0,0,112,50], -"class_workspace.html#a691c80813f2f2f15bfb79db5edddf22a":[0,0,112,42], -"class_workspace.html#a69ed8a7449993602944683f9a9584fe1":[0,0,112,45], -"class_workspace.html#a6c024a0381b8515287ff82a0c135a285":[0,0,112,14], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914":[0,0,112,0], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a094a29399033e02e51fd013eac5f8bc3":[0,0,112,0,3], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a253dcdbf5c54e7de2489b54098e29161":[0,0,112,0,5], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a32cb1102be505f27ae0255d9e3834acc":[0,0,112,0,4], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a36270dbb58538c00a5b009916dda4748":[0,0,112,0,9], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a3e1fead750fbde2a9bf75f457f387e1c":[0,0,112,0,1], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a3f2c5b345a9ac7d8dfcd2b51a6becc2c":[0,0,112,0,0], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a48963bc6da69eeee46985e57383a6831":[0,0,112,0,10], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a92c16301deb027b1bad37c54f7432482":[0,0,112,0,6], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a94ed0030aad40a766af3d97b8cbb55df":[0,0,112,0,7], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a990ae713f0e72eab71de6b77c3bf412f":[0,0,112,0,11], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914ae98c91e3a672a7b48020d41234f65056":[0,0,112,0,2], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914aff456a8f97d89f415295642cfc4e7411":[0,0,112,0,8], -"class_workspace.html#a6d84b8d85526f1194667606429a3a315":[0,0,112,56], -"class_workspace.html#a6e1788b16636c60be5bf0b0bbc0a3a26":[0,0,112,33], -"class_workspace.html#a6e5a3440a86e3afc1336740aac1efbe1":[0,0,112,22], -"class_workspace.html#a6f2dcf924f95cb2b2216057a0fc53f41":[0,0,112,10], -"class_workspace.html#a709ba1bac8061b82a91e225effd22621":[0,0,112,15], -"class_workspace.html#a735b10c59c133a6c81be7432a8978e8b":[0,0,112,13], -"class_workspace.html#a758abd23ac6f327899e9761da653b40e":[0,0,112,17], -"class_workspace.html#a773f2c59738a7b546e032509822aaba4":[0,0,112,61], -"class_workspace.html#a7a940cc3edfa6da2ecc4f3555eb2259b":[0,0,112,46], -"class_workspace.html#a810b16fadd522ab40335c7533e051d6f":[0,0,112,28], -"class_workspace.html#a82d91c594e8ae5d2dc72ea4384abe24f":[0,0,112,12], -"class_workspace.html#a8372edc7102baabc9170836c40548084":[0,0,112,38], -"class_workspace.html#a8677426ffcd80c3fa76ba2f8d6c402d5":[0,0,112,11], -"class_workspace.html#a8af383b55580f7b02eea83df03d125b9":[0,0,112,39], -"class_workspace.html#a8b7645ec6641e9eff52f9d6b8e12b84e":[0,0,112,65], -"class_workspace.html#a8cce4d1259bccce5f7b19ac3284be60e":[0,0,112,4], -"class_workspace.html#a916173d5babcda8af782015e80e3e2ae":[0,0,112,51], -"class_workspace.html#a92ddb55af7ffa45f050f46becb3f520b":[0,0,112,6], -"class_workspace.html#a94db01244419924778d7578332415a97":[0,0,112,1], -"class_workspace.html#a953a0a155f3363ea4834cd471287f7ec":[0,0,112,7], -"class_workspace.html#a96e2691b76f78ca4f63013a299a2338a":[0,0,112,23], -"class_workspace.html#aa072c180c3feee54ee84c13ce4ca9410":[0,0,112,55], -"class_workspace.html#aa8a761564e7ba7820911373ea1990b88":[0,0,112,20], -"class_workspace.html#aaef2ac88b0cb8e204c3bd59fd96eba32":[0,0,112,52], -"class_workspace.html#ab0773cafa9c7127d8985256f0e3a394e":[0,0,112,40], -"class_workspace.html#ab2e997f328f88889b3712bcd3d5d7310":[0,0,112,67], -"class_workspace.html#abe29ae978b1c93569bf60e4d45f0050f":[0,0,112,29], -"class_workspace.html#abf538431670cc5aa24d60393d259b48a":[0,0,112,24], -"class_workspace.html#ac59319d3776983ae607a602d7588a0b9":[0,0,112,68], -"class_workspace.html#acbc1a9429407f3e86da419639c974dc6":[0,0,112,66], -"class_workspace.html#accb1b98baf52125dbc989784aac69074":[0,0,112,58], -"class_workspace.html#acf4e1d561abc0667214619753789ba1c":[0,0,112,53], -"class_workspace.html#acf9d7e1a32e3ba2714aad00558561164":[0,0,112,9], -"class_workspace.html#ad966b16ef1d8216c69c577f17bad4361":[0,0,112,63], -"class_workspace.html#adeefec5df5f908bed2b3c19b1fcd6f95":[0,0,112,41], -"class_workspace.html#ae6537cdff1e5cfb7fea9b096fc8b2cb4":[0,0,112,16], -"class_workspace.html#ae72fd97fa7abdce3615318b8dd5db122":[0,0,112,64], -"class_workspace.html#ae88b97cdf57d4f078fa4c3da4321721f":[0,0,112,32], -"class_workspace.html#aefd3e77c34bf4cd9c937f803c9bee813":[0,0,112,30], -"class_workspace.html#af19b02bb34f824af0c0e736f95a96e51":[0,0,112,37], -"class_workspace.html#af3d21e7fe9eb683b2b4e2c38ab8b1c66":[0,0,112,26], -"class_workspace.html#af7692e86ad24285a8bf7865646e3b3e7":[0,0,112,34], -"class_workspace.html#af7b9721a871221f9c534e7a5af482b8a":[0,0,112,60], -"class_workspace.html#af7cf65a1be2daa086b74e152094a8da8":[0,0,112,44], -"class_workspace.html#afa900c2ba854a6922ad2a28d5e28c4ac":[0,0,112,49], -"class_workspace_base.html":[0,0,113], -"class_workspace_base.html#a10f274f51010decd8dfd872880300c80":[0,0,113,10], -"class_workspace_base.html#a43c2bddd523784d1373f4cfa3d232023":[0,0,113,3], -"class_workspace_base.html#a44f48b6d1f1a412f397fda1cf500ef2f":[0,0,113,5], -"class_workspace_base.html#a514bd173615bc2af5cce766a78c90678":[0,0,113,16], -"class_workspace_base.html#a664285c92d2e58cffd2e0706f36a779c":[0,0,113,15], -"class_workspace_base.html#a70d926c1f83f7510f487f9f1f474083f":[0,0,113,18], -"class_workspace_base.html#a8b2d918751866735d2f8c957c85d5f8a":[0,0,113,11], -"class_workspace_base.html#a8b4c940f21dfd8b6cf20ff6aa05604b3":[0,0,113,13], -"class_workspace_base.html#a9001ad5fa6ab8fbc56efcdd4a79cdc5e":[0,0,113,6], -"class_workspace_base.html#a90d56828276491b843e0da41a7103ce2":[0,0,113,9], -"class_workspace_base.html#a99ad7de77199406140c440afeeb55901":[0,0,113,17], -"class_workspace_base.html#aa7a7fdfc3469fbe895963d956baf7810":[0,0,113,1], -"class_workspace_base.html#aae6d969022b9f998dbf8cb5c50e2ec20":[0,0,113,2], -"class_workspace_base.html#ab025deb21418482cbe2555b1a06bb1a0":[0,0,113,0], -"class_workspace_base.html#abb90fc90faa3b8570a90cc20ee6d1e91":[0,0,113,4], -"class_workspace_base.html#abcf950107b3473a127bd50436529c500":[0,0,113,7], -"class_workspace_base.html#acdab5799f4d3992f0039c39896d2f295":[0,0,113,14], -"class_workspace_base.html#ae004b4c7aa73429ff04be1957c1d4f3d":[0,0,113,12], -"class_workspace_base.html#ae5633aaebc0fcfefb8c404a0747cff73":[0,0,113,8], -"classes.html":[0,1], -"classwx_g_l_number_renderer.html":[0,0,114], -"classwx_g_l_number_renderer.html#a2273ecc04f77d076df5352d2bdb4c3a8":[0,0,114,4], -"classwx_g_l_number_renderer.html#a6ea7d396fd2f435a889ee05d8da67532":[0,0,114,0], -"classwx_g_l_number_renderer.html#a857e30cb8a78f1e6197957110fc339d6":[0,0,114,5], -"classwx_g_l_number_renderer.html#a9de7eec569a559adea04ab66b671ac62":[0,0,114,3], -"classwx_g_l_number_renderer.html#aa79114bda6e5e4c3db4b8aeeb5f272c4":[0,0,114,2], -"classwx_g_l_number_renderer.html#af2a56e95687d52b3f59a27783eb049ec":[0,0,114,1], -"classwx_g_l_string.html":[0,0,115], -"classwx_g_l_string.html#a19e05beb1f5cbf905f4e1cdf5b566303":[0,0,115,0], -"classwx_g_l_string.html#a54a67012ceb50ee50696c0c1fa0a7b55":[0,0,115,5], -"classwx_g_l_string.html#a5845eab608e6a8732ec33a5213eb8015":[0,0,115,8], -"classwx_g_l_string.html#a61de4c6cec06534405b7ecc292b9bd28":[0,0,115,10], -"classwx_g_l_string.html#a6dbedbac054d8835ff98e02b7a2c1801":[0,0,115,1], -"classwx_g_l_string.html#a84cd1aef5211cb85405e7d96d6f2cd36":[0,0,115,11], -"classwx_g_l_string.html#a8d08f71da3521f0a88b8625c348962b7":[0,0,115,4], -"classwx_g_l_string.html#a99128628906c57841225e92b8a77b6dd":[0,0,115,7], -"classwx_g_l_string.html#a9c3779f981d87d2b0707882057ba30c2":[0,0,115,12], -"classwx_g_l_string.html#ab31442170832123f5a0afa2b15fb024a":[0,0,115,3], -"classwx_g_l_string.html#ab7b55ee1f80a1ce7e74805225e747dab":[0,0,115,2], -"classwx_g_l_string.html#ab923a7884ed7652bf0c89f7688671aa4":[0,0,115,6], -"classwx_g_l_string.html#ac2b03c6b32121611472baf33e84fac24":[0,0,115,9], -"classwx_g_l_string_array.html":[0,0,116], -"classwx_g_l_string_array.html#a0c466a4b8f3d5ca954749f8440b5fa0f":[0,0,116,1], -"classwx_g_l_string_array.html#a23176b0de1c1faf839cb9ea539cc1c06":[0,0,116,2], -"classwx_g_l_string_array.html#a2aaa7b340ee571ca6405bbec28715430":[0,0,116,5], -"classwx_g_l_string_array.html#a2ae0c1cffb2f54b66a170d1698ad62e0":[0,0,116,6] +"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], +"class_text_texture.html#a5819c3917f7be6e1fdd1f5d1b617dd2a":[0,0,105,2], +"class_text_texture.html#a61de4c6cec06534405b7ecc292b9bd28":[0,0,105,6], +"class_text_texture.html#a8894b391174ffe37d1d372b8c4a31fe7":[0,0,105,7], +"class_text_texture.html#aa7ab43a57d9767d92ee60933977d66ac":[0,0,105,3], +"class_text_texture.html#ac663a01462a341a279cc4cdf0c500fba":[0,0,105,4], +"class_transfer_function.html":[0,0,106], +"class_transfer_function.html#a0bc542d565e75938699d5e03f3a5e6f0":[0,0,106,15], +"class_transfer_function.html#a0cd1dec850117741abb04b608c7b3f1e":[0,0,106,5], +"class_transfer_function.html#a0cd48b67fbcc1afc400bdf6cadb824b4":[0,0,106,23], +"class_transfer_function.html#a0d4b3da271ecef4ec764a9f26b1ee488":[0,0,106,28], +"class_transfer_function.html#a3312f7e9499aa99742093d3b60547862":[0,0,106,6], +"class_transfer_function.html#a39e20dc5b20657d882fb820ee1178eee":[0,0,106,8], +"class_transfer_function.html#a39ec7eda2cc3737a1502af8bdf2a9bf5":[0,0,106,22], +"class_transfer_function.html#a4d3e5afb04d7196647814339cd15bc3a":[0,0,106,24], +"class_transfer_function.html#a5f09dd8e5c016a90c69a8e38ef302c8a":[0,0,106,3], +"class_transfer_function.html#a630099b92667aa3e4b455fba234d4eda":[0,0,106,10], +"class_transfer_function.html#a6325dec72c7b85178f490c5cf85229bd":[0,0,106,12], +"class_transfer_function.html#a6a4415d2cf0af290494ea30d586cc187":[0,0,106,4], +"class_transfer_function.html#a6b66df900c86cfb848d2e08591a4a0c9":[0,0,106,25], +"class_transfer_function.html#a70e6b38f9b4a45a29b3b2eb4947e8e2f":[0,0,106,7], +"class_transfer_function.html#a966c99fbd03b89662e0a340b7cffe717":[0,0,106,27], +"class_transfer_function.html#a96c6acddec588288c5883416ec926abe":[0,0,106,31], +"class_transfer_function.html#aa16c1f3e18149c153d78e0627a5e9972":[0,0,106,21], +"class_transfer_function.html#ab23ed101f7d4e953e4df0d4d480d9798":[0,0,106,18], +"class_transfer_function.html#ab736fb79486407e626364e1410c263f3":[0,0,106,1], +"class_transfer_function.html#aba60b46f243b3b0c8e9ccdeb391cba27":[0,0,106,2], +"class_transfer_function.html#ac6755bf723a1dfa90ee8254471136429":[0,0,106,29], +"class_transfer_function.html#ad10adb7a94ebc62349cca7b56b7cadb9":[0,0,106,19], +"class_transfer_function.html#ad5e7f4e17ce8ca7d3ab4a2ea2b688438":[0,0,106,14], +"class_transfer_function.html#ad708802d32428ddb20d33910bf348b55":[0,0,106,26], +"class_transfer_function.html#ae145b86db1450a19a3ed32084ee60423":[0,0,106,13], +"class_transfer_function.html#ae1ea0f8351796e932609e1c9494b5e76":[0,0,106,16], +"class_transfer_function.html#aec2d0676d112ccf849c0d3d6f3fee461":[0,0,106,11], +"class_transfer_function.html#aee524d83c25209202ba2b1e8a600ef21":[0,0,106,30], +"class_transfer_function.html#aee6c1440c4f527b7a839e07474a381f0":[0,0,106,9], +"class_transfer_function.html#af8c3f06742a7ffc9dabc0d4f5dbc98c3":[0,0,106,20], +"class_transfer_function.html#afe15de93ab4f93032560a6139091ef10":[0,0,106,17], +"class_transfer_function_form.html":[0,0,107], +"class_transfer_function_form.html#a1c565e92a52dd6e710db7ecf92083f37":[0,0,107,3], +"class_transfer_function_form.html#a27c6a37b520b4e3043ae492d9112a9df":[0,0,107,4], +"class_transfer_function_form.html#a38f692bf981cfb865a6d8d2528aa3b56":[0,0,107,6], +"class_transfer_function_form.html#a45b34337d0dbef9df6e4b35f169ccf98":[0,0,107,1], +"class_transfer_function_form.html#a546e732b865a8054231432df595246c2":[0,0,107,5], +"class_transfer_function_form.html#a681698673fea3d716ee383ae3d9d28eb":[0,0,107,2], +"class_transfer_function_form.html#a87648ffa2b1d88ff18135f1dce46ac97":[0,0,107,7], +"class_transfer_function_form.html#ab3973fc6d0585be5570682674041d21d":[0,0,107,0], +"class_transfer_function_form_base.html":[0,0,108], +"class_transfer_function_form_base.html#a0016c5144bc331f6348bea935bb8cc55":[0,0,108,16], +"class_transfer_function_form_base.html#a008be2fa5d9b01b841ae8689606d9b5b":[0,0,108,4], +"class_transfer_function_form_base.html#a049b09e73946dcca6306d72770e097fd":[0,0,108,18], +"class_transfer_function_form_base.html#a1be29f1cc2a4ecd64b5d368cb7a9dd8c":[0,0,108,14], +"class_transfer_function_form_base.html#a1d5de82c329970e967c75de0f99778ef":[0,0,108,19], +"class_transfer_function_form_base.html#a2be269d1b27821fd3bda48c34d2382be":[0,0,108,15], +"class_transfer_function_form_base.html#a2f8ad120d19ede3c79a2dbee404927d7":[0,0,108,5], +"class_transfer_function_form_base.html#a3dfe2400369e1ca1416b26f265f0ae4b":[0,0,108,3], +"class_transfer_function_form_base.html#a47346c56b626d41c6ddec9fc26060f6d":[0,0,108,13], +"class_transfer_function_form_base.html#a4ce3369a8557eced7b42b878016c9331":[0,0,108,0], +"class_transfer_function_form_base.html#a7f5da321a6297086cc6f5c3ea85be7f0":[0,0,108,1], +"class_transfer_function_form_base.html#a8618a2b5585ac0b665b8fdc3c9ceeae3":[0,0,108,6], +"class_transfer_function_form_base.html#a93731803bc32f17be6ae889182ab5bee":[0,0,108,11], +"class_transfer_function_form_base.html#aa4603a3f49179e61205862faa962ef4b":[0,0,108,8], +"class_transfer_function_form_base.html#aa8839934e71bf16b63a5cff34679be4b":[0,0,108,10], +"class_transfer_function_form_base.html#ab70bd59a35d2c588291e0fd65b7b043c":[0,0,108,9], +"class_transfer_function_form_base.html#ae1a557b170a2966b73a87d6ffd6eaf0e":[0,0,108,12], +"class_transfer_function_form_base.html#ae208b4b2e42f9d9e021e1db483b3c481":[0,0,108,2], +"class_transfer_function_form_base.html#afba56679122dbb55dce1ebf34482e519":[0,0,108,7], +"class_transfer_function_form_base.html#afca69d20a9b8f361e074ab5553f016b0":[0,0,108,17], +"class_transformer.html":[0,0,109], +"class_transformer.html#a0395a11dc8173e511a0596ac96bf05e5":[0,0,109,21], +"class_transformer.html#a169064f996341f8f8b6881c6a3909f0b":[0,0,109,10], +"class_transformer.html#a1e9e9ba48aa76bdd2ff2e973014ad422":[0,0,109,5], +"class_transformer.html#a286bcc94f7202a6ff81b66707424a9bd":[0,0,109,7], +"class_transformer.html#a312583e28394926c746f133137345c9d":[0,0,109,1], +"class_transformer.html#a31a3dc18c483d67b4a03038563ecce38":[0,0,109,16], +"class_transformer.html#a327ff3cf9194c18049e4feac6761ebc0":[0,0,109,4], +"class_transformer.html#a328c419af15701734168c8db62eefa36":[0,0,109,19], +"class_transformer.html#a39b58fcf230970601c5d77c088559731":[0,0,109,11], +"class_transformer.html#a4e70f875967e60d8202fb6e3c6e3f79a":[0,0,109,9], +"class_transformer.html#a4f9137e6190fb630167f671a0da51ab6":[0,0,109,17], +"class_transformer.html#a504e72295ea190d9956c5055645a96d1":[0,0,109,8], +"class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8":[0,0,109,12], +"class_transformer.html#a7d56456dadf3aa0bc60f59e7e7eda7a2":[0,0,109,0], +"class_transformer.html#a7e3cd54e20d795ab9b0b8533ce03b728":[0,0,109,18], +"class_transformer.html#a9652232a076cca0fe3753477ec88f63a":[0,0,109,13], +"class_transformer.html#aa1f87f24c062258b1437be648032bb6e":[0,0,109,22], +"class_transformer.html#aaa6cc999eb77a94dafaec5debb4db3de":[0,0,109,14], +"class_transformer.html#acb55f182a7f6d7af0feb6a94cb62af4f":[0,0,109,20], +"class_transformer.html#ad2f2bcd287bd3bb3221ab584f2c2fc90":[0,0,109,23], +"class_transformer.html#adf0b20286f3de359346b8877d65c1996":[0,0,109,15], +"class_transformer.html#adfe51a2198cfc10e1095af9c034681bd":[0,0,109,6], +"class_transformer.html#ae2f7b06be0f585ab586ee501ad59285c":[0,0,109,2], +"class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6":[0,0,109,3], +"class_transformer_form.html":[0,0,111], +"class_transformer_form.html#a10f5f72d1fc3882d229a54ba4522154a":[0,0,111,5], +"class_transformer_form.html#a71966865b6a286c22034ef50849513ab":[0,0,111,4], +"class_transformer_form.html#a72d54f5a59363d33b02e9467833c0b6b":[0,0,111,3], +"class_transformer_form.html#a737b66275ba708412a06dd764510a968":[0,0,111,2], +"class_transformer_form.html#a8cac1e9fdb77f140db36c4efe2e0555c":[0,0,111,0], +"class_transformer_form.html#ac1db49bd821dd82b25737686ae394103":[0,0,111,6], +"class_transformer_form.html#ad227425d57a1a8b8b6209cd55ebdbd80":[0,0,111,7], +"class_transformer_form.html#af9ab8a52f336a931e5e690ad8f0fc903":[0,0,111,1], +"class_transformer_form_base.html":[0,0,112], +"class_transformer_form_base.html#a022d3748ff4c570aea35538a463b6773":[0,0,112,43], +"class_transformer_form_base.html#a0284032d1298fb2ad4ac2eb427077914":[0,0,112,36], +"class_transformer_form_base.html#a03bf43a865e368c51afeabd81bd5d8ee":[0,0,112,86], +"class_transformer_form_base.html#a045b70a953da5049d4f5d853a9ec8ed4":[0,0,112,52], +"class_transformer_form_base.html#a04c92b7d29cd3375a1415764aa536406":[0,0,112,51], +"class_transformer_form_base.html#a0d466ffb4b1f4c1bd026c5f3f46a4c79":[0,0,112,21], +"class_transformer_form_base.html#a0dd7a20e78c4effd68da4764109bb4f1":[0,0,112,29], +"class_transformer_form_base.html#a113edf034a7f07f84bedf62bda482ddc":[0,0,112,24], +"class_transformer_form_base.html#a13f64e73b1906163fd4faea4c76dda20":[0,0,112,5], +"class_transformer_form_base.html#a1a021847167a55f2050d974fbe6529ae":[0,0,112,3], +"class_transformer_form_base.html#a1b799c8717841772b84dbd4268b5d33f":[0,0,112,83], +"class_transformer_form_base.html#a24caf79933c5ce7224e7787b9887ff80":[0,0,112,85], +"class_transformer_form_base.html#a253fe9d0a6aac89813e38304a27e239f":[0,0,112,87], +"class_transformer_form_base.html#a270bc4d0bbedcd942902757783643fe4":[0,0,112,76], +"class_transformer_form_base.html#a2cc878c4779f0ba73d5deb700759ecb0":[0,0,112,1], +"class_transformer_form_base.html#a2fde91e5014982d570274e407362dae4":[0,0,112,50], +"class_transformer_form_base.html#a38c21aed3d1fd4fd4e1ba41f3a138d3e":[0,0,112,10], +"class_transformer_form_base.html#a3f434986c270c39b3b68f359b0e9ee9a":[0,0,112,82], +"class_transformer_form_base.html#a4487a3bc92e5539f19fd42c0d5506e3d":[0,0,112,58], +"class_transformer_form_base.html#a49c8239313228c0843d089ef5d63dd55":[0,0,112,37], +"class_transformer_form_base.html#a4d2e10a6c0358a578deb65acf6295b9d":[0,0,112,9], +"class_transformer_form_base.html#a4f8d3c5594371b78264cbc159de95fbc":[0,0,112,62], +"class_transformer_form_base.html#a50fc4ce1b4dda224a1a0f711bfc9f26c":[0,0,112,18], +"class_transformer_form_base.html#a531e49e6a056144e2f5047286e8a16da":[0,0,112,32], +"class_transformer_form_base.html#a55e86e376d766493f443fef08ff58fd8":[0,0,112,17], +"class_transformer_form_base.html#a5706999e17e2932b972187736419d505":[0,0,112,57], +"class_transformer_form_base.html#a5a687a0a567cc31b15b0adc96460079e":[0,0,112,66], +"class_transformer_form_base.html#a5c748e72231caaa693337347a343ee64":[0,0,112,30], +"class_transformer_form_base.html#a610937e52d3ca590618a992d33a0eeb6":[0,0,112,71], +"class_transformer_form_base.html#a640f38342e6d516d172eef982e952a7f":[0,0,112,60], +"class_transformer_form_base.html#a69e14483db595799ff4baf5cf1e23e59":[0,0,112,72], +"class_transformer_form_base.html#a6b826cda74882238c54280b1b727fa5d":[0,0,112,46], +"class_transformer_form_base.html#a6dbb4bd37b20982632dd728ff855b870":[0,0,112,27], +"class_transformer_form_base.html#a70c25076ba3a28f31822cb2f1273fbb6":[0,0,112,2], +"class_transformer_form_base.html#a714a3a0d023771c3dcee367b709a297e":[0,0,112,26], +"class_transformer_form_base.html#a7870d1ac8852c45cc58fbd290a6acef3":[0,0,112,13], +"class_transformer_form_base.html#a7bdcbe2ed487ba2da498d7a6c7ac8e7a":[0,0,112,14], +"class_transformer_form_base.html#a7d718aac8c90366c98d7ee94f382d62f":[0,0,112,53], +"class_transformer_form_base.html#a7e8def6859b1e38fd3c91bfe6288bb73":[0,0,112,56], +"class_transformer_form_base.html#a7fe977bdfe8780749bc3ee987a7729b7":[0,0,112,40], +"class_transformer_form_base.html#a807fc537dbf283a9b7ff6cbef2dbcc00":[0,0,112,34], +"class_transformer_form_base.html#a811b577ff9fd83c437379455d7e52c53":[0,0,112,63], +"class_transformer_form_base.html#a844597ca569fe6b06d77284c2f06b279":[0,0,112,61], +"class_transformer_form_base.html#a85a92227216e9ce953b121c97f96c5f2":[0,0,112,42], +"class_transformer_form_base.html#a88bd7d74f839e3cec36b15ebd7651948":[0,0,112,55], +"class_transformer_form_base.html#a8df8a1bcbf215b3e466595beb30f68d8":[0,0,112,59], +"class_transformer_form_base.html#a8e4d2a3046c69b01bd705ae652bdea86":[0,0,112,67], +"class_transformer_form_base.html#a8ec2523003aa34d4f84a81de3cbbbdd5":[0,0,112,23], +"class_transformer_form_base.html#a9307de748d184dc5f00bdaaa9a09fb6c":[0,0,112,48], +"class_transformer_form_base.html#a9357f82f40ce6a73eb4bff990d5ccead":[0,0,112,88], +"class_transformer_form_base.html#a96c25a55ea50c18e14022f2ff00a5051":[0,0,112,80], +"class_transformer_form_base.html#a98efcfc4d7455dad70c87c9de30a26d0":[0,0,112,20], +"class_transformer_form_base.html#a99f0a3d39c149d1d8ae1b478bb1ecce2":[0,0,112,22], +"class_transformer_form_base.html#aa1c6bbea49f60eb9962b07146757da64":[0,0,112,65], +"class_transformer_form_base.html#aa1e990df75f9e6025ed38b601851b914":[0,0,112,49], +"class_transformer_form_base.html#aa665859e3b696bef4b146f1efbab0eca":[0,0,112,81], +"class_transformer_form_base.html#aa69ec87ce83152dbf30ca86ef9a431c6":[0,0,112,8], +"class_transformer_form_base.html#aabdd5f43e5379ecd03f6a01086fa8e98":[0,0,112,15], +"class_transformer_form_base.html#ab31a2c526cb74f229e4340e01ab0e71e":[0,0,112,84], +"class_transformer_form_base.html#ab3290af329387311274652c78e978512":[0,0,112,74], +"class_transformer_form_base.html#ab3ab36d5d0be6e5cd6cd41b88616f8b4":[0,0,112,79], +"class_transformer_form_base.html#ab88da886634ae9d6d0f010c80053d457":[0,0,112,31], +"class_transformer_form_base.html#ac1cf3e353c40d74eeef6c3822a1c2c03":[0,0,112,11], +"class_transformer_form_base.html#ac38779c0e258f370854243eb6b31986f":[0,0,112,6], +"class_transformer_form_base.html#ac3d86f996ce77b7855b925c85c3f7317":[0,0,112,35], +"class_transformer_form_base.html#ac506972ad5a38969111a0e23357fdfde":[0,0,112,16], +"class_transformer_form_base.html#ac7e3d90ed49d3343237c7f170429e743":[0,0,112,28], +"class_transformer_form_base.html#ac88dea58cbb0dd8a93f2e2e6040ec823":[0,0,112,4], +"class_transformer_form_base.html#ac9880a1a9c0b6be177714b95396108de":[0,0,112,70], +"class_transformer_form_base.html#acdd32c513f7d4a1eb23ac55ab3d28995":[0,0,112,45], +"class_transformer_form_base.html#acfcddec0baebd8c6885c26224bbfa280":[0,0,112,12], +"class_transformer_form_base.html#ad1425a7f7ab1862cafb87f08f364ba8e":[0,0,112,75], +"class_transformer_form_base.html#ad1624c0498b54b5b0beb3f77d85f687d":[0,0,112,41], +"class_transformer_form_base.html#ad3c02626ca03e34914137d1b41f530e6":[0,0,112,73], +"class_transformer_form_base.html#ad3c3cfd26566f06a0c0fe9d116648e37":[0,0,112,68], +"class_transformer_form_base.html#ad62929ebbf445d52d283f863a77ccd1b":[0,0,112,77], +"class_transformer_form_base.html#ad96d875c08ef54e86ebccbf0c326598d":[0,0,112,33], +"class_transformer_form_base.html#adc8d387589bb5acdd75d4bbd985ad243":[0,0,112,69], +"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] }; diff --git a/docs/doxygen/html/navtreeindex12.js b/docs/doxygen/html/navtreeindex12.js index 709bee7..59df8ab 100644 --- a/docs/doxygen/html/navtreeindex12.js +++ b/docs/doxygen/html/navtreeindex12.js @@ -1,42 +1,120 @@ var NAVTREEINDEX12 = { -"classwx_g_l_string_array.html#a6923a709d67ada5b713549bc706bdddd":[0,0,116,7], -"classwx_g_l_string_array.html#a692adb887740de68eaf6ca5f2e16e1f6":[0,0,116,4], -"classwx_g_l_string_array.html#a9d0ea419b455d761b87c8d4262f84296":[0,0,116,0], -"classwx_g_l_string_array.html#aad1fd8d228a9a09bd1e66734323a4ae9":[0,0,116,3], -"classwx_ribbon_metro_art_provider.html":[0,0,117], -"classwx_ribbon_metro_art_provider.html#a0250fb1979f81476371fc886b8755256":[0,0,117,12], -"classwx_ribbon_metro_art_provider.html#a21c0087bfaeb96c12ce79a525ae28720":[0,0,117,6], -"classwx_ribbon_metro_art_provider.html#a332747bb53451624c0dc43c52f841a63":[0,0,117,8], -"classwx_ribbon_metro_art_provider.html#a345e45b2b6c57daf85bd76a239030a6f":[0,0,117,17], -"classwx_ribbon_metro_art_provider.html#a34d74c8db77b5816d4abcc6ed5d59af1":[0,0,117,14], -"classwx_ribbon_metro_art_provider.html#a35a27a5153c93e06e72bf9fdc04c6f1a":[0,0,117,19], -"classwx_ribbon_metro_art_provider.html#a35ac28082f0511e0b64b25c40bd0afb0":[0,0,117,13], -"classwx_ribbon_metro_art_provider.html#a4c387b3273a285e2b71870116b8c3f03":[0,0,117,11], -"classwx_ribbon_metro_art_provider.html#a533d512aee4deca9811473b10a7323bb":[0,0,117,15], -"classwx_ribbon_metro_art_provider.html#a574ce6f88f78c2e410d46092472d2a19":[0,0,117,0], -"classwx_ribbon_metro_art_provider.html#a5e448d44cf6d30306a41af61b0ae274f":[0,0,117,2], -"classwx_ribbon_metro_art_provider.html#a64892cbeb4809a944158eeeb64521992":[0,0,117,3], -"classwx_ribbon_metro_art_provider.html#a759a02e3e441488c219d596ddb4c8786":[0,0,117,4], -"classwx_ribbon_metro_art_provider.html#a7e53b3b4a62c47038101884810e596af":[0,0,117,18], -"classwx_ribbon_metro_art_provider.html#a81144b6e0b02420483f278b00cfbe7b0":[0,0,117,16], -"classwx_ribbon_metro_art_provider.html#a855f255d269011d9be59a13c564215a5":[0,0,117,5], -"classwx_ribbon_metro_art_provider.html#a9cbceb0409721d370a292916bb402a9d":[0,0,117,9], -"classwx_ribbon_metro_art_provider.html#a9f9d8ec71db1a8bbfab5a88b2ae16c76":[0,0,117,7], -"classwx_ribbon_metro_art_provider.html#aa57e1377a49cca4b87f1673b2b70a371":[0,0,117,1], -"classwx_ribbon_metro_art_provider.html#aa6e300b7a5419c7d429a26beed0c95a8":[0,0,117,10], +"class_workspace.html#a8b7645ec6641e9eff52f9d6b8e12b84e":[0,0,113,65], +"class_workspace.html#a8cce4d1259bccce5f7b19ac3284be60e":[0,0,113,4], +"class_workspace.html#a916173d5babcda8af782015e80e3e2ae":[0,0,113,51], +"class_workspace.html#a92ddb55af7ffa45f050f46becb3f520b":[0,0,113,6], +"class_workspace.html#a94db01244419924778d7578332415a97":[0,0,113,1], +"class_workspace.html#a953a0a155f3363ea4834cd471287f7ec":[0,0,113,7], +"class_workspace.html#a96e2691b76f78ca4f63013a299a2338a":[0,0,113,23], +"class_workspace.html#aa072c180c3feee54ee84c13ce4ca9410":[0,0,113,55], +"class_workspace.html#aa8a761564e7ba7820911373ea1990b88":[0,0,113,20], +"class_workspace.html#aaef2ac88b0cb8e204c3bd59fd96eba32":[0,0,113,52], +"class_workspace.html#ab0773cafa9c7127d8985256f0e3a394e":[0,0,113,40], +"class_workspace.html#ab2e997f328f88889b3712bcd3d5d7310":[0,0,113,67], +"class_workspace.html#abe29ae978b1c93569bf60e4d45f0050f":[0,0,113,29], +"class_workspace.html#abf538431670cc5aa24d60393d259b48a":[0,0,113,24], +"class_workspace.html#ac59319d3776983ae607a602d7588a0b9":[0,0,113,68], +"class_workspace.html#acbc1a9429407f3e86da419639c974dc6":[0,0,113,66], +"class_workspace.html#accb1b98baf52125dbc989784aac69074":[0,0,113,58], +"class_workspace.html#acf4e1d561abc0667214619753789ba1c":[0,0,113,53], +"class_workspace.html#acf9d7e1a32e3ba2714aad00558561164":[0,0,113,9], +"class_workspace.html#ad966b16ef1d8216c69c577f17bad4361":[0,0,113,63], +"class_workspace.html#adeefec5df5f908bed2b3c19b1fcd6f95":[0,0,113,41], +"class_workspace.html#ae6537cdff1e5cfb7fea9b096fc8b2cb4":[0,0,113,16], +"class_workspace.html#ae72fd97fa7abdce3615318b8dd5db122":[0,0,113,64], +"class_workspace.html#ae88b97cdf57d4f078fa4c3da4321721f":[0,0,113,32], +"class_workspace.html#aefd3e77c34bf4cd9c937f803c9bee813":[0,0,113,30], +"class_workspace.html#af19b02bb34f824af0c0e736f95a96e51":[0,0,113,37], +"class_workspace.html#af3d21e7fe9eb683b2b4e2c38ab8b1c66":[0,0,113,26], +"class_workspace.html#af7692e86ad24285a8bf7865646e3b3e7":[0,0,113,34], +"class_workspace.html#af7b9721a871221f9c534e7a5af482b8a":[0,0,113,60], +"class_workspace.html#af7cf65a1be2daa086b74e152094a8da8":[0,0,113,44], +"class_workspace.html#afa900c2ba854a6922ad2a28d5e28c4ac":[0,0,113,49], +"class_workspace_base.html":[0,0,114], +"class_workspace_base.html#a10f274f51010decd8dfd872880300c80":[0,0,114,10], +"class_workspace_base.html#a43c2bddd523784d1373f4cfa3d232023":[0,0,114,3], +"class_workspace_base.html#a44f48b6d1f1a412f397fda1cf500ef2f":[0,0,114,5], +"class_workspace_base.html#a514bd173615bc2af5cce766a78c90678":[0,0,114,16], +"class_workspace_base.html#a664285c92d2e58cffd2e0706f36a779c":[0,0,114,15], +"class_workspace_base.html#a70d926c1f83f7510f487f9f1f474083f":[0,0,114,18], +"class_workspace_base.html#a8b2d918751866735d2f8c957c85d5f8a":[0,0,114,11], +"class_workspace_base.html#a8b4c940f21dfd8b6cf20ff6aa05604b3":[0,0,114,13], +"class_workspace_base.html#a9001ad5fa6ab8fbc56efcdd4a79cdc5e":[0,0,114,6], +"class_workspace_base.html#a90d56828276491b843e0da41a7103ce2":[0,0,114,9], +"class_workspace_base.html#a99ad7de77199406140c440afeeb55901":[0,0,114,17], +"class_workspace_base.html#aa7a7fdfc3469fbe895963d956baf7810":[0,0,114,1], +"class_workspace_base.html#aae6d969022b9f998dbf8cb5c50e2ec20":[0,0,114,2], +"class_workspace_base.html#ab025deb21418482cbe2555b1a06bb1a0":[0,0,114,0], +"class_workspace_base.html#abb90fc90faa3b8570a90cc20ee6d1e91":[0,0,114,4], +"class_workspace_base.html#abcf950107b3473a127bd50436529c500":[0,0,114,7], +"class_workspace_base.html#acdab5799f4d3992f0039c39896d2f295":[0,0,114,14], +"class_workspace_base.html#ae004b4c7aa73429ff04be1957c1d4f3d":[0,0,114,12], +"class_workspace_base.html#ae5633aaebc0fcfefb8c404a0747cff73":[0,0,114,8], +"classes.html":[0,1], +"classwx_g_l_number_renderer.html":[0,0,115], +"classwx_g_l_number_renderer.html#a2273ecc04f77d076df5352d2bdb4c3a8":[0,0,115,4], +"classwx_g_l_number_renderer.html#a6ea7d396fd2f435a889ee05d8da67532":[0,0,115,0], +"classwx_g_l_number_renderer.html#a857e30cb8a78f1e6197957110fc339d6":[0,0,115,5], +"classwx_g_l_number_renderer.html#a9de7eec569a559adea04ab66b671ac62":[0,0,115,3], +"classwx_g_l_number_renderer.html#aa79114bda6e5e4c3db4b8aeeb5f272c4":[0,0,115,2], +"classwx_g_l_number_renderer.html#af2a56e95687d52b3f59a27783eb049ec":[0,0,115,1], +"classwx_g_l_string.html":[0,0,116], +"classwx_g_l_string.html#a19e05beb1f5cbf905f4e1cdf5b566303":[0,0,116,0], +"classwx_g_l_string.html#a54a67012ceb50ee50696c0c1fa0a7b55":[0,0,116,5], +"classwx_g_l_string.html#a5845eab608e6a8732ec33a5213eb8015":[0,0,116,8], +"classwx_g_l_string.html#a61de4c6cec06534405b7ecc292b9bd28":[0,0,116,10], +"classwx_g_l_string.html#a6dbedbac054d8835ff98e02b7a2c1801":[0,0,116,1], +"classwx_g_l_string.html#a84cd1aef5211cb85405e7d96d6f2cd36":[0,0,116,11], +"classwx_g_l_string.html#a8d08f71da3521f0a88b8625c348962b7":[0,0,116,4], +"classwx_g_l_string.html#a99128628906c57841225e92b8a77b6dd":[0,0,116,7], +"classwx_g_l_string.html#a9c3779f981d87d2b0707882057ba30c2":[0,0,116,12], +"classwx_g_l_string.html#ab31442170832123f5a0afa2b15fb024a":[0,0,116,3], +"classwx_g_l_string.html#ab7b55ee1f80a1ce7e74805225e747dab":[0,0,116,2], +"classwx_g_l_string.html#ab923a7884ed7652bf0c89f7688671aa4":[0,0,116,6], +"classwx_g_l_string.html#ac2b03c6b32121611472baf33e84fac24":[0,0,116,9], +"classwx_g_l_string_array.html":[0,0,117], +"classwx_g_l_string_array.html#a0c466a4b8f3d5ca954749f8440b5fa0f":[0,0,117,1], +"classwx_g_l_string_array.html#a23176b0de1c1faf839cb9ea539cc1c06":[0,0,117,2], +"classwx_g_l_string_array.html#a2aaa7b340ee571ca6405bbec28715430":[0,0,117,5], +"classwx_g_l_string_array.html#a2ae0c1cffb2f54b66a170d1698ad62e0":[0,0,117,6], +"classwx_g_l_string_array.html#a6923a709d67ada5b713549bc706bdddd":[0,0,117,7], +"classwx_g_l_string_array.html#a692adb887740de68eaf6ca5f2e16e1f6":[0,0,117,4], +"classwx_g_l_string_array.html#a9d0ea419b455d761b87c8d4262f84296":[0,0,117,0], +"classwx_g_l_string_array.html#aad1fd8d228a9a09bd1e66734323a4ae9":[0,0,117,3], +"classwx_ribbon_metro_art_provider.html":[0,0,118], +"classwx_ribbon_metro_art_provider.html#a0250fb1979f81476371fc886b8755256":[0,0,118,12], +"classwx_ribbon_metro_art_provider.html#a21c0087bfaeb96c12ce79a525ae28720":[0,0,118,6], +"classwx_ribbon_metro_art_provider.html#a332747bb53451624c0dc43c52f841a63":[0,0,118,8], +"classwx_ribbon_metro_art_provider.html#a345e45b2b6c57daf85bd76a239030a6f":[0,0,118,17], +"classwx_ribbon_metro_art_provider.html#a34d74c8db77b5816d4abcc6ed5d59af1":[0,0,118,14], +"classwx_ribbon_metro_art_provider.html#a35a27a5153c93e06e72bf9fdc04c6f1a":[0,0,118,19], +"classwx_ribbon_metro_art_provider.html#a35ac28082f0511e0b64b25c40bd0afb0":[0,0,118,13], +"classwx_ribbon_metro_art_provider.html#a4c387b3273a285e2b71870116b8c3f03":[0,0,118,11], +"classwx_ribbon_metro_art_provider.html#a533d512aee4deca9811473b10a7323bb":[0,0,118,15], +"classwx_ribbon_metro_art_provider.html#a574ce6f88f78c2e410d46092472d2a19":[0,0,118,0], +"classwx_ribbon_metro_art_provider.html#a5e448d44cf6d30306a41af61b0ae274f":[0,0,118,2], +"classwx_ribbon_metro_art_provider.html#a64892cbeb4809a944158eeeb64521992":[0,0,118,3], +"classwx_ribbon_metro_art_provider.html#a759a02e3e441488c219d596ddb4c8786":[0,0,118,4], +"classwx_ribbon_metro_art_provider.html#a7e53b3b4a62c47038101884810e596af":[0,0,118,18], +"classwx_ribbon_metro_art_provider.html#a81144b6e0b02420483f278b00cfbe7b0":[0,0,118,16], +"classwx_ribbon_metro_art_provider.html#a855f255d269011d9be59a13c564215a5":[0,0,118,5], +"classwx_ribbon_metro_art_provider.html#a9cbceb0409721d370a292916bb402a9d":[0,0,118,9], +"classwx_ribbon_metro_art_provider.html#a9f9d8ec71db1a8bbfab5a88b2ae16c76":[0,0,118,7], +"classwx_ribbon_metro_art_provider.html#aa57e1377a49cca4b87f1673b2b70a371":[0,0,118,1], +"classwx_ribbon_metro_art_provider.html#aa6e300b7a5419c7d429a26beed0c95a8":[0,0,118,10], "dir_ffd1f789ec7bd0a45fc6ad92579c5070.html":[1,0,0], "files.html":[1,0], -"functions.html":[0,3,0,0], "functions.html":[0,3,0], -"functions_0x7e.html":[0,3,0,17], +"functions.html":[0,3,0,0], +"functions_0x7e.html":[0,3,0,18], "functions_b.html":[0,3,0,1], "functions_c.html":[0,3,0,2], "functions_d.html":[0,3,0,3], "functions_e.html":[0,3,0,4], "functions_f.html":[0,3,0,5], -"functions_func.html":[0,3,1,0], "functions_func.html":[0,3,1], +"functions_func.html":[0,3,1,0], "functions_func_0x7e.html":[0,3,1,17], "functions_func_b.html":[0,3,1,1], "functions_func_c.html":[0,3,1,2], @@ -66,6 +144,7 @@ var NAVTREEINDEX12 = "functions_u.html":[0,3,0,15], "functions_vars.html":[0,3,2], "functions_w.html":[0,3,0,16], +"functions_x.html":[0,3,0,17], "globals.html":[1,1,0], "globals_enum.html":[1,1,1], "globals_eval.html":[1,1,2], @@ -170,84 +249,5 @@ var NAVTREEINDEX12 = "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], -"struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df":[0,0,91,0], -"struct_switching_data.html#af78fb958137a0532ea2a584810708574":[0,0,91,1], -"struct_sync_generator_electrical_data.html":[0,0,95], -"struct_sync_generator_electrical_data.html#a02ea43b57770200f43686b21d6f5bee7":[0,0,95,4], -"struct_sync_generator_electrical_data.html#a039151f15d01a6b70c13674894034350":[0,0,95,14], -"struct_sync_generator_electrical_data.html#a120f89adf2d52ae106e3d99fa7453a0d":[0,0,95,62], -"struct_sync_generator_electrical_data.html#a124840d7c73161bb4187aa5215969647":[0,0,95,41], -"struct_sync_generator_electrical_data.html#a13371480bdeca2be90140e3c168ee9a7":[0,0,95,21], -"struct_sync_generator_electrical_data.html#a1405e96b81978e44e60dc535fbe08f47":[0,0,95,38], -"struct_sync_generator_electrical_data.html#a16117d43dd668998854692abaf289c5f":[0,0,95,36], -"struct_sync_generator_electrical_data.html#a19511b88d17a0046dcd5e94aa748a966":[0,0,95,34], -"struct_sync_generator_electrical_data.html#a1a1224d8d980c1aa408acd0c731e73c1":[0,0,95,22], -"struct_sync_generator_electrical_data.html#a1c21e18774280d7dc7378e39eeba04ff":[0,0,95,53], -"struct_sync_generator_electrical_data.html#a20b583f81933f0f077fb78851b92e7f5":[0,0,95,10], -"struct_sync_generator_electrical_data.html#a210c90fcf0cb602453758550f12fc625":[0,0,95,30], -"struct_sync_generator_electrical_data.html#a235b1f71ead84082b1fce66bfd7a17fc":[0,0,95,66], -"struct_sync_generator_electrical_data.html#a278df0fd573717f280a99a6e1ac5f688":[0,0,95,69], -"struct_sync_generator_electrical_data.html#a2a21d204b68e1896bd2aae87ef9e6ec3":[0,0,95,28], -"struct_sync_generator_electrical_data.html#a2a228ce1cc8ac26705da097326921e0f":[0,0,95,13], -"struct_sync_generator_electrical_data.html#a32a4709d2efaa85914e1757077fa4b21":[0,0,95,9], -"struct_sync_generator_electrical_data.html#a39a8fd0c1e59355cf72f4fbf274c1863":[0,0,95,1], -"struct_sync_generator_electrical_data.html#a3fe501f6261730e18c4601cfdb7db680":[0,0,95,5], -"struct_sync_generator_electrical_data.html#a452fd337c002c0872ee2f22f8eefeb14":[0,0,95,26], -"struct_sync_generator_electrical_data.html#a4726eca1a20265688e6145f4f95885aa":[0,0,95,65], -"struct_sync_generator_electrical_data.html#a539062122f9f437a40c4e50e17bb2a87":[0,0,95,8], -"struct_sync_generator_electrical_data.html#a53edeaeb3361da40e3939bfffa401e6c":[0,0,95,45], -"struct_sync_generator_electrical_data.html#a565358e9818ff25a4e96d50cade77be4":[0,0,95,11], -"struct_sync_generator_electrical_data.html#a58c50a8e615dadef9353046329b829f9":[0,0,95,0], -"struct_sync_generator_electrical_data.html#a58d893dcf9933cf73be0bb12d3472ac6":[0,0,95,29], -"struct_sync_generator_electrical_data.html#a599699b6b55ca35dfec13f0a1d58dc37":[0,0,95,24], -"struct_sync_generator_electrical_data.html#a5bfbef7dc02c36f5673ebd6c25f9a7a9":[0,0,95,52], -"struct_sync_generator_electrical_data.html#a64003e1947c801662450bb04723e1696":[0,0,95,55], -"struct_sync_generator_electrical_data.html#a6bd4994b89c6a338c7d51e875490a31f":[0,0,95,18], -"struct_sync_generator_electrical_data.html#a73980536ff6e4485d4d71bf5407d9d8c":[0,0,95,47], -"struct_sync_generator_electrical_data.html#a73b9df7db4f2d984fb5f976003122131":[0,0,95,57], -"struct_sync_generator_electrical_data.html#a787696951a05eb8000c0495b018246e4":[0,0,95,50], -"struct_sync_generator_electrical_data.html#a78ce2b0f1cb61c3e1d56796ffe7d2d11":[0,0,95,46], -"struct_sync_generator_electrical_data.html#a78dbbb159874e5e4f3f889881fd50408":[0,0,95,16], -"struct_sync_generator_electrical_data.html#a79529c49e1337863a2aca63b9c57c821":[0,0,95,48], -"struct_sync_generator_electrical_data.html#a7c4224d05447c55c895fe164d09e0a8c":[0,0,95,54], -"struct_sync_generator_electrical_data.html#a7d388c89ca828391d47df50172cd9da1":[0,0,95,61], -"struct_sync_generator_electrical_data.html#a7f78dad336b743be9627377e015bff26":[0,0,95,63], -"struct_sync_generator_electrical_data.html#a808dac6e3f783331633990b4ad18831a":[0,0,95,67], -"struct_sync_generator_electrical_data.html#a80cc5ac62cbe7932c1f96be3843d0f38":[0,0,95,72], -"struct_sync_generator_electrical_data.html#a82bc75dc1c81776dc2998803e0f62890":[0,0,95,49], -"struct_sync_generator_electrical_data.html#a842fa25b7c6051b5b93cfc8fe28867d2":[0,0,95,2], -"struct_sync_generator_electrical_data.html#a854269759e28f1bf4782fa23dcbbe811":[0,0,95,75], -"struct_sync_generator_electrical_data.html#a89ccce917e842d4ad6f2f7c076a38a47":[0,0,95,15], -"struct_sync_generator_electrical_data.html#a8f0d820f77f5cfd6f8ef2c53570422c7":[0,0,95,70], -"struct_sync_generator_electrical_data.html#a930a0681c0c9cabd3d0a363e3bfae4d9":[0,0,95,58], -"struct_sync_generator_electrical_data.html#a97c98fba9f73a7b70ac84e6e4dc7bd2f":[0,0,95,32], -"struct_sync_generator_electrical_data.html#a9a534e4c50aba0e6a2cc6b5dbc2d2c03":[0,0,95,23], -"struct_sync_generator_electrical_data.html#a9e97d6c96ba58cfb8dcc1d1293867ef1":[0,0,95,6], -"struct_sync_generator_electrical_data.html#a9f351e057a8249ae2fcfdf7e102e4633":[0,0,95,68], -"struct_sync_generator_electrical_data.html#ab261eec61032be2722ff2c6f7b2c7506":[0,0,95,60], -"struct_sync_generator_electrical_data.html#ab4c9a79a39406b6e744ab4fb92e94750":[0,0,95,56], -"struct_sync_generator_electrical_data.html#ab7faade6dd8c40554a82ade6e84730b3":[0,0,95,19], -"struct_sync_generator_electrical_data.html#abb4e828c8091dd69e2535d72b51fc6e7":[0,0,95,44], -"struct_sync_generator_electrical_data.html#abe8b5c90c1b330c2c340def3973694c6":[0,0,95,12], -"struct_sync_generator_electrical_data.html#abe9f0c1ea9349fe319fefe804cfcf0bd":[0,0,95,7], -"struct_sync_generator_electrical_data.html#abec98d3227f7c93d1caf05c3a885b097":[0,0,95,25], -"struct_sync_generator_electrical_data.html#ac092cb3ba2be5fca9881fbaaa6d13ff1":[0,0,95,20], -"struct_sync_generator_electrical_data.html#ac2b9ca7fa928dcc7c9ad5b3d90360784":[0,0,95,37], -"struct_sync_generator_electrical_data.html#ac32b752bc6bc51a6adaf66e8a7cea895":[0,0,95,33], -"struct_sync_generator_electrical_data.html#ac49316b6415fcb531df9f5ae5467ca20":[0,0,95,64], -"struct_sync_generator_electrical_data.html#ac53d1a5127d7dcd5f8b94d2ca0cae4b7":[0,0,95,51], -"struct_sync_generator_electrical_data.html#ac97b40c21bf8d411d2971c835d186a4a":[0,0,95,74], -"struct_sync_generator_electrical_data.html#ad0217ad35b1964abffab864b0454717c":[0,0,95,31], -"struct_sync_generator_electrical_data.html#ad5935c784af5f03f7c9cdba7df88f1de":[0,0,95,42], -"struct_sync_generator_electrical_data.html#ad6cc9505241ac17f3ab1f6011aace0b8":[0,0,95,40], -"struct_sync_generator_electrical_data.html#adc91d39da384d4caf81f50bc7bd56207":[0,0,95,59], -"struct_sync_generator_electrical_data.html#ade7d762b92727bcc58821d3bf9a743ca":[0,0,95,43], -"struct_sync_generator_electrical_data.html#adffc8e7c793c2f23dfd5b573a14aba24":[0,0,95,27], -"struct_sync_generator_electrical_data.html#ae554e8863b29bf58119bad4e9b4eee52":[0,0,95,35], -"struct_sync_generator_electrical_data.html#aeb8cc5e98f68e4a14febaa7436813f63":[0,0,95,17], -"struct_sync_generator_electrical_data.html#aec21ca1955d3c33aa2d1fd4665f83261":[0,0,95,73] +"struct_simulation_data.html#adf9aa7a02213374ac15439e8929f0179":[0,0,85,6] }; diff --git a/docs/doxygen/html/navtreeindex13.js b/docs/doxygen/html/navtreeindex13.js index 048b951..a7e0ef2 100644 --- a/docs/doxygen/html/navtreeindex13.js +++ b/docs/doxygen/html/navtreeindex13.js @@ -1,116 +1,206 @@ var NAVTREEINDEX13 = { -"struct_sync_generator_electrical_data.html#aef18b7163c5e2b9e6e2c671b3939480d":[0,0,95,39], +"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], +"struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df":[0,0,91,0], +"struct_switching_data.html#af78fb958137a0532ea2a584810708574":[0,0,91,1], +"struct_sync_generator_electrical_data.html":[0,0,95], +"struct_sync_generator_electrical_data.html#a02ea43b57770200f43686b21d6f5bee7":[0,0,95,4], +"struct_sync_generator_electrical_data.html#a039151f15d01a6b70c13674894034350":[0,0,95,14], +"struct_sync_generator_electrical_data.html#a120f89adf2d52ae106e3d99fa7453a0d":[0,0,95,68], +"struct_sync_generator_electrical_data.html#a124840d7c73161bb4187aa5215969647":[0,0,95,43], +"struct_sync_generator_electrical_data.html#a13371480bdeca2be90140e3c168ee9a7":[0,0,95,21], +"struct_sync_generator_electrical_data.html#a1405e96b81978e44e60dc535fbe08f47":[0,0,95,40], +"struct_sync_generator_electrical_data.html#a16117d43dd668998854692abaf289c5f":[0,0,95,38], +"struct_sync_generator_electrical_data.html#a19511b88d17a0046dcd5e94aa748a966":[0,0,95,36], +"struct_sync_generator_electrical_data.html#a1a1224d8d980c1aa408acd0c731e73c1":[0,0,95,22], +"struct_sync_generator_electrical_data.html#a1c21e18774280d7dc7378e39eeba04ff":[0,0,95,58], +"struct_sync_generator_electrical_data.html#a1d80742377fac4d719085c967d831608":[0,0,95,25], +"struct_sync_generator_electrical_data.html#a20b583f81933f0f077fb78851b92e7f5":[0,0,95,10], +"struct_sync_generator_electrical_data.html#a210c90fcf0cb602453758550f12fc625":[0,0,95,32], +"struct_sync_generator_electrical_data.html#a235b1f71ead84082b1fce66bfd7a17fc":[0,0,95,72], +"struct_sync_generator_electrical_data.html#a278df0fd573717f280a99a6e1ac5f688":[0,0,95,75], +"struct_sync_generator_electrical_data.html#a2a21d204b68e1896bd2aae87ef9e6ec3":[0,0,95,30], +"struct_sync_generator_electrical_data.html#a2a228ce1cc8ac26705da097326921e0f":[0,0,95,13], +"struct_sync_generator_electrical_data.html#a32a4709d2efaa85914e1757077fa4b21":[0,0,95,9], +"struct_sync_generator_electrical_data.html#a39a8fd0c1e59355cf72f4fbf274c1863":[0,0,95,1], +"struct_sync_generator_electrical_data.html#a3fe501f6261730e18c4601cfdb7db680":[0,0,95,5], +"struct_sync_generator_electrical_data.html#a452fd337c002c0872ee2f22f8eefeb14":[0,0,95,27], +"struct_sync_generator_electrical_data.html#a4726eca1a20265688e6145f4f95885aa":[0,0,95,71], +"struct_sync_generator_electrical_data.html#a539062122f9f437a40c4e50e17bb2a87":[0,0,95,8], +"struct_sync_generator_electrical_data.html#a53edeaeb3361da40e3939bfffa401e6c":[0,0,95,49], +"struct_sync_generator_electrical_data.html#a565358e9818ff25a4e96d50cade77be4":[0,0,95,11], +"struct_sync_generator_electrical_data.html#a58c50a8e615dadef9353046329b829f9":[0,0,95,0], +"struct_sync_generator_electrical_data.html#a58d893dcf9933cf73be0bb12d3472ac6":[0,0,95,31], +"struct_sync_generator_electrical_data.html#a599699b6b55ca35dfec13f0a1d58dc37":[0,0,95,24], +"struct_sync_generator_electrical_data.html#a5bfbef7dc02c36f5673ebd6c25f9a7a9":[0,0,95,57], +"struct_sync_generator_electrical_data.html#a64003e1947c801662450bb04723e1696":[0,0,95,61], +"struct_sync_generator_electrical_data.html#a6bd4994b89c6a338c7d51e875490a31f":[0,0,95,18], +"struct_sync_generator_electrical_data.html#a73980536ff6e4485d4d71bf5407d9d8c":[0,0,95,51], +"struct_sync_generator_electrical_data.html#a73b9df7db4f2d984fb5f976003122131":[0,0,95,63], +"struct_sync_generator_electrical_data.html#a750898c7ac2b2612a3db657d5459626d":[0,0,95,45], +"struct_sync_generator_electrical_data.html#a787696951a05eb8000c0495b018246e4":[0,0,95,54], +"struct_sync_generator_electrical_data.html#a78ce2b0f1cb61c3e1d56796ffe7d2d11":[0,0,95,50], +"struct_sync_generator_electrical_data.html#a78dbbb159874e5e4f3f889881fd50408":[0,0,95,16], +"struct_sync_generator_electrical_data.html#a79529c49e1337863a2aca63b9c57c821":[0,0,95,52], +"struct_sync_generator_electrical_data.html#a7c4224d05447c55c895fe164d09e0a8c":[0,0,95,59], +"struct_sync_generator_electrical_data.html#a7d388c89ca828391d47df50172cd9da1":[0,0,95,67], +"struct_sync_generator_electrical_data.html#a7f78dad336b743be9627377e015bff26":[0,0,95,69], +"struct_sync_generator_electrical_data.html#a808dac6e3f783331633990b4ad18831a":[0,0,95,73], +"struct_sync_generator_electrical_data.html#a80cc5ac62cbe7932c1f96be3843d0f38":[0,0,95,78], +"struct_sync_generator_electrical_data.html#a82bc75dc1c81776dc2998803e0f62890":[0,0,95,53], +"struct_sync_generator_electrical_data.html#a842fa25b7c6051b5b93cfc8fe28867d2":[0,0,95,2], +"struct_sync_generator_electrical_data.html#a854269759e28f1bf4782fa23dcbbe811":[0,0,95,81], +"struct_sync_generator_electrical_data.html#a8827b25efb3bb80e511412fcf2e63f42":[0,0,95,56], +"struct_sync_generator_electrical_data.html#a89ccce917e842d4ad6f2f7c076a38a47":[0,0,95,15], +"struct_sync_generator_electrical_data.html#a8f0d820f77f5cfd6f8ef2c53570422c7":[0,0,95,76], +"struct_sync_generator_electrical_data.html#a930a0681c0c9cabd3d0a363e3bfae4d9":[0,0,95,64], +"struct_sync_generator_electrical_data.html#a96752298c088dea20ecc690644ea3a86":[0,0,95,46], +"struct_sync_generator_electrical_data.html#a97c98fba9f73a7b70ac84e6e4dc7bd2f":[0,0,95,34], +"struct_sync_generator_electrical_data.html#a9a534e4c50aba0e6a2cc6b5dbc2d2c03":[0,0,95,23], +"struct_sync_generator_electrical_data.html#a9e97d6c96ba58cfb8dcc1d1293867ef1":[0,0,95,6], +"struct_sync_generator_electrical_data.html#a9f351e057a8249ae2fcfdf7e102e4633":[0,0,95,74], +"struct_sync_generator_electrical_data.html#ab261eec61032be2722ff2c6f7b2c7506":[0,0,95,66], +"struct_sync_generator_electrical_data.html#ab4c9a79a39406b6e744ab4fb92e94750":[0,0,95,62], +"struct_sync_generator_electrical_data.html#ab7faade6dd8c40554a82ade6e84730b3":[0,0,95,19], +"struct_sync_generator_electrical_data.html#abb4e828c8091dd69e2535d72b51fc6e7":[0,0,95,48], +"struct_sync_generator_electrical_data.html#abe8b5c90c1b330c2c340def3973694c6":[0,0,95,12], +"struct_sync_generator_electrical_data.html#abe9f0c1ea9349fe319fefe804cfcf0bd":[0,0,95,7], +"struct_sync_generator_electrical_data.html#abec98d3227f7c93d1caf05c3a885b097":[0,0,95,26], +"struct_sync_generator_electrical_data.html#ac092cb3ba2be5fca9881fbaaa6d13ff1":[0,0,95,20], +"struct_sync_generator_electrical_data.html#ac2b9ca7fa928dcc7c9ad5b3d90360784":[0,0,95,39], +"struct_sync_generator_electrical_data.html#ac32b752bc6bc51a6adaf66e8a7cea895":[0,0,95,35], +"struct_sync_generator_electrical_data.html#ac49316b6415fcb531df9f5ae5467ca20":[0,0,95,70], +"struct_sync_generator_electrical_data.html#ac53d1a5127d7dcd5f8b94d2ca0cae4b7":[0,0,95,55], +"struct_sync_generator_electrical_data.html#ac97b40c21bf8d411d2971c835d186a4a":[0,0,95,80], +"struct_sync_generator_electrical_data.html#ad0217ad35b1964abffab864b0454717c":[0,0,95,33], +"struct_sync_generator_electrical_data.html#ad5935c784af5f03f7c9cdba7df88f1de":[0,0,95,44], +"struct_sync_generator_electrical_data.html#ad6cc9505241ac17f3ab1f6011aace0b8":[0,0,95,42], +"struct_sync_generator_electrical_data.html#adc91d39da384d4caf81f50bc7bd56207":[0,0,95,65], +"struct_sync_generator_electrical_data.html#ade7d762b92727bcc58821d3bf9a743ca":[0,0,95,47], +"struct_sync_generator_electrical_data.html#adffc8e7c793c2f23dfd5b573a14aba24":[0,0,95,29], +"struct_sync_generator_electrical_data.html#ae06d59efebe1956a310dbc43e4780abe":[0,0,95,28], +"struct_sync_generator_electrical_data.html#ae554e8863b29bf58119bad4e9b4eee52":[0,0,95,37], +"struct_sync_generator_electrical_data.html#aeb8cc5e98f68e4a14febaa7436813f63":[0,0,95,17], +"struct_sync_generator_electrical_data.html#aec21ca1955d3c33aa2d1fd4665f83261":[0,0,95,79], +"struct_sync_generator_electrical_data.html#aef18b7163c5e2b9e6e2c671b3939480d":[0,0,95,41], "struct_sync_generator_electrical_data.html#af0b3c5e37645d44e40add8fcf4bec7ea":[0,0,95,3], -"struct_sync_generator_electrical_data.html#af659153561dff178ed4d3b87d79d05a0":[0,0,95,71], -"struct_sync_motor_electrical_data.html":[0,0,99], -"struct_sync_motor_electrical_data.html#a051aadc933064e1da5dbd9f74b81d170":[0,0,99,35], -"struct_sync_motor_electrical_data.html#a063a404b21e2127a02648fcaf45a5262":[0,0,99,36], -"struct_sync_motor_electrical_data.html#a0869e5e1534c10bd2d8b9597a6787a24":[0,0,99,7], -"struct_sync_motor_electrical_data.html#a0b3104f4dd9e45e92205f2ae18498c5c":[0,0,99,22], -"struct_sync_motor_electrical_data.html#a0f602e8d66656209e5ec223ba000ca55":[0,0,99,1], -"struct_sync_motor_electrical_data.html#a0fbea6750a832909452d464b6ce5476a":[0,0,99,14], -"struct_sync_motor_electrical_data.html#a1240daaa5654ca3a81e9351ece1be28c":[0,0,99,9], -"struct_sync_motor_electrical_data.html#a12bf4ce083ab090ac9b34f948bf01d73":[0,0,99,72], -"struct_sync_motor_electrical_data.html#a182463eaae4af8c639cff095ead39763":[0,0,99,51], -"struct_sync_motor_electrical_data.html#a1909f35de18bc3ef4692b6b897e06fdb":[0,0,99,31], -"struct_sync_motor_electrical_data.html#a1a1431ec9cbc6d7d443b2888cf21fe26":[0,0,99,15], -"struct_sync_motor_electrical_data.html#a2002371fc5d5e83e8cd4f7ce24db430a":[0,0,99,73], -"struct_sync_motor_electrical_data.html#a21533238587fde91b8655dd75f9d322c":[0,0,99,54], -"struct_sync_motor_electrical_data.html#a2714d6f631dd24a1dd79a6dae0b3fe01":[0,0,99,43], -"struct_sync_motor_electrical_data.html#a2a01010ebcc937abb94f936e0db1b295":[0,0,99,61], -"struct_sync_motor_electrical_data.html#a3372b8b20483ca99d8b1a9c227b2f034":[0,0,99,27], -"struct_sync_motor_electrical_data.html#a36a4cbab101c5fe573eafd75794d0cf3":[0,0,99,57], -"struct_sync_motor_electrical_data.html#a3cac2eb4410c37e488a9359ef39c3b3b":[0,0,99,30], -"struct_sync_motor_electrical_data.html#a4467a494945cd3da378d0f97039de94f":[0,0,99,70], -"struct_sync_motor_electrical_data.html#a46c3e4a04013c37e4d77497bdcca2d7b":[0,0,99,13], -"struct_sync_motor_electrical_data.html#a48e826b8bfaaea8391a67374349724dc":[0,0,99,34], -"struct_sync_motor_electrical_data.html#a4c5361a270446607dabb2929a8854653":[0,0,99,6], -"struct_sync_motor_electrical_data.html#a513c4e37f2f062ee8e5086a1d2fdf57a":[0,0,99,56], -"struct_sync_motor_electrical_data.html#a540046b2272b75675181979dad8ccc8b":[0,0,99,52], -"struct_sync_motor_electrical_data.html#a56b504d00007e15f0271c0702bfcf6cd":[0,0,99,17], -"struct_sync_motor_electrical_data.html#a5bbc9459ac89c28089792ed76a2c01e5":[0,0,99,66], -"struct_sync_motor_electrical_data.html#a64fe0337aa51aab1d0b11b72d6bb79c3":[0,0,99,46], -"struct_sync_motor_electrical_data.html#a669d499150a715ad3ab2a1186fc2a22c":[0,0,99,4], -"struct_sync_motor_electrical_data.html#a68a50d74cbe840e6f5ddde4d6568551e":[0,0,99,5], -"struct_sync_motor_electrical_data.html#a6fd87a55210b48a4cdbb99a1a9a05ff2":[0,0,99,12], -"struct_sync_motor_electrical_data.html#a71dfd4556a62431ab7657af1173cb29b":[0,0,99,58], -"struct_sync_motor_electrical_data.html#a72a4c00574d24476341ce64b178b0917":[0,0,99,53], -"struct_sync_motor_electrical_data.html#a72bca6a6528590d3a53ac0ff8557d9d0":[0,0,99,2], -"struct_sync_motor_electrical_data.html#a732b333a510ef770abb9ae89003f2f60":[0,0,99,74], -"struct_sync_motor_electrical_data.html#a7447305e5858f66fd7cab718e09cb5d0":[0,0,99,55], -"struct_sync_motor_electrical_data.html#a8182fa185ba94200df9c76f27a7aa950":[0,0,99,32], -"struct_sync_motor_electrical_data.html#a85ae173b59ea2f380786c36ec534743b":[0,0,99,38], -"struct_sync_motor_electrical_data.html#a85bf9e6428f0cef5b3a4d6412185746b":[0,0,99,19], -"struct_sync_motor_electrical_data.html#a8685294c4133ec612d4a3d3615240336":[0,0,99,59], -"struct_sync_motor_electrical_data.html#a891dc4f1f52a9db079b3cf91707afca9":[0,0,99,49], -"struct_sync_motor_electrical_data.html#a8f3571e353fe1d0678754fc2f203c1e7":[0,0,99,62], -"struct_sync_motor_electrical_data.html#a90b20df7d8b2b09d95641c2574176153":[0,0,99,33], -"struct_sync_motor_electrical_data.html#a94540978a1fdc557aaab60c2fc8c9a5d":[0,0,99,28], -"struct_sync_motor_electrical_data.html#a98301a458887ef7cde8bab0095652ba4":[0,0,99,23], -"struct_sync_motor_electrical_data.html#a9b953c627d870073f16595d6a0270f31":[0,0,99,44], -"struct_sync_motor_electrical_data.html#a9e9e4e4687dbc2f4a0cc38ca5177079c":[0,0,99,75], -"struct_sync_motor_electrical_data.html#aa734d7a7da312566c7ff3c224d932d72":[0,0,99,71], -"struct_sync_motor_electrical_data.html#ab244f2e6f4149d7f4c85efb286e174ce":[0,0,99,39], -"struct_sync_motor_electrical_data.html#ab5b8932c7b973cb7241acd0078276559":[0,0,99,50], -"struct_sync_motor_electrical_data.html#ab807e7528d0ba01024ade3f5da560e56":[0,0,99,8], -"struct_sync_motor_electrical_data.html#ab818b0778da594bf026c1c5f9f028444":[0,0,99,37], -"struct_sync_motor_electrical_data.html#ac1984f28f4c9987bc9578150985c7d06":[0,0,99,47], -"struct_sync_motor_electrical_data.html#ac2b1fd857d3fbd43d13c4f03d4998b0a":[0,0,99,42], -"struct_sync_motor_electrical_data.html#ac2fd73dbd4897f7a47a13361022ee8b7":[0,0,99,48], -"struct_sync_motor_electrical_data.html#ac570dda882a0360ba00bdac26666e1b6":[0,0,99,3], -"struct_sync_motor_electrical_data.html#ac5dd2b71485b5ac3a515bfffe8660086":[0,0,99,40], -"struct_sync_motor_electrical_data.html#ac6eec343f36f933a2d2c2858fb89f1e4":[0,0,99,24], -"struct_sync_motor_electrical_data.html#acdf36a814a5dbc049a49d6a8a4a5dbf8":[0,0,99,69], -"struct_sync_motor_electrical_data.html#ad1095e977927999800fa57a7251a9d50":[0,0,99,63], -"struct_sync_motor_electrical_data.html#ad5be10659aa046767021eee8f17bc5f3":[0,0,99,26], -"struct_sync_motor_electrical_data.html#ad63d9f8a9b8e87d3167e7110ba50ecdd":[0,0,99,67], -"struct_sync_motor_electrical_data.html#ad7257fa4d7fd7e9b104a4d7076fde2fe":[0,0,99,21], -"struct_sync_motor_electrical_data.html#adaadd65c21f57320599da2e87fd148f7":[0,0,99,0], -"struct_sync_motor_electrical_data.html#add530e37d8821f30ec873a10c24d8c41":[0,0,99,68], -"struct_sync_motor_electrical_data.html#ade1a3889071ddf1d02e7d21bc31e4566":[0,0,99,11], -"struct_sync_motor_electrical_data.html#ae21827f6456277ca9b3b659dc1cc5181":[0,0,99,41], -"struct_sync_motor_electrical_data.html#ae81cf3bd42b466d6450fa1de1896d5a0":[0,0,99,45], -"struct_sync_motor_electrical_data.html#ae95f80f05a6f818ee15e04412223fcd7":[0,0,99,60], -"struct_sync_motor_electrical_data.html#ae97bcbb0f856bd793315d2319572bdd4":[0,0,99,10], -"struct_sync_motor_electrical_data.html#aed62412a84b5beefe7419b6441ce51a7":[0,0,99,16], -"struct_sync_motor_electrical_data.html#aefbe9eb66cf3626fc03c4ffe6579ef34":[0,0,99,29], -"struct_sync_motor_electrical_data.html#af01b0c7e5b48c4f6cef9775b627d98f2":[0,0,99,20], -"struct_sync_motor_electrical_data.html#af96a383a7dfd859d9b2c6525a70ab96e":[0,0,99,25], -"struct_sync_motor_electrical_data.html#afd1714dee3344dd0601dcfc074536da9":[0,0,99,18], -"struct_sync_motor_electrical_data.html#afe07e31feeeea93e1df89feafd8ab791":[0,0,99,64], -"struct_sync_motor_electrical_data.html#afe938f6d3c0b24d7881f6ec1f9d3bf87":[0,0,99,65], -"struct_transfer_function_1_1_space_state.html":[0,0,105,0], -"struct_transfer_function_1_1_space_state.html#a3e3bc8524eb751a1f243ee08a6eb7646":[0,0,105,0,0], -"struct_transfer_function_1_1_space_state.html#a4c0bf33dd7a387aed5fd4f4919f15b85":[0,0,105,0,1], -"struct_transfer_function_1_1_space_state.html#a4fc70fb0845c4541742ebd123373d4c7":[0,0,105,0,3], -"struct_transfer_function_1_1_space_state.html#afda97fae8560f595948c810a8ae47202":[0,0,105,0,2], -"struct_transformer_electrical_data.html":[0,0,109], -"struct_transformer_electrical_data.html#a03331e5c4e0ad04c851fffabcc9936ec":[0,0,109,19], -"struct_transformer_electrical_data.html#a1513d2efe2ee080359a6bb9f3177d7ee":[0,0,109,8], -"struct_transformer_electrical_data.html#a21d613ccca353784d8adfd0bfdaca0ff":[0,0,109,22], -"struct_transformer_electrical_data.html#a2d2883e680df2522b8517235b1345512":[0,0,109,1], -"struct_transformer_electrical_data.html#a3101afa7a1e145675819742f05422e90":[0,0,109,13], -"struct_transformer_electrical_data.html#a343366e4142013e724874e6bf79acc67":[0,0,109,10], -"struct_transformer_electrical_data.html#a40158cfd130b05ab26e624395f32018b":[0,0,109,14], -"struct_transformer_electrical_data.html#a469a24e58338613b620de352ea06c13d":[0,0,109,4], -"struct_transformer_electrical_data.html#a520014be18decacdfec876f3a23b68ae":[0,0,109,18], -"struct_transformer_electrical_data.html#a55492dae7b4489903bb5a45b4d3b093a":[0,0,109,12], -"struct_transformer_electrical_data.html#a7cb4f1fbe494fa905c56d324a05a7b32":[0,0,109,5], -"struct_transformer_electrical_data.html#a8a90bbbcefecfe59505d86003354afdc":[0,0,109,16], -"struct_transformer_electrical_data.html#a900c1dfc24ebcca169fae8dfd4a3e6bd":[0,0,109,15], -"struct_transformer_electrical_data.html#a913f0ad1ba90018a13d7930670438a89":[0,0,109,21], -"struct_transformer_electrical_data.html#a9da8363e7eb19e805650db36d87fca93":[0,0,109,7], -"struct_transformer_electrical_data.html#aa450538f0a29571bef6e2785d3544bb2":[0,0,109,6], -"struct_transformer_electrical_data.html#aabe6d597ed902640f5c87f2cd2550364":[0,0,109,0], -"struct_transformer_electrical_data.html#ab6606d2f93aa369b7a3173e61d44c8f3":[0,0,109,24], -"struct_transformer_electrical_data.html#abae77eeb48d1a56cb10302f2b9aea38c":[0,0,109,17], -"struct_transformer_electrical_data.html#ac954927451779be66154613475143dc9":[0,0,109,11], -"struct_transformer_electrical_data.html#ad1a62e6b3f896f6a9d794f6b9e02f599":[0,0,109,9], -"struct_transformer_electrical_data.html#add161341c5cdd9c9ce93c34f9ace2c08":[0,0,109,20], -"struct_transformer_electrical_data.html#af19976dfba78777187211ab79581396e":[0,0,109,2], -"struct_transformer_electrical_data.html#af4454c28f422632359573496c40b70e4":[0,0,109,3], -"struct_transformer_electrical_data.html#afb45c8a86048551b51c399a1b72ff949":[0,0,109,23], +"struct_sync_generator_electrical_data.html#af4177bcbee0f968986860e9294f70129":[0,0,95,60], +"struct_sync_generator_electrical_data.html#af659153561dff178ed4d3b87d79d05a0":[0,0,95,77], +"struct_sync_machine_model_data.html":[0,0,98], +"struct_sync_machine_model_data.html#a810b9e3250ebb8f3d4176f6e5a2b1076":[0,0,98,1], +"struct_sync_machine_model_data.html#ad2bda1ac696b664571e33f657f4a81b6":[0,0,98,0], +"struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330":[0,0,98,2], +"struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc":[0,0,98,3], +"struct_sync_motor_electrical_data.html":[0,0,100], +"struct_sync_motor_electrical_data.html#a051aadc933064e1da5dbd9f74b81d170":[0,0,100,35], +"struct_sync_motor_electrical_data.html#a063a404b21e2127a02648fcaf45a5262":[0,0,100,36], +"struct_sync_motor_electrical_data.html#a0869e5e1534c10bd2d8b9597a6787a24":[0,0,100,7], +"struct_sync_motor_electrical_data.html#a0b3104f4dd9e45e92205f2ae18498c5c":[0,0,100,22], +"struct_sync_motor_electrical_data.html#a0f602e8d66656209e5ec223ba000ca55":[0,0,100,1], +"struct_sync_motor_electrical_data.html#a0fbea6750a832909452d464b6ce5476a":[0,0,100,14], +"struct_sync_motor_electrical_data.html#a1240daaa5654ca3a81e9351ece1be28c":[0,0,100,9], +"struct_sync_motor_electrical_data.html#a12bf4ce083ab090ac9b34f948bf01d73":[0,0,100,72], +"struct_sync_motor_electrical_data.html#a182463eaae4af8c639cff095ead39763":[0,0,100,51], +"struct_sync_motor_electrical_data.html#a1909f35de18bc3ef4692b6b897e06fdb":[0,0,100,31], +"struct_sync_motor_electrical_data.html#a1a1431ec9cbc6d7d443b2888cf21fe26":[0,0,100,15], +"struct_sync_motor_electrical_data.html#a2002371fc5d5e83e8cd4f7ce24db430a":[0,0,100,73], +"struct_sync_motor_electrical_data.html#a21533238587fde91b8655dd75f9d322c":[0,0,100,54], +"struct_sync_motor_electrical_data.html#a2714d6f631dd24a1dd79a6dae0b3fe01":[0,0,100,43], +"struct_sync_motor_electrical_data.html#a2a01010ebcc937abb94f936e0db1b295":[0,0,100,61], +"struct_sync_motor_electrical_data.html#a3372b8b20483ca99d8b1a9c227b2f034":[0,0,100,27], +"struct_sync_motor_electrical_data.html#a36a4cbab101c5fe573eafd75794d0cf3":[0,0,100,57], +"struct_sync_motor_electrical_data.html#a3cac2eb4410c37e488a9359ef39c3b3b":[0,0,100,30], +"struct_sync_motor_electrical_data.html#a4467a494945cd3da378d0f97039de94f":[0,0,100,70], +"struct_sync_motor_electrical_data.html#a46c3e4a04013c37e4d77497bdcca2d7b":[0,0,100,13], +"struct_sync_motor_electrical_data.html#a48e826b8bfaaea8391a67374349724dc":[0,0,100,34], +"struct_sync_motor_electrical_data.html#a4c5361a270446607dabb2929a8854653":[0,0,100,6], +"struct_sync_motor_electrical_data.html#a513c4e37f2f062ee8e5086a1d2fdf57a":[0,0,100,56], +"struct_sync_motor_electrical_data.html#a540046b2272b75675181979dad8ccc8b":[0,0,100,52], +"struct_sync_motor_electrical_data.html#a56b504d00007e15f0271c0702bfcf6cd":[0,0,100,17], +"struct_sync_motor_electrical_data.html#a5bbc9459ac89c28089792ed76a2c01e5":[0,0,100,66], +"struct_sync_motor_electrical_data.html#a64fe0337aa51aab1d0b11b72d6bb79c3":[0,0,100,46], +"struct_sync_motor_electrical_data.html#a669d499150a715ad3ab2a1186fc2a22c":[0,0,100,4], +"struct_sync_motor_electrical_data.html#a68a50d74cbe840e6f5ddde4d6568551e":[0,0,100,5], +"struct_sync_motor_electrical_data.html#a6fd87a55210b48a4cdbb99a1a9a05ff2":[0,0,100,12], +"struct_sync_motor_electrical_data.html#a71dfd4556a62431ab7657af1173cb29b":[0,0,100,58], +"struct_sync_motor_electrical_data.html#a72a4c00574d24476341ce64b178b0917":[0,0,100,53], +"struct_sync_motor_electrical_data.html#a72bca6a6528590d3a53ac0ff8557d9d0":[0,0,100,2], +"struct_sync_motor_electrical_data.html#a732b333a510ef770abb9ae89003f2f60":[0,0,100,74], +"struct_sync_motor_electrical_data.html#a7447305e5858f66fd7cab718e09cb5d0":[0,0,100,55], +"struct_sync_motor_electrical_data.html#a8182fa185ba94200df9c76f27a7aa950":[0,0,100,32], +"struct_sync_motor_electrical_data.html#a85ae173b59ea2f380786c36ec534743b":[0,0,100,38], +"struct_sync_motor_electrical_data.html#a85bf9e6428f0cef5b3a4d6412185746b":[0,0,100,19], +"struct_sync_motor_electrical_data.html#a8685294c4133ec612d4a3d3615240336":[0,0,100,59], +"struct_sync_motor_electrical_data.html#a891dc4f1f52a9db079b3cf91707afca9":[0,0,100,49], +"struct_sync_motor_electrical_data.html#a8f3571e353fe1d0678754fc2f203c1e7":[0,0,100,62], +"struct_sync_motor_electrical_data.html#a90b20df7d8b2b09d95641c2574176153":[0,0,100,33], +"struct_sync_motor_electrical_data.html#a94540978a1fdc557aaab60c2fc8c9a5d":[0,0,100,28], +"struct_sync_motor_electrical_data.html#a98301a458887ef7cde8bab0095652ba4":[0,0,100,23], +"struct_sync_motor_electrical_data.html#a9b953c627d870073f16595d6a0270f31":[0,0,100,44], +"struct_sync_motor_electrical_data.html#a9e9e4e4687dbc2f4a0cc38ca5177079c":[0,0,100,75], +"struct_sync_motor_electrical_data.html#aa734d7a7da312566c7ff3c224d932d72":[0,0,100,71], +"struct_sync_motor_electrical_data.html#ab244f2e6f4149d7f4c85efb286e174ce":[0,0,100,39], +"struct_sync_motor_electrical_data.html#ab5b8932c7b973cb7241acd0078276559":[0,0,100,50], +"struct_sync_motor_electrical_data.html#ab807e7528d0ba01024ade3f5da560e56":[0,0,100,8], +"struct_sync_motor_electrical_data.html#ab818b0778da594bf026c1c5f9f028444":[0,0,100,37], +"struct_sync_motor_electrical_data.html#ac1984f28f4c9987bc9578150985c7d06":[0,0,100,47], +"struct_sync_motor_electrical_data.html#ac2b1fd857d3fbd43d13c4f03d4998b0a":[0,0,100,42], +"struct_sync_motor_electrical_data.html#ac2fd73dbd4897f7a47a13361022ee8b7":[0,0,100,48], +"struct_sync_motor_electrical_data.html#ac570dda882a0360ba00bdac26666e1b6":[0,0,100,3], +"struct_sync_motor_electrical_data.html#ac5dd2b71485b5ac3a515bfffe8660086":[0,0,100,40], +"struct_sync_motor_electrical_data.html#ac6eec343f36f933a2d2c2858fb89f1e4":[0,0,100,24], +"struct_sync_motor_electrical_data.html#acdf36a814a5dbc049a49d6a8a4a5dbf8":[0,0,100,69], +"struct_sync_motor_electrical_data.html#ad1095e977927999800fa57a7251a9d50":[0,0,100,63], +"struct_sync_motor_electrical_data.html#ad5be10659aa046767021eee8f17bc5f3":[0,0,100,26], +"struct_sync_motor_electrical_data.html#ad63d9f8a9b8e87d3167e7110ba50ecdd":[0,0,100,67], +"struct_sync_motor_electrical_data.html#ad7257fa4d7fd7e9b104a4d7076fde2fe":[0,0,100,21], +"struct_sync_motor_electrical_data.html#adaadd65c21f57320599da2e87fd148f7":[0,0,100,0], +"struct_sync_motor_electrical_data.html#add530e37d8821f30ec873a10c24d8c41":[0,0,100,68], +"struct_sync_motor_electrical_data.html#ade1a3889071ddf1d02e7d21bc31e4566":[0,0,100,11], +"struct_sync_motor_electrical_data.html#ae21827f6456277ca9b3b659dc1cc5181":[0,0,100,41], +"struct_sync_motor_electrical_data.html#ae81cf3bd42b466d6450fa1de1896d5a0":[0,0,100,45], +"struct_sync_motor_electrical_data.html#ae95f80f05a6f818ee15e04412223fcd7":[0,0,100,60], +"struct_sync_motor_electrical_data.html#ae97bcbb0f856bd793315d2319572bdd4":[0,0,100,10], +"struct_sync_motor_electrical_data.html#aed62412a84b5beefe7419b6441ce51a7":[0,0,100,16], +"struct_sync_motor_electrical_data.html#aefbe9eb66cf3626fc03c4ffe6579ef34":[0,0,100,29], +"struct_sync_motor_electrical_data.html#af01b0c7e5b48c4f6cef9775b627d98f2":[0,0,100,20], +"struct_sync_motor_electrical_data.html#af96a383a7dfd859d9b2c6525a70ab96e":[0,0,100,25], +"struct_sync_motor_electrical_data.html#afd1714dee3344dd0601dcfc074536da9":[0,0,100,18], +"struct_sync_motor_electrical_data.html#afe07e31feeeea93e1df89feafd8ab791":[0,0,100,64], +"struct_sync_motor_electrical_data.html#afe938f6d3c0b24d7881f6ec1f9d3bf87":[0,0,100,65], +"struct_transfer_function_1_1_space_state.html":[0,0,106,0], +"struct_transfer_function_1_1_space_state.html#a3e3bc8524eb751a1f243ee08a6eb7646":[0,0,106,0,0], +"struct_transfer_function_1_1_space_state.html#a4c0bf33dd7a387aed5fd4f4919f15b85":[0,0,106,0,1], +"struct_transfer_function_1_1_space_state.html#a4fc70fb0845c4541742ebd123373d4c7":[0,0,106,0,3], +"struct_transfer_function_1_1_space_state.html#afda97fae8560f595948c810a8ae47202":[0,0,106,0,2], +"struct_transformer_electrical_data.html":[0,0,110], +"struct_transformer_electrical_data.html#a03331e5c4e0ad04c851fffabcc9936ec":[0,0,110,19], +"struct_transformer_electrical_data.html#a1513d2efe2ee080359a6bb9f3177d7ee":[0,0,110,8], +"struct_transformer_electrical_data.html#a21d613ccca353784d8adfd0bfdaca0ff":[0,0,110,22], +"struct_transformer_electrical_data.html#a2d2883e680df2522b8517235b1345512":[0,0,110,1], +"struct_transformer_electrical_data.html#a3101afa7a1e145675819742f05422e90":[0,0,110,13], +"struct_transformer_electrical_data.html#a343366e4142013e724874e6bf79acc67":[0,0,110,10], +"struct_transformer_electrical_data.html#a40158cfd130b05ab26e624395f32018b":[0,0,110,14], +"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] }; diff --git a/docs/doxygen/html/navtreeindex2.js b/docs/doxygen/html/navtreeindex2.js index 188b224..302c449 100644 --- a/docs/doxygen/html/navtreeindex2.js +++ b/docs/doxygen/html/navtreeindex2.js @@ -1,5 +1,77 @@ var NAVTREEINDEX2 = { +"class_camera.html#aefeb0e4d35db499c1049173f1c0be1c2":[0,0,7,15], +"class_camera.html#aefeec0ff0adf22ed4e26b0e3f0c7fb38":[0,0,7,9], +"class_capacitor.html":[0,0,8], +"class_capacitor.html#a00e808708e16b87c80fc650e5710b84e":[0,0,8,10], +"class_capacitor.html#a05d5517b64dd8a8888817ca28b72294d":[0,0,8,6], +"class_capacitor.html#a2c3f0949c2b791c6a0b69866e9aaff7a":[0,0,8,12], +"class_capacitor.html#a422e353b594ac6e4ef34e1f613f7d580":[0,0,8,7], +"class_capacitor.html#a459b1bbdb153bb9720176661e2960ea6":[0,0,8,14], +"class_capacitor.html#a503100032b983414ef469907e4f3fd6a":[0,0,8,8], +"class_capacitor.html#a581f07c0fa802bbdd0f35a70cc79d3b4":[0,0,8,15], +"class_capacitor.html#a6b06adb1ef3545b220e0b94ee6210b7a":[0,0,8,11], +"class_capacitor.html#a94d378c922467214b394931ec0eb01c8":[0,0,8,5], +"class_capacitor.html#a994039e59a8ae0ec3fe7cf7f5b66e4e5":[0,0,8,4], +"class_capacitor.html#ab2c5403403c3f8b4ee1ae737ece4e1cc":[0,0,8,13], +"class_capacitor.html#ab7047062b5e731e86815fe5b61e622da":[0,0,8,1], +"class_capacitor.html#ac5e08b3cca7884bb5f26a8ffcf8fcccf":[0,0,8,2], +"class_capacitor.html#ace755e5bc3cc72b491ce31c24c54a5cf":[0,0,8,3], +"class_capacitor.html#aeba70b8c4a1ed3609481b46c5ace8c6c":[0,0,8,0], +"class_capacitor.html#aef6926699c93145d4b3c62efd942b269":[0,0,8,9], +"class_chart_view.html":[0,0,10], +"class_chart_view.html#a06514137ceea55c0fe387978ea13e214":[0,0,10,20], +"class_chart_view.html#a0fe6be1c5bf29fd058787f1a47325c1a":[0,0,10,10], +"class_chart_view.html#a143b7ffc99d2dbcc82ad4cf4b96d5db2":[0,0,10,22], +"class_chart_view.html#a1e92dd6533c5ebcf6875cb9e517b7b4e":[0,0,10,19], +"class_chart_view.html#a1fe1991c6239632b4af01186b05e062f":[0,0,10,35], +"class_chart_view.html#a201c868954eb1c79dda37ffdcc2a0eeb":[0,0,10,36], +"class_chart_view.html#a231d6a0f6298df0c764f0dcc601e9f9f":[0,0,10,28], +"class_chart_view.html#a28da38ba24dad74b833b7bc5652358ed":[0,0,10,16], +"class_chart_view.html#a293128b4b91a4a838a792076f87cde0a":[0,0,10,17], +"class_chart_view.html#a2b74fcf37a33a8654c3c06008f4e9278":[0,0,10,37], +"class_chart_view.html#a38699e754304878e9a589f730c027dec":[0,0,10,14], +"class_chart_view.html#a4957f22dfe582cd2557b005a010cf2d2":[0,0,10,1], +"class_chart_view.html#a4a2abddb77a734eeb7992ca8434bb358":[0,0,10,7], +"class_chart_view.html#a4b43a87338084b4d163b1a2f002ff9d7":[0,0,10,15], +"class_chart_view.html#a5111d9293952ca916aecd5ff7f597950":[0,0,10,21], +"class_chart_view.html#a5666f8aedecd943ad19d72fc533dcfd9":[0,0,10,6], +"class_chart_view.html#a597a1cde3693f14427a898b61bdc05a9":[0,0,10,9], +"class_chart_view.html#a598645b015715cdc22d08d3875a0a5bb":[0,0,10,31], +"class_chart_view.html#a6034bc00b41785d6003e499778a6a69f":[0,0,10,5], +"class_chart_view.html#a621ebe0264d241f54cf4b65efe705618":[0,0,10,0], +"class_chart_view.html#a6aacbc6267d7c01cc5b3f78fc4ba50fe":[0,0,10,40], +"class_chart_view.html#a6e29b198271efa3c6d5ca9d5ae3ae773":[0,0,10,24], +"class_chart_view.html#a70200389b94906b89d2454b27ac2469c":[0,0,10,30], +"class_chart_view.html#a7e069208db024a903a90f72f9057b951":[0,0,10,29], +"class_chart_view.html#a7f7e1d962ab76be37b89f05e6b97cfc0":[0,0,10,34], +"class_chart_view.html#a877c14527e957c85037b7705d196733d":[0,0,10,18], +"class_chart_view.html#a88dfb946342df7c344bd3578d207dcd9":[0,0,10,23], +"class_chart_view.html#a89e198037f79887a33ce21c949021455":[0,0,10,32], +"class_chart_view.html#a8a374b2c62da0ef13a7d292482abb845":[0,0,10,12], +"class_chart_view.html#a8abb35d06074a8370b222fafae8db028":[0,0,10,8], +"class_chart_view.html#a8f57c26ce982fcf91626e8121b625f70":[0,0,10,13], +"class_chart_view.html#a91cae14a0b48e5755cb44f05e1d9c0b0":[0,0,10,27], +"class_chart_view.html#a95e9181dd41eeff08964054746be305b":[0,0,10,26], +"class_chart_view.html#a9b4099d6352e09be545265a7168860f2":[0,0,10,2], +"class_chart_view.html#ac72c20e03443d91fca200305fc6bbad1":[0,0,10,4], +"class_chart_view.html#ad174b0057b89c6dd4b6aed93a467acd1":[0,0,10,33], +"class_chart_view.html#ad3a0740630473e266d6406a561053ef4":[0,0,10,3], +"class_chart_view.html#ae6593489cbd815282f77f5a073c34e55":[0,0,10,25], +"class_chart_view.html#aec5e3605401ad966f03113a60f05fe1c":[0,0,10,38], +"class_chart_view.html#af9953c97ae04ccb534ee8d8f772330a4":[0,0,10,11], +"class_chart_view.html#affb3ae7ee1147240f5180926a07425b5":[0,0,10,39], +"class_chart_view_base.html":[0,0,11], +"class_chart_view_base.html#a0ab362bd15f37bf94201b6e40d0ba3fa":[0,0,11,15], +"class_chart_view_base.html#a0d66080c5a61b4a544111cd829cd88b8":[0,0,11,50], +"class_chart_view_base.html#a237d5355111659d84fa4e61569deeecc":[0,0,11,30], +"class_chart_view_base.html#a23f74f17c47b4352def0919e9efd3afa":[0,0,11,13], +"class_chart_view_base.html#a250a4f7292e38ffadf609f07dbbc0323":[0,0,11,27], +"class_chart_view_base.html#a27408a2fa4cc3c63a7655ddc6bca7412":[0,0,11,8], +"class_chart_view_base.html#a27f1cf05d785e4f230b3093ab807972c":[0,0,11,26], +"class_chart_view_base.html#a321240363d83ca86670fb4934f1d67f7":[0,0,11,5], +"class_chart_view_base.html#a34f689775bc42f1f11a7b84067a98808":[0,0,11,37], +"class_chart_view_base.html#a407b4fc3b5f891ff37cd8475f0f6ab19":[0,0,11,20], "class_chart_view_base.html#a4083de6c29b7ab0997217c32e246ee0b":[0,0,11,34], "class_chart_view_base.html#a43e25960f37484e564f8043b273760cd":[0,0,11,49], "class_chart_view_base.html#a491fa99972b27860b94e78c6e1745216":[0,0,11,0], @@ -177,77 +249,5 @@ var NAVTREEINDEX2 = "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], -"class_control_editor_base.html#a167986f923077001a235f6dd57d25c62":[0,0,17,23], -"class_control_editor_base.html#a175f41bf34d4b7a355b9e45b58863b3f":[0,0,17,16], -"class_control_editor_base.html#a1ad8acf35865a65e9da27f72eb40f863":[0,0,17,12], -"class_control_editor_base.html#a2597f41925fa2d560fd7edaa0f8b544f":[0,0,17,11], -"class_control_editor_base.html#a322149e110f763fcbed7b58af8b1c605":[0,0,17,24], -"class_control_editor_base.html#a3430458d81963a8fa14e7380bb1cb7cb":[0,0,17,20], -"class_control_editor_base.html#a42c08a6003eb3953a7494d3e61290787":[0,0,17,22], -"class_control_editor_base.html#a54eb878457bf24962a00e0b895f7ca1f":[0,0,17,26], -"class_control_editor_base.html#a5cad91a2f77417d0a19e2c4585966ce2":[0,0,17,33], -"class_control_editor_base.html#a6c7f0ed4ebe6afb448e3713afcd39078":[0,0,17,19], -"class_control_editor_base.html#a7b19542b569c036a6bef179d918dfb5b":[0,0,17,4], -"class_control_editor_base.html#a8b1a2dfef423479578fdc3eb086f2f4f":[0,0,17,10], -"class_control_editor_base.html#a9078a25ee05b6eec3e874e4bf375aba7":[0,0,17,17], -"class_control_editor_base.html#a93f2731c7c21cda28648bd561f4a1d2c":[0,0,17,21], -"class_control_editor_base.html#a9988f3cd363ab1c4da96b3ccefa164a5":[0,0,17,29], -"class_control_editor_base.html#aa2b2fe5ea81a3eb8c28ee9064773be93":[0,0,17,2], -"class_control_editor_base.html#aa99174f98107c89bd6026579ec2f4343":[0,0,17,15], -"class_control_editor_base.html#aac008c284d2bc841ed52bfaca84ee85a":[0,0,17,18], -"class_control_editor_base.html#aac385a40c76a8036b07b6a7f08aeb062a5666c9d2fa9c12a8ba29af0534fcd9d5":[0,0,17,0], -"class_control_editor_base.html#aac385a40c76a8036b07b6a7f08aeb062abdc9b82b5a3ad6189dc3437bc07cc0e3":[0,0,17,1], -"class_control_editor_base.html#abc78a2b37d5ce3dda133a1a1243e7d0d":[0,0,17,5], -"class_control_editor_base.html#abeeae17fcf7de0fd5a15377c3db05f34":[0,0,17,9], -"class_control_editor_base.html#ac16f79d8c489e0d64a0ba2f8635c413a":[0,0,17,31], -"class_control_editor_base.html#ac358a5750676e8204d1ad7a899195636":[0,0,17,34], -"class_control_editor_base.html#ac5edc2aea7c9e063f1d36c06442792f4":[0,0,17,8], -"class_control_editor_base.html#acdc078affdcc3daac68d8b83c630bfaf":[0,0,17,3], -"class_control_editor_base.html#ad1f69087303790b7eedd86022cac6da4":[0,0,17,30], -"class_control_editor_base.html#ad639d4afcd7f3b9eac6cd8a9f8a20ce6":[0,0,17,28], -"class_control_editor_base.html#ae506926ab0a4f91dddb22e0e9fca4900":[0,0,17,27], -"class_control_editor_base.html#aea5060f214daa10dbd7742f8169f97df":[0,0,17,6], -"class_control_editor_base.html#af41c63751f51341e35a71ea5048244a4":[0,0,17,14], -"class_control_editor_base.html#af8715ecc176911865823d2bc777e8501":[0,0,17,13], -"class_control_editor_base.html#afeb914b18f305b1dedd01aae96c9a4d8":[0,0,17,32], -"class_control_element.html":[0,0,18], -"class_control_element.html#a038e940fc33ac3e443502169104d7ebd":[0,0,18,4], -"class_control_element.html#a375be1f070c19579c27d381be2b09e4b":[0,0,18,8], -"class_control_element.html#a559fa662c390b9257c2e23fabdfd1801":[0,0,18,9], -"class_control_element.html#a61440a392d438de163bfe9ffb8e9efec":[0,0,18,12], -"class_control_element.html#a802885ecd7464b6ae085da276be4d06c":[0,0,18,13], -"class_control_element.html#a8958776ec4e32bc0b23f90f4ee9ea2e3":[0,0,18,5], -"class_control_element.html#a899b994168cf0c98695e82a4f3e7c98b":[0,0,18,10], -"class_control_element.html#a8f817b751c7766f070cee27d094a5499":[0,0,18,7], -"class_control_element.html#aa03ed482f0f726e8b4724e815b1cdfb1":[0,0,18,0], -"class_control_element.html#aac3aa20b1c5f9eb7e188298dda34600f":[0,0,18,3], -"class_control_element.html#ab77716614985cab1c7f098af1603c2f1":[0,0,18,2], -"class_control_element.html#abcd5f56c2c771a58b0f1ea80eb8c6a86":[0,0,18,16], -"class_control_element.html#ac8bd52ddb8eed51a217fecb2eed65708":[0,0,18,6], -"class_control_element.html#aeb164b935f9bdb0646b988782e979758":[0,0,18,1], -"class_control_element.html#aeee4f373f0ebca4589b9ef77fe40c291":[0,0,18,11], -"class_control_element.html#af1813931d9b51f5def437ba3c31e8aba":[0,0,18,14], -"class_control_element.html#af669ba711650e3befaad4ed70d2776ab":[0,0,18,15], -"class_control_element_button.html":[0,0,19], -"class_control_element_button.html#a018b99c1b086125e7b728c2cc25b5ff5":[0,0,19,4], -"class_control_element_button.html#a4ad1738a01a24c58cf0b21d8f3195da8":[0,0,19,11], -"class_control_element_button.html#a4b1d55323d02bca75732b5e32878b1d0":[0,0,19,12], -"class_control_element_button.html#a679fe222f172d35dc1a7e157a42a7dbf":[0,0,19,1], -"class_control_element_button.html#a81773f33a05c2b976bef693604a3ca4b":[0,0,19,8], -"class_control_element_button.html#a831ba4a73c4a8c281edb072f3f68eff8":[0,0,19,14], -"class_control_element_button.html#a90252ea5c337a0836292a1154fc2fd8d":[0,0,19,15], -"class_control_element_button.html#aa0d011f5dc84d644c10709116c82d8bf":[0,0,19,13], -"class_control_element_button.html#ab53fa1072a78f8f2e81548bdb7edde4f":[0,0,19,3], -"class_control_element_button.html#ab87a13cd01a3ac7222a1df2e5252a2ac":[0,0,19,10], -"class_control_element_button.html#ac711aa61fe25de7f632a3f2f75fe4fae":[0,0,19,9], -"class_control_element_button.html#ad45b776fd9046f11fe147e8145474478":[0,0,19,0], -"class_control_element_button.html#ade13a62ffdb211d3851f653f2b3dd004":[0,0,19,5], -"class_control_element_button.html#aea4e242359ba70bb26cd29b2bab7d7c8":[0,0,19,7], -"class_control_element_button.html#aef6c1c0b63d71a9e1a99601946d6e0ff":[0,0,19,2], -"class_control_element_button.html#af3ea4e284321f86aa12b98ac23ea2026":[0,0,19,16], -"class_control_element_button.html#afa6effe38a6b8a4070d36dc09dfcd429":[0,0,19,6] +"class_control_editor.html#aede55dc44f1bcc87ffd3e004dcb902be":[0,0,16,40] }; diff --git a/docs/doxygen/html/navtreeindex3.js b/docs/doxygen/html/navtreeindex3.js index 134254e..641564a 100644 --- a/docs/doxygen/html/navtreeindex3.js +++ b/docs/doxygen/html/navtreeindex3.js @@ -1,5 +1,77 @@ var NAVTREEINDEX3 = { +"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], +"class_control_editor_base.html#a167986f923077001a235f6dd57d25c62":[0,0,17,23], +"class_control_editor_base.html#a175f41bf34d4b7a355b9e45b58863b3f":[0,0,17,16], +"class_control_editor_base.html#a1ad8acf35865a65e9da27f72eb40f863":[0,0,17,12], +"class_control_editor_base.html#a2597f41925fa2d560fd7edaa0f8b544f":[0,0,17,11], +"class_control_editor_base.html#a322149e110f763fcbed7b58af8b1c605":[0,0,17,24], +"class_control_editor_base.html#a3430458d81963a8fa14e7380bb1cb7cb":[0,0,17,20], +"class_control_editor_base.html#a42c08a6003eb3953a7494d3e61290787":[0,0,17,22], +"class_control_editor_base.html#a54eb878457bf24962a00e0b895f7ca1f":[0,0,17,26], +"class_control_editor_base.html#a5cad91a2f77417d0a19e2c4585966ce2":[0,0,17,33], +"class_control_editor_base.html#a6c7f0ed4ebe6afb448e3713afcd39078":[0,0,17,19], +"class_control_editor_base.html#a7b19542b569c036a6bef179d918dfb5b":[0,0,17,4], +"class_control_editor_base.html#a8b1a2dfef423479578fdc3eb086f2f4f":[0,0,17,10], +"class_control_editor_base.html#a9078a25ee05b6eec3e874e4bf375aba7":[0,0,17,17], +"class_control_editor_base.html#a93f2731c7c21cda28648bd561f4a1d2c":[0,0,17,21], +"class_control_editor_base.html#a9988f3cd363ab1c4da96b3ccefa164a5":[0,0,17,29], +"class_control_editor_base.html#aa2b2fe5ea81a3eb8c28ee9064773be93":[0,0,17,2], +"class_control_editor_base.html#aa99174f98107c89bd6026579ec2f4343":[0,0,17,15], +"class_control_editor_base.html#aac008c284d2bc841ed52bfaca84ee85a":[0,0,17,18], +"class_control_editor_base.html#aac385a40c76a8036b07b6a7f08aeb062a5666c9d2fa9c12a8ba29af0534fcd9d5":[0,0,17,0], +"class_control_editor_base.html#aac385a40c76a8036b07b6a7f08aeb062abdc9b82b5a3ad6189dc3437bc07cc0e3":[0,0,17,1], +"class_control_editor_base.html#abc78a2b37d5ce3dda133a1a1243e7d0d":[0,0,17,5], +"class_control_editor_base.html#abeeae17fcf7de0fd5a15377c3db05f34":[0,0,17,9], +"class_control_editor_base.html#ac16f79d8c489e0d64a0ba2f8635c413a":[0,0,17,31], +"class_control_editor_base.html#ac358a5750676e8204d1ad7a899195636":[0,0,17,34], +"class_control_editor_base.html#ac5edc2aea7c9e063f1d36c06442792f4":[0,0,17,8], +"class_control_editor_base.html#acdc078affdcc3daac68d8b83c630bfaf":[0,0,17,3], +"class_control_editor_base.html#ad1f69087303790b7eedd86022cac6da4":[0,0,17,30], +"class_control_editor_base.html#ad639d4afcd7f3b9eac6cd8a9f8a20ce6":[0,0,17,28], +"class_control_editor_base.html#ae506926ab0a4f91dddb22e0e9fca4900":[0,0,17,27], +"class_control_editor_base.html#aea5060f214daa10dbd7742f8169f97df":[0,0,17,6], +"class_control_editor_base.html#af41c63751f51341e35a71ea5048244a4":[0,0,17,14], +"class_control_editor_base.html#af8715ecc176911865823d2bc777e8501":[0,0,17,13], +"class_control_editor_base.html#afeb914b18f305b1dedd01aae96c9a4d8":[0,0,17,32], +"class_control_element.html":[0,0,18], +"class_control_element.html#a038e940fc33ac3e443502169104d7ebd":[0,0,18,4], +"class_control_element.html#a375be1f070c19579c27d381be2b09e4b":[0,0,18,8], +"class_control_element.html#a559fa662c390b9257c2e23fabdfd1801":[0,0,18,9], +"class_control_element.html#a61440a392d438de163bfe9ffb8e9efec":[0,0,18,12], +"class_control_element.html#a802885ecd7464b6ae085da276be4d06c":[0,0,18,13], +"class_control_element.html#a8958776ec4e32bc0b23f90f4ee9ea2e3":[0,0,18,5], +"class_control_element.html#a899b994168cf0c98695e82a4f3e7c98b":[0,0,18,10], +"class_control_element.html#a8f817b751c7766f070cee27d094a5499":[0,0,18,7], +"class_control_element.html#aa03ed482f0f726e8b4724e815b1cdfb1":[0,0,18,0], +"class_control_element.html#aac3aa20b1c5f9eb7e188298dda34600f":[0,0,18,3], +"class_control_element.html#ab77716614985cab1c7f098af1603c2f1":[0,0,18,2], +"class_control_element.html#abcd5f56c2c771a58b0f1ea80eb8c6a86":[0,0,18,16], +"class_control_element.html#ac8bd52ddb8eed51a217fecb2eed65708":[0,0,18,6], +"class_control_element.html#aeb164b935f9bdb0646b988782e979758":[0,0,18,1], +"class_control_element.html#aeee4f373f0ebca4589b9ef77fe40c291":[0,0,18,11], +"class_control_element.html#af1813931d9b51f5def437ba3c31e8aba":[0,0,18,14], +"class_control_element.html#af669ba711650e3befaad4ed70d2776ab":[0,0,18,15], +"class_control_element_button.html":[0,0,19], +"class_control_element_button.html#a018b99c1b086125e7b728c2cc25b5ff5":[0,0,19,4], +"class_control_element_button.html#a4ad1738a01a24c58cf0b21d8f3195da8":[0,0,19,11], +"class_control_element_button.html#a4b1d55323d02bca75732b5e32878b1d0":[0,0,19,12], +"class_control_element_button.html#a679fe222f172d35dc1a7e157a42a7dbf":[0,0,19,1], +"class_control_element_button.html#a81773f33a05c2b976bef693604a3ca4b":[0,0,19,8], +"class_control_element_button.html#a831ba4a73c4a8c281edb072f3f68eff8":[0,0,19,14], +"class_control_element_button.html#a90252ea5c337a0836292a1154fc2fd8d":[0,0,19,15], +"class_control_element_button.html#aa0d011f5dc84d644c10709116c82d8bf":[0,0,19,13], +"class_control_element_button.html#ab53fa1072a78f8f2e81548bdb7edde4f":[0,0,19,3], +"class_control_element_button.html#ab87a13cd01a3ac7222a1df2e5252a2ac":[0,0,19,10], +"class_control_element_button.html#ac711aa61fe25de7f632a3f2f75fe4fae":[0,0,19,9], +"class_control_element_button.html#ad45b776fd9046f11fe147e8145474478":[0,0,19,0], +"class_control_element_button.html#ade13a62ffdb211d3851f653f2b3dd004":[0,0,19,5], +"class_control_element_button.html#aea4e242359ba70bb26cd29b2bab7d7c8":[0,0,19,7], +"class_control_element_button.html#aef6c1c0b63d71a9e1a99601946d6e0ff":[0,0,19,2], +"class_control_element_button.html#af3ea4e284321f86aa12b98ac23ea2026":[0,0,19,16], +"class_control_element_button.html#afa6effe38a6b8a4070d36dc09dfcd429":[0,0,19,6], "class_control_element_container.html":[0,0,20], "class_control_element_container.html#a0471ac31855189485313268d0b3a53db":[0,0,20,4], "class_control_element_container.html#a0bb9367530c05a868d51ca8ad73ad023":[0,0,20,13], @@ -177,77 +249,5 @@ var NAVTREEINDEX3 = "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], -"class_electric_calculation.html#a044a85b589d5eee879de3348248fc612":[0,0,26,3], -"class_electric_calculation.html#a06ce7fe37ee6cc2c786573f094493659":[0,0,26,26], -"class_electric_calculation.html#a0c88feb4f01309795e8a0cf5064a7d90":[0,0,26,28], -"class_electric_calculation.html#a0eeb4b5afc082617247351857af26c22":[0,0,26,22], -"class_electric_calculation.html#a1d417da6eeb8c12f7be6501fff6f7049":[0,0,26,21], -"class_electric_calculation.html#a1e70291bfa9a0850d9ffcbee44daa2f7":[0,0,26,1], -"class_electric_calculation.html#a370884bcb0b406d8c9151ed064620a86":[0,0,26,27], -"class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e":[0,0,26,17], -"class_electric_calculation.html#a458ecbb5afd86d9049ed3508256d8fe1":[0,0,26,2], -"class_electric_calculation.html#a4bf7c82e4e8bc87a4e42ad9b124ea9e5":[0,0,26,23], -"class_electric_calculation.html#a4ddabc6210146ae1ccae5f6911095bfd":[0,0,26,7], -"class_electric_calculation.html#a55cd49ca9c2771533e6e2f16bb9ec1fc":[0,0,26,20], -"class_electric_calculation.html#a6663e7a20e96ee975bd0f7d54b8a6f70":[0,0,26,0], -"class_electric_calculation.html#a689622805bdea60428e6eea19795dff9":[0,0,26,24], -"class_electric_calculation.html#a6cca6be3c0b79741a49b1631e38fc3be":[0,0,26,31], -"class_electric_calculation.html#a72386789cd0ff595e937d70e18cad697":[0,0,26,29], -"class_electric_calculation.html#a7c01b0f6b2f656db999ff4933d86d19d":[0,0,26,5], -"class_electric_calculation.html#a8709a452d684d4224d32591c281ae0ed":[0,0,26,10], -"class_electric_calculation.html#a8dcbf4f2468a5b55680ba4c17d909102":[0,0,26,30], -"class_electric_calculation.html#a906ce639a5d6c5d7946fe8824f1b4f1b":[0,0,26,9], -"class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d":[0,0,26,18], -"class_electric_calculation.html#aa5e278a1c5ba1b6159c21ae2ff2b23b4":[0,0,26,12], -"class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24":[0,0,26,6], -"class_electric_calculation.html#ad7bfee2d7cba726ff6aa7605a969d49a":[0,0,26,25], -"class_electric_calculation.html#ad8719b10c3c4b85b316d3daa71064840":[0,0,26,15], -"class_electric_calculation.html#ade330c7267088dcbdd7c8e7f8c302da3":[0,0,26,14], -"class_electric_calculation.html#ae721d26e05b66887bfb7125f76ec9e9c":[0,0,26,13], -"class_electric_calculation.html#ae9b5e9b51615141e88de0a0f99a7741e":[0,0,26,16], -"class_electric_calculation.html#aed4e5f37f8a06d0ad305334d2847cd7f":[0,0,26,4], -"class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c":[0,0,26,19], -"class_electric_calculation.html#af8eff271de83898c536deda1aab22d48":[0,0,26,11], -"class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92":[0,0,26,8], -"class_electromechanical.html":[0,0,27], -"class_electromechanical.html#a000d1cd6ac54aa864c9de3ee9015a17a":[0,0,27,21], -"class_electromechanical.html#a001abfe3809e6425f7f0bd67adaf28f4":[0,0,27,1], -"class_electromechanical.html#a03939bf250c99309cdf90c3bda4911d4":[0,0,27,23], -"class_electromechanical.html#a1070faed7544316f653e1a09fcccf475":[0,0,27,36], -"class_electromechanical.html#a10b7ceb1a8066461c5369d210cff48d5":[0,0,27,6], -"class_electromechanical.html#a110cd09af0070718c95d5300adcf754f":[0,0,27,35], -"class_electromechanical.html#a159776bb812bc74d94c8abe5bb8b3e10":[0,0,27,39], -"class_electromechanical.html#a18e698b73396100928175811236eebf4":[0,0,27,32], -"class_electromechanical.html#a1e7fff4570b7a983f79a22aafed2112d":[0,0,27,29], -"class_electromechanical.html#a23d720e7a18a781b808cc7ca0f130ceb":[0,0,27,43], -"class_electromechanical.html#a28873d1ce6c1bbee57a07dabc5053423":[0,0,27,44], -"class_electromechanical.html#a30ecddf5249f545e73b2aaaf19cbec50":[0,0,27,0], -"class_electromechanical.html#a3e7a7dfe02d9277957552f5a46f96dd1":[0,0,27,37], -"class_electromechanical.html#a488985a77171f915145ecc5d891db04f":[0,0,27,2], -"class_electromechanical.html#a4ccf60ce21c83ff757e1a7de99a00704":[0,0,27,13], -"class_electromechanical.html#a4e3c1766ff06883a681f39d536a41136":[0,0,27,3], -"class_electromechanical.html#a4eacb39ac3ab6b4fd3e0cf963f030ce2":[0,0,27,40], -"class_electromechanical.html#a4fe6bcd83ae05c0cf6827eed9d0eb029":[0,0,27,28], -"class_electromechanical.html#a6192a9b4152353c983b623048b1da460":[0,0,27,10], -"class_electromechanical.html#a69b4bec62476de94bf823714972edd68":[0,0,27,20], -"class_electromechanical.html#a6c016a1470a0d910e4522b6027f3b95c":[0,0,27,31], -"class_electromechanical.html#a790c142f8d9db534c7e368711e84f61e":[0,0,27,14], -"class_electromechanical.html#a7972213c6043ca7c890b9f15d3e4162f":[0,0,27,8], -"class_electromechanical.html#a7cce38fb26c4e1e6a70bd605285848e8":[0,0,27,19], -"class_electromechanical.html#a827e9862cf10ebdc65c50f7542b67020":[0,0,27,34], -"class_electromechanical.html#a82b5c5c2aeefd49706199d0ba140d300":[0,0,27,5], -"class_electromechanical.html#a8668c1b2881d2f2a173d15c46c8efb9d":[0,0,27,18], -"class_electromechanical.html#a8fc1d8f7b697f8383681e3d3e7d66c72":[0,0,27,12], -"class_electromechanical.html#a9b076237d26ff011552ed624a5d9bbe2":[0,0,27,7], -"class_electromechanical.html#a9d030ba42b2f8f2ba129797c061d71cb":[0,0,27,15], -"class_electromechanical.html#aa00d6b356a74649a12fbdd06d44b1d28":[0,0,27,33], -"class_electromechanical.html#aad655c165bc53cce5d5fdd8ae9339ba2":[0,0,27,9], -"class_electromechanical.html#ab0d7d031ccc501d5101fabc7b48eb70e":[0,0,27,11], -"class_electromechanical.html#abedf14a8b4d2c9914c972d9bdf3463c6":[0,0,27,24], -"class_electromechanical.html#ac0dfbab6529f02705d1c66bda5cac704":[0,0,27,41], -"class_electromechanical.html#ac1d6b85d886abd344d8b12d6d8665f1f":[0,0,27,22] +"class_data_report_base.html#af14bc6a653ffa84a301d6a2ceb4a9d04":[0,0,25,3] }; diff --git a/docs/doxygen/html/navtreeindex4.js b/docs/doxygen/html/navtreeindex4.js index 09640ed..37ad3ff 100644 --- a/docs/doxygen/html/navtreeindex4.js +++ b/docs/doxygen/html/navtreeindex4.js @@ -1,17 +1,95 @@ var NAVTREEINDEX4 = { -"class_electromechanical.html#ac51fdb6f0ae13514b6986f99a782532a":[0,0,27,45], -"class_electromechanical.html#ac627a99f958656bb2385fef5f7101018":[0,0,27,38], -"class_electromechanical.html#aceaa86ce0dfc1842420568db7037fb12":[0,0,27,42], -"class_electromechanical.html#ad78da79b4af8651eae3e4d8800f57d2b":[0,0,27,47], -"class_electromechanical.html#ad963e529cd06cf42a9eef98dbbf04edb":[0,0,27,27], -"class_electromechanical.html#adb77fe8bf93882f3cd039c126ab79f7d":[0,0,27,25], -"class_electromechanical.html#ade07879f964c541bbf92970d1fcd090a":[0,0,27,26], -"class_electromechanical.html#ae359ee1a06f1bcefbf03e3d0f4f7d10a":[0,0,27,30], -"class_electromechanical.html#ae5f5162b53e8969fd933af2ef80d1b67":[0,0,27,16], -"class_electromechanical.html#ae8bf375c5f8bf38a66e57eee3b7e46ca":[0,0,27,46], +"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], +"class_electric_calculation.html#a044a85b589d5eee879de3348248fc612":[0,0,26,3], +"class_electric_calculation.html#a06ce7fe37ee6cc2c786573f094493659":[0,0,26,26], +"class_electric_calculation.html#a0c88feb4f01309795e8a0cf5064a7d90":[0,0,26,28], +"class_electric_calculation.html#a0eeb4b5afc082617247351857af26c22":[0,0,26,22], +"class_electric_calculation.html#a1d417da6eeb8c12f7be6501fff6f7049":[0,0,26,21], +"class_electric_calculation.html#a1e70291bfa9a0850d9ffcbee44daa2f7":[0,0,26,1], +"class_electric_calculation.html#a370884bcb0b406d8c9151ed064620a86":[0,0,26,27], +"class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e":[0,0,26,17], +"class_electric_calculation.html#a458ecbb5afd86d9049ed3508256d8fe1":[0,0,26,2], +"class_electric_calculation.html#a4bf7c82e4e8bc87a4e42ad9b124ea9e5":[0,0,26,23], +"class_electric_calculation.html#a4ddabc6210146ae1ccae5f6911095bfd":[0,0,26,7], +"class_electric_calculation.html#a55cd49ca9c2771533e6e2f16bb9ec1fc":[0,0,26,20], +"class_electric_calculation.html#a6663e7a20e96ee975bd0f7d54b8a6f70":[0,0,26,0], +"class_electric_calculation.html#a689622805bdea60428e6eea19795dff9":[0,0,26,24], +"class_electric_calculation.html#a6cca6be3c0b79741a49b1631e38fc3be":[0,0,26,31], +"class_electric_calculation.html#a72386789cd0ff595e937d70e18cad697":[0,0,26,29], +"class_electric_calculation.html#a7c01b0f6b2f656db999ff4933d86d19d":[0,0,26,5], +"class_electric_calculation.html#a8709a452d684d4224d32591c281ae0ed":[0,0,26,10], +"class_electric_calculation.html#a8dcbf4f2468a5b55680ba4c17d909102":[0,0,26,30], +"class_electric_calculation.html#a906ce639a5d6c5d7946fe8824f1b4f1b":[0,0,26,9], +"class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d":[0,0,26,18], +"class_electric_calculation.html#aa5e278a1c5ba1b6159c21ae2ff2b23b4":[0,0,26,12], +"class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24":[0,0,26,6], +"class_electric_calculation.html#ad7bfee2d7cba726ff6aa7605a969d49a":[0,0,26,25], +"class_electric_calculation.html#ad8719b10c3c4b85b316d3daa71064840":[0,0,26,15], +"class_electric_calculation.html#ade330c7267088dcbdd7c8e7f8c302da3":[0,0,26,14], +"class_electric_calculation.html#ae721d26e05b66887bfb7125f76ec9e9c":[0,0,26,13], +"class_electric_calculation.html#ae9b5e9b51615141e88de0a0f99a7741e":[0,0,26,16], +"class_electric_calculation.html#aed4e5f37f8a06d0ad305334d2847cd7f":[0,0,26,4], +"class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c":[0,0,26,19], +"class_electric_calculation.html#af8eff271de83898c536deda1aab22d48":[0,0,26,11], +"class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92":[0,0,26,8], +"class_electromechanical.html":[0,0,27], +"class_electromechanical.html#a000d1cd6ac54aa864c9de3ee9015a17a":[0,0,27,22], +"class_electromechanical.html#a001abfe3809e6425f7f0bd67adaf28f4":[0,0,27,1], +"class_electromechanical.html#a03939bf250c99309cdf90c3bda4911d4":[0,0,27,24], +"class_electromechanical.html#a1070faed7544316f653e1a09fcccf475":[0,0,27,42], +"class_electromechanical.html#a110cd09af0070718c95d5300adcf754f":[0,0,27,41], +"class_electromechanical.html#a159776bb812bc74d94c8abe5bb8b3e10":[0,0,27,45], +"class_electromechanical.html#a18e698b73396100928175811236eebf4":[0,0,27,33], +"class_electromechanical.html#a1e7fff4570b7a983f79a22aafed2112d":[0,0,27,30], +"class_electromechanical.html#a237471acf9a372a9b1cd1481803571d5":[0,0,27,40], +"class_electromechanical.html#a23d720e7a18a781b808cc7ca0f130ceb":[0,0,27,49], +"class_electromechanical.html#a28873d1ce6c1bbee57a07dabc5053423":[0,0,27,50], +"class_electromechanical.html#a30ecddf5249f545e73b2aaaf19cbec50":[0,0,27,0], +"class_electromechanical.html#a3a7d7043e936b7649a741cf9d39e01b9":[0,0,27,36], +"class_electromechanical.html#a3e7a7dfe02d9277957552f5a46f96dd1":[0,0,27,43], +"class_electromechanical.html#a4029ebc888d91ec49b9bdf9f7cdf2631":[0,0,27,35], +"class_electromechanical.html#a488985a77171f915145ecc5d891db04f":[0,0,27,2], +"class_electromechanical.html#a4c82ed8fc748149bb116ee532e6ee978":[0,0,27,37], +"class_electromechanical.html#a4ccf60ce21c83ff757e1a7de99a00704":[0,0,27,14], +"class_electromechanical.html#a4eacb39ac3ab6b4fd3e0cf963f030ce2":[0,0,27,46], +"class_electromechanical.html#a4fe6bcd83ae05c0cf6827eed9d0eb029":[0,0,27,29], +"class_electromechanical.html#a6192a9b4152353c983b623048b1da460":[0,0,27,10], +"class_electromechanical.html#a69b4bec62476de94bf823714972edd68":[0,0,27,21], +"class_electromechanical.html#a6c016a1470a0d910e4522b6027f3b95c":[0,0,27,32], +"class_electromechanical.html#a790c142f8d9db534c7e368711e84f61e":[0,0,27,15], +"class_electromechanical.html#a7972213c6043ca7c890b9f15d3e4162f":[0,0,27,9], +"class_electromechanical.html#a7cce38fb26c4e1e6a70bd605285848e8":[0,0,27,20], +"class_electromechanical.html#a827e9862cf10ebdc65c50f7542b67020":[0,0,27,38], +"class_electromechanical.html#a8668c1b2881d2f2a173d15c46c8efb9d":[0,0,27,19], +"class_electromechanical.html#a8ca8ab15ead93ee615277698bf0b3867":[0,0,27,6], +"class_electromechanical.html#a8fc1d8f7b697f8383681e3d3e7d66c72":[0,0,27,13], +"class_electromechanical.html#a900832be747b8b3e41e901235012bf87":[0,0,27,7], +"class_electromechanical.html#a9b076237d26ff011552ed624a5d9bbe2":[0,0,27,8], +"class_electromechanical.html#a9d030ba42b2f8f2ba129797c061d71cb":[0,0,27,16], +"class_electromechanical.html#aa00d6b356a74649a12fbdd06d44b1d28":[0,0,27,34], +"class_electromechanical.html#aa191e34b2a6cbfd0d89c78da14f1d7f7":[0,0,27,11], +"class_electromechanical.html#aa59f55e739c674f4ede073eadbb79ac0":[0,0,27,3], +"class_electromechanical.html#ab0d7d031ccc501d5101fabc7b48eb70e":[0,0,27,12], +"class_electromechanical.html#abedf14a8b4d2c9914c972d9bdf3463c6":[0,0,27,25], +"class_electromechanical.html#ac0dfbab6529f02705d1c66bda5cac704":[0,0,27,47], +"class_electromechanical.html#ac185e65f3073319fc4ac4ec11c328337":[0,0,27,5], +"class_electromechanical.html#ac1d6b85d886abd344d8b12d6d8665f1f":[0,0,27,23], +"class_electromechanical.html#ac51fdb6f0ae13514b6986f99a782532a":[0,0,27,51], +"class_electromechanical.html#ac627a99f958656bb2385fef5f7101018":[0,0,27,44], +"class_electromechanical.html#ac684393f47d36a6038d562e92df56ab6":[0,0,27,39], +"class_electromechanical.html#aceaa86ce0dfc1842420568db7037fb12":[0,0,27,48], +"class_electromechanical.html#ad78da79b4af8651eae3e4d8800f57d2b":[0,0,27,53], +"class_electromechanical.html#ad963e529cd06cf42a9eef98dbbf04edb":[0,0,27,28], +"class_electromechanical.html#adb77fe8bf93882f3cd039c126ab79f7d":[0,0,27,26], +"class_electromechanical.html#ade07879f964c541bbf92970d1fcd090a":[0,0,27,27], +"class_electromechanical.html#ae359ee1a06f1bcefbf03e3d0f4f7d10a":[0,0,27,31], +"class_electromechanical.html#ae5f5162b53e8969fd933af2ef80d1b67":[0,0,27,17], +"class_electromechanical.html#ae8bf375c5f8bf38a66e57eee3b7e46ca":[0,0,27,52], "class_electromechanical.html#af02c1382b8a7d3085831d3a1e89526f6":[0,0,27,4], -"class_electromechanical.html#affca5cc58794d76c6f195f74406d2214":[0,0,27,17], +"class_electromechanical.html#affca5cc58794d76c6f195f74406d2214":[0,0,27,18], "class_element.html":[0,0,28], "class_element.html#a01563b5b2fed2860132f4dd1593f9eea":[0,0,28,51], "class_element.html#a038dfd8452fe48ab04bc4e47820c148e":[0,0,28,32], @@ -171,83 +249,5 @@ var NAVTREEINDEX4 = "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], -"class_exponential_form.html#ac4f9664d3e884b5ff8f18fddea362b63":[0,0,33,6], -"class_exponential_form.html#ae59514a694933a77cd7d7a1a9096b713":[0,0,33,4], -"class_exponential_form.html#af741be36de488170a80c88df01e17667":[0,0,33,2], -"class_exponential_form_base.html":[0,0,34], -"class_exponential_form_base.html#a01c6236bffb9620ff2ef2a0afcbc7408":[0,0,34,0], -"class_exponential_form_base.html#a13c869c29285c1e04def44db6aa4e364":[0,0,34,21], -"class_exponential_form_base.html#a2973b411828496b3c07bcc465f11cfb1":[0,0,34,11], -"class_exponential_form_base.html#a2b4013cf5e588a510eee19de6a63812d":[0,0,34,6], -"class_exponential_form_base.html#a44197d79b2c8138b56820eeb5407876b":[0,0,34,17], -"class_exponential_form_base.html#a6ea718012d6396390e94d9423edc2ae1":[0,0,34,4], -"class_exponential_form_base.html#a6eb4ee27335ee6f5b43da075cf5d1c5f":[0,0,34,7], -"class_exponential_form_base.html#a709bad49cc8e8bc61b36757c6b9d612b":[0,0,34,10], -"class_exponential_form_base.html#a70ec52bb9f74b69d138b76393f231478":[0,0,34,19], -"class_exponential_form_base.html#a753ef8e6ee247a215c523442f51db2a0":[0,0,34,8], -"class_exponential_form_base.html#a754e757add7b6b599be289087b833d01":[0,0,34,14], -"class_exponential_form_base.html#a7aac97383b6d0af90199ead7c3ec1fdc":[0,0,34,3], -"class_exponential_form_base.html#a7d56bcf4a7fda1e40b0eb2f08ba751ab":[0,0,34,18], -"class_exponential_form_base.html#a7d6e9e849659fc66e4c6ec3031570032":[0,0,34,13], -"class_exponential_form_base.html#a99b0bf1a17ef2680ee09fac4dca01ccf":[0,0,34,20], -"class_exponential_form_base.html#a9b0573a2065f0bbaf8048e2f78618a36":[0,0,34,1], -"class_exponential_form_base.html#a9b1312da21b4d6ec8f2d79ae64c31d57":[0,0,34,2], -"class_exponential_form_base.html#a9e2feaac372a2e3ecf69ea8c46f32c52":[0,0,34,12], -"class_exponential_form_base.html#ac0f0130cf92f784b7ff098e42c84005e":[0,0,34,5], -"class_exponential_form_base.html#ae0a60ea98d18aa91e5388fee9131eaeb":[0,0,34,9], -"class_exponential_form_base.html#ae4e8752bf0bb718b4aabc54400e997c7":[0,0,34,15], -"class_exponential_form_base.html#ae8659fd109e33fbea9627ed4c885d6d8":[0,0,34,16], -"class_fault.html":[0,0,35], -"class_fault.html#a100c6aac1a159eade54dfdab15717018":[0,0,35,14], -"class_fault.html#a293915690d60c4fea81038d535866d1c":[0,0,35,18], -"class_fault.html#a2beb820c91f139c64bac413520540f8b":[0,0,35,13], -"class_fault.html#a2f9c9605c49dd7761a9b8470913f6eea":[0,0,35,11], -"class_fault.html#a3bbbe363bbda4ab262cf9ff9ef8d283e":[0,0,35,8], -"class_fault.html#a3c2f14cd1da46cb88109fdb172d959b0":[0,0,35,3], -"class_fault.html#a4120f861b073783b4fb82385171fbd0f":[0,0,35,4], -"class_fault.html#a42019654142cd8187b314e43d70262eb":[0,0,35,2], -"class_fault.html#a6f0ad59005f42db46899c54bd0bb2451":[0,0,35,9], -"class_fault.html#a77baeae2c3388de3f7bbeabf52c99bef":[0,0,35,1], -"class_fault.html#a8ec9ef08820a9e0b6ef64c6a11f17214":[0,0,35,20], -"class_fault.html#a8fbe3ce9f7288c4f8261db2d9a89adbb":[0,0,35,0], -"class_fault.html#a900ca28916f6b5d1920916da364792ac":[0,0,35,7], -"class_fault.html#aa42a2ef6e0de6a0afd7b90e5f5d71d7f":[0,0,35,12], -"class_fault.html#aaf57534c2f6f2f1105ef5b8fab1c7af5":[0,0,35,10], -"class_fault.html#ab273c91b6be44a546faf8dac1c5a548c":[0,0,35,15], -"class_fault.html#ac7942a558f3ecdb8c06ddb49567c487a":[0,0,35,5], -"class_fault.html#ae280475abbb392e1db237feaacf3c8a7":[0,0,35,16], -"class_fault.html#ae5875b1e3ee6ea4a4748759a996ad37f":[0,0,35,19], -"class_fault.html#aec2ca2d73097eab3dc3f368bf656602c":[0,0,35,17], -"class_fault.html#af1bb91359dfe8df0251a2031957d3ddf":[0,0,35,6], -"class_file_handing.html":[0,0,36], -"class_file_handing.html#a16130b13435ef1cc90268599c4e9cc5a":[0,0,36,3], -"class_file_handing.html#a29d0af971b7a6810224c504ac072903a":[0,0,36,13], -"class_file_handing.html#a2d7ad3fb6f8f920aa6f0c720cc4852f1":[0,0,36,23], -"class_file_handing.html#a315b88e9e9bd75cb45794bf9f52a7925":[0,0,36,4], -"class_file_handing.html#a34539e10caa48ede6a3e9ac64b89e0d5":[0,0,36,15], -"class_file_handing.html#a3ca9be771b02e58e554dc7a45a11e510":[0,0,36,6], -"class_file_handing.html#a4444e602d96ed6817e9ad2838e4d57a5":[0,0,36,25], -"class_file_handing.html#a46142226e6ce37032008523a3095bba8":[0,0,36,26], -"class_file_handing.html#a54d666757710bc163141674c9efb576e":[0,0,36,17], -"class_file_handing.html#a561b1bc5807aeb4424f0047b003b9238":[0,0,36,11], -"class_file_handing.html#a6b5b47dd26a56ee2f8f2ac74f25d6811":[0,0,36,27], -"class_file_handing.html#a7b5ac3287c11ee33c0e802dd60e07e68":[0,0,36,24], -"class_file_handing.html#a815fb97269b3755ac1a00cb196ee226c":[0,0,36,22], -"class_file_handing.html#a8948e014c857b698b3ae204fd7bd8d1a":[0,0,36,14], -"class_file_handing.html#a8951c02ab38f7922e96de8024189a2b0":[0,0,36,19], -"class_file_handing.html#a96c5ba440caa8b0ab44a01e2bfd63f51":[0,0,36,12], -"class_file_handing.html#aa3719ae58a4b0072667a3b42c8d4d50d":[0,0,36,1], -"class_file_handing.html#aa3c18af0d859b78bf7d117c85e85a628":[0,0,36,10], -"class_file_handing.html#ab4f68fcd9986188a476cad92a9238d30":[0,0,36,0], -"class_file_handing.html#abe3af403418c668035bb38e6e6428f04":[0,0,36,20], -"class_file_handing.html#aca642a587c19e07a16cf65cb06f78950":[0,0,36,21], -"class_file_handing.html#ad334c006a4d5ae7ef15dd6b426bcbfa8":[0,0,36,2], -"class_file_handing.html#ad3880248f7fa8c93c765a4408ca33893":[0,0,36,9], -"class_file_handing.html#ad880af02d674437811fec077a84a7909":[0,0,36,5], -"class_file_handing.html#adde631f17207ec5744c0dbdfe79d45d3":[0,0,36,8], -"class_file_handing.html#ae3d0597f99b08eb29188f9565e036060":[0,0,36,18] +"class_exponential_form.html#a04ab824bc029df387aa38ca8b379206f":[0,0,33,5] }; diff --git a/docs/doxygen/html/navtreeindex5.js b/docs/doxygen/html/navtreeindex5.js index a027e14..d4cde96 100644 --- a/docs/doxygen/html/navtreeindex5.js +++ b/docs/doxygen/html/navtreeindex5.js @@ -1,5 +1,83 @@ var NAVTREEINDEX5 = { +"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], +"class_exponential_form.html#ac4f9664d3e884b5ff8f18fddea362b63":[0,0,33,6], +"class_exponential_form.html#ae59514a694933a77cd7d7a1a9096b713":[0,0,33,4], +"class_exponential_form.html#af741be36de488170a80c88df01e17667":[0,0,33,2], +"class_exponential_form_base.html":[0,0,34], +"class_exponential_form_base.html#a01c6236bffb9620ff2ef2a0afcbc7408":[0,0,34,0], +"class_exponential_form_base.html#a13c869c29285c1e04def44db6aa4e364":[0,0,34,21], +"class_exponential_form_base.html#a2973b411828496b3c07bcc465f11cfb1":[0,0,34,11], +"class_exponential_form_base.html#a2b4013cf5e588a510eee19de6a63812d":[0,0,34,6], +"class_exponential_form_base.html#a44197d79b2c8138b56820eeb5407876b":[0,0,34,17], +"class_exponential_form_base.html#a6ea718012d6396390e94d9423edc2ae1":[0,0,34,4], +"class_exponential_form_base.html#a6eb4ee27335ee6f5b43da075cf5d1c5f":[0,0,34,7], +"class_exponential_form_base.html#a709bad49cc8e8bc61b36757c6b9d612b":[0,0,34,10], +"class_exponential_form_base.html#a70ec52bb9f74b69d138b76393f231478":[0,0,34,19], +"class_exponential_form_base.html#a753ef8e6ee247a215c523442f51db2a0":[0,0,34,8], +"class_exponential_form_base.html#a754e757add7b6b599be289087b833d01":[0,0,34,14], +"class_exponential_form_base.html#a7aac97383b6d0af90199ead7c3ec1fdc":[0,0,34,3], +"class_exponential_form_base.html#a7d56bcf4a7fda1e40b0eb2f08ba751ab":[0,0,34,18], +"class_exponential_form_base.html#a7d6e9e849659fc66e4c6ec3031570032":[0,0,34,13], +"class_exponential_form_base.html#a99b0bf1a17ef2680ee09fac4dca01ccf":[0,0,34,20], +"class_exponential_form_base.html#a9b0573a2065f0bbaf8048e2f78618a36":[0,0,34,1], +"class_exponential_form_base.html#a9b1312da21b4d6ec8f2d79ae64c31d57":[0,0,34,2], +"class_exponential_form_base.html#a9e2feaac372a2e3ecf69ea8c46f32c52":[0,0,34,12], +"class_exponential_form_base.html#ac0f0130cf92f784b7ff098e42c84005e":[0,0,34,5], +"class_exponential_form_base.html#ae0a60ea98d18aa91e5388fee9131eaeb":[0,0,34,9], +"class_exponential_form_base.html#ae4e8752bf0bb718b4aabc54400e997c7":[0,0,34,15], +"class_exponential_form_base.html#ae8659fd109e33fbea9627ed4c885d6d8":[0,0,34,16], +"class_fault.html":[0,0,35], +"class_fault.html#a100c6aac1a159eade54dfdab15717018":[0,0,35,14], +"class_fault.html#a293915690d60c4fea81038d535866d1c":[0,0,35,18], +"class_fault.html#a2beb820c91f139c64bac413520540f8b":[0,0,35,13], +"class_fault.html#a2f9c9605c49dd7761a9b8470913f6eea":[0,0,35,11], +"class_fault.html#a3bbbe363bbda4ab262cf9ff9ef8d283e":[0,0,35,8], +"class_fault.html#a3c2f14cd1da46cb88109fdb172d959b0":[0,0,35,3], +"class_fault.html#a4120f861b073783b4fb82385171fbd0f":[0,0,35,4], +"class_fault.html#a42019654142cd8187b314e43d70262eb":[0,0,35,2], +"class_fault.html#a6f0ad59005f42db46899c54bd0bb2451":[0,0,35,9], +"class_fault.html#a77baeae2c3388de3f7bbeabf52c99bef":[0,0,35,1], +"class_fault.html#a8ec9ef08820a9e0b6ef64c6a11f17214":[0,0,35,20], +"class_fault.html#a8fbe3ce9f7288c4f8261db2d9a89adbb":[0,0,35,0], +"class_fault.html#a900ca28916f6b5d1920916da364792ac":[0,0,35,7], +"class_fault.html#aa42a2ef6e0de6a0afd7b90e5f5d71d7f":[0,0,35,12], +"class_fault.html#aaf57534c2f6f2f1105ef5b8fab1c7af5":[0,0,35,10], +"class_fault.html#ab273c91b6be44a546faf8dac1c5a548c":[0,0,35,15], +"class_fault.html#ac7942a558f3ecdb8c06ddb49567c487a":[0,0,35,5], +"class_fault.html#ae280475abbb392e1db237feaacf3c8a7":[0,0,35,16], +"class_fault.html#ae5875b1e3ee6ea4a4748759a996ad37f":[0,0,35,19], +"class_fault.html#aec2ca2d73097eab3dc3f368bf656602c":[0,0,35,17], +"class_fault.html#af1bb91359dfe8df0251a2031957d3ddf":[0,0,35,6], +"class_file_handing.html":[0,0,36], +"class_file_handing.html#a16130b13435ef1cc90268599c4e9cc5a":[0,0,36,3], +"class_file_handing.html#a29d0af971b7a6810224c504ac072903a":[0,0,36,13], +"class_file_handing.html#a2d7ad3fb6f8f920aa6f0c720cc4852f1":[0,0,36,23], +"class_file_handing.html#a315b88e9e9bd75cb45794bf9f52a7925":[0,0,36,4], +"class_file_handing.html#a34539e10caa48ede6a3e9ac64b89e0d5":[0,0,36,15], +"class_file_handing.html#a3ca9be771b02e58e554dc7a45a11e510":[0,0,36,6], +"class_file_handing.html#a4444e602d96ed6817e9ad2838e4d57a5":[0,0,36,25], +"class_file_handing.html#a46142226e6ce37032008523a3095bba8":[0,0,36,26], +"class_file_handing.html#a54d666757710bc163141674c9efb576e":[0,0,36,17], +"class_file_handing.html#a561b1bc5807aeb4424f0047b003b9238":[0,0,36,11], +"class_file_handing.html#a6b5b47dd26a56ee2f8f2ac74f25d6811":[0,0,36,27], +"class_file_handing.html#a7b5ac3287c11ee33c0e802dd60e07e68":[0,0,36,24], +"class_file_handing.html#a815fb97269b3755ac1a00cb196ee226c":[0,0,36,22], +"class_file_handing.html#a8948e014c857b698b3ae204fd7bd8d1a":[0,0,36,14], +"class_file_handing.html#a8951c02ab38f7922e96de8024189a2b0":[0,0,36,19], +"class_file_handing.html#a96c5ba440caa8b0ab44a01e2bfd63f51":[0,0,36,12], +"class_file_handing.html#aa3719ae58a4b0072667a3b42c8d4d50d":[0,0,36,1], +"class_file_handing.html#aa3c18af0d859b78bf7d117c85e85a628":[0,0,36,10], +"class_file_handing.html#ab4f68fcd9986188a476cad92a9238d30":[0,0,36,0], +"class_file_handing.html#abe3af403418c668035bb38e6e6428f04":[0,0,36,20], +"class_file_handing.html#aca642a587c19e07a16cf65cb06f78950":[0,0,36,21], +"class_file_handing.html#ad334c006a4d5ae7ef15dd6b426bcbfa8":[0,0,36,2], +"class_file_handing.html#ad3880248f7fa8c93c765a4408ca33893":[0,0,36,9], +"class_file_handing.html#ad880af02d674437811fec077a84a7909":[0,0,36,5], +"class_file_handing.html#adde631f17207ec5744c0dbdfe79d45d3":[0,0,36,8], +"class_file_handing.html#ae3d0597f99b08eb29188f9565e036060":[0,0,36,18], "class_file_handing.html#ae85e5c9173a850b8165939fef18c8c88":[0,0,36,16], "class_file_handing.html#afd02764e9227133832464b2a7cb10952":[0,0,36,7], "class_gain.html":[0,0,37], @@ -171,83 +249,5 @@ var NAVTREEINDEX5 = "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], -"class_generator_stab_form_base.html#abb8626324d185a50ea1afb531acc7556":[0,0,44,51], -"class_generator_stab_form_base.html#abc3ac82c1793612e706ad8570d2485e2":[0,0,44,99], -"class_generator_stab_form_base.html#abc69d8331bc4a67f474dcd8d784e67b0":[0,0,44,80], -"class_generator_stab_form_base.html#abc75b52265409993c5961b05c72c0dbd":[0,0,44,15], -"class_generator_stab_form_base.html#abcd9ca2e90630de68c36a80fc94e84d7":[0,0,44,54], -"class_generator_stab_form_base.html#abd8d9528a7bb1a0e42cb4e410f96a8da":[0,0,44,34], -"class_generator_stab_form_base.html#abe5a2f8a8699b436ebde263613da9e41":[0,0,44,65], -"class_generator_stab_form_base.html#abec18f9a5bf99c4e94dc1b416eb527cd":[0,0,44,7], -"class_generator_stab_form_base.html#abf75abd9efd94f6df0d98583cd54011a":[0,0,44,1], -"class_generator_stab_form_base.html#ac124e324cb4a4a5f2c9d6e8b8ac9219d":[0,0,44,85], -"class_generator_stab_form_base.html#ac3e60ba5d2b4d80889805ca6a74ddacc":[0,0,44,89], -"class_generator_stab_form_base.html#ac819e946ed8c89f7be8af3d8659f0215":[0,0,44,20], -"class_generator_stab_form_base.html#aca6bebda04654a89a1ab9b0eb99cb297":[0,0,44,96], -"class_generator_stab_form_base.html#acb429d36652f171301f8006a00db8697":[0,0,44,112], -"class_generator_stab_form_base.html#ad16f4c2ac4f8e579a807d87f9d2727af":[0,0,44,82], -"class_generator_stab_form_base.html#adaa265bc1d9756eb75628c983107adec":[0,0,44,101], -"class_generator_stab_form_base.html#add9da345bd8c5a3a84c7e54aba9c0aff":[0,0,44,53], -"class_generator_stab_form_base.html#ade55f7fcf88393571e23342a6e3640c2":[0,0,44,27], -"class_generator_stab_form_base.html#adf24eaddce5f2a357ad80a9776b12d3e":[0,0,44,84], -"class_generator_stab_form_base.html#ae34a23fbe6b549cee19cc4095c5d94c7":[0,0,44,107], -"class_generator_stab_form_base.html#ae6bd7cfd4d167b5e1bc474d426ca8a30":[0,0,44,6], -"class_generator_stab_form_base.html#ae85799c9d8bb89c92029f2da7678c1f7":[0,0,44,50], -"class_generator_stab_form_base.html#aed066d5bfa8dcfada7d2ed21aa567b8a":[0,0,44,45], -"class_generator_stab_form_base.html#af03772fb1570ab9d80f1690acc52e102":[0,0,44,58], -"class_generator_stab_form_base.html#af07424f07933b3dfd9ddcf49786655ae":[0,0,44,52], -"class_generator_stab_form_base.html#af330bc8f2bd282323a32a2a86c914d15":[0,0,44,110], -"class_generator_stab_form_base.html#af57074a4e2f1c071619da1511af5a580":[0,0,44,75], -"class_generator_stab_form_base.html#af76e11df631da956e8bbb8c981bd919b":[0,0,44,76], -"class_generator_stab_form_base.html#af9582a84717c6e87d16842825093eb34":[0,0,44,8], -"class_generator_stab_form_base.html#afb924c441142358b2a1a4aacb0182d5c":[0,0,44,86], -"class_graphical_element.html":[0,0,45], -"class_graphical_element.html#a8fde5fe6410268701fc76a7b7b623053":[0,0,45,1], -"class_graphical_element.html#a9f116ee2cd16dd099c2579864415d7b8":[0,0,45,0], -"class_i_o_control.html":[0,0,53], -"class_i_o_control.html#a0e5e4b97d0e36099db3d6bf39eaa5dd1":[0,0,53,17], -"class_i_o_control.html#a0f80c4e9c3c87cd91a77c9dd781338ac":[0,0,53,8], -"class_i_o_control.html#a1a3b4a8f356a5d1ab95fdc729b9e758d":[0,0,53,1], -"class_i_o_control.html#a277d748a0aaaf3d31a64c293755ad807":[0,0,53,18], -"class_i_o_control.html#a41afef16a922a517d7362470ba252466":[0,0,53,2], -"class_i_o_control.html#a42a87f4ece6f842271e0044038c4da90":[0,0,53,9], -"class_i_o_control.html#a47a5633ed68ef0648623b9733dc5dab9":[0,0,53,11], -"class_i_o_control.html#a4ab76d7f7634b1ed80459f1f17ce37c6":[0,0,53,19], -"class_i_o_control.html#a4ed6c7e0b25b5f8678e2d8375ffd5735":[0,0,53,14], -"class_i_o_control.html#a595b6b926353d28d63fefee0f92f7719":[0,0,53,20], -"class_i_o_control.html#a5f860d3375c22819b9b238a2bd1e5b69":[0,0,53,7], -"class_i_o_control.html#a84a11e53cc306b8f9f82e577923d4091":[0,0,53,0], -"class_i_o_control.html#a84a11e53cc306b8f9f82e577923d4091a3276150d286d747d428297abbe52d313":[0,0,53,0,5], -"class_i_o_control.html#a84a11e53cc306b8f9f82e577923d4091a3a942ff0ef0f3d8d5db72dce5c3c9fae":[0,0,53,0,2], -"class_i_o_control.html#a84a11e53cc306b8f9f82e577923d4091a53af2ff6991d89e1c2e8847e35d92789":[0,0,53,0,1], -"class_i_o_control.html#a84a11e53cc306b8f9f82e577923d4091a5d7ea66bd1f25fa23472c0dd00c4175f":[0,0,53,0,4], -"class_i_o_control.html#a84a11e53cc306b8f9f82e577923d4091a93d85bb8a7e63b57b618a1c255e4c61f":[0,0,53,0,3], -"class_i_o_control.html#a84a11e53cc306b8f9f82e577923d4091a97ce70af6aa8df66257643be841f2eff":[0,0,53,0,0], -"class_i_o_control.html#a973ae81e5d2d3df3b9088834d1950d32":[0,0,53,16], -"class_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7":[0,0,53,6], -"class_i_o_control.html#a9f79a55442d00a0d88cd688d74ba271c":[0,0,53,5], -"class_i_o_control.html#aa064c5d70e562334e2b374f919f42ef1":[0,0,53,3], -"class_i_o_control.html#aa6aab56f8936a87f099241d9bad9fee4":[0,0,53,4], -"class_i_o_control.html#ab76679a7c7c0b83e0f3a7e562e07803f":[0,0,53,12], -"class_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439":[0,0,53,13], -"class_i_o_control.html#adebd59a32fd699ba4dff4dff44dfbf90":[0,0,53,10], -"class_i_o_control.html#af99b84798978d530f1c3a8181cac2f54":[0,0,53,15], -"class_i_o_control_form.html":[0,0,54], -"class_i_o_control_form.html#a294cdff0d3167173fcf48f87ad552026":[0,0,54,2], -"class_i_o_control_form.html#a4a2f08453c254defd17b3e30ea43e359":[0,0,54,1], -"class_i_o_control_form.html#a5344ace55f9eb367ac15bfc9810a20b0":[0,0,54,5], -"class_i_o_control_form.html#a5d80b1908b0b1f93b98fe1068d3a53c2":[0,0,54,10], -"class_i_o_control_form.html#a6372a4868cd88d074c4f959f5e05dd17":[0,0,54,0], -"class_i_o_control_form.html#a6c7f6adabce0fe4cc2bbfe7bb121a853":[0,0,54,4], -"class_i_o_control_form.html#a9f7a52e5af434674b671703a4a96b148":[0,0,54,9], -"class_i_o_control_form.html#aa36bb4956ef77beb07f530362214777f":[0,0,54,6], -"class_i_o_control_form.html#abc73fa231942471aa93d66fd26aeb9ef":[0,0,54,8], -"class_i_o_control_form.html#abdb682d2ae87ab03a77c967a95661671":[0,0,54,7], -"class_i_o_control_form.html#aedeb2e81b04afc066c9be7830f1db76d":[0,0,54,3], -"class_i_o_control_form_base.html":[0,0,55], -"class_i_o_control_form_base.html#a04ad72346ba61a658e7600be4b3dd3b7":[0,0,55,15] +"class_generator_stab_form_base.html#ab176d40b9540799cd1e8fce5320fe1f1":[0,0,44,108] }; diff --git a/docs/doxygen/html/navtreeindex6.js b/docs/doxygen/html/navtreeindex6.js index 8ed231d..e87ef3c 100644 --- a/docs/doxygen/html/navtreeindex6.js +++ b/docs/doxygen/html/navtreeindex6.js @@ -1,5 +1,83 @@ var NAVTREEINDEX6 = { +"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], +"class_generator_stab_form_base.html#abb8626324d185a50ea1afb531acc7556":[0,0,44,51], +"class_generator_stab_form_base.html#abc3ac82c1793612e706ad8570d2485e2":[0,0,44,99], +"class_generator_stab_form_base.html#abc69d8331bc4a67f474dcd8d784e67b0":[0,0,44,80], +"class_generator_stab_form_base.html#abc75b52265409993c5961b05c72c0dbd":[0,0,44,15], +"class_generator_stab_form_base.html#abcd9ca2e90630de68c36a80fc94e84d7":[0,0,44,54], +"class_generator_stab_form_base.html#abd8d9528a7bb1a0e42cb4e410f96a8da":[0,0,44,34], +"class_generator_stab_form_base.html#abe5a2f8a8699b436ebde263613da9e41":[0,0,44,65], +"class_generator_stab_form_base.html#abec18f9a5bf99c4e94dc1b416eb527cd":[0,0,44,7], +"class_generator_stab_form_base.html#abf75abd9efd94f6df0d98583cd54011a":[0,0,44,1], +"class_generator_stab_form_base.html#ac124e324cb4a4a5f2c9d6e8b8ac9219d":[0,0,44,85], +"class_generator_stab_form_base.html#ac3e60ba5d2b4d80889805ca6a74ddacc":[0,0,44,89], +"class_generator_stab_form_base.html#ac819e946ed8c89f7be8af3d8659f0215":[0,0,44,20], +"class_generator_stab_form_base.html#aca6bebda04654a89a1ab9b0eb99cb297":[0,0,44,96], +"class_generator_stab_form_base.html#acb429d36652f171301f8006a00db8697":[0,0,44,112], +"class_generator_stab_form_base.html#ad16f4c2ac4f8e579a807d87f9d2727af":[0,0,44,82], +"class_generator_stab_form_base.html#adaa265bc1d9756eb75628c983107adec":[0,0,44,101], +"class_generator_stab_form_base.html#add9da345bd8c5a3a84c7e54aba9c0aff":[0,0,44,53], +"class_generator_stab_form_base.html#ade55f7fcf88393571e23342a6e3640c2":[0,0,44,27], +"class_generator_stab_form_base.html#adf24eaddce5f2a357ad80a9776b12d3e":[0,0,44,84], +"class_generator_stab_form_base.html#ae34a23fbe6b549cee19cc4095c5d94c7":[0,0,44,107], +"class_generator_stab_form_base.html#ae6bd7cfd4d167b5e1bc474d426ca8a30":[0,0,44,6], +"class_generator_stab_form_base.html#ae85799c9d8bb89c92029f2da7678c1f7":[0,0,44,50], +"class_generator_stab_form_base.html#aed066d5bfa8dcfada7d2ed21aa567b8a":[0,0,44,45], +"class_generator_stab_form_base.html#af03772fb1570ab9d80f1690acc52e102":[0,0,44,58], +"class_generator_stab_form_base.html#af07424f07933b3dfd9ddcf49786655ae":[0,0,44,52], +"class_generator_stab_form_base.html#af330bc8f2bd282323a32a2a86c914d15":[0,0,44,110], +"class_generator_stab_form_base.html#af57074a4e2f1c071619da1511af5a580":[0,0,44,75], +"class_generator_stab_form_base.html#af76e11df631da956e8bbb8c981bd919b":[0,0,44,76], +"class_generator_stab_form_base.html#af9582a84717c6e87d16842825093eb34":[0,0,44,8], +"class_generator_stab_form_base.html#afb924c441142358b2a1a4aacb0182d5c":[0,0,44,86], +"class_graphical_element.html":[0,0,45], +"class_graphical_element.html#a8fde5fe6410268701fc76a7b7b623053":[0,0,45,1], +"class_graphical_element.html#a9f116ee2cd16dd099c2579864415d7b8":[0,0,45,0], +"class_i_o_control.html":[0,0,53], +"class_i_o_control.html#a0e5e4b97d0e36099db3d6bf39eaa5dd1":[0,0,53,17], +"class_i_o_control.html#a0f80c4e9c3c87cd91a77c9dd781338ac":[0,0,53,8], +"class_i_o_control.html#a1a3b4a8f356a5d1ab95fdc729b9e758d":[0,0,53,1], +"class_i_o_control.html#a277d748a0aaaf3d31a64c293755ad807":[0,0,53,18], +"class_i_o_control.html#a41afef16a922a517d7362470ba252466":[0,0,53,2], +"class_i_o_control.html#a42a87f4ece6f842271e0044038c4da90":[0,0,53,9], +"class_i_o_control.html#a47a5633ed68ef0648623b9733dc5dab9":[0,0,53,11], +"class_i_o_control.html#a4ab76d7f7634b1ed80459f1f17ce37c6":[0,0,53,19], +"class_i_o_control.html#a4ed6c7e0b25b5f8678e2d8375ffd5735":[0,0,53,14], +"class_i_o_control.html#a595b6b926353d28d63fefee0f92f7719":[0,0,53,20], +"class_i_o_control.html#a5f860d3375c22819b9b238a2bd1e5b69":[0,0,53,7], +"class_i_o_control.html#a84a11e53cc306b8f9f82e577923d4091":[0,0,53,0], +"class_i_o_control.html#a84a11e53cc306b8f9f82e577923d4091a3276150d286d747d428297abbe52d313":[0,0,53,0,5], +"class_i_o_control.html#a84a11e53cc306b8f9f82e577923d4091a3a942ff0ef0f3d8d5db72dce5c3c9fae":[0,0,53,0,2], +"class_i_o_control.html#a84a11e53cc306b8f9f82e577923d4091a53af2ff6991d89e1c2e8847e35d92789":[0,0,53,0,1], +"class_i_o_control.html#a84a11e53cc306b8f9f82e577923d4091a5d7ea66bd1f25fa23472c0dd00c4175f":[0,0,53,0,4], +"class_i_o_control.html#a84a11e53cc306b8f9f82e577923d4091a93d85bb8a7e63b57b618a1c255e4c61f":[0,0,53,0,3], +"class_i_o_control.html#a84a11e53cc306b8f9f82e577923d4091a97ce70af6aa8df66257643be841f2eff":[0,0,53,0,0], +"class_i_o_control.html#a973ae81e5d2d3df3b9088834d1950d32":[0,0,53,16], +"class_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7":[0,0,53,6], +"class_i_o_control.html#a9f79a55442d00a0d88cd688d74ba271c":[0,0,53,5], +"class_i_o_control.html#aa064c5d70e562334e2b374f919f42ef1":[0,0,53,3], +"class_i_o_control.html#aa6aab56f8936a87f099241d9bad9fee4":[0,0,53,4], +"class_i_o_control.html#ab76679a7c7c0b83e0f3a7e562e07803f":[0,0,53,12], +"class_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439":[0,0,53,13], +"class_i_o_control.html#adebd59a32fd699ba4dff4dff44dfbf90":[0,0,53,10], +"class_i_o_control.html#af99b84798978d530f1c3a8181cac2f54":[0,0,53,15], +"class_i_o_control_form.html":[0,0,54], +"class_i_o_control_form.html#a294cdff0d3167173fcf48f87ad552026":[0,0,54,2], +"class_i_o_control_form.html#a4a2f08453c254defd17b3e30ea43e359":[0,0,54,1], +"class_i_o_control_form.html#a5344ace55f9eb367ac15bfc9810a20b0":[0,0,54,5], +"class_i_o_control_form.html#a5d80b1908b0b1f93b98fe1068d3a53c2":[0,0,54,10], +"class_i_o_control_form.html#a6372a4868cd88d074c4f959f5e05dd17":[0,0,54,0], +"class_i_o_control_form.html#a6c7f6adabce0fe4cc2bbfe7bb121a853":[0,0,54,4], +"class_i_o_control_form.html#a9f7a52e5af434674b671703a4a96b148":[0,0,54,9], +"class_i_o_control_form.html#aa36bb4956ef77beb07f530362214777f":[0,0,54,6], +"class_i_o_control_form.html#abc73fa231942471aa93d66fd26aeb9ef":[0,0,54,8], +"class_i_o_control_form.html#abdb682d2ae87ab03a77c967a95661671":[0,0,54,7], +"class_i_o_control_form.html#aedeb2e81b04afc066c9be7830f1db76d":[0,0,54,3], +"class_i_o_control_form_base.html":[0,0,55], +"class_i_o_control_form_base.html#a04ad72346ba61a658e7600be4b3dd3b7":[0,0,55,15], "class_i_o_control_form_base.html#a0e3c563e83daad1b146c3145a1f344dc":[0,0,55,0], "class_i_o_control_form_base.html#a102076f74743f9fdbc198cd2bed3b116":[0,0,55,5], "class_i_o_control_form_base.html#a3f98f87e15ed807cb3aa745729509e12":[0,0,55,2], @@ -171,83 +249,5 @@ var NAVTREEINDEX6 = "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], -"class_line_form.html#a5b9f183abdea533d0473e59d04cbf431":[0,0,61,6], -"class_line_form.html#a610f77d5591f5dfbed0f24b301f781c3":[0,0,61,8], -"class_line_form.html#a7e580cfea0c4b1075941e92e6596161d":[0,0,61,4], -"class_line_form.html#a892fad419fc3b15a770c7d25a272f570":[0,0,61,2], -"class_line_form.html#af72bc026476d186fa8e289e388e9b48b":[0,0,61,7], -"class_line_form_base.html":[0,0,62], -"class_line_form_base.html#a00214bd206b78fd3a8fa0121e5ebe82e":[0,0,62,17], -"class_line_form_base.html#a09802bd88add44ae786242f5294f2609":[0,0,62,1], -"class_line_form_base.html#a099de8044e2d8ac8c2a0678e568f7b03":[0,0,62,38], -"class_line_form_base.html#a09c4f16f3fcd1388cf004c1fc33517eb":[0,0,62,35], -"class_line_form_base.html#a0a7e39a334c79efe3e56a35a4338b6c4":[0,0,62,23], -"class_line_form_base.html#a1218578bfc90029991fe5c661129a3e5":[0,0,62,3], -"class_line_form_base.html#a18e5c02351619bbde01361457e0f924d":[0,0,62,25], -"class_line_form_base.html#a1cd88fb45c3d56e135e3776f0578670b":[0,0,62,39], -"class_line_form_base.html#a1d2d9b874ce50f33594c0eb4e169efb0":[0,0,62,9], -"class_line_form_base.html#a203522b4c5faed9829f1c1ef5bb7d856":[0,0,62,41], -"class_line_form_base.html#a237b7bb9470374b859b241284560af19":[0,0,62,29], -"class_line_form_base.html#a256475d66a5afe9ee22d8f7a47aa1652":[0,0,62,2], -"class_line_form_base.html#a2cf2cf9916228e7422349d082cd2b897":[0,0,62,37], -"class_line_form_base.html#a2ec10dc7d10b73e27074de8741472ffc":[0,0,62,57], -"class_line_form_base.html#a30d2ceb62b13a69797078c5a1046fdf3":[0,0,62,26], -"class_line_form_base.html#a30db42733e74c95a5ac8fb33a6a5b309":[0,0,62,53], -"class_line_form_base.html#a346fa89ba532796d25822d4a3b99d0bf":[0,0,62,8], -"class_line_form_base.html#a3cacfa3ac4e54b23b9ea4b4295bb5869":[0,0,62,21], -"class_line_form_base.html#a3cdb32d9490fa7c931222b82c8d76f06":[0,0,62,30], -"class_line_form_base.html#a3f6971139d91cf7ea3ca530cfc5abe60":[0,0,62,31], -"class_line_form_base.html#a4a177ba61b789ee9746b6a6300938481":[0,0,62,36], -"class_line_form_base.html#a4b5dd697cee618b60e93a3b20639de69":[0,0,62,46], -"class_line_form_base.html#a4d757ee09be0bc3064ce011571f5dade":[0,0,62,48], -"class_line_form_base.html#a4e5cec6ae74e8921d68c02971aba2ce6":[0,0,62,12], -"class_line_form_base.html#a4eff427e33bd710c2c2698131fcab982":[0,0,62,58], -"class_line_form_base.html#a4ffe2719ab5877bb014cfd301a8251f8":[0,0,62,65], -"class_line_form_base.html#a5037f0ab0ff17c8fef9eb6a8eda8c7f3":[0,0,62,67], -"class_line_form_base.html#a5fa8d503cfc9276f7bab0c9a360826c3":[0,0,62,13], -"class_line_form_base.html#a63900c58a03059f026f21f2d17694a50":[0,0,62,18], -"class_line_form_base.html#a670ab48361b388378afa7265065d2772":[0,0,62,11], -"class_line_form_base.html#a71e0449ead49724187175c9b4cd49442":[0,0,62,55], -"class_line_form_base.html#a735e9def88fc646947d21e54f4f1c6db":[0,0,62,50], -"class_line_form_base.html#a74ecdc51dfde2f1423679e924827db2f":[0,0,62,14], -"class_line_form_base.html#a76b591279f0a28d0d2ea71070d951074":[0,0,62,60], -"class_line_form_base.html#a7f69ee53d6c444da7c7092b2ca005c2f":[0,0,62,51], -"class_line_form_base.html#a8849449fd48e7ed19bd1386cfc22b39a":[0,0,62,22], -"class_line_form_base.html#a965925e6eda9bb2550238c634a380a01":[0,0,62,45], -"class_line_form_base.html#a99c440454d44272034bdb633306b927e":[0,0,62,62], -"class_line_form_base.html#a9a47d570f346a28550b55878b9b60b8b":[0,0,62,33], -"class_line_form_base.html#a9eb76fc567f8309675aea668b33076c1":[0,0,62,19], -"class_line_form_base.html#aa6b5722ddc3c5769bbd17b7e61ca934f":[0,0,62,32], -"class_line_form_base.html#aaab121a2c968b45e1cadc1fa4d9b2908":[0,0,62,10], -"class_line_form_base.html#aae898a9d1cb5c021125dff4a1eac059d":[0,0,62,66], -"class_line_form_base.html#aaeac2ae5aa2a609802014928a1de5861":[0,0,62,42], -"class_line_form_base.html#aaec474f0cb50cbf2369912888981cf57":[0,0,62,4], -"class_line_form_base.html#ab03dd2f3fe79f1e25ff08e62dfcad5c6":[0,0,62,44], -"class_line_form_base.html#ab53a8775afea108736dfd518cafd0257":[0,0,62,7], -"class_line_form_base.html#ab67bdd26e51d22e35b3981c7f0ccb934":[0,0,62,6], -"class_line_form_base.html#abbdd5e5c0c949953b1c62f87f405d23b":[0,0,62,20], -"class_line_form_base.html#abd05440f261ada2fb7636c9a6ccc6e21":[0,0,62,68], -"class_line_form_base.html#abfeffc76a7851af380c076f0527da914":[0,0,62,61], -"class_line_form_base.html#ac524da001d800cc641e693ca852c33b2":[0,0,62,56], -"class_line_form_base.html#aca66b41f60b423ae026887c98b8e3b49":[0,0,62,47], -"class_line_form_base.html#acafcc53a4fcb2a9af482fab636e2e0f1":[0,0,62,40], -"class_line_form_base.html#ad35c9e501520ab9f20f538343989a05a":[0,0,62,54], -"class_line_form_base.html#ad98d8271f8efbbaff028fc6fbee23c6c":[0,0,62,64], -"class_line_form_base.html#ade61566890ec5faa3a4b213cde2966c5":[0,0,62,15], -"class_line_form_base.html#ae1d403904af22ccf0ff2d1ac0a9d13ae":[0,0,62,16], -"class_line_form_base.html#ae1f84ede0a8aaea8215065add0a65ac3":[0,0,62,27], -"class_line_form_base.html#ae20df51563b5ec99459080f88da22ca4":[0,0,62,49], -"class_line_form_base.html#ae36429133dcb0433b18786a9d6d2d157":[0,0,62,52], -"class_line_form_base.html#aed5639eb90045433cae4bc7f38f5223a":[0,0,62,63], -"class_line_form_base.html#aed775c5b411a7b08117895137ad36f03":[0,0,62,59], -"class_line_form_base.html#af2b552fd7b4b58a71e91c498d31e53d8":[0,0,62,5], -"class_line_form_base.html#af368b73e629369a6d75232bfb49b67b2":[0,0,62,28], -"class_line_form_base.html#af99e84f70407445abd2d50b9ea9227b1":[0,0,62,0], -"class_line_form_base.html#afa2dabfbc8d41d852ae2636de1f474c6":[0,0,62,34], -"class_line_form_base.html#afc764ff277749947f23d9f7926ca304b":[0,0,62,43], -"class_line_form_base.html#aff93aefe098db7eab3f92ec0f2f70b3f":[0,0,62,24] +"class_line_form.html#a2d4f4eb4b8943b09c9dca207fb585bfd":[0,0,61,1] }; diff --git a/docs/doxygen/html/navtreeindex7.js b/docs/doxygen/html/navtreeindex7.js index 5a77c0a..a50619e 100644 --- a/docs/doxygen/html/navtreeindex7.js +++ b/docs/doxygen/html/navtreeindex7.js @@ -1,5 +1,83 @@ var NAVTREEINDEX7 = { +"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], +"class_line_form.html#a5b9f183abdea533d0473e59d04cbf431":[0,0,61,6], +"class_line_form.html#a610f77d5591f5dfbed0f24b301f781c3":[0,0,61,8], +"class_line_form.html#a7e580cfea0c4b1075941e92e6596161d":[0,0,61,4], +"class_line_form.html#a892fad419fc3b15a770c7d25a272f570":[0,0,61,2], +"class_line_form.html#af72bc026476d186fa8e289e388e9b48b":[0,0,61,7], +"class_line_form_base.html":[0,0,62], +"class_line_form_base.html#a00214bd206b78fd3a8fa0121e5ebe82e":[0,0,62,17], +"class_line_form_base.html#a09802bd88add44ae786242f5294f2609":[0,0,62,1], +"class_line_form_base.html#a099de8044e2d8ac8c2a0678e568f7b03":[0,0,62,38], +"class_line_form_base.html#a09c4f16f3fcd1388cf004c1fc33517eb":[0,0,62,35], +"class_line_form_base.html#a0a7e39a334c79efe3e56a35a4338b6c4":[0,0,62,23], +"class_line_form_base.html#a1218578bfc90029991fe5c661129a3e5":[0,0,62,3], +"class_line_form_base.html#a18e5c02351619bbde01361457e0f924d":[0,0,62,25], +"class_line_form_base.html#a1cd88fb45c3d56e135e3776f0578670b":[0,0,62,39], +"class_line_form_base.html#a1d2d9b874ce50f33594c0eb4e169efb0":[0,0,62,9], +"class_line_form_base.html#a203522b4c5faed9829f1c1ef5bb7d856":[0,0,62,41], +"class_line_form_base.html#a237b7bb9470374b859b241284560af19":[0,0,62,29], +"class_line_form_base.html#a256475d66a5afe9ee22d8f7a47aa1652":[0,0,62,2], +"class_line_form_base.html#a2cf2cf9916228e7422349d082cd2b897":[0,0,62,37], +"class_line_form_base.html#a2ec10dc7d10b73e27074de8741472ffc":[0,0,62,57], +"class_line_form_base.html#a30d2ceb62b13a69797078c5a1046fdf3":[0,0,62,26], +"class_line_form_base.html#a30db42733e74c95a5ac8fb33a6a5b309":[0,0,62,53], +"class_line_form_base.html#a346fa89ba532796d25822d4a3b99d0bf":[0,0,62,8], +"class_line_form_base.html#a3cacfa3ac4e54b23b9ea4b4295bb5869":[0,0,62,21], +"class_line_form_base.html#a3cdb32d9490fa7c931222b82c8d76f06":[0,0,62,30], +"class_line_form_base.html#a3f6971139d91cf7ea3ca530cfc5abe60":[0,0,62,31], +"class_line_form_base.html#a4a177ba61b789ee9746b6a6300938481":[0,0,62,36], +"class_line_form_base.html#a4b5dd697cee618b60e93a3b20639de69":[0,0,62,46], +"class_line_form_base.html#a4d757ee09be0bc3064ce011571f5dade":[0,0,62,48], +"class_line_form_base.html#a4e5cec6ae74e8921d68c02971aba2ce6":[0,0,62,12], +"class_line_form_base.html#a4eff427e33bd710c2c2698131fcab982":[0,0,62,58], +"class_line_form_base.html#a4ffe2719ab5877bb014cfd301a8251f8":[0,0,62,65], +"class_line_form_base.html#a5037f0ab0ff17c8fef9eb6a8eda8c7f3":[0,0,62,67], +"class_line_form_base.html#a5fa8d503cfc9276f7bab0c9a360826c3":[0,0,62,13], +"class_line_form_base.html#a63900c58a03059f026f21f2d17694a50":[0,0,62,18], +"class_line_form_base.html#a670ab48361b388378afa7265065d2772":[0,0,62,11], +"class_line_form_base.html#a71e0449ead49724187175c9b4cd49442":[0,0,62,55], +"class_line_form_base.html#a735e9def88fc646947d21e54f4f1c6db":[0,0,62,50], +"class_line_form_base.html#a74ecdc51dfde2f1423679e924827db2f":[0,0,62,14], +"class_line_form_base.html#a76b591279f0a28d0d2ea71070d951074":[0,0,62,60], +"class_line_form_base.html#a7f69ee53d6c444da7c7092b2ca005c2f":[0,0,62,51], +"class_line_form_base.html#a8849449fd48e7ed19bd1386cfc22b39a":[0,0,62,22], +"class_line_form_base.html#a965925e6eda9bb2550238c634a380a01":[0,0,62,45], +"class_line_form_base.html#a99c440454d44272034bdb633306b927e":[0,0,62,62], +"class_line_form_base.html#a9a47d570f346a28550b55878b9b60b8b":[0,0,62,33], +"class_line_form_base.html#a9eb76fc567f8309675aea668b33076c1":[0,0,62,19], +"class_line_form_base.html#aa6b5722ddc3c5769bbd17b7e61ca934f":[0,0,62,32], +"class_line_form_base.html#aaab121a2c968b45e1cadc1fa4d9b2908":[0,0,62,10], +"class_line_form_base.html#aae898a9d1cb5c021125dff4a1eac059d":[0,0,62,66], +"class_line_form_base.html#aaeac2ae5aa2a609802014928a1de5861":[0,0,62,42], +"class_line_form_base.html#aaec474f0cb50cbf2369912888981cf57":[0,0,62,4], +"class_line_form_base.html#ab03dd2f3fe79f1e25ff08e62dfcad5c6":[0,0,62,44], +"class_line_form_base.html#ab53a8775afea108736dfd518cafd0257":[0,0,62,7], +"class_line_form_base.html#ab67bdd26e51d22e35b3981c7f0ccb934":[0,0,62,6], +"class_line_form_base.html#abbdd5e5c0c949953b1c62f87f405d23b":[0,0,62,20], +"class_line_form_base.html#abd05440f261ada2fb7636c9a6ccc6e21":[0,0,62,68], +"class_line_form_base.html#abfeffc76a7851af380c076f0527da914":[0,0,62,61], +"class_line_form_base.html#ac524da001d800cc641e693ca852c33b2":[0,0,62,56], +"class_line_form_base.html#aca66b41f60b423ae026887c98b8e3b49":[0,0,62,47], +"class_line_form_base.html#acafcc53a4fcb2a9af482fab636e2e0f1":[0,0,62,40], +"class_line_form_base.html#ad35c9e501520ab9f20f538343989a05a":[0,0,62,54], +"class_line_form_base.html#ad98d8271f8efbbaff028fc6fbee23c6c":[0,0,62,64], +"class_line_form_base.html#ade61566890ec5faa3a4b213cde2966c5":[0,0,62,15], +"class_line_form_base.html#ae1d403904af22ccf0ff2d1ac0a9d13ae":[0,0,62,16], +"class_line_form_base.html#ae1f84ede0a8aaea8215065add0a65ac3":[0,0,62,27], +"class_line_form_base.html#ae20df51563b5ec99459080f88da22ca4":[0,0,62,49], +"class_line_form_base.html#ae36429133dcb0433b18786a9d6d2d157":[0,0,62,52], +"class_line_form_base.html#aed5639eb90045433cae4bc7f38f5223a":[0,0,62,63], +"class_line_form_base.html#aed775c5b411a7b08117895137ad36f03":[0,0,62,59], +"class_line_form_base.html#af2b552fd7b4b58a71e91c498d31e53d8":[0,0,62,5], +"class_line_form_base.html#af368b73e629369a6d75232bfb49b67b2":[0,0,62,28], +"class_line_form_base.html#af99e84f70407445abd2d50b9ea9227b1":[0,0,62,0], +"class_line_form_base.html#afa2dabfbc8d41d852ae2636de1f474c6":[0,0,62,34], +"class_line_form_base.html#afc764ff277749947f23d9f7926ca304b":[0,0,62,43], +"class_line_form_base.html#aff93aefe098db7eab3f92ec0f2f70b3f":[0,0,62,24], "class_load.html":[0,0,63], "class_load.html#a00acfbf7dc907e5de79ceb4803632279":[0,0,63,9], "class_load.html#a00ef3c6ae69dbd45e96f696dfb76f013":[0,0,63,8], @@ -128,7 +206,7 @@ var NAVTREEINDEX7 = "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#ac5d3dc03594f76ed6e5fd1ccecfc5b0b":[0,0,69,1], +"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], @@ -171,83 +249,5 @@ var NAVTREEINDEX7 = "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], -"class_main_frame_base.html#a916973a33e034aa089f3fc3eaccb2b0f":[0,0,70,68], -"class_main_frame_base.html#a92a63880d952773d06a513980831eee1":[0,0,70,73], -"class_main_frame_base.html#a98499bbee4f7e956a801bbdc64da44d4":[0,0,70,37], -"class_main_frame_base.html#a997c8c6b5a5bf8f8272aa7c3def76b24":[0,0,70,59], -"class_main_frame_base.html#a9aebadcb48bb76c12718c6b6dc6b6eb5":[0,0,70,84], -"class_main_frame_base.html#aa0c7c14ec4183086cf42fe19af0bb2eb":[0,0,70,89], -"class_main_frame_base.html#aa142c5d3d679147e0d63f00e1d2ca2e1":[0,0,70,36], -"class_main_frame_base.html#aa3055bf5e73ba3ef53428ec5a97d727b":[0,0,70,74], -"class_main_frame_base.html#aa7749e41daf7e49439364126b631b234":[0,0,70,87], -"class_main_frame_base.html#aa797493c5fec22bd6c4c01a145956df2":[0,0,70,52], -"class_main_frame_base.html#aab2e491a8e460ef817f89c2fda8969d4":[0,0,70,43], -"class_main_frame_base.html#aac3e83244b862fe153b33e9d5622b98b":[0,0,70,80], -"class_main_frame_base.html#ab7bf6daa1451eb32101dc414b0e69a0a":[0,0,70,69], -"class_main_frame_base.html#abec097ede52d8293f39a18d362b02ae0":[0,0,70,54], -"class_main_frame_base.html#ac35167f59ba693d78eb899f2edd11d86":[0,0,70,42], -"class_main_frame_base.html#ac57d27795bc713ac686f9e87e6d98387":[0,0,70,72], -"class_main_frame_base.html#ace56e2062582f17fc3c971405bd59337":[0,0,70,39], -"class_main_frame_base.html#ad054e4149f42d383bc1c402f6a54501c":[0,0,70,49], -"class_main_frame_base.html#ad37f3f62f657f2e034200d45e855a948":[0,0,70,33], -"class_main_frame_base.html#ad9b953037729ab0529f9dc5338729315":[0,0,70,41], -"class_main_frame_base.html#ae279f9d64fb6bcf671f565a2e71b2e94":[0,0,70,47], -"class_main_frame_base.html#ae32925edbbd4ab14b2ce775b733b7c50":[0,0,70,35], -"class_main_frame_base.html#ae5b3009fc106d75e157836a6641f63a1":[0,0,70,58], -"class_main_frame_base.html#ae5e2dafad6a4f61d11a33ec190cef57c":[0,0,70,60], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a05e92cb2567285f28c79eb500215b7da":[0,0,70,14], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a12f9d6b6da5ab7daef64309af56eb254":[0,0,70,27], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a14d1f40da5fe6d2885f81edc7bb34a5b":[0,0,70,4], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a17d8645af74374ed37cc377454903efe":[0,0,70,11], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a1a8745483f979ee20127462baef529b8":[0,0,70,9], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a22b195931c8f14f839544d5c76519e96":[0,0,70,28], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a274e87b2f0e70ab82e39438670e075d9":[0,0,70,26], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a2cedd9fbdc0111a82258040845814f4e":[0,0,70,1], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a2f9639a5f09ac7227dda3b1cbe0b83c4":[0,0,70,24], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a5bbe17a7648dedf17da9d9b246dd8948":[0,0,70,22], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a74900bf0113caf1fb845fe88711e29cd":[0,0,70,29], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a763d06068082580a6aa29c8e7d850462":[0,0,70,18], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a7d26b27353b73836e009a8fb63ea64f0":[0,0,70,6], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a7ddcce5a0fc3fd28e5a143d74d44e22b":[0,0,70,0], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a828cbb4fbfb1dbdc492ec4c6057e047d":[0,0,70,30], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a8ba61bef22ba14e5d33ff6152a52032c":[0,0,70,2], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a9bb260567cffe56b9db58274e4bac47c":[0,0,70,16], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a9f01085677ac59c45a00f38ba012b606":[0,0,70,7], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9aa6376080d848cfd62d01395cb541bfb1":[0,0,70,23], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9aac83b781c09c5abd012c0f5b7c06f87e":[0,0,70,25], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9ab63bbde4ed29da3598c017b6cfd25c75":[0,0,70,13], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9ab742a9cc46431af12db375ec8b443729":[0,0,70,15], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9ab80637a65b2e8941cd24044495ac674f":[0,0,70,21], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9ac853a9f30f75ebfb6065a99771b6fa27":[0,0,70,3], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9ad219a0870575cfe02af28cec88f11a79":[0,0,70,5], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9adc4cdd714264b181007029985e72285a":[0,0,70,20], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9ae2192305b1be1c090a4db25a341a8aa2":[0,0,70,8], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9ae67852eba853e7a9889a21dfc6bca52b":[0,0,70,12], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9aeb2127b1fd05627a82050c372e0d3164":[0,0,70,31], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9aed3da5b755508446a072304c74b46988":[0,0,70,19], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9afbc8518ac655f8467de20390453c2fe7":[0,0,70,17], -"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9afef2cc3e901fde0607cafcd6d9ebaac6":[0,0,70,10], -"class_main_frame_base.html#aea62e96627cad518bdcea6002f4827a1":[0,0,70,71], -"class_main_frame_base.html#aea7b22f0aacbc7a2da7788eb2f1aef5c":[0,0,70,90], -"class_main_frame_base.html#af1e52e93085b8b51e2a4d4f3bf882f91":[0,0,70,88], -"class_main_frame_base.html#af5030bc2b188dccb90a48ebfecd37366":[0,0,70,32], -"class_multiplier.html":[0,0,71], -"class_multiplier.html#a3b8da713f480cb1ed6b829f4d5a584d3":[0,0,71,1], -"class_multiplier.html#a43398a07b130b819c229e1512066456c":[0,0,71,9], -"class_multiplier.html#a48166896d667216da146a0b25766f867":[0,0,71,0], -"class_multiplier.html#a4fa1206b47c626930db753a70e01680d":[0,0,71,7], -"class_multiplier.html#a9d6101ab83aa92316efdb4d26b715d4c":[0,0,71,8], -"class_multiplier.html#ab487232a96ed3c3f3a7c3628ddaa4c77":[0,0,71,4], -"class_multiplier.html#aba53ef763812fbff891cdf0b89c7fcca":[0,0,71,5], -"class_multiplier.html#acee6216a03b550f3a9cad2bef3963a18":[0,0,71,2], -"class_multiplier.html#ae01f155ed56925cb87d71a860882a3a1":[0,0,71,6], -"class_multiplier.html#ae854fd981a98aca93b286081cc9c19f3":[0,0,71,3], -"class_node.html":[0,0,72], -"class_node.html#a00ac0295e2572c4cca473e92860c6f66":[0,0,72,18], -"class_node.html#a087c2fddbbedfc748fbfbb35ad8b235b":[0,0,72,5], -"class_node.html#a0a9fcf01abc356e34d686aa753e43b8d":[0,0,72,10] +"class_main_frame_base.html#a81f31e1f089b59ad4e6c996d4f45294e":[0,0,70,75] }; diff --git a/docs/doxygen/html/navtreeindex8.js b/docs/doxygen/html/navtreeindex8.js index 9543256..ec6c051 100644 --- a/docs/doxygen/html/navtreeindex8.js +++ b/docs/doxygen/html/navtreeindex8.js @@ -1,5 +1,83 @@ var NAVTREEINDEX8 = { +"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], +"class_main_frame_base.html#a916973a33e034aa089f3fc3eaccb2b0f":[0,0,70,68], +"class_main_frame_base.html#a92a63880d952773d06a513980831eee1":[0,0,70,73], +"class_main_frame_base.html#a98499bbee4f7e956a801bbdc64da44d4":[0,0,70,37], +"class_main_frame_base.html#a997c8c6b5a5bf8f8272aa7c3def76b24":[0,0,70,59], +"class_main_frame_base.html#a9aebadcb48bb76c12718c6b6dc6b6eb5":[0,0,70,84], +"class_main_frame_base.html#aa0c7c14ec4183086cf42fe19af0bb2eb":[0,0,70,89], +"class_main_frame_base.html#aa142c5d3d679147e0d63f00e1d2ca2e1":[0,0,70,36], +"class_main_frame_base.html#aa3055bf5e73ba3ef53428ec5a97d727b":[0,0,70,74], +"class_main_frame_base.html#aa7749e41daf7e49439364126b631b234":[0,0,70,87], +"class_main_frame_base.html#aa797493c5fec22bd6c4c01a145956df2":[0,0,70,52], +"class_main_frame_base.html#aab2e491a8e460ef817f89c2fda8969d4":[0,0,70,43], +"class_main_frame_base.html#aac3e83244b862fe153b33e9d5622b98b":[0,0,70,80], +"class_main_frame_base.html#ab7bf6daa1451eb32101dc414b0e69a0a":[0,0,70,69], +"class_main_frame_base.html#abec097ede52d8293f39a18d362b02ae0":[0,0,70,54], +"class_main_frame_base.html#ac35167f59ba693d78eb899f2edd11d86":[0,0,70,42], +"class_main_frame_base.html#ac57d27795bc713ac686f9e87e6d98387":[0,0,70,72], +"class_main_frame_base.html#ace56e2062582f17fc3c971405bd59337":[0,0,70,39], +"class_main_frame_base.html#ad054e4149f42d383bc1c402f6a54501c":[0,0,70,49], +"class_main_frame_base.html#ad37f3f62f657f2e034200d45e855a948":[0,0,70,33], +"class_main_frame_base.html#ad9b953037729ab0529f9dc5338729315":[0,0,70,41], +"class_main_frame_base.html#ae279f9d64fb6bcf671f565a2e71b2e94":[0,0,70,47], +"class_main_frame_base.html#ae32925edbbd4ab14b2ce775b733b7c50":[0,0,70,35], +"class_main_frame_base.html#ae5b3009fc106d75e157836a6641f63a1":[0,0,70,58], +"class_main_frame_base.html#ae5e2dafad6a4f61d11a33ec190cef57c":[0,0,70,60], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a05e92cb2567285f28c79eb500215b7da":[0,0,70,14], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a12f9d6b6da5ab7daef64309af56eb254":[0,0,70,27], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a14d1f40da5fe6d2885f81edc7bb34a5b":[0,0,70,4], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a17d8645af74374ed37cc377454903efe":[0,0,70,11], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a1a8745483f979ee20127462baef529b8":[0,0,70,9], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a22b195931c8f14f839544d5c76519e96":[0,0,70,28], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a274e87b2f0e70ab82e39438670e075d9":[0,0,70,26], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a2cedd9fbdc0111a82258040845814f4e":[0,0,70,1], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a2f9639a5f09ac7227dda3b1cbe0b83c4":[0,0,70,24], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a5bbe17a7648dedf17da9d9b246dd8948":[0,0,70,22], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a74900bf0113caf1fb845fe88711e29cd":[0,0,70,29], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a763d06068082580a6aa29c8e7d850462":[0,0,70,18], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a7d26b27353b73836e009a8fb63ea64f0":[0,0,70,6], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a7ddcce5a0fc3fd28e5a143d74d44e22b":[0,0,70,0], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a828cbb4fbfb1dbdc492ec4c6057e047d":[0,0,70,30], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a8ba61bef22ba14e5d33ff6152a52032c":[0,0,70,2], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a9bb260567cffe56b9db58274e4bac47c":[0,0,70,16], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9a9f01085677ac59c45a00f38ba012b606":[0,0,70,7], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9aa6376080d848cfd62d01395cb541bfb1":[0,0,70,23], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9aac83b781c09c5abd012c0f5b7c06f87e":[0,0,70,25], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9ab63bbde4ed29da3598c017b6cfd25c75":[0,0,70,13], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9ab742a9cc46431af12db375ec8b443729":[0,0,70,15], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9ab80637a65b2e8941cd24044495ac674f":[0,0,70,21], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9ac853a9f30f75ebfb6065a99771b6fa27":[0,0,70,3], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9ad219a0870575cfe02af28cec88f11a79":[0,0,70,5], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9adc4cdd714264b181007029985e72285a":[0,0,70,20], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9ae2192305b1be1c090a4db25a341a8aa2":[0,0,70,8], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9ae67852eba853e7a9889a21dfc6bca52b":[0,0,70,12], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9aeb2127b1fd05627a82050c372e0d3164":[0,0,70,31], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9aed3da5b755508446a072304c74b46988":[0,0,70,19], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9afbc8518ac655f8467de20390453c2fe7":[0,0,70,17], +"class_main_frame_base.html#ae7e11ee827b7ec42dbd94f90891d15c9afef2cc3e901fde0607cafcd6d9ebaac6":[0,0,70,10], +"class_main_frame_base.html#aea62e96627cad518bdcea6002f4827a1":[0,0,70,71], +"class_main_frame_base.html#aea7b22f0aacbc7a2da7788eb2f1aef5c":[0,0,70,90], +"class_main_frame_base.html#af1e52e93085b8b51e2a4d4f3bf882f91":[0,0,70,88], +"class_main_frame_base.html#af5030bc2b188dccb90a48ebfecd37366":[0,0,70,32], +"class_multiplier.html":[0,0,71], +"class_multiplier.html#a3b8da713f480cb1ed6b829f4d5a584d3":[0,0,71,1], +"class_multiplier.html#a43398a07b130b819c229e1512066456c":[0,0,71,9], +"class_multiplier.html#a48166896d667216da146a0b25766f867":[0,0,71,0], +"class_multiplier.html#a4fa1206b47c626930db753a70e01680d":[0,0,71,7], +"class_multiplier.html#a9d6101ab83aa92316efdb4d26b715d4c":[0,0,71,8], +"class_multiplier.html#ab487232a96ed3c3f3a7c3628ddaa4c77":[0,0,71,4], +"class_multiplier.html#aba53ef763812fbff891cdf0b89c7fcca":[0,0,71,5], +"class_multiplier.html#acee6216a03b550f3a9cad2bef3963a18":[0,0,71,2], +"class_multiplier.html#ae01f155ed56925cb87d71a860882a3a1":[0,0,71,6], +"class_multiplier.html#ae854fd981a98aca93b286081cc9c19f3":[0,0,71,3], +"class_node.html":[0,0,72], +"class_node.html#a00ac0295e2572c4cca473e92860c6f66":[0,0,72,18], +"class_node.html#a087c2fddbbedfc748fbfbb35ad8b235b":[0,0,72,5], +"class_node.html#a0a9fcf01abc356e34d686aa753e43b8d":[0,0,72,10], "class_node.html#a16217ea768b7bad76285e779bdc819c7":[0,0,72,7], "class_node.html#a179b73258e92a485a2f52c504fdcd96f":[0,0,72,27], "class_node.html#a1a41ea6942b8ae52f483dc5766dfdb62":[0,0,72,23], @@ -171,83 +249,5 @@ var NAVTREEINDEX8 = "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], -"class_reactive_shunt_element_form_base.html#a3a61222247b8bf0d0dc0a74f002f9f54":[0,0,83,4], -"class_reactive_shunt_element_form_base.html#a41f1a2d4df3cc1c7506b975d5ecde71b":[0,0,83,9], -"class_reactive_shunt_element_form_base.html#a45c87f3d26fefb6701e3ce84445d3b2a":[0,0,83,10], -"class_reactive_shunt_element_form_base.html#a4b0ca8c2ccb39a0f305bcc2fe95c820e":[0,0,83,13], -"class_reactive_shunt_element_form_base.html#a5ae249950ace35e5b19124f1fa49946b":[0,0,83,5], -"class_reactive_shunt_element_form_base.html#a653e5033a3d9834d3a3e1f3442d3d1e5":[0,0,83,18], -"class_reactive_shunt_element_form_base.html#a783c3c5b73e8386a96c51e22d0730d78":[0,0,83,1], -"class_reactive_shunt_element_form_base.html#a92f31dfb84b855ff5a36ab9f5257e381":[0,0,83,7], -"class_reactive_shunt_element_form_base.html#a93655501f77f68824420ef640ade219f":[0,0,83,0], -"class_reactive_shunt_element_form_base.html#aab4647a9961226fd3b6934b539539535":[0,0,83,8], -"class_reactive_shunt_element_form_base.html#aacf7ec5dec20fef61f3b190a950a0528":[0,0,83,24], -"class_reactive_shunt_element_form_base.html#ad927d95189e470a8f9268df8e16f81df":[0,0,83,3], -"class_reactive_shunt_element_form_base.html#aee2a26f08d25bb9989a03e8228dd1e69":[0,0,83,15], -"class_reactive_shunt_element_form_base.html#afb6b4c5f665e515a466d8fd31353829e":[0,0,83,11], -"class_reactive_shunt_element_form_base.html#aff864c79e7dae7fd22200efcdba27eb3":[0,0,83,14], -"class_shunt.html":[0,0,84], -"class_shunt.html#a0e19acef958e6153dc1d7386c82de780":[0,0,84,0], -"class_shunt.html#a23d2fed4e9b6a69bc4527b4345bd5bbd":[0,0,84,6], -"class_shunt.html#a33a6bcf6612d4cf8c4de8e9f916a22e8":[0,0,84,14], -"class_shunt.html#a449431a2044b838d35cbb991aa1de658":[0,0,84,2], -"class_shunt.html#a56d6136d647f64cf490dd9d7720f6865":[0,0,84,11], -"class_shunt.html#a665d9a8c291d427e666567c6df34321b":[0,0,84,8], -"class_shunt.html#a7a732f1fb5f54b89e33957194fefd703":[0,0,84,9], -"class_shunt.html#a902525eebbb4bf3ecaab0e1e60b6f017":[0,0,84,3], -"class_shunt.html#a98e8f5798d17f613dfc0964e5007cd91":[0,0,84,13], -"class_shunt.html#a9b52cb496663c75be79cb507d5961a8b":[0,0,84,1], -"class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3":[0,0,84,5], -"class_shunt.html#aacb9fdd05533a8322596b130c70774ef":[0,0,84,10], -"class_shunt.html#abe01dcdf8bc0ba6fc97d41673889fb8e":[0,0,84,12], -"class_shunt.html#abfc091da79ec7b87548d11dc8568b3cb":[0,0,84,15], -"class_shunt.html#ae325a441a44c2a78c08289292fa00979":[0,0,84,7], -"class_shunt.html#afdbf0c51f9630589937298329bb041fe":[0,0,84,4], -"class_simulations_settings_form.html":[0,0,86], -"class_simulations_settings_form.html#a0391607c5a1c9d9bc819ff76fbfe4ac9":[0,0,86,0], -"class_simulations_settings_form.html#a0b45be7dd91f8ed322dfe6be9f09b519":[0,0,86,4], -"class_simulations_settings_form.html#a33fd689685a661ba869285e70005b25c":[0,0,86,5], -"class_simulations_settings_form.html#a4a12f6479437b57c0f60da303e9ae8a4":[0,0,86,2], -"class_simulations_settings_form.html#a6afac8fd633a317058c3755c3b9ad531":[0,0,86,6], -"class_simulations_settings_form.html#a84907a8c877741a310bbd04a10661713":[0,0,86,1], -"class_simulations_settings_form.html#aac571bfc12367c787a34f04b1c6daf0e":[0,0,86,3], -"class_simulations_settings_form_base.html":[0,0,87], -"class_simulations_settings_form_base.html#a00162ab3f5fc280dc753440314a7e1ba":[0,0,87,36], -"class_simulations_settings_form_base.html#a00caec0bf8cdb39f16856a49b478596e":[0,0,87,22], -"class_simulations_settings_form_base.html#a01ca85120c1c072ff30df0949a57809b":[0,0,87,6], -"class_simulations_settings_form_base.html#a035a663ed0e32f8e1b5ad799e19d3ede":[0,0,87,30], -"class_simulations_settings_form_base.html#a094a39982209ed4298e1914bb6a01841":[0,0,87,28], -"class_simulations_settings_form_base.html#a09b4f2e8531838473197ef0e0ec148a8":[0,0,87,17], -"class_simulations_settings_form_base.html#a0e0fe5100d343148e774da127a5f13cd":[0,0,87,41], -"class_simulations_settings_form_base.html#a0e92dc8f5bc6f21b564ed7f0473f5c12":[0,0,87,37], -"class_simulations_settings_form_base.html#a0fe2f8372ca7856be82306d3b8197ba0":[0,0,87,33], -"class_simulations_settings_form_base.html#a109ea7e508f6494508d35a62237b661a":[0,0,87,67], -"class_simulations_settings_form_base.html#a1ac75d31b112a2febebf4bc9702f2308":[0,0,87,53], -"class_simulations_settings_form_base.html#a2123722e9d7846170793743eb2301c36":[0,0,87,8], -"class_simulations_settings_form_base.html#a213a37c4ec8adfe9193858c730809760":[0,0,87,29], -"class_simulations_settings_form_base.html#a26a06b8a618d7bb2e244f15cbbb218a0":[0,0,87,55], -"class_simulations_settings_form_base.html#a273b0fa706d897f285611b96b3274d11":[0,0,87,79], -"class_simulations_settings_form_base.html#a2931101c1dfb81b3ae70b208f2f21d9f":[0,0,87,26], -"class_simulations_settings_form_base.html#a2deb701c33edf6c39db842c6c78516c7":[0,0,87,51], -"class_simulations_settings_form_base.html#a317cc6c7b9a2a2bc849db7404bdca9f5":[0,0,87,75], -"class_simulations_settings_form_base.html#a3b70f10ddf978db633923109adf2eec8":[0,0,87,3], -"class_simulations_settings_form_base.html#a3f77e2f06060be18695b9e479569e750":[0,0,87,39], -"class_simulations_settings_form_base.html#a4529d8c7e6fd72067ea23d1dcddb8fda":[0,0,87,72], -"class_simulations_settings_form_base.html#a4536b745d3b4ec8f24e8f4e513d85631":[0,0,87,78], -"class_simulations_settings_form_base.html#a46cf61f4852659c6e16cf922c2a375e7":[0,0,87,50], -"class_simulations_settings_form_base.html#a4ed212050fcf484d787a25798da3dbba":[0,0,87,74], -"class_simulations_settings_form_base.html#a518aaef569ff7157901c2ddede7ad170":[0,0,87,73], -"class_simulations_settings_form_base.html#a524aa037a3fde6b45fe5dc28c44bee7e":[0,0,87,24], -"class_simulations_settings_form_base.html#a53776e57a1941d582b7e249baf991715":[0,0,87,38], -"class_simulations_settings_form_base.html#a55b6815057a04579c46f66a55152bfa8":[0,0,87,25], -"class_simulations_settings_form_base.html#a58a3cba8a8e3aeb7ad04d9c09322accb":[0,0,87,13], -"class_simulations_settings_form_base.html#a5f35f20f83aab77c9412a647c7cc4d81":[0,0,87,21], -"class_simulations_settings_form_base.html#a6dd10f55aef407622408e49647034411":[0,0,87,58], -"class_simulations_settings_form_base.html#a7042594f1537d6f29e548b2a2bdacbe9":[0,0,87,10], -"class_simulations_settings_form_base.html#a737cdb464ec33b674fb0b663244380be":[0,0,87,49], -"class_simulations_settings_form_base.html#a7534d53a23d3e4059f7d9f63cee3ddee":[0,0,87,70] +"class_reactive_shunt_element_form_base.html#a2e2c10853585884ad3a2802764b756c7":[0,0,83,17] }; diff --git a/docs/doxygen/html/navtreeindex9.js b/docs/doxygen/html/navtreeindex9.js index d7b2798..5837634 100644 --- a/docs/doxygen/html/navtreeindex9.js +++ b/docs/doxygen/html/navtreeindex9.js @@ -1,5 +1,83 @@ var NAVTREEINDEX9 = { +"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], +"class_reactive_shunt_element_form_base.html#a3a61222247b8bf0d0dc0a74f002f9f54":[0,0,83,4], +"class_reactive_shunt_element_form_base.html#a41f1a2d4df3cc1c7506b975d5ecde71b":[0,0,83,9], +"class_reactive_shunt_element_form_base.html#a45c87f3d26fefb6701e3ce84445d3b2a":[0,0,83,10], +"class_reactive_shunt_element_form_base.html#a4b0ca8c2ccb39a0f305bcc2fe95c820e":[0,0,83,13], +"class_reactive_shunt_element_form_base.html#a5ae249950ace35e5b19124f1fa49946b":[0,0,83,5], +"class_reactive_shunt_element_form_base.html#a653e5033a3d9834d3a3e1f3442d3d1e5":[0,0,83,18], +"class_reactive_shunt_element_form_base.html#a783c3c5b73e8386a96c51e22d0730d78":[0,0,83,1], +"class_reactive_shunt_element_form_base.html#a92f31dfb84b855ff5a36ab9f5257e381":[0,0,83,7], +"class_reactive_shunt_element_form_base.html#a93655501f77f68824420ef640ade219f":[0,0,83,0], +"class_reactive_shunt_element_form_base.html#aab4647a9961226fd3b6934b539539535":[0,0,83,8], +"class_reactive_shunt_element_form_base.html#aacf7ec5dec20fef61f3b190a950a0528":[0,0,83,24], +"class_reactive_shunt_element_form_base.html#ad927d95189e470a8f9268df8e16f81df":[0,0,83,3], +"class_reactive_shunt_element_form_base.html#aee2a26f08d25bb9989a03e8228dd1e69":[0,0,83,15], +"class_reactive_shunt_element_form_base.html#afb6b4c5f665e515a466d8fd31353829e":[0,0,83,11], +"class_reactive_shunt_element_form_base.html#aff864c79e7dae7fd22200efcdba27eb3":[0,0,83,14], +"class_shunt.html":[0,0,84], +"class_shunt.html#a0e19acef958e6153dc1d7386c82de780":[0,0,84,0], +"class_shunt.html#a23d2fed4e9b6a69bc4527b4345bd5bbd":[0,0,84,6], +"class_shunt.html#a33a6bcf6612d4cf8c4de8e9f916a22e8":[0,0,84,14], +"class_shunt.html#a449431a2044b838d35cbb991aa1de658":[0,0,84,2], +"class_shunt.html#a56d6136d647f64cf490dd9d7720f6865":[0,0,84,11], +"class_shunt.html#a665d9a8c291d427e666567c6df34321b":[0,0,84,8], +"class_shunt.html#a7a732f1fb5f54b89e33957194fefd703":[0,0,84,9], +"class_shunt.html#a902525eebbb4bf3ecaab0e1e60b6f017":[0,0,84,3], +"class_shunt.html#a98e8f5798d17f613dfc0964e5007cd91":[0,0,84,13], +"class_shunt.html#a9b52cb496663c75be79cb507d5961a8b":[0,0,84,1], +"class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3":[0,0,84,5], +"class_shunt.html#aacb9fdd05533a8322596b130c70774ef":[0,0,84,10], +"class_shunt.html#abe01dcdf8bc0ba6fc97d41673889fb8e":[0,0,84,12], +"class_shunt.html#abfc091da79ec7b87548d11dc8568b3cb":[0,0,84,15], +"class_shunt.html#ae325a441a44c2a78c08289292fa00979":[0,0,84,7], +"class_shunt.html#afdbf0c51f9630589937298329bb041fe":[0,0,84,4], +"class_simulations_settings_form.html":[0,0,86], +"class_simulations_settings_form.html#a0391607c5a1c9d9bc819ff76fbfe4ac9":[0,0,86,0], +"class_simulations_settings_form.html#a0b45be7dd91f8ed322dfe6be9f09b519":[0,0,86,4], +"class_simulations_settings_form.html#a33fd689685a661ba869285e70005b25c":[0,0,86,5], +"class_simulations_settings_form.html#a4a12f6479437b57c0f60da303e9ae8a4":[0,0,86,2], +"class_simulations_settings_form.html#a6afac8fd633a317058c3755c3b9ad531":[0,0,86,6], +"class_simulations_settings_form.html#a84907a8c877741a310bbd04a10661713":[0,0,86,1], +"class_simulations_settings_form.html#aac571bfc12367c787a34f04b1c6daf0e":[0,0,86,3], +"class_simulations_settings_form_base.html":[0,0,87], +"class_simulations_settings_form_base.html#a00162ab3f5fc280dc753440314a7e1ba":[0,0,87,36], +"class_simulations_settings_form_base.html#a00caec0bf8cdb39f16856a49b478596e":[0,0,87,22], +"class_simulations_settings_form_base.html#a01ca85120c1c072ff30df0949a57809b":[0,0,87,6], +"class_simulations_settings_form_base.html#a035a663ed0e32f8e1b5ad799e19d3ede":[0,0,87,30], +"class_simulations_settings_form_base.html#a094a39982209ed4298e1914bb6a01841":[0,0,87,28], +"class_simulations_settings_form_base.html#a09b4f2e8531838473197ef0e0ec148a8":[0,0,87,17], +"class_simulations_settings_form_base.html#a0e0fe5100d343148e774da127a5f13cd":[0,0,87,41], +"class_simulations_settings_form_base.html#a0e92dc8f5bc6f21b564ed7f0473f5c12":[0,0,87,37], +"class_simulations_settings_form_base.html#a0fe2f8372ca7856be82306d3b8197ba0":[0,0,87,33], +"class_simulations_settings_form_base.html#a109ea7e508f6494508d35a62237b661a":[0,0,87,67], +"class_simulations_settings_form_base.html#a1ac75d31b112a2febebf4bc9702f2308":[0,0,87,53], +"class_simulations_settings_form_base.html#a2123722e9d7846170793743eb2301c36":[0,0,87,8], +"class_simulations_settings_form_base.html#a213a37c4ec8adfe9193858c730809760":[0,0,87,29], +"class_simulations_settings_form_base.html#a26a06b8a618d7bb2e244f15cbbb218a0":[0,0,87,55], +"class_simulations_settings_form_base.html#a273b0fa706d897f285611b96b3274d11":[0,0,87,79], +"class_simulations_settings_form_base.html#a2931101c1dfb81b3ae70b208f2f21d9f":[0,0,87,26], +"class_simulations_settings_form_base.html#a2deb701c33edf6c39db842c6c78516c7":[0,0,87,51], +"class_simulations_settings_form_base.html#a317cc6c7b9a2a2bc849db7404bdca9f5":[0,0,87,75], +"class_simulations_settings_form_base.html#a3b70f10ddf978db633923109adf2eec8":[0,0,87,3], +"class_simulations_settings_form_base.html#a3f77e2f06060be18695b9e479569e750":[0,0,87,39], +"class_simulations_settings_form_base.html#a4529d8c7e6fd72067ea23d1dcddb8fda":[0,0,87,72], +"class_simulations_settings_form_base.html#a4536b745d3b4ec8f24e8f4e513d85631":[0,0,87,78], +"class_simulations_settings_form_base.html#a46cf61f4852659c6e16cf922c2a375e7":[0,0,87,50], +"class_simulations_settings_form_base.html#a4ed212050fcf484d787a25798da3dbba":[0,0,87,74], +"class_simulations_settings_form_base.html#a518aaef569ff7157901c2ddede7ad170":[0,0,87,73], +"class_simulations_settings_form_base.html#a524aa037a3fde6b45fe5dc28c44bee7e":[0,0,87,24], +"class_simulations_settings_form_base.html#a53776e57a1941d582b7e249baf991715":[0,0,87,38], +"class_simulations_settings_form_base.html#a55b6815057a04579c46f66a55152bfa8":[0,0,87,25], +"class_simulations_settings_form_base.html#a58a3cba8a8e3aeb7ad04d9c09322accb":[0,0,87,13], +"class_simulations_settings_form_base.html#a5f35f20f83aab77c9412a647c7cc4d81":[0,0,87,21], +"class_simulations_settings_form_base.html#a6dd10f55aef407622408e49647034411":[0,0,87,58], +"class_simulations_settings_form_base.html#a7042594f1537d6f29e548b2a2bdacbe9":[0,0,87,10], +"class_simulations_settings_form_base.html#a737cdb464ec33b674fb0b663244380be":[0,0,87,49], +"class_simulations_settings_form_base.html#a7534d53a23d3e4059f7d9f63cee3ddee":[0,0,87,70], "class_simulations_settings_form_base.html#a76d9c02a5e8293274ff5ca30da5f3875":[0,0,87,4], "class_simulations_settings_form_base.html#a848776479beac8acd3b12cac44db650b":[0,0,87,54], "class_simulations_settings_form_base.html#a8d8e9a8f2d048dede1d4c1499874d583":[0,0,87,71], @@ -171,83 +249,5 @@ var NAVTREEINDEX9 = "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], -"class_sync_machine_form_base.html#a0dbd47d991d7750b3368d84b06d3c361":[0,0,97,0], -"class_sync_machine_form_base.html#a102368df6855d5ba275a49ffae593168":[0,0,97,15], -"class_sync_machine_form_base.html#a11249eb9f833be5b91c3f684477be7aa":[0,0,97,12], -"class_sync_machine_form_base.html#a138fa57d3582962bae07d035e63b586d":[0,0,97,74], -"class_sync_machine_form_base.html#a15b9a853d75e1e59084cf84130bfbbc2":[0,0,97,78], -"class_sync_machine_form_base.html#a1c9124d5e5449d28ae8b0af31a651a25":[0,0,97,28], -"class_sync_machine_form_base.html#a1ed492083cd0abec88ace3965553308b":[0,0,97,56], -"class_sync_machine_form_base.html#a21dbc2fc03aef37e45e1cf3a63da9551":[0,0,97,55], -"class_sync_machine_form_base.html#a230d01b1c29375bdfd3063d9097f9f88":[0,0,97,8], -"class_sync_machine_form_base.html#a24d1c0a769de296404d9697ff6bba278":[0,0,97,9], -"class_sync_machine_form_base.html#a25dfe7fcf1465ef808fd652a5cd6b2e1":[0,0,97,64], -"class_sync_machine_form_base.html#a2d7690b252b2b22d5b950d04b9757bb4":[0,0,97,21], -"class_sync_machine_form_base.html#a2f22b959d0d97b7ad3ee6de5557ad976":[0,0,97,52], -"class_sync_machine_form_base.html#a38a81a205d2112a58084b2d6cc13380a":[0,0,97,24], -"class_sync_machine_form_base.html#a3aa2c493b7430078bc17a34bb8cc476b":[0,0,97,43], -"class_sync_machine_form_base.html#a3db4e4cfd2fd42f9ce6ab3f72952f6ba":[0,0,97,44], -"class_sync_machine_form_base.html#a3f1c8401a39935ef1f589d68af2be97a":[0,0,97,40], -"class_sync_machine_form_base.html#a4112b3c631d0ceec0178fc05ea1b120c":[0,0,97,2], -"class_sync_machine_form_base.html#a4496bfac69450fe5a10baa9dbc4888a6":[0,0,97,80], -"class_sync_machine_form_base.html#a45f5bf24827dfcda99e71f83cfb3fa5b":[0,0,97,29], -"class_sync_machine_form_base.html#a46fe41a58c06bedeab99cd190921e545":[0,0,97,4], -"class_sync_machine_form_base.html#a4ba97e9dc30c24a0daf0ad3771823df0":[0,0,97,77], -"class_sync_machine_form_base.html#a4fca8015f54006f8b79faf8bb6d3eb09":[0,0,97,26], -"class_sync_machine_form_base.html#a5133c66f455c7a5597e72b9b367e0fc8":[0,0,97,47], -"class_sync_machine_form_base.html#a5735d89d9451e76734467e14779a7ab0":[0,0,97,49], -"class_sync_machine_form_base.html#a5a091446eebeeb3c5116fa87aeda535b":[0,0,97,79], -"class_sync_machine_form_base.html#a5dcc03c3e17f06e0914f3209120a6329":[0,0,97,35], -"class_sync_machine_form_base.html#a5fd0741a7ac3e8613cc01a28933b4ea8":[0,0,97,11], -"class_sync_machine_form_base.html#a681513dcfa84f4aab5803299fd8ae766":[0,0,97,37], -"class_sync_machine_form_base.html#a6b3830705a2208493714c1abdb8fa0b8":[0,0,97,70], -"class_sync_machine_form_base.html#a6c2c10dd63d1ace53d882b477d037d75":[0,0,97,30], -"class_sync_machine_form_base.html#a6dba8c557f3e20f9982c084e5e5a74e3":[0,0,97,59], -"class_sync_machine_form_base.html#a6fedceb84c293f69fbcb6290ea529798":[0,0,97,84], -"class_sync_machine_form_base.html#a717b5ba1d7ed6b4026b527ce12b2bf41":[0,0,97,72], -"class_sync_machine_form_base.html#a7367ed87a446dc08067af218b8bb2215":[0,0,97,31], -"class_sync_machine_form_base.html#a7530a37ed44f0732758708aabf7f748c":[0,0,97,19], -"class_sync_machine_form_base.html#a76040f3058374ee765d4baa6b1b07df7":[0,0,97,7], -"class_sync_machine_form_base.html#a7849d5f397e132e164b0c1952ddaa0a3":[0,0,97,82], -"class_sync_machine_form_base.html#a79579458c023bf56d0df6f0356e58c9b":[0,0,97,53], -"class_sync_machine_form_base.html#a7a035fe2031ab6eae1513f73adabd0c3":[0,0,97,32], -"class_sync_machine_form_base.html#a7c6a05f65b77bdad43f7f92c2b184077":[0,0,97,50], -"class_sync_machine_form_base.html#a909b922a1f157d6013a7baaf22796d24":[0,0,97,86], -"class_sync_machine_form_base.html#a93fd03ae353875c5e04ccdb57800f821":[0,0,97,58], -"class_sync_machine_form_base.html#a959fea39df34cb124ab6a0ad78d78712":[0,0,97,3], -"class_sync_machine_form_base.html#a97509be24b2add48e9d23d5b7020b076":[0,0,97,48], -"class_sync_machine_form_base.html#a9c402618cc9ae56ca3780d7420bf5722":[0,0,97,69], -"class_sync_machine_form_base.html#a9d4d3f8b66519903eaac859b0a5314e9":[0,0,97,6], -"class_sync_machine_form_base.html#a9e63594f861d223182734011b24030dc":[0,0,97,14], -"class_sync_machine_form_base.html#a9fd3b15e35d1753059759886bf918130":[0,0,97,81], -"class_sync_machine_form_base.html#aa2a774f00e17cfec0ef2efccc086b990":[0,0,97,25], -"class_sync_machine_form_base.html#aa53388881170a5aceb737b0c58315351":[0,0,97,16], -"class_sync_machine_form_base.html#aab2926cd0e56d2cb283fc74e5aa20f5d":[0,0,97,10], -"class_sync_machine_form_base.html#aacac6cfe475bf4176dcf746417cdd432":[0,0,97,88], -"class_sync_machine_form_base.html#aaff0a6a0030e1d0928f6a69f27bb1180":[0,0,97,46], -"class_sync_machine_form_base.html#ab221b3b73b231252dfe605efa5268f59":[0,0,97,39], -"class_sync_machine_form_base.html#ab922478387b0a89d0d5a4ab0d1500a4a":[0,0,97,27], -"class_sync_machine_form_base.html#aba28c35b0281a75f7ed7b57e6ceed52c":[0,0,97,5], -"class_sync_machine_form_base.html#ac195ae144957568ef98e5e3f9ba31388":[0,0,97,76], -"class_sync_machine_form_base.html#ac3d26a423d2fd7243c9361d360b0e6d3":[0,0,97,42], -"class_sync_machine_form_base.html#ac4a8ed68ffba04940adbf6e3070291a4":[0,0,97,65], -"class_sync_machine_form_base.html#ac71f3c270c8c796dd427ee6bd32f1c60":[0,0,97,38], -"class_sync_machine_form_base.html#acc82ce4087f0fcde8e42e2b7f111cfcc":[0,0,97,57], -"class_sync_machine_form_base.html#acef45c78c5bbaf1dee5b3abc895e8baf":[0,0,97,17], -"class_sync_machine_form_base.html#ad3b5932a14988843670c516861029517":[0,0,97,33], -"class_sync_machine_form_base.html#ad3dab6cd719a3464b4bca0e92063b20c":[0,0,97,23], -"class_sync_machine_form_base.html#ad4789258aa31c9d3c699013ce6f3406f":[0,0,97,66], -"class_sync_machine_form_base.html#ad47c151f396bbad83787de190055ea65":[0,0,97,20], -"class_sync_machine_form_base.html#ad6e4bc150fc34819eaa2333d1d4cb2b8":[0,0,97,13], -"class_sync_machine_form_base.html#ad720f87582570c72919f9094987bda08":[0,0,97,67], -"class_sync_machine_form_base.html#ade8616fc5502cc760867821d52b2a697":[0,0,97,75], -"class_sync_machine_form_base.html#ae0b5c587ae39b5e558bb298eb1f180b0":[0,0,97,41], -"class_sync_machine_form_base.html#ae2aa2eb6ad549c8b918389df69b6af36":[0,0,97,18], -"class_sync_machine_form_base.html#ae4c8099099059b6e5b8d4791991929c5":[0,0,97,51], -"class_sync_machine_form_base.html#ae69f427b9931e920bcb615a15e74484e":[0,0,97,68], -"class_sync_machine_form_base.html#aec2123bb23ad47344e000bf2e460117e":[0,0,97,45] +"class_sync_machine_form_base.html#a05439a30d63c78be06d1d046c0cc59d8":[0,0,97,87] }; diff --git a/docs/doxygen/html/search/all_0.js b/docs/doxygen/html/search/all_0.js index 0a0141b..89e0e5e 100644 --- a/docs/doxygen/html/search/all_0.js +++ b/docs/doxygen/html/search/all_0.js @@ -1,6 +1,7 @@ var searchData= [ ['aboutform',['AboutForm',['../class_about_form.html',1,'']]], + ['aboutform_2eh',['AboutForm.h',['../_about_form_8h.html',1,'']]], ['aboutformbase',['AboutFormBase',['../class_about_form_base.html',1,'']]], ['addchild',['AddChild',['../class_element.html#ac38d6707d08cb5c057032aa94b511a62',1,'Element']]], ['addparent',['AddParent',['../class_bus.html#ab046baebe4bfe0a52905148d78f44681',1,'Bus::AddParent()'],['../class_capacitor.html#ace755e5bc3cc72b491ce31c24c54a5cf',1,'Capacitor::AddParent()'],['../class_element.html#a569178e9138490a981511a644536c0f9',1,'Element::AddParent(Element *parent, wxPoint2DDouble position)'],['../class_element.html#ad1f153a87797633ab310d07e1d06eba9',1,'Element::AddParent(Element *parent)'],['../class_inductor.html#a4e404c6e15f206fe0f5de06fc19dedf5',1,'Inductor::AddParent()'],['../class_line.html#a26c69f7f703dca718edc28d5093934a3',1,'Line::AddParent()'],['../class_load.html#ac9f449be9b919b36924a844324bf37ee',1,'Load::AddParent()'],['../class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3',1,'Machines::AddParent()'],['../class_text.html#a4f273ea7008c72533327c25caff2e917',1,'Text::AddParent()'],['../class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6',1,'Transformer::AddParent()']]], diff --git a/docs/doxygen/html/search/all_1.js b/docs/doxygen/html/search/all_1.js index bf9a3cd..45fc30c 100644 --- a/docs/doxygen/html/search/all_1.js +++ b/docs/doxygen/html/search/all_1.js @@ -5,5 +5,6 @@ var searchData= ['bus',['Bus',['../class_bus.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,'']]], ['busformbase',['BusFormBase',['../class_bus_form_base.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/all_10.js b/docs/doxygen/html/search/all_10.js index 9b8e3a9..77f9de3 100644 --- a/docs/doxygen/html/search/all_10.js +++ b/docs/doxygen/html/search/all_10.js @@ -2,14 +2,17 @@ var searchData= [ ['text',['Text',['../class_text.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,'']]], ['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,'']]], ['transformerelectricaldata',['TransformerElectricalData',['../struct_transformer_electrical_data.html',1,'']]], ['transformerform',['TransformerForm',['../class_transformer_form.html',1,'']]], + ['transformerform_2eh',['TransformerForm.h',['../_transformer_form_8h.html',1,'']]], ['transformerformbase',['TransformerFormBase',['../class_transformer_form_base.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/all_12.js b/docs/doxygen/html/search/all_12.js index c7b045e..245184a 100644 --- a/docs/doxygen/html/search/all_12.js +++ b/docs/doxygen/html/search/all_12.js @@ -1,6 +1,7 @@ var searchData= [ ['workspace',['Workspace',['../class_workspace.html',1,'']]], + ['workspace_2eh',['Workspace.h',['../_workspace_8h.html',1,'']]], ['workspacebase',['WorkspaceBase',['../class_workspace_base.html',1,'']]], ['worldtoscreen',['WorldToScreen',['../class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8',1,'Element::WorldToScreen(wxPoint2DDouble translation, double scale, double offsetX=0.0, double offsetY=0.0) const'],['../class_element.html#a147dd55d902171b212168ffde7262343',1,'Element::WorldToScreen(wxPoint2DDouble position, wxPoint2DDouble translation, double scale, double offsetX=0.0, double offsetY=0.0) const']]], ['wxglnumberrenderer',['wxGLNumberRenderer',['../classwx_g_l_number_renderer.html',1,'']]], diff --git a/docs/doxygen/html/search/all_13.js b/docs/doxygen/html/search/all_13.js index 91c4129..890e89e 100644 --- a/docs/doxygen/html/search/all_13.js +++ b/docs/doxygen/html/search/all_13.js @@ -1,8 +1,5 @@ var searchData= [ - ['_7eelectriccalculation',['~ElectricCalculation',['../class_electric_calculation.html#a1e70291bfa9a0850d9ffcbee44daa2f7',1,'ElectricCalculation']]], - ['_7eelement',['~Element',['../class_element.html#a13d54ba9c08b6bec651402f1c2bb002c',1,'Element']]], - ['_7efault',['~Fault',['../class_fault.html#a42019654142cd8187b314e43d70262eb',1,'Fault']]], - ['_7eopenglcolour',['~OpenGLColour',['../class_open_g_l_colour.html#a4b9a726773b4c82935f15add648ed2a0',1,'OpenGLColour']]], - ['_7epowerelement',['~PowerElement',['../class_power_element.html#a39be7c8e3bdb96b16c26ea7f7d6e6cbf',1,'PowerElement']]] + ['xd',['xd',['../struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330',1,'SyncMachineModelData']]], + ['xq',['xq',['../struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc',1,'SyncMachineModelData']]] ]; diff --git a/docs/doxygen/html/search/all_14.html b/docs/doxygen/html/search/all_14.html new file mode 100644 index 0000000..fb4d0ec --- /dev/null +++ b/docs/doxygen/html/search/all_14.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_14.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/doxygen/html/search/all_14.js b/docs/doxygen/html/search/all_14.js new file mode 100644 index 0000000..9783142 --- /dev/null +++ b/docs/doxygen/html/search/all_14.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['_7eelectriccalculation',['~ElectricCalculation',['../class_electric_calculation.html#a1e70291bfa9a0850d9ffcbee44daa2f7',1,'ElectricCalculation']]], + ['_7eelement',['~Element',['../class_element.html#a13d54ba9c08b6bec651402f1c2bb002c',1,'Element']]], + ['_7efault',['~Fault',['../class_fault.html#a42019654142cd8187b314e43d70262eb',1,'Fault']]], + ['_7emainframe',['~MainFrame',['../class_main_frame.html#a0cfd88ece4836e0ea5430bd55370bf11',1,'MainFrame']]], + ['_7eopenglcolour',['~OpenGLColour',['../class_open_g_l_colour.html#a4b9a726773b4c82935f15add648ed2a0',1,'OpenGLColour']]], + ['_7epowerelement',['~PowerElement',['../class_power_element.html#a39be7c8e3bdb96b16c26ea7f7d6e6cbf',1,'PowerElement']]] +]; diff --git a/docs/doxygen/html/search/all_2.js b/docs/doxygen/html/search/all_2.js index 3117bc8..81e2eeb 100644 --- a/docs/doxygen/html/search/all_2.js +++ b/docs/doxygen/html/search/all_2.js @@ -4,23 +4,33 @@ 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']]], ['camera',['Camera',['../class_camera.html',1,'']]], + ['camera_2eh',['Camera.h',['../_camera_8h.html',1,'']]], ['capacitor',['Capacitor',['../class_capacitor.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,'']]], ['chartviewbase',['ChartViewBase',['../class_chart_view_base.html',1,'']]], ['connectionline',['ConnectionLine',['../class_connection_line.html',1,'']]], + ['connectionline_2eh',['ConnectionLine.h',['../_connection_line_8h.html',1,'']]], ['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()']]], ['constant',['Constant',['../class_constant.html',1,'']]], + ['constant_2eh',['Constant.h',['../_constant_8h.html',1,'']]], ['constantform',['ConstantForm',['../class_constant_form.html',1,'']]], + ['constantform_2eh',['ConstantForm.h',['../_constant_form_8h.html',1,'']]], ['constantformbase',['ConstantFormBase',['../class_constant_form_base.html',1,'']]], ['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()']]], ['contextmenuid',['ContextMenuID',['../_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049',1,'Element.h']]], ['controleditor',['ControlEditor',['../class_control_editor.html',1,'']]], + ['controleditor_2eh',['ControlEditor.h',['../_control_editor_8h.html',1,'']]], ['controleditorbase',['ControlEditorBase',['../class_control_editor_base.html',1,'']]], ['controlelement',['ControlElement',['../class_control_element.html',1,'']]], + ['controlelement_2eh',['ControlElement.h',['../_control_element_8h.html',1,'']]], ['controlelementbutton',['ControlElementButton',['../class_control_element_button.html',1,'']]], ['controlelementcontainer',['ControlElementContainer',['../class_control_element_container.html',1,'']]], + ['controlelementcontainer_2eh',['ControlElementContainer.h',['../_control_element_container_8h.html',1,'']]], ['controlelementsolver',['ControlElementSolver',['../class_control_element_solver.html',1,'']]], + ['controlelementsolver_2eh',['ControlElementSolver.h',['../_control_element_solver_8h.html',1,'']]], ['controlsystemtest',['ControlSystemTest',['../class_control_system_test.html',1,'']]], + ['controlsystemtest_2eh',['ControlSystemTest.h',['../_control_system_test_8h.html',1,'']]], ['controlsystemtestbase',['ControlSystemTestBase',['../class_control_system_test_base.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/all_3.js b/docs/doxygen/html/search/all_3.js index dcd29cd..d8257de 100644 --- a/docs/doxygen/html/search/all_3.js +++ b/docs/doxygen/html/search/all_3.js @@ -1,6 +1,7 @@ var searchData= [ ['datareport',['DataReport',['../class_data_report.html',1,'']]], + ['datareport_2eh',['DataReport.h',['../_data_report_8h.html',1,'']]], ['datareportbase',['DataReportBase',['../class_data_report_base.html',1,'']]], ['doublefromstring',['DoubleFromString',['../class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a',1,'Element']]], ['draw',['Draw',['../class_branch.html#a7037f496f9b9c9e64c74eb638debe278',1,'Branch::Draw()'],['../class_bus.html#ae9022ca29399377d2fe0082bb762107c',1,'Bus::Draw()'],['../class_capacitor.html#a94d378c922467214b394931ec0eb01c8',1,'Capacitor::Draw()'],['../class_connection_line.html#a71cb3502dd098e1d1ef541668789586e',1,'ConnectionLine::Draw()'],['../class_constant.html#afc4d8739980ae1b57e9c5058c2e05591',1,'Constant::Draw()'],['../class_element.html#a551ed1eeab446b5366d56c2ee9dec187',1,'Element::Draw()'],['../class_exponential.html#af5f172e2f7ae7df0fc79b44b55355339',1,'Exponential::Draw()'],['../class_gain.html#a42f48bfdfb3d6f593fcc599504dd2264',1,'Gain::Draw()'],['../class_inductor.html#a97761292fac4f0da7ae3dc6ca4b4de54',1,'Inductor::Draw()'],['../class_i_o_control.html#aa6aab56f8936a87f099241d9bad9fee4',1,'IOControl::Draw()'],['../class_limiter.html#a2e2960936ebfcc6589181b7948fba242',1,'Limiter::Draw()'],['../class_line.html#a297e12aa8ff0be5d344e245732487bdd',1,'Line::Draw()'],['../class_load.html#aaef52b18cc53fa2db996fb9cad5db181',1,'Load::Draw()'],['../class_machines.html#af3279663c82de88e12f0487bfc633f7c',1,'Machines::Draw()'],['../class_multiplier.html#ae854fd981a98aca93b286081cc9c19f3',1,'Multiplier::Draw()'],['../class_rate_limiter.html#a6afc319e3a165776b8a429b9bbe38580',1,'RateLimiter::Draw()'],['../class_sum.html#a31dbb6867b17188b4a8cc650983da57b',1,'Sum::Draw()'],['../class_transfer_function.html#a0cd1dec850117741abb04b608c7b3f1e',1,'TransferFunction::Draw()'],['../class_transformer.html#a1e9e9ba48aa76bdd2ff2e973014ad422',1,'Transformer::Draw()']]], diff --git a/docs/doxygen/html/search/all_4.js b/docs/doxygen/html/search/all_4.js index 5b8026c..4e9ef48 100644 --- a/docs/doxygen/html/search/all_4.js +++ b/docs/doxygen/html/search/all_4.js @@ -1,15 +1,20 @@ var searchData= [ + ['ed',['ed',['../struct_sync_machine_model_data.html#ad2bda1ac696b664571e33f657f4a81b6',1,'SyncMachineModelData']]], ['electricalunit',['ElectricalUnit',['../_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca',1,'PowerElement.h']]], ['electriccalculation',['ElectricCalculation',['../class_electric_calculation.html',1,'ElectricCalculation'],['../class_electric_calculation.html#a6663e7a20e96ee975bd0f7d54b8a6f70',1,'ElectricCalculation::ElectricCalculation()']]], ['electriccalculation_2eh',['ElectricCalculation.h',['../_electric_calculation_8h.html',1,'']]], ['electromechanical',['Electromechanical',['../class_electromechanical.html',1,'']]], + ['electromechanical_2eh',['Electromechanical.h',['../_electromechanical_8h.html',1,'']]], ['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,'']]], ['elementplotdata',['ElementPlotData',['../class_element_plot_data.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,'']]], + ['exponential_2eh',['Exponential.h',['../_exponential_8h.html',1,'']]], ['exponentialform',['ExponentialForm',['../class_exponential_form.html',1,'']]], + ['exponentialform_2eh',['ExponentialForm.h',['../_exponential_form_8h.html',1,'']]], ['exponentialformbase',['ExponentialFormBase',['../class_exponential_form_base.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/all_5.js b/docs/doxygen/html/search/all_5.js index 9a4c639..0d4a3a9 100644 --- a/docs/doxygen/html/search/all_5.js +++ b/docs/doxygen/html/search/all_5.js @@ -10,5 +10,6 @@ var searchData= ['fault_5fline_5fground',['FAULT_LINE_GROUND',['../_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d',1,'PowerElement.h']]], ['fault_5fthreephase',['FAULT_THREEPHASE',['../_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0',1,'PowerElement.h']]], ['faultdata',['FaultData',['../_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb',1,'PowerElement.h']]], - ['filehanding',['FileHanding',['../class_file_handing.html',1,'']]] + ['filehanding',['FileHanding',['../class_file_handing.html',1,'']]], + ['filehanding_2eh',['FileHanding.h',['../_file_handing_8h.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/all_6.js b/docs/doxygen/html/search/all_6.js index 449b5e6..623714a 100644 --- a/docs/doxygen/html/search/all_6.js +++ b/docs/doxygen/html/search/all_6.js @@ -1,13 +1,17 @@ var searchData= [ ['gain',['Gain',['../class_gain.html',1,'']]], + ['gain_2eh',['Gain.h',['../_gain_8h.html',1,'']]], ['gainform',['GainForm',['../class_gain_form.html',1,'']]], + ['gainform_2eh',['GainForm.h',['../_gain_form_8h.html',1,'']]], ['gainformbase',['GainFormBase',['../class_gain_form_base.html',1,'']]], ['generaldata',['GeneralData',['../struct_general_data.html',1,'']]], ['generalmenuitens',['GeneralMenuItens',['../class_element.html#a35f55626a29d5256f8dc07cf92655e64',1,'Element']]], ['generalpropertiesform',['GeneralPropertiesForm',['../class_general_properties_form.html',1,'']]], + ['generalpropertiesform_2eh',['GeneralPropertiesForm.h',['../_general_properties_form_8h.html',1,'']]], ['generalpropertiesformbase',['GeneralPropertiesFormBase',['../class_general_properties_form_base.html',1,'']]], ['generatorstabform',['GeneratorStabForm',['../class_generator_stab_form.html',1,'']]], + ['generatorstabform_2eh',['GeneratorStabForm.h',['../_generator_stab_form_8h.html',1,'']]], ['generatorstabformbase',['GeneratorStabFormBase',['../class_generator_stab_form_base.html',1,'']]], ['get',['get',['../classwx_g_l_string_array.html#a2ae0c1cffb2f54b66a170d1698ad62e0',1,'wxGLStringArray']]], ['getangle',['GetAngle',['../class_element.html#a5c75d8a6e28326dd568104a4d9d3473f',1,'Element']]], diff --git a/docs/doxygen/html/search/all_8.js b/docs/doxygen/html/search/all_8.js index 92d5ced..5f9cb01 100644 --- a/docs/doxygen/html/search/all_8.js +++ b/docs/doxygen/html/search/all_8.js @@ -16,6 +16,7 @@ var searchData= ['indmotor',['IndMotor',['../class_ind_motor.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,'']]], ['inductorelectricaldata',['InductorElectricalData',['../struct_inductor_electrical_data.html',1,'']]], @@ -24,7 +25,9 @@ var searchData= ['intfromstring',['IntFromString',['../class_element.html#a4c93a9e20ed0ca0c376cf412b4347159',1,'Element']]], ['invertmatrix',['InvertMatrix',['../class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c',1,'ElectricCalculation']]], ['iocontrol',['IOControl',['../class_i_o_control.html',1,'']]], + ['iocontrol_2eh',['IOControl.h',['../_i_o_control_8h.html',1,'']]], ['iocontrolform',['IOControlForm',['../class_i_o_control_form.html',1,'']]], + ['iocontrolform_2eh',['IOControlForm.h',['../_i_o_control_form_8h.html',1,'']]], ['iocontrolformbase',['IOControlFormBase',['../class_i_o_control_form_base.html',1,'']]], ['isdragging',['IsDragging',['../class_element.html#a2f78fae8a5869ff53e87ecfdc6fc33b9',1,'Element']]], ['isonline',['IsOnline',['../class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa',1,'Element']]], diff --git a/docs/doxygen/html/search/all_9.js b/docs/doxygen/html/search/all_9.js index f0ca242..e8f799e 100644 --- a/docs/doxygen/html/search/all_9.js +++ b/docs/doxygen/html/search/all_9.js @@ -1,14 +1,18 @@ var searchData= [ ['limiter',['Limiter',['../class_limiter.html',1,'']]], + ['limiter_2eh',['Limiter.h',['../_limiter_8h.html',1,'']]], ['limiterform',['LimiterForm',['../class_limiter_form.html',1,'']]], + ['limiterform_2eh',['LimiterForm.h',['../_limiter_form_8h.html',1,'']]], ['limiterformbase',['LimiterFormBase',['../class_limiter_form_base.html',1,'']]], ['line',['Line',['../class_line.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,'']]], ['loadelectricaldata',['LoadElectricalData',['../struct_load_electrical_data.html',1,'']]], ['loadform',['LoadForm',['../class_load_form.html',1,'']]], + ['loadform_2eh',['LoadForm.h',['../_load_form_8h.html',1,'']]], ['loadformbase',['LoadFormBase',['../class_load_form_base.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/all_a.js b/docs/doxygen/html/search/all_a.js index 32e36d8..8f1137c 100644 --- a/docs/doxygen/html/search/all_a.js +++ b/docs/doxygen/html/search/all_a.js @@ -3,10 +3,12 @@ var searchData= ['m',['m',['../struct_integration_constant.html#adafabd0d37a52d4ed054a800cbce3d65',1,'IntegrationConstant']]], ['machines',['Machines',['../class_machines.html',1,'']]], ['mainapp',['MainApp',['../class_main_app.html',1,'']]], - ['mainframe',['MainFrame',['../class_main_frame.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,'']]], ['mainframebase',['MainFrameBase',['../class_main_frame_base.html',1,'']]], ['move',['Move',['../class_branch.html#a7cf4b117f43f49bb76cce3df5521fb70',1,'Branch::Move()'],['../class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7',1,'ConnectionLine::Move()'],['../class_control_element.html#ac8bd52ddb8eed51a217fecb2eed65708',1,'ControlElement::Move()'],['../class_element.html#abe884d99d12d5252e18956162115b025',1,'Element::Move()'],['../class_gain.html#aa303bcc736ac5fad1f89c6cc87e859db',1,'Gain::Move()'],['../class_line.html#a3eabf6de2af4ee71f72ce4f091c69978',1,'Line::Move()'],['../class_machines.html#a2f7450283dd36f4fc0847dfd50385c44',1,'Machines::Move()'],['../class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3',1,'Shunt::Move()'],['../class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8',1,'Transformer::Move()']]], ['movenode',['MoveNode',['../class_branch.html#aef2ffe79c9b239fb5a1ad175555a9f5a',1,'Branch::MoveNode()'],['../class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd',1,'Element::MoveNode()'],['../class_line.html#ac8be7d7136d86830c262280f51b79ea4',1,'Line::MoveNode()'],['../class_machines.html#aeab8436c33f74a10e252b418028ec491',1,'Machines::MoveNode()'],['../class_shunt.html#a23d2fed4e9b6a69bc4527b4345bd5bbd',1,'Shunt::MoveNode()'],['../class_transformer.html#a9652232a076cca0fe3753477ec88f63a',1,'Transformer::MoveNode()']]], ['movepickbox',['MovePickbox',['../class_branch.html#af7879ee138170b1421f745f1c942ea05',1,'Branch::MovePickbox()'],['../class_bus.html#ad569e2192bf95efe668d401583382a04',1,'Bus::MovePickbox()'],['../class_element.html#a6f071b6dfd64721ca673bfbe1ca2d525',1,'Element::MovePickbox()'],['../class_line.html#afa67498961416e645e0aa5358959ef1d',1,'Line::MovePickbox()']]], - ['multiplier',['Multiplier',['../class_multiplier.html',1,'']]] + ['multiplier',['Multiplier',['../class_multiplier.html',1,'']]], + ['multiplier_2eh',['Multiplier.h',['../_multiplier_8h.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/all_e.js b/docs/doxygen/html/search/all_e.js index 7123aec..8fa9b09 100644 --- a/docs/doxygen/html/search/all_e.js +++ b/docs/doxygen/html/search/all_e.js @@ -1,10 +1,13 @@ var searchData= [ ['ratelimiter',['RateLimiter',['../class_rate_limiter.html',1,'']]], + ['ratelimiter_2eh',['RateLimiter.h',['../_rate_limiter_8h.html',1,'']]], ['ratelimiterform',['RateLimiterForm',['../class_rate_limiter_form.html',1,'']]], + ['ratelimiterform_2eh',['RateLimiterForm.h',['../_rate_limiter_form_8h.html',1,'']]], ['ratelimiterformbase',['RateLimiterFormBase',['../class_rate_limiter_form_base.html',1,'']]], ['reactivelimits',['ReactiveLimits',['../struct_reactive_limits.html',1,'']]], ['reactiveshuntelementform',['ReactiveShuntElementForm',['../class_reactive_shunt_element_form.html',1,'']]], + ['reactiveshuntelementform_2eh',['ReactiveShuntElementForm.h',['../_reactive_shunt_element_form_8h.html',1,'']]], ['reactiveshuntelementformbase',['ReactiveShuntElementFormBase',['../class_reactive_shunt_element_form_base.html',1,'']]], ['removechild',['RemoveChild',['../class_element.html#a6be881ba60674b289a91e498d3d8fc09',1,'Element']]], ['removeparent',['RemoveParent',['../class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc',1,'Branch::RemoveParent()'],['../class_connection_line.html#a3f5584348b86e665161b033d4ce8d702',1,'ConnectionLine::RemoveParent()'],['../class_element.html#a9504437b60faf2c5a27584de8a24810c',1,'Element::RemoveParent()'],['../class_machines.html#a002d852ddd0d73502a6bd819b5545026',1,'Machines::RemoveParent()'],['../class_shunt.html#a665d9a8c291d427e666567c6df34321b',1,'Shunt::RemoveParent()']]], diff --git a/docs/doxygen/html/search/all_f.js b/docs/doxygen/html/search/all_f.js index 9ed2dd1..0084ece 100644 --- a/docs/doxygen/html/search/all_f.js +++ b/docs/doxygen/html/search/all_f.js @@ -24,18 +24,22 @@ var searchData= ['shunt',['Shunt',['../class_shunt.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']]], ['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,'']]], ['sumform',['SumForm',['../class_sum_form.html',1,'']]], + ['sumform_2eh',['SumForm.h',['../_sum_form_8h.html',1,'']]], ['sumformbase',['SumFormBase',['../class_sum_form_base.html',1,'']]], ['sw_5finsert',['SW_INSERT',['../_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7',1,'PowerElement.h']]], ['sw_5fremove',['SW_REMOVE',['../_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776',1,'PowerElement.h']]], ['switchescontains',['SwitchesContains',['../class_power_element.html#a789105cc7c170330e7daf2a0453fde6d',1,'PowerElement']]], ['switchingdata',['SwitchingData',['../struct_switching_data.html',1,'']]], ['switchingform',['SwitchingForm',['../class_switching_form.html',1,'']]], + ['switchingform_2eh',['SwitchingForm.h',['../_switching_form_8h.html',1,'']]], ['switchingformbase',['SwitchingFormBase',['../class_switching_form_base.html',1,'']]], ['switchingtype',['SwitchingType',['../_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1b',1,'PowerElement.h']]], ['swtime',['swTime',['../struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df',1,'SwitchingData']]], @@ -43,7 +47,9 @@ var searchData= ['syncgenerator',['SyncGenerator',['../class_sync_generator.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,'']]], ['syncmotorelectricaldata',['SyncMotorElectricalData',['../struct_sync_motor_electrical_data.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/classes_e.js b/docs/doxygen/html/search/classes_e.js index ba84663..3f9dd56 100644 --- a/docs/doxygen/html/search/classes_e.js +++ b/docs/doxygen/html/search/classes_e.js @@ -15,6 +15,7 @@ var searchData= ['syncgeneratorelectricaldata',['SyncGeneratorElectricalData',['../struct_sync_generator_electrical_data.html',1,'']]], ['syncmachineform',['SyncMachineForm',['../class_sync_machine_form.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,'']]], ['syncmotorelectricaldata',['SyncMotorElectricalData',['../struct_sync_motor_electrical_data.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/files_0.js b/docs/doxygen/html/search/files_0.js index 47a0ae7..1111caf 100644 --- a/docs/doxygen/html/search/files_0.js +++ b/docs/doxygen/html/search/files_0.js @@ -1,5 +1,4 @@ var searchData= [ - ['electriccalculation_2eh',['ElectricCalculation.h',['../_electric_calculation_8h.html',1,'']]], - ['element_2eh',['Element.h',['../_element_8h.html',1,'']]] + ['aboutform_2eh',['AboutForm.h',['../_about_form_8h.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/files_1.js b/docs/doxygen/html/search/files_1.js index dc739ff..b0afef0 100644 --- a/docs/doxygen/html/search/files_1.js +++ b/docs/doxygen/html/search/files_1.js @@ -1,4 +1,4 @@ var searchData= [ - ['fault_2eh',['Fault.h',['../_fault_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 00a21bf..2779e61 100644 --- a/docs/doxygen/html/search/files_2.js +++ b/docs/doxygen/html/search/files_2.js @@ -1,4 +1,13 @@ var searchData= [ - ['powerelement_2eh',['PowerElement.h',['../_power_element_8h.html',1,'']]] + ['camera_2eh',['Camera.h',['../_camera_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,'']]], + ['constantform_2eh',['ConstantForm.h',['../_constant_form_8h.html',1,'']]], + ['controleditor_2eh',['ControlEditor.h',['../_control_editor_8h.html',1,'']]], + ['controlelement_2eh',['ControlElement.h',['../_control_element_8h.html',1,'']]], + ['controlelementcontainer_2eh',['ControlElementContainer.h',['../_control_element_container_8h.html',1,'']]], + ['controlelementsolver_2eh',['ControlElementSolver.h',['../_control_element_solver_8h.html',1,'']]], + ['controlsystemtest_2eh',['ControlSystemTest.h',['../_control_system_test_8h.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/files_3.html b/docs/doxygen/html/search/files_3.html new file mode 100644 index 0000000..d5a9528 --- /dev/null +++ b/docs/doxygen/html/search/files_3.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_3.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/doxygen/html/search/files_3.js b/docs/doxygen/html/search/files_3.js new file mode 100644 index 0000000..000db6c --- /dev/null +++ b/docs/doxygen/html/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['datareport_2eh',['DataReport.h',['../_data_report_8h.html',1,'']]] +]; diff --git a/docs/doxygen/html/search/files_4.html b/docs/doxygen/html/search/files_4.html new file mode 100644 index 0000000..7b4c42a --- /dev/null +++ b/docs/doxygen/html/search/files_4.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_4.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/doxygen/html/search/files_4.js b/docs/doxygen/html/search/files_4.js new file mode 100644 index 0000000..fddb2d9 --- /dev/null +++ b/docs/doxygen/html/search/files_4.js @@ -0,0 +1,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,'']]], + ['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_5.html b/docs/doxygen/html/search/files_5.html new file mode 100644 index 0000000..1f77bb1 --- /dev/null +++ b/docs/doxygen/html/search/files_5.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_5.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/doxygen/html/search/files_5.js b/docs/doxygen/html/search/files_5.js new file mode 100644 index 0000000..48d132c --- /dev/null +++ b/docs/doxygen/html/search/files_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['fault_2eh',['Fault.h',['../_fault_8h.html',1,'']]], + ['filehanding_2eh',['FileHanding.h',['../_file_handing_8h.html',1,'']]] +]; diff --git a/docs/doxygen/html/search/files_6.html b/docs/doxygen/html/search/files_6.html new file mode 100644 index 0000000..7573254 --- /dev/null +++ b/docs/doxygen/html/search/files_6.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_6.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/doxygen/html/search/files_6.js b/docs/doxygen/html/search/files_6.js new file mode 100644 index 0000000..ca1c931 --- /dev/null +++ b/docs/doxygen/html/search/files_6.js @@ -0,0 +1,7 @@ +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,'']]] +]; diff --git a/docs/doxygen/html/search/files_7.html b/docs/doxygen/html/search/files_7.html new file mode 100644 index 0000000..214b329 --- /dev/null +++ b/docs/doxygen/html/search/files_7.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_7.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/doxygen/html/search/files_7.js b/docs/doxygen/html/search/files_7.js new file mode 100644 index 0000000..dd12521 --- /dev/null +++ b/docs/doxygen/html/search/files_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['indmotorform_2eh',['IndMotorForm.h',['../_ind_motor_form_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.html b/docs/doxygen/html/search/files_8.html new file mode 100644 index 0000000..6720c7c --- /dev/null +++ b/docs/doxygen/html/search/files_8.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_8.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/doxygen/html/search/files_8.js b/docs/doxygen/html/search/files_8.js new file mode 100644 index 0000000..24534c5 --- /dev/null +++ b/docs/doxygen/html/search/files_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['limiter_2eh',['Limiter.h',['../_limiter_8h.html',1,'']]], + ['limiterform_2eh',['LimiterForm.h',['../_limiter_form_8h.html',1,'']]], + ['lineform_2eh',['LineForm.h',['../_line_form_8h.html',1,'']]], + ['loadform_2eh',['LoadForm.h',['../_load_form_8h.html',1,'']]] +]; diff --git a/docs/doxygen/html/search/files_9.html b/docs/doxygen/html/search/files_9.html new file mode 100644 index 0000000..fc95877 --- /dev/null +++ b/docs/doxygen/html/search/files_9.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_9.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/doxygen/html/search/files_9.js b/docs/doxygen/html/search/files_9.js new file mode 100644 index 0000000..4722604 --- /dev/null +++ b/docs/doxygen/html/search/files_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['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.html b/docs/doxygen/html/search/files_a.html new file mode 100644 index 0000000..ffe3e9d --- /dev/null +++ b/docs/doxygen/html/search/files_a.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_a.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/doxygen/html/search/files_a.js b/docs/doxygen/html/search/files_a.js new file mode 100644 index 0000000..00a21bf --- /dev/null +++ b/docs/doxygen/html/search/files_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['powerelement_2eh',['PowerElement.h',['../_power_element_8h.html',1,'']]] +]; diff --git a/docs/doxygen/html/search/files_b.html b/docs/doxygen/html/search/files_b.html new file mode 100644 index 0000000..32cd2be --- /dev/null +++ b/docs/doxygen/html/search/files_b.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_b.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/doxygen/html/search/files_b.js b/docs/doxygen/html/search/files_b.js new file mode 100644 index 0000000..c7164b0 --- /dev/null +++ b/docs/doxygen/html/search/files_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['ratelimiter_2eh',['RateLimiter.h',['../_rate_limiter_8h.html',1,'']]], + ['ratelimiterform_2eh',['RateLimiterForm.h',['../_rate_limiter_form_8h.html',1,'']]], + ['reactiveshuntelementform_2eh',['ReactiveShuntElementForm.h',['../_reactive_shunt_element_form_8h.html',1,'']]] +]; diff --git a/docs/doxygen/html/search/files_c.html b/docs/doxygen/html/search/files_c.html new file mode 100644 index 0000000..bb83608 --- /dev/null +++ b/docs/doxygen/html/search/files_c.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_c.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/doxygen/html/search/files_c.js b/docs/doxygen/html/search/files_c.js new file mode 100644 index 0000000..a248cb1 --- /dev/null +++ b/docs/doxygen/html/search/files_c.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['simulationssettingsform_2eh',['SimulationsSettingsForm.h',['../_simulations_settings_form_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,'']]] +]; diff --git a/docs/doxygen/html/search/files_d.html b/docs/doxygen/html/search/files_d.html new file mode 100644 index 0000000..38bf2b3 --- /dev/null +++ b/docs/doxygen/html/search/files_d.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_d.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/doxygen/html/search/files_d.js b/docs/doxygen/html/search/files_d.js new file mode 100644 index 0000000..6324938 --- /dev/null +++ b/docs/doxygen/html/search/files_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['textform_2eh',['TextForm.h',['../_text_form_8h.html',1,'']]], + ['transferfunctionform_2eh',['TransferFunctionForm.h',['../_transfer_function_form_8h.html',1,'']]], + ['transformerform_2eh',['TransformerForm.h',['../_transformer_form_8h.html',1,'']]] +]; diff --git a/docs/doxygen/html/search/files_e.html b/docs/doxygen/html/search/files_e.html new file mode 100644 index 0000000..6f84762 --- /dev/null +++ b/docs/doxygen/html/search/files_e.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_e.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/doxygen/html/search/files_e.js b/docs/doxygen/html/search/files_e.js new file mode 100644 index 0000000..fa01c6a --- /dev/null +++ b/docs/doxygen/html/search/files_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['workspace_2eh',['Workspace.h',['../_workspace_8h.html',1,'']]] +]; diff --git a/docs/doxygen/html/search/functions_11.js b/docs/doxygen/html/search/functions_11.js index 91c4129..9783142 100644 --- a/docs/doxygen/html/search/functions_11.js +++ b/docs/doxygen/html/search/functions_11.js @@ -3,6 +3,7 @@ var searchData= ['_7eelectriccalculation',['~ElectricCalculation',['../class_electric_calculation.html#a1e70291bfa9a0850d9ffcbee44daa2f7',1,'ElectricCalculation']]], ['_7eelement',['~Element',['../class_element.html#a13d54ba9c08b6bec651402f1c2bb002c',1,'Element']]], ['_7efault',['~Fault',['../class_fault.html#a42019654142cd8187b314e43d70262eb',1,'Fault']]], + ['_7emainframe',['~MainFrame',['../class_main_frame.html#a0cfd88ece4836e0ea5430bd55370bf11',1,'MainFrame']]], ['_7eopenglcolour',['~OpenGLColour',['../class_open_g_l_colour.html#a4b9a726773b4c82935f15add648ed2a0',1,'OpenGLColour']]], ['_7epowerelement',['~PowerElement',['../class_power_element.html#a39be7c8e3bdb96b16c26ea7f7d6e6cbf',1,'PowerElement']]] ]; diff --git a/docs/doxygen/html/search/functions_9.js b/docs/doxygen/html/search/functions_9.js index aa08d12..1b13503 100644 --- a/docs/doxygen/html/search/functions_9.js +++ b/docs/doxygen/html/search/functions_9.js @@ -1,5 +1,6 @@ var searchData= [ + ['mainframe',['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="")']]], ['move',['Move',['../class_branch.html#a7cf4b117f43f49bb76cce3df5521fb70',1,'Branch::Move()'],['../class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7',1,'ConnectionLine::Move()'],['../class_control_element.html#ac8bd52ddb8eed51a217fecb2eed65708',1,'ControlElement::Move()'],['../class_element.html#abe884d99d12d5252e18956162115b025',1,'Element::Move()'],['../class_gain.html#aa303bcc736ac5fad1f89c6cc87e859db',1,'Gain::Move()'],['../class_line.html#a3eabf6de2af4ee71f72ce4f091c69978',1,'Line::Move()'],['../class_machines.html#a2f7450283dd36f4fc0847dfd50385c44',1,'Machines::Move()'],['../class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3',1,'Shunt::Move()'],['../class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8',1,'Transformer::Move()']]], ['movenode',['MoveNode',['../class_branch.html#aef2ffe79c9b239fb5a1ad175555a9f5a',1,'Branch::MoveNode()'],['../class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd',1,'Element::MoveNode()'],['../class_line.html#ac8be7d7136d86830c262280f51b79ea4',1,'Line::MoveNode()'],['../class_machines.html#aeab8436c33f74a10e252b418028ec491',1,'Machines::MoveNode()'],['../class_shunt.html#a23d2fed4e9b6a69bc4527b4345bd5bbd',1,'Shunt::MoveNode()'],['../class_transformer.html#a9652232a076cca0fe3753477ec88f63a',1,'Transformer::MoveNode()']]], ['movepickbox',['MovePickbox',['../class_branch.html#af7879ee138170b1421f745f1c942ea05',1,'Branch::MovePickbox()'],['../class_bus.html#ad569e2192bf95efe668d401583382a04',1,'Bus::MovePickbox()'],['../class_element.html#a6f071b6dfd64721ca673bfbe1ca2d525',1,'Element::MovePickbox()'],['../class_line.html#afa67498961416e645e0aa5358959ef1d',1,'Line::MovePickbox()']]] diff --git a/docs/doxygen/html/search/functions_e.js b/docs/doxygen/html/search/functions_e.js index c3bdfae..acf8b7a 100644 --- a/docs/doxygen/html/search/functions_e.js +++ b/docs/doxygen/html/search/functions_e.js @@ -21,6 +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']]], ['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/search/searchdata.js b/docs/doxygen/html/search/searchdata.js index 3b1b25b..f3691ff 100644 --- a/docs/doxygen/html/search/searchdata.js +++ b/docs/doxygen/html/search/searchdata.js @@ -1,10 +1,10 @@ var indexSectionsWithContent = { - 0: "abcdefghilmnoprstuw~", + 0: "abcdefghilmnoprstuwx~", 1: "abcdefgilmnoprstw", - 2: "efp", + 2: "abcdefgilmprstw", 3: "abcdefghimnoprsuw~", - 4: "cms", + 4: "cemsx", 5: "cefps", 6: "fipsu", 7: "p" diff --git a/docs/doxygen/html/search/variables_1.js b/docs/doxygen/html/search/variables_1.js index 51cdb68..94a4e17 100644 --- a/docs/doxygen/html/search/variables_1.js +++ b/docs/doxygen/html/search/variables_1.js @@ -1,4 +1,5 @@ var searchData= [ - ['m',['m',['../struct_integration_constant.html#adafabd0d37a52d4ed054a800cbce3d65',1,'IntegrationConstant']]] + ['ed',['ed',['../struct_sync_machine_model_data.html#ad2bda1ac696b664571e33f657f4a81b6',1,'SyncMachineModelData']]], + ['eq',['eq',['../struct_sync_machine_model_data.html#a810b9e3250ebb8f3d4176f6e5a2b1076',1,'SyncMachineModelData']]] ]; diff --git a/docs/doxygen/html/search/variables_2.js b/docs/doxygen/html/search/variables_2.js index 29e91ca..51cdb68 100644 --- a/docs/doxygen/html/search/variables_2.js +++ b/docs/doxygen/html/search/variables_2.js @@ -1,5 +1,4 @@ var searchData= [ - ['swtime',['swTime',['../struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df',1,'SwitchingData']]], - ['swtype',['swType',['../struct_switching_data.html#af78fb958137a0532ea2a584810708574',1,'SwitchingData']]] + ['m',['m',['../struct_integration_constant.html#adafabd0d37a52d4ed054a800cbce3d65',1,'IntegrationConstant']]] ]; diff --git a/docs/doxygen/html/search/variables_3.html b/docs/doxygen/html/search/variables_3.html new file mode 100644 index 0000000..f95e34c --- /dev/null +++ b/docs/doxygen/html/search/variables_3.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="variables_3.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/doxygen/html/search/variables_3.js b/docs/doxygen/html/search/variables_3.js new file mode 100644 index 0000000..29e91ca --- /dev/null +++ b/docs/doxygen/html/search/variables_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['swtime',['swTime',['../struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df',1,'SwitchingData']]], + ['swtype',['swType',['../struct_switching_data.html#af78fb958137a0532ea2a584810708574',1,'SwitchingData']]] +]; diff --git a/docs/doxygen/html/search/variables_4.html b/docs/doxygen/html/search/variables_4.html new file mode 100644 index 0000000..d7db285 --- /dev/null +++ b/docs/doxygen/html/search/variables_4.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="variables_4.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/docs/doxygen/html/search/variables_4.js b/docs/doxygen/html/search/variables_4.js new file mode 100644 index 0000000..890e89e --- /dev/null +++ b/docs/doxygen/html/search/variables_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['xd',['xd',['../struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330',1,'SyncMachineModelData']]], + ['xq',['xq',['../struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc',1,'SyncMachineModelData']]] +]; diff --git a/docs/doxygen/html/struct_bus_electrical_data-members.html b/docs/doxygen/html/struct_bus_electrical_data-members.html index 2bba844..766f301 100644 --- a/docs/doxygen/html/struct_bus_electrical_data-members.html +++ b/docs/doxygen/html/struct_bus_electrical_data-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/struct_bus_electrical_data.html b/docs/doxygen/html/struct_bus_electrical_data.html index 2a0a984..a3b2417 100644 --- a/docs/doxygen/html/struct_bus_electrical_data.html +++ b/docs/doxygen/html/struct_bus_electrical_data.html @@ -21,6 +21,12 @@ <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> @@ -167,7 +173,7 @@ std::vector< std::complex< double > > </td><td class="memItemRi </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#l00007">7</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#l00024">24</a> of file <a class="el" href="_bus_8h_source.html">Bus.h</a>.</p> </div><h2 class="groupheader">Member Data Documentation</h2> <a id="a3c86be4f2a93b65962dc3b10add7c222"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3c86be4f2a93b65962dc3b10add7c222">◆ </a></span>faultCurrent</h2> @@ -181,7 +187,7 @@ std::vector< std::complex< double > > </td><td class="memItemRi </table> </div><div class="memdoc"> <b>Initial value:</b><div class="fragment"><div class="line">= {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0),</div><div class="line"> std::complex<double>(0.0, 0.0)}</div></div><!-- fragment --> -<p class="definition">Definition at line <a class="el" href="_bus_8h_source.html#l00029">29</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#l00046">46</a> of file <a class="el" href="_bus_8h_source.html">Bus.h</a>.</p> </div> </div> @@ -197,7 +203,7 @@ std::vector< std::complex< double > > </td><td class="memItemRi </table> </div><div class="memdoc"> <b>Initial value:</b><div class="fragment"><div class="line">= {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0),</div><div class="line"> std::complex<double>(0.0, 0.0)}</div></div><!-- fragment --> -<p class="definition">Definition at line <a class="el" href="_bus_8h_source.html#l00031">31</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#l00048">48</a> of file <a class="el" href="_bus_8h_source.html">Bus.h</a>.</p> </div> </div> diff --git a/docs/doxygen/html/struct_capacitor_electrical_data-members.html b/docs/doxygen/html/struct_capacitor_electrical_data-members.html index 50f6760..a590102 100644 --- a/docs/doxygen/html/struct_capacitor_electrical_data-members.html +++ b/docs/doxygen/html/struct_capacitor_electrical_data-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/struct_capacitor_electrical_data.html b/docs/doxygen/html/struct_capacitor_electrical_data.html index e5665ee..c477257 100644 --- a/docs/doxygen/html/struct_capacitor_electrical_data.html +++ b/docs/doxygen/html/struct_capacitor_electrical_data.html @@ -21,6 +21,12 @@ <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> @@ -100,7 +106,7 @@ double </td><td class="memItemRight" valign="bottom"><b>reactivePower</b> = </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#l00008">8</a> of file <a class="el" href="_capacitor_8h_source.html">Capacitor.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_capacitor_8h_source.html#l00025">25</a> of file <a class="el" href="_capacitor_8h_source.html">Capacitor.h</a>.</p> </div><hr/>The documentation for this struct was generated from the following file:<ul> <li>Project/<a class="el" href="_capacitor_8h_source.html">Capacitor.h</a></li> </ul> diff --git a/docs/doxygen/html/struct_elements_lists-members.html b/docs/doxygen/html/struct_elements_lists-members.html index ca0a133..27284b3 100644 --- a/docs/doxygen/html/struct_elements_lists-members.html +++ b/docs/doxygen/html/struct_elements_lists-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/struct_elements_lists.html b/docs/doxygen/html/struct_elements_lists.html index e8241c0..ea962ec 100644 --- a/docs/doxygen/html/struct_elements_lists.html +++ b/docs/doxygen/html/struct_elements_lists.html @@ -21,6 +21,12 @@ <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> @@ -97,7 +103,7 @@ std::vector< <a class="el" href="class_bus.html">Bus</a> * > </td><td </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#l00007">7</a> of file <a class="el" href="_element_data_object_8h_source.html">ElementDataObject.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_data_object_8h_source.html#l00024">24</a> of file <a class="el" href="_element_data_object_8h_source.html">ElementDataObject.h</a>.</p> </div><hr/>The documentation for this struct was generated from the following file:<ul> <li>Project/<a class="el" href="_element_data_object_8h_source.html">ElementDataObject.h</a></li> </ul> diff --git a/docs/doxygen/html/struct_general_data-members.html b/docs/doxygen/html/struct_general_data-members.html index afbfc23..b4478e3 100644 --- a/docs/doxygen/html/struct_general_data-members.html +++ b/docs/doxygen/html/struct_general_data-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/struct_general_data.html b/docs/doxygen/html/struct_general_data.html index 46e0ada..eeed094 100644 --- a/docs/doxygen/html/struct_general_data.html +++ b/docs/doxygen/html/struct_general_data.html @@ -21,6 +21,12 @@ <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> @@ -97,7 +103,7 @@ GUITheme </td><td class="memItemRight" valign="bottom"><b>theme</b> = THEME </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#l00035">35</a> of file <a class="el" href="_properties_data_8h_source.html">PropertiesData.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_properties_data_8h_source.html#l00052">52</a> of file <a class="el" href="_properties_data_8h_source.html">PropertiesData.h</a>.</p> </div><hr/>The documentation for this struct was generated from the following file:<ul> <li>Project/<a class="el" href="_properties_data_8h_source.html">PropertiesData.h</a></li> </ul> diff --git a/docs/doxygen/html/struct_ind_motor_electrical_data-members.html b/docs/doxygen/html/struct_ind_motor_electrical_data-members.html index ee08501..c2d0874 100644 --- a/docs/doxygen/html/struct_ind_motor_electrical_data-members.html +++ b/docs/doxygen/html/struct_ind_motor_electrical_data-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/struct_ind_motor_electrical_data.html b/docs/doxygen/html/struct_ind_motor_electrical_data.html index 8fc36d7..8986f32 100644 --- a/docs/doxygen/html/struct_ind_motor_electrical_data.html +++ b/docs/doxygen/html/struct_ind_motor_electrical_data.html @@ -21,6 +21,12 @@ <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> @@ -106,7 +112,7 @@ double </td><td class="memItemRight" valign="bottom"><b>reactivePower</b> = </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#l00008">8</a> of file <a class="el" href="_ind_motor_8h_source.html">IndMotor.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_ind_motor_8h_source.html#l00025">25</a> of file <a class="el" href="_ind_motor_8h_source.html">IndMotor.h</a>.</p> </div><hr/>The documentation for this struct was generated from the following file:<ul> <li>Project/<a class="el" href="_ind_motor_8h_source.html">IndMotor.h</a></li> </ul> diff --git a/docs/doxygen/html/struct_inductor_electrical_data-members.html b/docs/doxygen/html/struct_inductor_electrical_data-members.html index d654a19..30499cd 100644 --- a/docs/doxygen/html/struct_inductor_electrical_data-members.html +++ b/docs/doxygen/html/struct_inductor_electrical_data-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/struct_inductor_electrical_data.html b/docs/doxygen/html/struct_inductor_electrical_data.html index b7856e6..82acfff 100644 --- a/docs/doxygen/html/struct_inductor_electrical_data.html +++ b/docs/doxygen/html/struct_inductor_electrical_data.html @@ -21,6 +21,12 @@ <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> @@ -100,7 +106,7 @@ double </td><td class="memItemRight" valign="bottom"><b>reactivePower</b> = </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#l00008">8</a> of file <a class="el" href="_inductor_8h_source.html">Inductor.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_inductor_8h_source.html#l00025">25</a> of file <a class="el" href="_inductor_8h_source.html">Inductor.h</a>.</p> </div><hr/>The documentation for this struct was generated from the following file:<ul> <li>Project/<a class="el" href="_inductor_8h_source.html">Inductor.h</a></li> </ul> diff --git a/docs/doxygen/html/struct_integration_constant-members.html b/docs/doxygen/html/struct_integration_constant-members.html index df4fd6f..9aa8eb7 100644 --- a/docs/doxygen/html/struct_integration_constant-members.html +++ b/docs/doxygen/html/struct_integration_constant-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/struct_integration_constant.html b/docs/doxygen/html/struct_integration_constant.html index 0b7d0e2..1974f0b 100644 --- a/docs/doxygen/html/struct_integration_constant.html +++ b/docs/doxygen/html/struct_integration_constant.html @@ -21,6 +21,12 @@ <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> @@ -99,7 +105,7 @@ Public Attributes</h2></td></tr> <div class="textblock"><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#l00088">88</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<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> </div><h2 class="groupheader">Member Data Documentation</h2> <a id="afc3598097377951b84492d087a06b455"></a> <h2 class="memtitle"><span class="permalink"><a href="#afc3598097377951b84492d087a06b455">◆ </a></span>c</h2> @@ -114,7 +120,7 @@ Public Attributes</h2></td></tr> </div><div class="memdoc"> <p>C value </p> -<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00089">89</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00106">106</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> </div> </div> @@ -131,7 +137,7 @@ Public Attributes</h2></td></tr> </div><div class="memdoc"> <p>M value </p> -<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00090">90</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00107">107</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> </div> </div> diff --git a/docs/doxygen/html/struct_line_electrical_data-members.html b/docs/doxygen/html/struct_line_electrical_data-members.html index 085cf66..455a58e 100644 --- a/docs/doxygen/html/struct_line_electrical_data-members.html +++ b/docs/doxygen/html/struct_line_electrical_data-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/struct_line_electrical_data.html b/docs/doxygen/html/struct_line_electrical_data.html index da0f98e..945b056 100644 --- a/docs/doxygen/html/struct_line_electrical_data.html +++ b/docs/doxygen/html/struct_line_electrical_data.html @@ -21,6 +21,12 @@ <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> @@ -148,7 +154,7 @@ std::complex< double > </td><td class="memItemRight" valign="bottom"> </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#l00007">7</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#l00024">24</a> of file <a class="el" href="_line_8h_source.html">Line.h</a>.</p> </div><hr/>The documentation for this struct was generated from the following file:<ul> <li>Project/<a class="el" href="_line_8h_source.html">Line.h</a></li> </ul> diff --git a/docs/doxygen/html/struct_load_electrical_data-members.html b/docs/doxygen/html/struct_load_electrical_data-members.html index ed287c6..51d64a1 100644 --- a/docs/doxygen/html/struct_load_electrical_data-members.html +++ b/docs/doxygen/html/struct_load_electrical_data-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/struct_load_electrical_data.html b/docs/doxygen/html/struct_load_electrical_data.html index d26161a..94a51b4 100644 --- a/docs/doxygen/html/struct_load_electrical_data.html +++ b/docs/doxygen/html/struct_load_electrical_data.html @@ -21,6 +21,12 @@ <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> @@ -109,7 +115,7 @@ LoadType </td><td class="memItemRight" valign="bottom"><b>loadType</b> = CO </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#l00013">13</a> of file <a class="el" href="_load_8h_source.html">Load.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_load_8h_source.html#l00026">26</a> of file <a class="el" href="_load_8h_source.html">Load.h</a>.</p> </div><hr/>The documentation for this struct was generated from the following file:<ul> <li>Project/<a class="el" href="_load_8h_source.html">Load.h</a></li> </ul> diff --git a/docs/doxygen/html/struct_reactive_limits-members.html b/docs/doxygen/html/struct_reactive_limits-members.html index 8dfb4c9..84f1b0e 100644 --- a/docs/doxygen/html/struct_reactive_limits-members.html +++ b/docs/doxygen/html/struct_reactive_limits-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/struct_reactive_limits.html b/docs/doxygen/html/struct_reactive_limits.html index 6ed9284..896e17f 100644 --- a/docs/doxygen/html/struct_reactive_limits.html +++ b/docs/doxygen/html/struct_reactive_limits.html @@ -21,6 +21,12 @@ <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> @@ -106,7 +112,7 @@ ReactiveLimitsType </td><td class="memItemRight" valign="bottom"><b>limitRe </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="_electric_calculation_8h_source.html#l00034">34</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00051">51</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> </div><hr/>The documentation for this struct was generated from the following file:<ul> <li>Project/<a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a></li> </ul> diff --git a/docs/doxygen/html/struct_simulation_data-members.html b/docs/doxygen/html/struct_simulation_data-members.html index 8b95abd..f6fc800 100644 --- a/docs/doxygen/html/struct_simulation_data-members.html +++ b/docs/doxygen/html/struct_simulation_data-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/struct_simulation_data.html b/docs/doxygen/html/struct_simulation_data.html index 1e95c3e..934f897 100644 --- a/docs/doxygen/html/struct_simulation_data.html +++ b/docs/doxygen/html/struct_simulation_data.html @@ -21,6 +21,12 @@ <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> @@ -139,7 +145,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>useCOI</b> = true</td </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#l00011">11</a> of file <a class="el" href="_properties_data_8h_source.html">PropertiesData.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_properties_data_8h_source.html#l00028">28</a> of file <a class="el" href="_properties_data_8h_source.html">PropertiesData.h</a>.</p> </div><hr/>The documentation for this struct was generated from the following file:<ul> <li>Project/<a class="el" href="_properties_data_8h_source.html">PropertiesData.h</a></li> </ul> diff --git a/docs/doxygen/html/struct_switching_data-members.html b/docs/doxygen/html/struct_switching_data-members.html index 6644eae..1e2b624 100644 --- a/docs/doxygen/html/struct_switching_data-members.html +++ b/docs/doxygen/html/struct_switching_data-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/struct_switching_data.html b/docs/doxygen/html/struct_switching_data.html index faba3f6..9d82a97 100644 --- a/docs/doxygen/html/struct_switching_data.html +++ b/docs/doxygen/html/struct_switching_data.html @@ -21,6 +21,12 @@ <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> @@ -99,7 +105,7 @@ Public Attributes</h2></td></tr> <div class="textblock"><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#l00076">76</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<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> </div><h2 class="groupheader">Member Data Documentation</h2> <a id="a3323745bf0a3f6461fbc19bc76a189df"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3323745bf0a3f6461fbc19bc76a189df">◆ </a></span>swTime</h2> @@ -114,7 +120,7 @@ Public Attributes</h2></td></tr> </div><div class="memdoc"> <p>Time of switching </p> -<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00078">78</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00095">95</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> </div> </div> @@ -131,7 +137,7 @@ Public Attributes</h2></td></tr> </div><div class="memdoc"> <p>Type of switching </p> -<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00077">77</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00094">94</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> </div> </div> diff --git a/docs/doxygen/html/struct_sync_generator_electrical_data-members.html b/docs/doxygen/html/struct_sync_generator_electrical_data-members.html index b9a55df..85adf6d 100644 --- a/docs/doxygen/html/struct_sync_generator_electrical_data-members.html +++ b/docs/doxygen/html/struct_sync_generator_electrical_data-members.html @@ -21,6 +21,12 @@ <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> @@ -110,8 +116,10 @@ $(document).ready(function(){initNavTree('struct_sync_generator_electrical_data. <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>icSubEq</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>icTranEd</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>icTranEq</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>inertia</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>initialFieldVoltage</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>id</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>inertia</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>initialFieldVoltage</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>iq</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>maxReactive</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>maxReactiveUnit</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>mechanicalPowerVector</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> @@ -128,6 +136,8 @@ $(document).ready(function(){initNavTree('struct_sync_generator_electrical_data. <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>oldId</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>oldIq</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>oldPe</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>oldSd</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>oldSq</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>pe</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>plotSyncMachine</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>pm</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> @@ -137,9 +147,11 @@ $(document).ready(function(){initNavTree('struct_sync_generator_electrical_data. <tr bgcolor="#f0f0f0"><td class="entry"><b>reactivePower</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>reactivePowerUnit</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>satFactor</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>speed</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>speedGov</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>speedGovSolver</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>sd</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>speed</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>speedGov</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>speedGovSolver</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>sq</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>subEd</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>subEq</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>subTd0</b> (defined in <a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a>)</td><td class="entry"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td><td class="entry"></td></tr> diff --git a/docs/doxygen/html/struct_sync_generator_electrical_data.html b/docs/doxygen/html/struct_sync_generator_electrical_data.html index b9e1484..18b2b3f 100644 --- a/docs/doxygen/html/struct_sync_generator_electrical_data.html +++ b/docs/doxygen/html/struct_sync_generator_electrical_data.html @@ -21,6 +21,12 @@ <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> @@ -273,6 +279,18 @@ double </td><td class="memItemRight" valign="bottom"><b>subEd</b></td></tr> <tr class="memitem:ade7d762b92727bcc58821d3bf9a743ca"><td class="memItemLeft" align="right" valign="top"><a id="ade7d762b92727bcc58821d3bf9a743ca"></a> double </td><td class="memItemRight" valign="bottom"><b>pe</b></td></tr> <tr class="separator:ade7d762b92727bcc58821d3bf9a743ca"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a1d80742377fac4d719085c967d831608"><td class="memItemLeft" align="right" valign="top"><a id="a1d80742377fac4d719085c967d831608"></a> +double </td><td class="memItemRight" valign="bottom"><b>id</b></td></tr> +<tr class="separator:a1d80742377fac4d719085c967d831608"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae06d59efebe1956a310dbc43e4780abe"><td class="memItemLeft" align="right" valign="top"><a id="ae06d59efebe1956a310dbc43e4780abe"></a> +double </td><td class="memItemRight" valign="bottom"><b>iq</b></td></tr> +<tr class="separator:ae06d59efebe1956a310dbc43e4780abe"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a8827b25efb3bb80e511412fcf2e63f42"><td class="memItemLeft" align="right" valign="top"><a id="a8827b25efb3bb80e511412fcf2e63f42"></a> +double </td><td class="memItemRight" valign="bottom"><b>sd</b></td></tr> +<tr class="separator:a8827b25efb3bb80e511412fcf2e63f42"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af4177bcbee0f968986860e9294f70129"><td class="memItemLeft" align="right" valign="top"><a id="af4177bcbee0f968986860e9294f70129"></a> +double </td><td class="memItemRight" valign="bottom"><b>sq</b></td></tr> +<tr class="separator:af4177bcbee0f968986860e9294f70129"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad6cc9505241ac17f3ab1f6011aace0b8"><td class="memItemLeft" align="right" valign="top"><a id="ad6cc9505241ac17f3ab1f6011aace0b8"></a> double </td><td class="memItemRight" valign="bottom"><b>oldId</b></td></tr> <tr class="separator:ad6cc9505241ac17f3ab1f6011aace0b8"><td class="memSeparator" colspan="2"> </td></tr> @@ -282,6 +300,12 @@ double </td><td class="memItemRight" valign="bottom"><b>oldIq</b></td></tr> <tr class="memitem:ad5935c784af5f03f7c9cdba7df88f1de"><td class="memItemLeft" align="right" valign="top"><a id="ad5935c784af5f03f7c9cdba7df88f1de"></a> double </td><td class="memItemRight" valign="bottom"><b>oldPe</b></td></tr> <tr class="separator:ad5935c784af5f03f7c9cdba7df88f1de"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a750898c7ac2b2612a3db657d5459626d"><td class="memItemLeft" align="right" valign="top"><a id="a750898c7ac2b2612a3db657d5459626d"></a> +double </td><td class="memItemRight" valign="bottom"><b>oldSd</b></td></tr> +<tr class="separator:a750898c7ac2b2612a3db657d5459626d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a96752298c088dea20ecc690644ea3a86"><td class="memItemLeft" align="right" valign="top"><a id="a96752298c088dea20ecc690644ea3a86"></a> +double </td><td class="memItemRight" valign="bottom"><b>oldSq</b></td></tr> +<tr class="separator:a96752298c088dea20ecc690644ea3a86"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac092cb3ba2be5fca9881fbaaa6d13ff1"><td class="memItemLeft" align="right" valign="top"><a id="ac092cb3ba2be5fca9881fbaaa6d13ff1"></a> <a class="el" href="struct_integration_constant.html">IntegrationConstant</a> </td><td class="memItemRight" valign="bottom"><b>icSpeed</b></td></tr> <tr class="separator:ac092cb3ba2be5fca9881fbaaa6d13ff1"><td class="memSeparator" colspan="2"> </td></tr> @@ -318,7 +342,7 @@ Machines::SyncMachineModel </td><td class="memItemRight" valign="bottom"><b </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#l00008">8</a> of file <a class="el" href="_sync_generator_8h_source.html">SyncGenerator.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sync_generator_8h_source.html#l00025">25</a> of file <a class="el" href="_sync_generator_8h_source.html">SyncGenerator.h</a>.</p> </div><h2 class="groupheader">Member Data Documentation</h2> <a id="a20b583f81933f0f077fb78851b92e7f5"></a> <h2 class="memtitle"><span class="permalink"><a href="#a20b583f81933f0f077fb78851b92e7f5">◆ </a></span>faultCurrent</h2> @@ -332,7 +356,7 @@ Machines::SyncMachineModel </td><td class="memItemRight" valign="bottom"><b </table> </div><div class="memdoc"> <b>Initial value:</b><div class="fragment"><div class="line">= {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0),</div><div class="line"> std::complex<double>(0.0, 0.0)}</div></div><!-- fragment --> -<p class="definition">Definition at line <a class="el" href="_sync_generator_8h_source.html#l00038">38</a> of file <a class="el" href="_sync_generator_8h_source.html">SyncGenerator.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sync_generator_8h_source.html#l00055">55</a> of file <a class="el" href="_sync_generator_8h_source.html">SyncGenerator.h</a>.</p> </div> </div> diff --git a/docs/doxygen/html/struct_sync_generator_electrical_data.js b/docs/doxygen/html/struct_sync_generator_electrical_data.js index 6427da8..90c661c 100644 --- a/docs/doxygen/html/struct_sync_generator_electrical_data.js +++ b/docs/doxygen/html/struct_sync_generator_electrical_data.js @@ -25,8 +25,10 @@ var struct_sync_generator_electrical_data = [ "icSubEq", "struct_sync_generator_electrical_data.html#a1a1224d8d980c1aa408acd0c731e73c1", null ], [ "icTranEd", "struct_sync_generator_electrical_data.html#a9a534e4c50aba0e6a2cc6b5dbc2d2c03", null ], [ "icTranEq", "struct_sync_generator_electrical_data.html#a599699b6b55ca35dfec13f0a1d58dc37", null ], + [ "id", "struct_sync_generator_electrical_data.html#a1d80742377fac4d719085c967d831608", null ], [ "inertia", "struct_sync_generator_electrical_data.html#abec98d3227f7c93d1caf05c3a885b097", null ], [ "initialFieldVoltage", "struct_sync_generator_electrical_data.html#a452fd337c002c0872ee2f22f8eefeb14", null ], + [ "iq", "struct_sync_generator_electrical_data.html#ae06d59efebe1956a310dbc43e4780abe", null ], [ "maxReactive", "struct_sync_generator_electrical_data.html#adffc8e7c793c2f23dfd5b573a14aba24", null ], [ "maxReactiveUnit", "struct_sync_generator_electrical_data.html#a2a21d204b68e1896bd2aae87ef9e6ec3", null ], [ "mechanicalPowerVector", "struct_sync_generator_electrical_data.html#a58d893dcf9933cf73be0bb12d3472ac6", null ], @@ -43,6 +45,8 @@ var struct_sync_generator_electrical_data = [ "oldId", "struct_sync_generator_electrical_data.html#ad6cc9505241ac17f3ab1f6011aace0b8", null ], [ "oldIq", "struct_sync_generator_electrical_data.html#a124840d7c73161bb4187aa5215969647", null ], [ "oldPe", "struct_sync_generator_electrical_data.html#ad5935c784af5f03f7c9cdba7df88f1de", null ], + [ "oldSd", "struct_sync_generator_electrical_data.html#a750898c7ac2b2612a3db657d5459626d", null ], + [ "oldSq", "struct_sync_generator_electrical_data.html#a96752298c088dea20ecc690644ea3a86", null ], [ "pe", "struct_sync_generator_electrical_data.html#ade7d762b92727bcc58821d3bf9a743ca", null ], [ "plotSyncMachine", "struct_sync_generator_electrical_data.html#abb4e828c8091dd69e2535d72b51fc6e7", null ], [ "pm", "struct_sync_generator_electrical_data.html#a53edeaeb3361da40e3939bfffa401e6c", null ], @@ -52,9 +56,11 @@ var struct_sync_generator_electrical_data = [ "reactivePower", "struct_sync_generator_electrical_data.html#a82bc75dc1c81776dc2998803e0f62890", null ], [ "reactivePowerUnit", "struct_sync_generator_electrical_data.html#a787696951a05eb8000c0495b018246e4", null ], [ "satFactor", "struct_sync_generator_electrical_data.html#ac53d1a5127d7dcd5f8b94d2ca0cae4b7", null ], + [ "sd", "struct_sync_generator_electrical_data.html#a8827b25efb3bb80e511412fcf2e63f42", null ], [ "speed", "struct_sync_generator_electrical_data.html#a5bfbef7dc02c36f5673ebd6c25f9a7a9", null ], [ "speedGov", "struct_sync_generator_electrical_data.html#a1c21e18774280d7dc7378e39eeba04ff", null ], [ "speedGovSolver", "struct_sync_generator_electrical_data.html#a7c4224d05447c55c895fe164d09e0a8c", null ], + [ "sq", "struct_sync_generator_electrical_data.html#af4177bcbee0f968986860e9294f70129", null ], [ "subEd", "struct_sync_generator_electrical_data.html#a64003e1947c801662450bb04723e1696", null ], [ "subEq", "struct_sync_generator_electrical_data.html#ab4c9a79a39406b6e744ab4fb92e94750", null ], [ "subTd0", "struct_sync_generator_electrical_data.html#a73b9df7db4f2d984fb5f976003122131", null ], diff --git a/docs/doxygen/html/struct_sync_machine_model_data-members.html b/docs/doxygen/html/struct_sync_machine_model_data-members.html new file mode 100644 index 0000000..1db2862 --- /dev/null +++ b/docs/doxygen/html/struct_sync_machine_model_data-members.html @@ -0,0 +1,109 @@ +<!-- 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>Member List</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('struct_sync_machine_model_data.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="headertitle"> +<div class="title">SyncMachineModelData Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="struct_sync_machine_model_data.html">SyncMachineModelData</a>, including all inherited members.</p> +<table class="directory"> + <tr class="even"><td class="entry"><a class="el" href="struct_sync_machine_model_data.html#ad2bda1ac696b664571e33f657f4a81b6">ed</a></td><td class="entry"><a class="el" href="struct_sync_machine_model_data.html">SyncMachineModelData</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="struct_sync_machine_model_data.html#a810b9e3250ebb8f3d4176f6e5a2b1076">eq</a></td><td class="entry"><a class="el" href="struct_sync_machine_model_data.html">SyncMachineModelData</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330">xd</a></td><td class="entry"><a class="el" href="struct_sync_machine_model_data.html">SyncMachineModelData</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a></td><td class="entry"><a class="el" href="struct_sync_machine_model_data.html">SyncMachineModelData</a></td><td class="entry"></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="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/struct_sync_machine_model_data.html b/docs/doxygen/html/struct_sync_machine_model_data.html new file mode 100644 index 0000000..83caf36 --- /dev/null +++ b/docs/doxygen/html/struct_sync_machine_model_data.html @@ -0,0 +1,200 @@ +<!-- 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>SyncMachineModelData Struct 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('struct_sync_machine_model_data.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="#pub-attribs">Public Attributes</a> | +<a href="struct_sync_machine_model_data-members.html">List of all members</a> </div> + <div class="headertitle"> +<div class="title">SyncMachineModelData Struct Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p>Synchronous machine data for different models. + <a href="struct_sync_machine_model_data.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_electromechanical_8h_source.html">Electromechanical.h</a>></code></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> +Public Attributes</h2></td></tr> +<tr class="memitem:af75546805bf92eb7a8a7280f7964b330"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330">xd</a></td></tr> +<tr class="separator:af75546805bf92eb7a8a7280f7964b330"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af81596945918e86e56f5822a0ba97fbc"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a></td></tr> +<tr class="separator:af81596945918e86e56f5822a0ba97fbc"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad2bda1ac696b664571e33f657f4a81b6"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_sync_machine_model_data.html#ad2bda1ac696b664571e33f657f4a81b6">ed</a></td></tr> +<tr class="separator:ad2bda1ac696b664571e33f657f4a81b6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a810b9e3250ebb8f3d4176f6e5a2b1076"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_sync_machine_model_data.html#a810b9e3250ebb8f3d4176f6e5a2b1076">eq</a></td></tr> +<tr class="separator:a810b9e3250ebb8f3d4176f6e5a2b1076"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><p>Synchronous machine data for different models. </p> +<p>This struct have the parameters and calculated data that depends on each machine model. </p> + +<p class="definition">Definition at line <a class="el" href="_electromechanical_8h_source.html#l00033">33</a> of file <a class="el" href="_electromechanical_8h_source.html">Electromechanical.h</a>.</p> +</div><h2 class="groupheader">Member Data Documentation</h2> +<a id="ad2bda1ac696b664571e33f657f4a81b6"></a> +<h2 class="memtitle"><span class="permalink"><a href="#ad2bda1ac696b664571e33f657f4a81b6">◆ </a></span>ed</h2> + +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">double SyncMachineModelData::ed</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Direct-axis internal voltage (transient for models 1, 2 and 3; subtransient for models 4 and 5) </p> + +<p class="definition">Definition at line <a class="el" href="_electromechanical_8h_source.html#l00039">39</a> of file <a class="el" href="_electromechanical_8h_source.html">Electromechanical.h</a>.</p> + +</div> +</div> +<a id="a810b9e3250ebb8f3d4176f6e5a2b1076"></a> +<h2 class="memtitle"><span class="permalink"><a href="#a810b9e3250ebb8f3d4176f6e5a2b1076">◆ </a></span>eq</h2> + +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">double SyncMachineModelData::eq</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Quadrature-axis internal voltage (transient for models 1, 2 and 3; subtransient for models 4 and 5) </p> + +<p class="definition">Definition at line <a class="el" href="_electromechanical_8h_source.html#l00041">41</a> of file <a class="el" href="_electromechanical_8h_source.html">Electromechanical.h</a>.</p> + +</div> +</div> +<a id="af75546805bf92eb7a8a7280f7964b330"></a> +<h2 class="memtitle"><span class="permalink"><a href="#af75546805bf92eb7a8a7280f7964b330">◆ </a></span>xd</h2> + +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">double SyncMachineModelData::xd</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Direct-axis reactance (transient for models 1, 2 and 3; subtransient for models 4 and 5) </p> + +<p class="definition">Definition at line <a class="el" href="_electromechanical_8h_source.html#l00035">35</a> of file <a class="el" href="_electromechanical_8h_source.html">Electromechanical.h</a>.</p> + +</div> +</div> +<a id="af81596945918e86e56f5822a0ba97fbc"></a> +<h2 class="memtitle"><span class="permalink"><a href="#af81596945918e86e56f5822a0ba97fbc">◆ </a></span>xq</h2> + +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">double SyncMachineModelData::xq</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Quadrature-axis reactance (transient for models 1, 2 and 3; subtransient for models 4 and 5) </p> + +<p class="definition">Definition at line <a class="el" href="_electromechanical_8h_source.html#l00037">37</a> of file <a class="el" href="_electromechanical_8h_source.html">Electromechanical.h</a>.</p> + +</div> +</div> +<hr/>The documentation for this struct was generated from the following file:<ul> +<li>Project/<a class="el" href="_electromechanical_8h_source.html">Electromechanical.h</a></li> +</ul> +</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="struct_sync_machine_model_data.html">SyncMachineModelData</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/struct_sync_machine_model_data.js b/docs/doxygen/html/struct_sync_machine_model_data.js new file mode 100644 index 0000000..148839a --- /dev/null +++ b/docs/doxygen/html/struct_sync_machine_model_data.js @@ -0,0 +1,7 @@ +var struct_sync_machine_model_data = +[ + [ "ed", "struct_sync_machine_model_data.html#ad2bda1ac696b664571e33f657f4a81b6", null ], + [ "eq", "struct_sync_machine_model_data.html#a810b9e3250ebb8f3d4176f6e5a2b1076", null ], + [ "xd", "struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330", null ], + [ "xq", "struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc", null ] +];
\ No newline at end of file diff --git a/docs/doxygen/html/struct_sync_motor_electrical_data-members.html b/docs/doxygen/html/struct_sync_motor_electrical_data-members.html index 3d1ad0e..db32473 100644 --- a/docs/doxygen/html/struct_sync_motor_electrical_data-members.html +++ b/docs/doxygen/html/struct_sync_motor_electrical_data-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/struct_sync_motor_electrical_data.html b/docs/doxygen/html/struct_sync_motor_electrical_data.html index 339aeb6..b036156 100644 --- a/docs/doxygen/html/struct_sync_motor_electrical_data.html +++ b/docs/doxygen/html/struct_sync_motor_electrical_data.html @@ -21,6 +21,12 @@ <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> @@ -318,7 +324,7 @@ Machines::SyncMachineModel </td><td class="memItemRight" valign="bottom"><b </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#l00008">8</a> of file <a class="el" href="_sync_motor_8h_source.html">SyncMotor.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sync_motor_8h_source.html#l00025">25</a> of file <a class="el" href="_sync_motor_8h_source.html">SyncMotor.h</a>.</p> </div><h2 class="groupheader">Member Data Documentation</h2> <a id="ae97bcbb0f856bd793315d2319572bdd4"></a> <h2 class="memtitle"><span class="permalink"><a href="#ae97bcbb0f856bd793315d2319572bdd4">◆ </a></span>faultCurrent</h2> @@ -332,7 +338,7 @@ Machines::SyncMachineModel </td><td class="memItemRight" valign="bottom"><b </table> </div><div class="memdoc"> <b>Initial value:</b><div class="fragment"><div class="line">= {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0),</div><div class="line"> std::complex<double>(0.0, 0.0)}</div></div><!-- fragment --> -<p class="definition">Definition at line <a class="el" href="_sync_motor_8h_source.html#l00038">38</a> of file <a class="el" href="_sync_motor_8h_source.html">SyncMotor.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sync_motor_8h_source.html#l00055">55</a> of file <a class="el" href="_sync_motor_8h_source.html">SyncMotor.h</a>.</p> </div> </div> diff --git a/docs/doxygen/html/struct_transfer_function_1_1_space_state-members.html b/docs/doxygen/html/struct_transfer_function_1_1_space_state-members.html index 84e0bd5..64a4af2 100644 --- a/docs/doxygen/html/struct_transfer_function_1_1_space_state-members.html +++ b/docs/doxygen/html/struct_transfer_function_1_1_space_state-members.html @@ -21,6 +21,12 @@ <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> 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 02dd918..aea4d0b 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 @@ -21,6 +21,12 @@ <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> @@ -103,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#l00014">14</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#l00031">31</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> diff --git a/docs/doxygen/html/struct_transformer_electrical_data-members.html b/docs/doxygen/html/struct_transformer_electrical_data-members.html index 51925b3..8b12a58 100644 --- a/docs/doxygen/html/struct_transformer_electrical_data-members.html +++ b/docs/doxygen/html/struct_transformer_electrical_data-members.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/struct_transformer_electrical_data.html b/docs/doxygen/html/struct_transformer_electrical_data.html index 1cd42a4..a26f1fb 100644 --- a/docs/doxygen/html/struct_transformer_electrical_data.html +++ b/docs/doxygen/html/struct_transformer_electrical_data.html @@ -21,6 +21,12 @@ <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> @@ -137,10 +143,10 @@ double </td><td class="memItemRight" valign="bottom"><b>phaseShift</b> = 0. bool </td><td class="memItemRight" valign="bottom"><b>useTransformerPower</b> = false</td></tr> <tr class="separator:a21d613ccca353784d8adfd0bfdaca0ff"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af19976dfba78777187211ab79581396e"><td class="memItemLeft" align="right" valign="top"><a id="af19976dfba78777187211ab79581396e"></a> -std::complex< double > </td><td class="memItemRight" valign="bottom"><b>current</b> [2] = { std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0) }</td></tr> +std::complex< double > </td><td class="memItemRight" valign="bottom"><b>current</b> [2] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0)}</td></tr> <tr class="separator:af19976dfba78777187211ab79581396e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a343366e4142013e724874e6bf79acc67"><td class="memItemLeft" align="right" valign="top"><a id="a343366e4142013e724874e6bf79acc67"></a> -std::complex< double > </td><td class="memItemRight" valign="bottom"><b>powerFlow</b> [2] = { std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0) }</td></tr> +std::complex< double > </td><td class="memItemRight" valign="bottom"><b>powerFlow</b> [2] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0)}</td></tr> <tr class="separator:a343366e4142013e724874e6bf79acc67"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab6606d2f93aa369b7a3173e61d44c8f3"><td class="memItemLeft" align="right" valign="top"><a id="ab6606d2f93aa369b7a3173e61d44c8f3"></a> double </td><td class="memItemRight" valign="bottom"><b>zeroResistance</b> = 0.0</td></tr> @@ -166,7 +172,7 @@ std::complex< double > </td><td class="memItemRight" valign="bottom"> </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#l00020">20</a> of file <a class="el" href="_transformer_8h_source.html">Transformer.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transformer_8h_source.html#l00037">37</a> of file <a class="el" href="_transformer_8h_source.html">Transformer.h</a>.</p> </div><hr/>The documentation for this struct was generated from the following file:<ul> <li>Project/<a class="el" href="_transformer_8h_source.html">Transformer.h</a></li> </ul> diff --git a/docs/doxygen/html/wx_g_l_string_8cpp_source.html b/docs/doxygen/html/wx_g_l_string_8cpp_source.html index 822d9f7..2e21bde 100644 --- a/docs/doxygen/html/wx_g_l_string_8cpp_source.html +++ b/docs/doxygen/html/wx_g_l_string_8cpp_source.html @@ -21,6 +21,12 @@ <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> diff --git a/docs/doxygen/html/wx_g_l_string_8h_source.html b/docs/doxygen/html/wx_g_l_string_8h_source.html index 338c026..8b47fa5 100644 --- a/docs/doxygen/html/wx_g_l_string_8h_source.html +++ b/docs/doxygen/html/wx_g_l_string_8h_source.html @@ -21,6 +21,12 @@ <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> |