Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions

mitk::TransferFunctionPropertySerializer Class Reference

#include <mitkTransferFunctionPropertySerializer.h>

Inheritance diagram for mitk::TransferFunctionPropertySerializer:
Inheritance graph
[legend]
Collaboration diagram for mitk::TransferFunctionPropertySerializer:
Collaboration graph
[legend]

List of all members.

Public Types

typedef
TransferFunctionPropertySerializer 
Self
typedef BasePropertySerializer Superclass
typedef itk::SmartPointer< SelfPointer
typedef itk::SmartPointer
< const Self
ConstPointer

Public Member Functions

virtual const char * GetClassName () const
virtual TiXmlElementSerialize ()
 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 ()

Detailed Description

Definition at line 25 of file mitkTransferFunctionPropertySerializer.h.


Member Typedef Documentation

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.

Reimplemented from mitk::BasePropertySerializer.

Definition at line 29 of file mitkTransferFunctionPropertySerializer.h.


Constructor & Destructor Documentation

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.

{

Member Function Documentation

virtual const char* mitk::TransferFunctionPropertySerializer::GetClassName (  ) const [virtual]

Reimplemented from mitk::BasePropertySerializer.

static Pointer mitk::TransferFunctionPropertySerializer::New (  ) [static]
TiXmlElement * mitk::TransferFunctionPropertySerializer::Serialize (  ) [virtual]

Serializes given BaseProperty object.

Returns:
the filename of the newly created file.

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;

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines