void NWWriter_OpenDrive::writeElevationProfile(const PositionVector& shape, OutputDevice& device, const OutputDevice_String& elevationDevice) { // check if the shape is flat bool flat = true; double z = shape.size() == 0 ? 0 : shape[0].z(); for (int i = 1; i < (int)shape.size(); ++i) { if (fabs(shape[i].z() - z) > NUMERICAL_EPS) { flat = false; break; } } device << " <elevationProfile>\n"; if (flat) { device << " <elevation s=\"0\" a=\"" << z << "\" b=\"0\" c=\"0\" d=\"0\"/>\n"; } else { device << elevationDevice.getString(); } device << " </elevationProfile>\n"; }
void GUICompleteSchemeStorage::writeSettings(FXApp* app) { const std::vector<std::string>& names = getNames(); app->reg().writeIntEntry("VisualizationSettings", "settingNo", (FXint) names.size() - myNumInitialSettings); size_t gidx = 0; for (std::vector<std::string>::const_iterator i = names.begin() + myNumInitialSettings; i != names.end(); ++i, ++gidx) { const GUIVisualizationSettings& item = mySettings.find(*i)->second; std::string sname = "visset#" + toString(gidx); app->reg().writeStringEntry("VisualizationSettings", sname.c_str(), item.name.c_str()); OutputDevice_String dev; item.save(dev); std::string content = dev.getString(); app->reg().writeIntEntry(sname.c_str(), "xmlSize", (FXint)(content.size())); const unsigned maxSize = 1500; // this is a fox limitation for registry entries for (unsigned int i = 0; i < content.size(); i += maxSize) { const std::string b = content.substr(i, maxSize); app->reg().writeStringEntry(sname.c_str(), ("xml" + toString(i / maxSize)).c_str(), b.c_str()); } } }