summaryrefslogtreecommitdiffstats
path: root/Project/Text.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Project/Text.cpp')
-rw-r--r--Project/Text.cpp96
1 files changed, 68 insertions, 28 deletions
diff --git a/Project/Text.cpp b/Project/Text.cpp
index fd1d986..0697ac5 100644
--- a/Project/Text.cpp
+++ b/Project/Text.cpp
@@ -15,22 +15,22 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-#include "TextForm.h"
#include "Text.h"
+#include "TextForm.h"
#ifdef USING_WX_3_0_X
#include "DegreesAndRadians.h"
#endif
-#include "ElectricCalculation.h"
#include "Bus.h"
+#include "Capacitor.h"
+#include "ElectricCalculation.h"
+#include "IndMotor.h"
+#include "Inductor.h"
#include "Line.h"
-#include "Transformer.h"
+#include "Load.h"
#include "SyncGenerator.h"
-#include "IndMotor.h"
#include "SyncMotor.h"
-#include "Load.h"
-#include "Inductor.h"
-#include "Capacitor.h"
+#include "Transformer.h"
Text::Text() : GraphicalElement() { SetText(m_text); }
Text::Text(wxPoint2DDouble position) : GraphicalElement()
@@ -90,9 +90,7 @@ void Text::SetText(wxString text)
m_text = text;
// Clear OpenGL text list
- for(auto it = m_openGLTextList.begin(), itEnd = m_openGLTextList.end(); it != itEnd; ++it) {
- delete *it;
- }
+ for(auto it = m_openGLTextList.begin(), itEnd = m_openGLTextList.end(); it != itEnd; ++it) { delete *it; }
m_openGLTextList.clear();
m_numberOfLines = m_text.Freq('\n') + 1;
@@ -190,9 +188,9 @@ void Text::UpdateText(double systemPowerBase)
SetText(str);
} break;
case UNIT_A: {
- wxString str = "Ia = " +
- wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) +
- " A";
+ wxString str =
+ "Ia = " + wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) +
+ " A";
str += "\nIb = " +
wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + " A";
str += "\nIc = " +
@@ -227,9 +225,9 @@ void Text::UpdateText(double systemPowerBase)
SetText(str);
} break;
case UNIT_V: {
- wxString str = "Va = " +
- wxString::FromDouble(faultVoltage[0] * baseVoltage, m_decimalPlaces) +
- " V";
+ wxString str =
+ "Va = " + wxString::FromDouble(faultVoltage[0] * baseVoltage, m_decimalPlaces) +
+ " V";
str += "\nVb = " +
wxString::FromDouble(faultVoltage[1] * baseVoltage, m_decimalPlaces) + " V";
str += "\nVc = " +
@@ -344,9 +342,9 @@ void Text::UpdateText(double systemPowerBase)
SetText(str);
} break;
case UNIT_A: {
- wxString str = "Ia = " +
- wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) +
- " A";
+ wxString str =
+ "Ia = " + wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) +
+ " A";
str += "\nIb = " +
wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + " A";
str += "\nIc = " +
@@ -480,9 +478,9 @@ void Text::UpdateText(double systemPowerBase)
SetText(str);
} break;
case UNIT_A: {
- wxString str = "Ia = " +
- wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) +
- " A";
+ wxString str =
+ "Ia = " + wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) +
+ " A";
str += "\nIb = " +
wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + " A";
str += "\nIc = " +
@@ -627,12 +625,14 @@ void Text::UpdateText(double systemPowerBase)
"Ia = " +
wxString::FromDouble(faultCurrent[0] * baseCurrent[m_direction], m_decimalPlaces) +
" A";
- str += "\nIb = " + wxString::FromDouble(faultCurrent[1] * baseCurrent[m_direction],
- m_decimalPlaces) +
- " A";
- str += "\nIc = " + wxString::FromDouble(faultCurrent[2] * baseCurrent[m_direction],
- m_decimalPlaces) +
- " A";
+ str +=
+ "\nIb = " +
+ wxString::FromDouble(faultCurrent[1] * baseCurrent[m_direction], m_decimalPlaces) +
+ " A";
+ str +=
+ "\nIc = " +
+ wxString::FromDouble(faultCurrent[2] * baseCurrent[m_direction], m_decimalPlaces) +
+ " A";
SetText(str);
} break;
case UNIT_kA: {
@@ -936,3 +936,43 @@ bool Text::IsGLTextOK()
}
return isOk;
}
+
+rapidxml::xml_node<>* Text::SaveElement(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementListNode)
+{
+ auto elementNode = XMLParser::AppendNode(doc, elementListNode, "Text");
+ XMLParser::SetNodeAttribute(doc, elementNode, "ID", m_elementID);
+
+ SaveCADProperties(doc, elementNode);
+
+ auto textProperties = XMLParser::AppendNode(doc, elementNode, "TextProperties");
+ auto elementType = XMLParser::AppendNode(doc, textProperties, "ElementType");
+ XMLParser::SetNodeValue(doc, elementType, m_elementType);
+ auto elementNumber = XMLParser::AppendNode(doc, textProperties, "ElementNumber");
+ XMLParser::SetNodeValue(doc, elementNumber, m_elementNumber);
+ auto dataType = XMLParser::AppendNode(doc, textProperties, "DataType");
+ XMLParser::SetNodeValue(doc, dataType, m_dataType);
+ auto dataUnit = XMLParser::AppendNode(doc, textProperties, "DataUnit");
+ XMLParser::SetNodeValue(doc, dataUnit, m_unit);
+ auto direction = XMLParser::AppendNode(doc, textProperties, "Direction");
+ XMLParser::SetNodeValue(doc, direction, m_direction);
+ auto decimalPlaces = XMLParser::AppendNode(doc, textProperties, "DecimalPlaces");
+ XMLParser::SetNodeValue(doc, decimalPlaces, m_decimalPlaces);
+
+ return elementNode;
+}
+
+bool Text::OpenElement(rapidxml::xml_node<>* elementNode)
+{
+ if(!OpenCADProperties(elementNode)) return false;
+
+ auto textProperties = elementNode->first_node("TextProperties");
+ if(!textProperties) return false;
+
+ SetElementType(static_cast<ElementType>(XMLParser::GetNodeValueDouble(textProperties, "ElementType")));
+ SetDataType(static_cast<DataType>(XMLParser::GetNodeValueDouble(textProperties, "DataType")));
+ SetUnit(static_cast<ElectricalUnit>(XMLParser::GetNodeValueDouble(textProperties, "DataUnit")));
+ SetDirection(XMLParser::GetNodeValueDouble(textProperties, "Direction"));
+ SetDecimalPlaces(XMLParser::GetNodeValueDouble(textProperties, "DecimalPlaces"));
+ SetElementNumber(XMLParser::GetNodeValueInt(textProperties, "ElementNumber"));
+ return true;
+}