void TransferFunctionTest::shallowAndDeepCopyTest() { const ::fwData::TransferFunction::sptr tf = this->createTFColor(); this->checkTFColor(tf); const ::fwData::TransferFunction::sptr deepCopyTf = ::fwData::Object::copy( tf ); this->checkTFColor(deepCopyTf); const ::fwData::TransferFunction::sptr shallowCopyTf = ::fwData::TransferFunction::New(); shallowCopyTf->shallowCopy( tf ); this->checkTFColor(shallowCopyTf); }
void TransferFunction::toVtkLookupTable( ::fwData::TransferFunction::sptr tf, vtkSmartPointer<vtkLookupTable> lt, bool allowTransparency, unsigned int size ) { SLM_WARN_IF( "Sorry, This transfer function conversion not managed clamped TF.", tf->getIsClamped() ); // Configures basic parameters lt->SetNumberOfTableValues( size ); lt->SetScaleToLinear(); ::fwData::TransferFunction::TFValuePairType minMax = tf->getMinMaxTFValues(); lt->SetTableRange( minMax.first, minMax.second ); double delta = ( minMax.second - minMax.first ) / (double) (size - 1); ::fwData::TransferFunction::TFColor interpolatedColor; if ( allowTransparency ) { for( unsigned int k=0; k<size; ++k ) { interpolatedColor = tf->getInterpolatedColor( k*delta + minMax.first ); lt->SetTableValue(k, interpolatedColor.r, interpolatedColor.g, interpolatedColor.b, interpolatedColor.a); } } else { for( unsigned int k=0; k<size; ++k ) { interpolatedColor = tf->getInterpolatedColor( k*delta + minMax.first ); lt->SetTableValue(k, interpolatedColor.r, interpolatedColor.g, interpolatedColor.b, 1.0); } } lt->Modified(); }
void TransferFunctionTest::checkTFColor( ::fwData::TransferFunction::sptr tf ) { CPPUNIT_ASSERT( ::fwData::TransferFunction::TFColor( 1.0, 0.3, 0.6, 0.1) == tf->getBackgroundColor() ); CPPUNIT_ASSERT_EQUAL( ::fwData::TransferFunction::NEAREST, tf->getInterpolationMode() ); CPPUNIT_ASSERT_EQUAL( false, tf->getIsClamped() ); CPPUNIT_ASSERT_EQUAL( 900.6, tf->getLevel() ); CPPUNIT_ASSERT_EQUAL( std::string("TFColor"), tf->getName() ); CPPUNIT_ASSERT_EQUAL( -200.02, tf->getWindow() ); CPPUNIT_ASSERT_EQUAL( static_cast<size_t>(4), tf->getTFData().size() ); CPPUNIT_ASSERT_EQUAL( -40.33, tf->getMinMaxTFValues().first ); CPPUNIT_ASSERT_EQUAL( 150.0, tf->getMinMaxTFValues().second ); const TransferFunction::TFValueVectorType& values = tf->getTFValues(); CPPUNIT_ASSERT_EQUAL( values[0], -40.33 ); CPPUNIT_ASSERT_EQUAL( values[1], -0.2 ); CPPUNIT_ASSERT_EQUAL( values[2], 3.0 ); CPPUNIT_ASSERT_EQUAL( values[3], 150.0 ); CPPUNIT_ASSERT( ::fwData::TransferFunction::TFColor( 0.9, 0.2, 0.3, 0.4) == tf->getTFColor( -40.33 ) ); CPPUNIT_ASSERT( ::fwData::TransferFunction::TFColor( 0.1, 0.9, 0.3, 0.4) == tf->getTFColor( -0.2 ) ); CPPUNIT_ASSERT( ::fwData::TransferFunction::TFColor( 0.1, 0.2, 0.9, 0.4) == tf->getTFColor( 3 ) ); CPPUNIT_ASSERT( ::fwData::TransferFunction::TFColor( 0.1, 0.2, 0.3, 0.9) == tf->getTFColor( 150 ) ); CPPUNIT_ASSERT_EQUAL( std::string("fieldStringValue"), ::fwData::String::dynamicCast( tf->getField( "fieldStringKey" ) )->value() ); }