#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;