void MaterialAttributes::SetFromNode(DataNode *parentNode) { if(parentNode == 0) return; DataNode *searchNode = parentNode->GetNode("MaterialAttributes"); if(searchNode == 0) return; DataNode *node; if((node = searchNode->GetNode("smoothing")) != 0) SetSmoothing(node->AsBool()); if((node = searchNode->GetNode("forceMIR")) != 0) SetForceMIR(node->AsBool()); if((node = searchNode->GetNode("cleanZonesOnly")) != 0) SetCleanZonesOnly(node->AsBool()); if((node = searchNode->GetNode("needValidConnectivity")) != 0) SetNeedValidConnectivity(node->AsBool()); if((node = searchNode->GetNode("algorithm")) != 0) { // Allow enums to be int or string in the config file if(node->GetNodeType() == INT_NODE) { int ival = node->AsInt(); if(ival >= 0 && ival < 5) SetAlgorithm(Algorithm(ival)); } else if(node->GetNodeType() == STRING_NODE) { Algorithm value; if(Algorithm_FromString(node->AsString(), value)) SetAlgorithm(value); } } if((node = searchNode->GetNode("iterationEnabled")) != 0) SetIterationEnabled(node->AsBool()); if((node = searchNode->GetNode("numIterations")) != 0) SetNumIterations(node->AsInt()); if((node = searchNode->GetNode("iterationDamping")) != 0) SetIterationDamping(node->AsFloat()); if((node = searchNode->GetNode("simplifyHeavilyMixedZones")) != 0) SetSimplifyHeavilyMixedZones(node->AsBool()); if((node = searchNode->GetNode("maxMaterialsPerZone")) != 0) SetMaxMaterialsPerZone(node->AsInt()); if((node = searchNode->GetNode("isoVolumeFraction")) != 0) SetIsoVolumeFraction(node->AsFloat()); if((node = searchNode->GetNode("annealingTime")) != 0) SetAnnealingTime(node->AsInt()); }
void FilledBoundaryAttributes::SetFromNode(DataNode *parentNode) { if(parentNode == 0) return; DataNode *searchNode = parentNode->GetNode("FilledBoundaryAttributes"); if(searchNode == 0) return; DataNode *node; if((node = searchNode->GetNode("colorType")) != 0) { // Allow enums to be int or string in the config file if(node->GetNodeType() == INT_NODE) { int ival = node->AsInt(); if(ival >= 0 && ival < 3) SetColorType(ColoringMethod(ival)); } else if(node->GetNodeType() == STRING_NODE) { ColoringMethod value; if(ColoringMethod_FromString(node->AsString(), value)) SetColorType(value); } } if((node = searchNode->GetNode("colorTableName")) != 0) SetColorTableName(node->AsString()); if((node = searchNode->GetNode("invertColorTable")) != 0) SetInvertColorTable(node->AsBool()); if((node = searchNode->GetNode("filledFlag")) != 0) SetFilledFlag(node->AsBool()); if((node = searchNode->GetNode("legendFlag")) != 0) SetLegendFlag(node->AsBool()); if((node = searchNode->GetNode("lineStyle")) != 0) SetLineStyle(node->AsInt()); if((node = searchNode->GetNode("lineWidth")) != 0) SetLineWidth(node->AsInt()); if((node = searchNode->GetNode("singleColor")) != 0) singleColor.SetFromNode(node); if((node = searchNode->GetNode("multiColor")) != 0) multiColor.SetFromNode(node); if((node = searchNode->GetNode("boundaryNames")) != 0) SetBoundaryNames(node->AsStringVector()); if((node = searchNode->GetNode("boundaryType")) != 0) { // Allow enums to be int or string in the config file if(node->GetNodeType() == INT_NODE) { int ival = node->AsInt(); if(ival >= 0 && ival < 4) SetBoundaryType(Boundary_Type(ival)); } else if(node->GetNodeType() == STRING_NODE) { Boundary_Type value; if(Boundary_Type_FromString(node->AsString(), value)) SetBoundaryType(value); } } if((node = searchNode->GetNode("opacity")) != 0) SetOpacity(node->AsDouble()); if((node = searchNode->GetNode("wireframe")) != 0) SetWireframe(node->AsBool()); if((node = searchNode->GetNode("drawInternal")) != 0) SetDrawInternal(node->AsBool()); if((node = searchNode->GetNode("smoothingLevel")) != 0) SetSmoothingLevel(node->AsInt()); if((node = searchNode->GetNode("cleanZonesOnly")) != 0) SetCleanZonesOnly(node->AsBool()); if((node = searchNode->GetNode("mixedColor")) != 0) mixedColor.SetFromNode(node); if((node = searchNode->GetNode("pointSize")) != 0) SetPointSize(node->AsDouble()); if((node = searchNode->GetNode("pointType")) != 0) { // Allow enums to be int or string in the config file if(node->GetNodeType() == INT_NODE) { int ival = node->AsInt(); if(ival >= 0 && ival < 8) SetPointType(PointType(ival)); } else if(node->GetNodeType() == STRING_NODE) { PointType value; if(PointType_FromString(node->AsString(), value)) SetPointType(value); } } if((node = searchNode->GetNode("pointSizeVarEnabled")) != 0) SetPointSizeVarEnabled(node->AsBool()); if((node = searchNode->GetNode("pointSizeVar")) != 0) SetPointSizeVar(node->AsString()); if((node = searchNode->GetNode("pointSizePixels")) != 0) SetPointSizePixels(node->AsInt()); // We are no longer using MultiColor as the source for the "mixed" // color (in clean zones only), but someone may have saved their // settings with the "mixed" color in the list. Remove it if it's // in there. // // NOTE: This code can be removed in a few months, as soon as // 1.3 is at least a few versions old, since it represents a little // bit of a hack. bool done = false; while (!done) { done = true; size_t index; for (index=0; index<boundaryNames.size(); index++) { if (boundaryNames[index] == "mixed") { done = false; break; } } if (!done) { multiColor.RemoveColors((int)index); for (size_t i=index+1; i<boundaryNames.size(); i++) boundaryNames[i-1] = boundaryNames[i]; boundaryNames.resize(boundaryNames.size() - 1); } } }