#include <mitkTransferFunctionPropertySerializer.h>


Public Types | |
| typedef TransferFunctionPropertySerializer | Self |
| typedef BasePropertySerializer | Superclass |
| typedef itk::SmartPointer< Self > | Pointer |
| typedef itk::SmartPointer < const Self > | ConstPointer |
Public Member Functions | |
| virtual const char * | GetClassName () const |
| virtual TiXmlElement * | Serialize () |
| Serializes given BaseProperty object. | |
Static Public Member Functions | |
| static Pointer | New () |
| static bool | SerializeTransferFunction (const char *filename, TransferFunction::Pointer tf) |
Protected Member Functions | |
| TransferFunctionPropertySerializer () | |
| virtual | ~TransferFunctionPropertySerializer () |
Definition at line 25 of file mitkTransferFunctionPropertySerializer.h.
| typedef itk::SmartPointer<const Self> mitk::TransferFunctionPropertySerializer::ConstPointer |
Reimplemented from mitk::BasePropertySerializer.
Definition at line 29 of file mitkTransferFunctionPropertySerializer.h.
| typedef itk::SmartPointer<Self> mitk::TransferFunctionPropertySerializer::Pointer |
Reimplemented from mitk::BasePropertySerializer.
Definition at line 29 of file mitkTransferFunctionPropertySerializer.h.
Reimplemented from mitk::BasePropertySerializer.
Definition at line 29 of file mitkTransferFunctionPropertySerializer.h.
Reimplemented from mitk::BasePropertySerializer.
Definition at line 29 of file mitkTransferFunctionPropertySerializer.h.
| mitk::TransferFunctionPropertySerializer::TransferFunctionPropertySerializer | ( | ) | [protected] |
Definition at line 21 of file mitkTransferFunctionPropertySerializer.cpp.
{
| mitk::TransferFunctionPropertySerializer::~TransferFunctionPropertySerializer | ( | ) | [protected, virtual] |
Definition at line 25 of file mitkTransferFunctionPropertySerializer.cpp.
{
| virtual const char* mitk::TransferFunctionPropertySerializer::GetClassName | ( | ) | const [virtual] |
Reimplemented from mitk::BasePropertySerializer.
| static Pointer mitk::TransferFunctionPropertySerializer::New | ( | ) | [static] |
Referenced by SerializeTransferFunction().
| TiXmlElement * mitk::TransferFunctionPropertySerializer::Serialize | ( | ) | [virtual] |
Serializes given BaseProperty object.
This should be overwritten by specific sub-classes.
Reimplemented from mitk::BasePropertySerializer.
Definition at line 29 of file mitkTransferFunctionPropertySerializer.cpp.
References mitk::TransferFunction::GetColorTransferFunction(), mitk::TransferFunction::GetGradientOpacityPoints(), mitk::TransferFunction::GetScalarOpacityPoints(), TiXmlNode::LinkEndChild(), mitk::BasePropertySerializer::m_Property, and TiXmlElement::SetDoubleAttribute().
{
if (const TransferFunctionProperty* prop = dynamic_cast<const TransferFunctionProperty*>(mitk::BasePropertySerializer::m_Property.GetPointer()))
{
TransferFunction* transferfunction = prop->GetValue();
if (!transferfunction)
return NULL;
TiXmlElement* element = new TiXmlElement("TransferFunction");
// serialize scalar opacity function
TiXmlElement* scalarOpacityPointlist = new TiXmlElement( "ScalarOpacity" );
TransferFunction::ControlPoints scalarOpacityPoints = transferfunction->GetScalarOpacityPoints();
for ( TransferFunction::ControlPoints::iterator iter = scalarOpacityPoints.begin();
iter != scalarOpacityPoints.end();
++iter )
{
TiXmlElement* pointel = new TiXmlElement("point");
pointel->SetDoubleAttribute("x", iter->first);
pointel->SetDoubleAttribute("y", iter->second);
scalarOpacityPointlist->LinkEndChild( pointel );
}
element->LinkEndChild( scalarOpacityPointlist );
// serialize gradient opacity function
TiXmlElement* gradientOpacityPointlist = new TiXmlElement( "GradientOpacity" );
TransferFunction::ControlPoints gradientOpacityPoints = transferfunction->GetGradientOpacityPoints();
for ( TransferFunction::ControlPoints::iterator iter = gradientOpacityPoints.begin();
iter != gradientOpacityPoints.end();
++iter )
{
TiXmlElement* pointel = new TiXmlElement("point");
pointel->SetDoubleAttribute("x", iter->first);
pointel->SetDoubleAttribute("y", iter->second);
gradientOpacityPointlist->LinkEndChild( pointel );
}
element->LinkEndChild( gradientOpacityPointlist );
// serialize color function
vtkColorTransferFunction* ctf = transferfunction->GetColorTransferFunction();
if (ctf == NULL)
return NULL;
TiXmlElement* pointlist = new TiXmlElement("Color");
for (int i = 0; i < ctf->GetSize(); i++ )
{
double myVal[6];
ctf->GetNodeValue(i, myVal);
TiXmlElement* pointel = new TiXmlElement("point");
pointel->SetDoubleAttribute("x", myVal[0]);
pointel->SetDoubleAttribute("r", myVal[1]);
pointel->SetDoubleAttribute("g", myVal[2]);
pointel->SetDoubleAttribute("b", myVal[3]);
pointel->SetDoubleAttribute("midpoint", myVal[4]);
pointel->SetDoubleAttribute("sharpness", myVal[5]);
pointlist->LinkEndChild( pointel );
}
element->LinkEndChild( pointlist );
return element;
}
else return NULL;
| bool mitk::TransferFunctionPropertySerializer::SerializeTransferFunction | ( | const char * | filename, |
| TransferFunction::Pointer | tf | ||
| ) | [static] |
Definition at line 91 of file mitkTransferFunctionPropertySerializer.cpp.
References TiXmlDocument::ErrorDesc(), TiXmlNode::LinkEndChild(), MITK_ERROR, mitk::TransferFunctionProperty::New(), New(), TiXmlDocument::SaveFile(), and TiXmlElement::SetAttribute().
Referenced by QmitkTransferFunctionGeneratorWidget::OnSavePreset().
{
TransferFunctionPropertySerializer::Pointer tfps=TransferFunctionPropertySerializer::New();
tfps->SetProperty( TransferFunctionProperty::New( tf ) );
TiXmlElement* s=tfps->Serialize();
if(!s)
{
MITK_ERROR << "cant serialize transfer function";
return false;
}
TiXmlDocument document;
TiXmlDeclaration* decl = new TiXmlDeclaration( "1.0", "UTF-8", "" ); // TODO what to write here? encoding? standalone would mean that we provide a DTD somewhere...
document.LinkEndChild( decl );
TiXmlElement* version = new TiXmlElement("Version");
version->SetAttribute("TransferfunctionVersion", 1 );
document.LinkEndChild(version);
document.LinkEndChild(s);
if ( !document.SaveFile( filename ) )
{
MITK_ERROR << "Could not write scene to " << filename << "\nTinyXML reports '" << document.ErrorDesc() << "'";
return false;
}
return true;
1.7.2