Gmeter::Gmeter(XMLNode gaugeNode) : MarkedDial(gaugeNode) { m_minValue = 0.0; m_maxValue = 0.0; m_PhysicalSize.x = 44.0; m_PhysicalSize.y = 50.0; // Set the gauge label if (gaugeNode.HasChild("Text")) { SetLabel(gaugeNode.GetChild("Text").GetText()); } else { SetLabel(""); } // Set the yellow, red and absolute limits if (gaugeNode.HasChild("Limit")) { double maxAbsolute = 0.0, minYellow = 0.0, minRed = 0.0; // temp variables XMLNode::NodeList nodeList = gaugeNode.GetChildList("Limit"); XMLNode::NodeList::iterator iter; for (iter = nodeList.begin(); iter != nodeList.end(); ++iter) { string color = (*iter).GetProperty("color"); if (color == "yellow") { minYellow = (*iter).GetTextAsDouble(); } else if (color == "red") { minRed = (*iter).GetTextAsDouble(); } else if (color == "") { maxAbsolute = (*iter).GetTextAsDouble(); } } SetMinMax(-1 * fabs(maxAbsolute), fabs(maxAbsolute)); SetColourRanges(fabs(minYellow), fabs(minRed)); } else { SetMinMax(-8.0, 8.0); SetColourRanges(2.0, 4.0); } }
EngineDial::EngineDial(XMLNode gaugeNode) : GenericDial(gaugeNode) { m_PhysicalSize.x = 42.0; m_PhysicalSize.y = 79.0; // Set the gauge label if (gaugeNode.HasChild("Text")) { SetLabel(gaugeNode.GetChild("Text").GetText()); } else { SetLabel(""); } // Set the yellow and red limits if (gaugeNode.HasChild("Limit")) { double minYellow = 0.0, minRed = 0.0; // temp variables XMLNode::NodeList nodeList = gaugeNode.GetChildList("Limit"); XMLNode::NodeList::iterator iter; for (iter = nodeList.begin(); iter != nodeList.end(); ++iter) { string color = (*iter).GetProperty("color"); if (color == "yellow") { minYellow = (*iter).GetTextAsDouble(); } else if (color == "red") { minRed = (*iter).GetTextAsDouble(); } } SetColourRanges(minYellow, minRed); } else { SetColourRanges(0.0, 0.0); } }
void GaugePanel::InitFromXMLNode(XMLNode gaugeNode) { Check(gaugeNode.IsValid() && gaugeNode.GetName() == "Panel"); // Create gauges as described by the XML file XMLNode::NodeList nodeList = gaugeNode.GetChildList("Gauge"); XMLNode::NodeList::iterator iter; for (iter = nodeList.begin(); iter != nodeList.end(); ++iter) { Gauge *pGauge = GaugeFactory::CreateGaugeInstance(*iter); if (pGauge != NULL) { pGauge->SetParentRenderObject(this); AddGauge(pGauge); } } double scale = globals->m_PrefManager->GetPrefD("DefaultPanelScale"); double zoom = globals->m_PrefManager->GetPrefD("Zoom"); double x, y; // temp variables // Set the units per pixel if (gaugeNode.HasChild("UnitsPerPixel")) { SetUnitsPerPixel(gaugeNode.GetChild("UnitsPerPixel").GetTextAsDouble()); } else { SetUnitsPerPixel(globals->m_PrefManager->GetPrefD("UnitsPerPixel")); } // Set the scale if (gaugeNode.HasChild("Scale")) { gaugeNode.GetChild("Scale").GetTextAsCoord(x, y); SetScale(x * zoom * scale, y * zoom * scale); } else { SetScale(zoom * scale, zoom * scale); } // Set the position if (gaugeNode.HasChild("Position")) { gaugeNode.GetChild("Position").GetTextAsCoord(x, y); SetPosition(x * zoom, y * zoom); } else { SetPosition(0.0, 0.0); } // Set the size if (gaugeNode.HasChild("Size")) { gaugeNode.GetChild("Size").GetTextAsCoord(x, y); SetSize(x, y); } else { SetSize(0.0, 0.0); } // Set the gauge outline if (gaugeNode.HasChild("Outline")) { SetPanelOutline(gaugeNode.GetChild("Outline").GetTextAsBool()); } }