diff --git a/src/core/dataHandler/WGridRegular3D.h b/src/core/dataHandler/WGridRegular3D.h index b150516dc6f94fba9a53bd0edf96a355db75c50b..b414376208a4e88ab2d0a279e8954446c6bd5b51 100644 --- a/src/core/dataHandler/WGridRegular3D.h +++ b/src/core/dataHandler/WGridRegular3D.h @@ -1194,10 +1194,6 @@ void WGridRegular3DTemplate< T >::initInformationProperties() WPropDouble zOffset = m_infoProperties->addProperty( "Z offset: ", "The distance between samples in z direction", static_cast< double >( getOffsetZ() ) ); - - WPropMatrix4X4 transformation = m_infoProperties->addProperty( "Transformation", - "The transformation of this grid.", - static_cast< WMatrix4d >( getTransform() ) ); } // +----------------------+ diff --git a/src/modules/data/WMData.cpp b/src/modules/data/WMData.cpp index 2c4b1a26d46d94b5cc5f28e8bae62dd9d40c70c2..bf091741bc99c7bf41c805bbba88f6faa44224d0 100644 --- a/src/modules/data/WMData.cpp +++ b/src/modules/data/WMData.cpp @@ -288,7 +288,8 @@ void WMData::moduleMain() // register the dataset properties m_properties->addProperty( m_dataSet->getProperties() ); m_infoProperties->addProperty( m_dataSet->getInformationProperties() ); - + m_infoProperties->addProperty( getTransformationProperties() ); + // I am interested in the active property ( manually subscribe signal ) m_active->getCondition()->subscribeSignal( boost::bind( &WMData::propertyChanged, this, m_active ) ); @@ -450,3 +451,38 @@ std::string WMData::getDataTypeString( boost::shared_ptr< WDataSetSingle > dss ) return result; } +namespace +{ + // helper which gets a WMatrix< double > and returns a WMatrix4d + WMatrix4d WMatrixDoubleToWMatrix4d( const WMatrix< double >& matrix ) + { + WAssert( matrix.getNbRows() == 4, "" ); + WAssert( matrix.getNbCols() == 4, "" ); + WMatrix4d result; + for( size_t i = 0; i < 4; ++i ) + { + for( size_t j = 0; j < 4; ++j ) + { + result( i, j ) = matrix( i, j ); + } + } + return result; + } +} + +boost::shared_ptr< WProperties > WMData::getTransformationProperties() const +{ + boost::shared_ptr< WProperties > result( new WProperties( "Transformations", "Availabe transformation matrices for data-set " ) ); + WPropGroup transformation = result->addPropertyGroup( "Transformation", + "The transformation of this grid." ); + WPropMatrix4X4 noMatrixTransformation = result->addProperty( "No matrix transformation", + "The no matrix transformation for this data set.", + WMatrixDoubleToWMatrix4d( m_transformNoMatrix ) ); + WPropMatrix4X4 sformMatrixTransformation = result->addProperty( "sform matrix transformation", + "The sform matrix transformation for this data set.", + WMatrixDoubleToWMatrix4d( m_transformSForm ) ); + WPropMatrix4X4 qformMatrixTransformation = result->addProperty( "qform matrix transformation", + "The qform matrix transformation for this data set.", + WMatrixDoubleToWMatrix4d( m_transformQForm ) ); + return result; +} diff --git a/src/modules/data/WMData.h b/src/modules/data/WMData.h index b01b750e5c6bbd4e989ea16dc58336bc847daa0a..d718c122a4ba720c31b2dfc684eae50d3ea9d9b3 100644 --- a/src/modules/data/WMData.h +++ b/src/modules/data/WMData.h @@ -177,6 +177,9 @@ protected: WMatrix< double > m_transformQForm; private: + //! returns info property group with the three availabe transformation matrixes + boost::shared_ptr< WProperties > getTransformationProperties() const; + //! a condition for the matrix selection boost::shared_ptr< WCondition > m_propCondition;