- typename ItkToVtkConnection::Pointer conv = ItkToVtkConnection::New();
- conv->SetInput( this->bbGetInputIn().get<itkImageType*>() );
- conv->Update();
- vtkImageData* o = vtkImageData::New();
- // o->SetReferenceCount(10);
- o->DeepCopy(conv->GetOutput());
+ bbtkDebugMessage("process",5," ["<<bbGetFullName()<<"] : No converter yet : creating it"<<std::endl);
+ conv = ItkToVtkConnection::New();
+ mConverter = conv;
+ conv->SetInput( this->bbGetInputIn().get< itkImageTypePointer >() );
+ }
+ else
+ {
+ bbtkDebugMessage("process",5," ["<<bbGetFullName()<<"] : Converter ok "<<std::endl);
+
+ // Input itkImageType type changed ?
+ // Have to change the converter and set its input
+ conv = dynamic_cast<ItkToVtkConnection*>
+ ((itk::ProcessObject*)mConverter);
+ if (!conv)
+ {
+ bbtkDebugMessage("process",5," ["<<bbGetFullName()<<"] : Converter of wrong input type : reacreating it "<<std::endl);
+
+ mConverter->UnRegister();
+ conv = ItkToVtkConnection::New();
+ mConverter = conv;
+ conv->SetInput( this->bbGetInputIn().get<itkImageTypePointer>() );
+ }
+ // Input image type did not change but input image pointer did:
+ // set new input
+ else if ( this->bbGetInputIn().get<itkImageTypePointer>()
+ != (itkImageType*)(conv->GetExporter()->GetInputs()[0].GetPointer()))
+ {
+ bbtkDebugMessage("process",5," ["<<bbGetFullName()<<"] : Converter input changed : resetting it"<<std::endl);
+
+ conv->SetInput( this->bbGetInputIn().get<itkImageTypePointer>() );
+ }
+ else
+ {
+ bbtkDebugMessage("process",5," ["<<bbGetFullName()<<"] : Nothing changed"<<std::endl);
+ }
+ }
+ try
+ {
+
+ bbtkDebugMessage("process",5," ["<<bbGetFullName()<<"] : Trying update"<<std::endl);