From cef9e14b989a3ba19321e4fe215ada2ee3998037 Mon Sep 17 00:00:00 2001 From: Thales Lima Oliveira Date: Wed, 3 Jan 2018 19:01:57 -0200 Subject: Some file hand. organization and generalization --- Project/ControlElement.cpp | 108 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 99 insertions(+), 9 deletions(-) (limited to 'Project/ControlElement.cpp') diff --git a/Project/ControlElement.cpp b/Project/ControlElement.cpp index 51f3a2a..f13836d 100644 --- a/Project/ControlElement.cpp +++ b/Project/ControlElement.cpp @@ -108,9 +108,7 @@ void ControlElement::DrawNodes() const for(auto it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) { Node* node = *it; DrawCircle(node->GetPosition(), node->GetRadius(), 10, GL_POLYGON); - if(node->GetNodeType() == Node::NODE_IN) { - DrawTriangle(node->GetInTrianglePts()); - } + if(node->GetNodeType() == Node::NODE_IN) { DrawTriangle(node->GetInTrianglePts()); } } } @@ -118,17 +116,13 @@ void ControlElement::StartMove(wxPoint2DDouble position) { m_moveStartPt = position; m_movePos = m_position; - for(int i = 0; i < (int)m_nodeList.size(); ++i) { - m_nodeList[i]->StartMove(position); - } + for(int i = 0; i < (int)m_nodeList.size(); ++i) { m_nodeList[i]->StartMove(position); } } void ControlElement::Move(wxPoint2DDouble position) { SetPosition(m_movePos + position - m_moveStartPt); - for(int i = 0; i < (int)m_nodeList.size(); ++i) { - m_nodeList[i]->Move(position); - } + for(int i = 0; i < (int)m_nodeList.size(); ++i) { m_nodeList[i]->Move(position); } } bool ControlElement::Solve(double* input, double timeStep) @@ -146,3 +140,99 @@ void ControlElement::ReplaceNode(Node* oldNode, Node* newNode) if(m_nodeList[i] == oldNode) m_nodeList[i] = newNode; } } + +void ControlElement::SaveControlNodes(rapidxml::xml_document<>& doc, + rapidxml::xml_node<>* nodesN, + std::vector nodeList) +{ + int id = 0; + for(auto it = nodeList.begin(), itEnd = nodeList.end(); it != itEnd; ++it) { + Node* node = *it; + node->SetID(id); + auto nodeN = XMLParser::AppendNode(doc, nodesN, "Node"); + XMLParser::SetNodeAttribute(doc, nodeN, "ID", id); + auto nodePosition = XMLParser::AppendNode(doc, nodeN, "Position"); + auto posNodeX = XMLParser::AppendNode(doc, nodePosition, "X"); + XMLParser::SetNodeValue(doc, posNodeX, node->GetPosition().m_x); + auto posNodeY = XMLParser::AppendNode(doc, nodePosition, "Y"); + XMLParser::SetNodeValue(doc, posNodeY, node->GetPosition().m_y); + auto angle = XMLParser::AppendNode(doc, nodeN, "Angle"); + XMLParser::SetNodeValue(doc, angle, node->GetAngle()); + auto nodeType = XMLParser::AppendNode(doc, nodeN, "Type"); + XMLParser::SetNodeValue(doc, nodeType, node->GetNodeType()); + id++; + } +} + +ControlElement* ControlElement::GetControlElementFromID(std::vector elementList, int id) +{ + for(auto it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) { + ControlElement* element = *it; + if(element->GetID() == id) return element; + } + return NULL; +} + +bool ControlElement::OpenControlNodeList(rapidxml::xml_node<>* elementNode, std::vector& nodeVector) +{ + auto nodeList = elementNode->first_node("NodeList"); + if(!nodeList) return false; + auto nodeN = nodeList->first_node("Node"); + while(nodeN) { + auto nodePosition = nodeN->first_node("Position"); + double nodePosX = XMLParser::GetNodeValueDouble(nodePosition, "X"); + double nodePosY = XMLParser::GetNodeValueDouble(nodePosition, "Y"); + double nodeAngle = XMLParser::GetNodeValueDouble(nodeN, "Angle"); + Node::NodeType nodeType = static_cast(XMLParser::GetNodeValueInt(nodeN, "Type")); + Node* node = new Node(wxPoint2DDouble(nodePosX, nodePosY), nodeType, 2.0); + node->SetAngle(nodeAngle); + nodeVector.push_back(node); + nodeN = nodeN->next_sibling("Node"); + } + return true; +} + +void ControlElement::SaveControlNodes(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementNode) +{ + auto nodeList = XMLParser::AppendNode(doc, elementNode, "NodeList"); + int id = 0; + for(auto it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) { + Node* node = *it; + node->SetID(id); + auto nodeN = XMLParser::AppendNode(doc, nodeList, "Node"); + XMLParser::SetNodeAttribute(doc, nodeN, "ID", id); + auto nodePosition = XMLParser::AppendNode(doc, nodeN, "Position"); + auto posNodeX = XMLParser::AppendNode(doc, nodePosition, "X"); + XMLParser::SetNodeValue(doc, posNodeX, node->GetPosition().m_x); + auto posNodeY = XMLParser::AppendNode(doc, nodePosition, "Y"); + XMLParser::SetNodeValue(doc, posNodeY, node->GetPosition().m_y); + auto angle = XMLParser::AppendNode(doc, nodeN, "Angle"); + XMLParser::SetNodeValue(doc, angle, node->GetAngle()); + auto nodeType = XMLParser::AppendNode(doc, nodeN, "Type"); + XMLParser::SetNodeValue(doc, nodeType, node->GetNodeType()); + id++; + } +} + +bool ControlElement::OpenControlNodes(rapidxml::xml_node<>* elementNode) +{ + // Clear old nodes + for(auto it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) delete *it; + m_nodeList.clear(); + + auto nodeList = elementNode->first_node("NodeList"); + if(!nodeList) return false; + auto nodeN = nodeList->first_node("Node"); + while(nodeN) { + auto nodePosition = nodeN->first_node("Position"); + double nodePosX = XMLParser::GetNodeValueDouble(nodePosition, "X"); + double nodePosY = XMLParser::GetNodeValueDouble(nodePosition, "Y"); + double nodeAngle = XMLParser::GetNodeValueDouble(nodeN, "Angle"); + Node::NodeType nodeType = static_cast(XMLParser::GetNodeValueInt(nodeN, "Type")); + Node* node = new Node(wxPoint2DDouble(nodePosX, nodePosY), nodeType, 2.0); + node->SetAngle(nodeAngle); + m_nodeList.push_back(node); + nodeN = nodeN->next_sibling("Node"); + } + return true; +} -- cgit From 76df1de5e2307229da9870306e4a1031170aaadf Mon Sep 17 00:00:00 2001 From: Thales Lima Oliveira Date: Thu, 4 Jan 2018 19:11:08 -0200 Subject: Control elements file handling reorganized --- Project/ControlElement.cpp | 42 ------------------------------------------ 1 file changed, 42 deletions(-) (limited to 'Project/ControlElement.cpp') diff --git a/Project/ControlElement.cpp b/Project/ControlElement.cpp index f13836d..f67cef1 100644 --- a/Project/ControlElement.cpp +++ b/Project/ControlElement.cpp @@ -141,29 +141,6 @@ void ControlElement::ReplaceNode(Node* oldNode, Node* newNode) } } -void ControlElement::SaveControlNodes(rapidxml::xml_document<>& doc, - rapidxml::xml_node<>* nodesN, - std::vector nodeList) -{ - int id = 0; - for(auto it = nodeList.begin(), itEnd = nodeList.end(); it != itEnd; ++it) { - Node* node = *it; - node->SetID(id); - auto nodeN = XMLParser::AppendNode(doc, nodesN, "Node"); - XMLParser::SetNodeAttribute(doc, nodeN, "ID", id); - auto nodePosition = XMLParser::AppendNode(doc, nodeN, "Position"); - auto posNodeX = XMLParser::AppendNode(doc, nodePosition, "X"); - XMLParser::SetNodeValue(doc, posNodeX, node->GetPosition().m_x); - auto posNodeY = XMLParser::AppendNode(doc, nodePosition, "Y"); - XMLParser::SetNodeValue(doc, posNodeY, node->GetPosition().m_y); - auto angle = XMLParser::AppendNode(doc, nodeN, "Angle"); - XMLParser::SetNodeValue(doc, angle, node->GetAngle()); - auto nodeType = XMLParser::AppendNode(doc, nodeN, "Type"); - XMLParser::SetNodeValue(doc, nodeType, node->GetNodeType()); - id++; - } -} - ControlElement* ControlElement::GetControlElementFromID(std::vector elementList, int id) { for(auto it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) { @@ -173,25 +150,6 @@ ControlElement* ControlElement::GetControlElementFromID(std::vector* elementNode, std::vector& nodeVector) -{ - auto nodeList = elementNode->first_node("NodeList"); - if(!nodeList) return false; - auto nodeN = nodeList->first_node("Node"); - while(nodeN) { - auto nodePosition = nodeN->first_node("Position"); - double nodePosX = XMLParser::GetNodeValueDouble(nodePosition, "X"); - double nodePosY = XMLParser::GetNodeValueDouble(nodePosition, "Y"); - double nodeAngle = XMLParser::GetNodeValueDouble(nodeN, "Angle"); - Node::NodeType nodeType = static_cast(XMLParser::GetNodeValueInt(nodeN, "Type")); - Node* node = new Node(wxPoint2DDouble(nodePosX, nodePosY), nodeType, 2.0); - node->SetAngle(nodeAngle); - nodeVector.push_back(node); - nodeN = nodeN->next_sibling("Node"); - } - return true; -} - void ControlElement::SaveControlNodes(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementNode) { auto nodeList = XMLParser::AppendNode(doc, elementNode, "NodeList"); -- cgit From c11a42ee83fcf535557d4f2cc259efae2da1b7ff Mon Sep 17 00:00:00 2001 From: Thales Lima Oliveira Date: Mon, 8 Jan 2018 20:07:47 -0200 Subject: File handling and control initialization organized --- Project/ControlElement.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'Project/ControlElement.cpp') diff --git a/Project/ControlElement.cpp b/Project/ControlElement.cpp index f67cef1..5e8a80d 100644 --- a/Project/ControlElement.cpp +++ b/Project/ControlElement.cpp @@ -194,3 +194,10 @@ bool ControlElement::OpenControlNodes(rapidxml::xml_node<>* elementNode) } return true; } + +bool ControlElement::Initialize() +{ + m_solved = false; + m_output = 0.0; + return true; +} -- cgit