void PowerLawWidgetManager::loadFromXml(TiXmlElement *_root) { std::vector < PowerLawWidget * > widgets; double valFactor, valExponent, valOffset, valMin, valMax; for (auto child = _root->FirstChildElement("PowerLawParameters"); child; child = child->NextSiblingElement()) { auto r0 = child->QueryDoubleAttribute("factor", &valFactor); auto r1 = child->QueryDoubleAttribute("exponent", &valExponent); auto r2 = child->QueryDoubleAttribute("offset", &valOffset); auto r3 = child->QueryDoubleAttribute("rangeMin", &valMin); auto r4 = child->QueryDoubleAttribute("rangeMax", &valMax); if (r0 == TIXML_SUCCESS && r1 == TIXML_SUCCESS && r2 == TIXML_SUCCESS && r3 == TIXML_SUCCESS && r4 == TIXML_SUCCESS) { auto w = new PowerLawWidget(); w->setFactor(valFactor); w->setExponent(valExponent); w->setOffset(valOffset); w->setMin(valMin); w->setMax(valMax); widgets.push_back(w); } else { QMessageBox::warning(0, "failed to load power laws", "could not load power laws: invalid file structure."); return; } } setPowerLawWidgets(widgets); }
int TiXmlElement::QueryFloatAttribute( const char* name, float* dval ) const { double dummy(static_cast<double>(*dval)); int retVal = QueryDoubleAttribute(name, &dummy); *dval = static_cast<float>(dummy); return retVal; }