void ContourOpAttributes::SetFromNode(DataNode *parentNode) { if(parentNode == 0) return; DataNode *searchNode = parentNode->GetNode("ContourOpAttributes"); if(searchNode == 0) return; DataNode *node; if((node = searchNode->GetNode("contourNLevels")) != 0) SetContourNLevels(node->AsInt()); if((node = searchNode->GetNode("contourValue")) != 0) SetContourValue(node->AsDoubleVector()); if((node = searchNode->GetNode("contourPercent")) != 0) SetContourPercent(node->AsDoubleVector()); if((node = searchNode->GetNode("contourMethod")) != 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) SetContourMethod(ContourMethod(ival)); } else if(node->GetNodeType() == STRING_NODE) { ContourMethod value; if(ContourMethod_FromString(node->AsString(), value)) SetContourMethod(value); } } if((node = searchNode->GetNode("minFlag")) != 0) SetMinFlag(node->AsBool()); if((node = searchNode->GetNode("maxFlag")) != 0) SetMaxFlag(node->AsBool()); if((node = searchNode->GetNode("min")) != 0) SetMin(node->AsDouble()); if((node = searchNode->GetNode("max")) != 0) SetMax(node->AsDouble()); if((node = searchNode->GetNode("scaling")) != 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 < 2) SetScaling(ContourScaling(ival)); } else if(node->GetNodeType() == STRING_NODE) { ContourScaling value; if(ContourScaling_FromString(node->AsString(), value)) SetScaling(value); } } if((node = searchNode->GetNode("variable")) != 0) SetVariable(node->AsString()); }
bool ContourAttributes::SetValue(const std::string &name, const doubleVector &value) { int index = FieldNameToIndex(name); bool retval; if(index == ID_contourPercent) { SetContourPercent(value); retval = true; } else if(index == ID_contourValue) { SetContourValue(value); retval = true; } else retval = AttributeSubject::SetValue(name, value); return retval; }
void Contour2D::SetInput( vtkImageData* imagedata, double dContourValue, double dSliceLocation, int active_frame ) { vtkSmartPointer<vtkImageExtractComponents> extract = vtkSmartPointer<vtkImageExtractComponents>::New(); if ( imagedata->GetNumberOfScalarComponents() > 1 ) { extract->SetInput( imagedata ); extract->SetComponents( active_frame ); extract->Update(); m_imageInput = extract->GetOutput(); } else m_imageInput = imagedata; m_filterThreshold->SetInput( m_imageInput ); SetContourValue( dContourValue ); // create two masks and initialize them. m_imageMaskAdd = vtkSmartPointer<vtkImageData>::New(); m_imageMaskAdd->DeepCopy( m_filterThreshold->GetOutput() ); m_imageMaskRemove = vtkSmartPointer<vtkImageData>::New(); m_imageMaskRemove->DeepCopy( m_imageMaskAdd ); int* dim = m_imageMaskAdd->GetDimensions(); int size = dim[0]*dim[1]*dim[2]; memset( m_imageMaskAdd->GetScalarPointer(), 0, size ); unsigned char* ptr = (unsigned char*)m_imageMaskRemove->GetScalarPointer(); for ( int i = 0; i < size; i++ ) ptr[i] = 1; m_filterLogic->SetInput1( m_filterThreshold->GetOutput() ); m_filterLogic->SetInput2( m_imageMaskAdd ); m_filterMask->SetInputConnection( m_filterLogic->GetOutputPort() ); m_filterMask->SetMaskInput( m_imageMaskRemove ); m_filterResample->SetInputConnection( m_filterMask->GetOutputPort() ); m_filterEdge->SetInputConnection( m_filterResample->GetOutputPort() ); m_colormap->SetInputConnection( m_filterEdge->GetOutputPort() ); m_actorContour->SetInput( m_colormap->GetOutput() ); SetSmooth( m_bSmooth ); UpdateSliceLocation( dSliceLocation ); }
void ContourAttributes::SetFromNode(DataNode *parentNode) { if(parentNode == 0) return; DataNode *searchNode = parentNode->GetNode("ContourAttributes"); if(searchNode == 0) return; DataNode *node; // Set the default palette from the values in the DataNode. if((node = searchNode->GetNode("defaultPalette")) != 0) defaultPalette.SetFromNode(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("legendFlag")) != 0) SetLegendFlag(node->AsBool()); if((node = searchNode->GetNode("invertColorTable")) != 0) SetInvertColorTable(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("contourNLevels")) != 0) SetContourNLevels(node->AsInt()); if((node = searchNode->GetNode("contourValue")) != 0) SetContourValue(node->AsDoubleVector()); if((node = searchNode->GetNode("contourPercent")) != 0) SetContourPercent(node->AsDoubleVector()); if((node = searchNode->GetNode("contourMethod")) != 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) SetContourMethod(Select_by(ival)); } else if(node->GetNodeType() == STRING_NODE) { Select_by value; if(Select_by_FromString(node->AsString(), value)) SetContourMethod(value); } } if((node = searchNode->GetNode("minFlag")) != 0) SetMinFlag(node->AsBool()); if((node = searchNode->GetNode("maxFlag")) != 0) SetMaxFlag(node->AsBool()); if((node = searchNode->GetNode("min")) != 0) SetMin(node->AsDouble()); if((node = searchNode->GetNode("max")) != 0) SetMax(node->AsDouble()); if((node = searchNode->GetNode("scaling")) != 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 < 2) SetScaling(Scaling(ival)); } else if(node->GetNodeType() == STRING_NODE) { Scaling value; if(Scaling_FromString(node->AsString(), value)) SetScaling(value); } } if((node = searchNode->GetNode("wireframe")) != 0) SetWireframe(node->AsBool()); }