template<typename Type>
inline bool contains()
{
- return ( type() == typeid(Type) );
+//EED 2021-12-15 typeid comparation is not working in MacOs for objects declared in different libraries
+// ex: itk <-> vtk templates convertion
+#if defined(MACOSX)
+ if ( strcmp( type().name() , typeid(Type).name() ) ==0 ) return true; else return false;
+#else
+ return ( type() == typeid(Type) );
+#endif
}
/// Returns true iff the contained type is a pointer
/// Returns true iff the contained type is t
inline bool contains(TypeInfo t)
{
- return ( (bool)((type() == t)!=0) );
+//EED 2021-12-15 typeid comparation is not working in MacOs for objects declared in different libraries
+// ex: itk <-> vtk templates convertion
+#if defined(MACOSX)
+ bool compTmp = (strcmp( type().name() , t.name() ) == 0);
+ return ( compTmp!=0 );
+#else
+ return ( (bool)((type() == t)!=0) );
+#endif
}
/// Returns true iff any of type ValueType can be held
<<"> with content : "
<<HumanTypeName(type())<<std::endl);
- printf("EED bbtkAny get() self=%s \n" , HumanTypeName<self >().c_str() );
- printf("EED bbtkAny get() ValueType=%s \n" , bbtk::HumanTypeName<ValueType>().c_str() );
- printf("EED bbtkAny get() Type=%s \n" , bbtk::HumanTypeName<>(type()).c_str() );
- printf("EED bbtkAny get() type name=(-%s-) \n" , type().name() );
- printf("EED bbtkAny get() ValueType name=(-%s-) \n" , typeid(ValueType).name() );
-// 2021-12-15
- if ( strcmp( type().name() , typeid(ValueType).name() ) ==0 )
-// if ( type() == typeid(ValueType) )
+//EED 2021-12-15 typeid comparation is not working in MacOs for objects declared in different libraries
+// ex: itk <-> vtk templates convertion
+#if defined(MACOSX)
+ if ( strcmp( type().name() , typeid(ValueType).name() ) ==0 )
+#else
+ if ( type() == typeid(ValueType) )
+#endif
{
return static_cast< anyholder<ValueType> *>(content)->held;
}
template<typename ValueType>
inline const ValueType* getP() const
{
+//EED 2021-12-15 typeid comparation is not working in MacOs for objects declared in different libraries
+// ex: itk <-> vtk templates convertion
+#if defined(MACOSX)
+ if ( strcmp( type().name() , typeid(ValueType).name() ) ==0 )
+#else
if ( type() == typeid(ValueType) )
+#endif
return &static_cast< anyholder<ValueType> *>(content)->held;
bbtkError(HumanTypeName<self >()
//BBTK_TYPEDEF_ITK_IMAGES_DIM(5)
-// printf("EEDitk TYPE_INFO=%s %s\n", TYPE_INFO.name(), typeid(bbitk::Image_int8_t_3_##CONST##ptr).name() ); \
#define BBTK_BEGIN_TEMPLATE_SWITCH(TYPE_INFO) \
-if ( TYPE_INFO == typeid(bbitk::Image_uint16_t_3_ptr) ) { printf ("Yes\n"); }else{ printf ("No\n"); } \
-if ( strcmp(TYPE_INFO.name() , typeid(bbitk::Image_uint16_t_3_ptr).name() ) ==0 ) { printf ("Yes\n"); }else{ printf ("No\n"); } \
- printf("EEDitk TYPE_INFO=<%s> <%s> <%s>\n", TYPE_INFO.name(), bbtk::demangle_type_name(typeid(bbitk::Image_uint8_t_3_ptr).name()).c_str() , typeid(bbitk::Image_uint8_t_3_ptr).name() ); \
- printf("EEDitk TYPE_INFO=<%s> <%s> <%s>\n", TYPE_INFO.name(), bbtk::demangle_type_name(typeid(bbitk::Image_uint16_t_3_ptr).name()).c_str() , typeid(bbitk::Image_uint16_t_3_ptr).name() ); \
- printf("EEDitk TYPE_INFO=<%s> <%s> <%s>\n", TYPE_INFO.name(), bbtk::demangle_type_name(typeid(bbitk::Image_uint32_t_3_ptr).name()).c_str() , typeid(bbitk::Image_uint32_t_3_ptr).name() ); \
if (false) {}
#define BBTK_END_TEMPLATE_SWITCH(TYPE_INFO) else { bbtkError("bbtk was not built for itk images of type <"<< bbtk::demangle_type_name(TYPE_INFO.name())<<">"); }
/// This macro must be used (maybe several times) between a pair of BEGIN_TEMPLATE_SWITCH and END_TEMPLATE_SWITCH macros
-// 2021-12-15
-// else if (TYPE_INFO == typeid(bbitk::TEST_TYPE)) \
-
-#define TEMPLATE_SWITCH(TYPE_INFO,TEST_TYPE,TEMPLATE_FUNCTION,TEMPLATE_TYPE) \
- else if ( strcmp(TYPE_INFO.name() , typeid(bbitk::TEST_TYPE).name() ) ==0 ) \
- { TEMPLATE_FUNCTION<bbitk::TEMPLATE_TYPE>(); }
+//EED 2021-12-15 typeid comparation is not working in MacOs for objects declared in different libraries
+// ex: itk <-> vtk templates convertion
+#if defined(MACOSX)
+ #define TEMPLATE_SWITCH(TYPE_INFO,TEST_TYPE,TEMPLATE_FUNCTION,TEMPLATE_TYPE) \
+ else if ( strcmp(TYPE_INFO.name() , typeid(bbitk::TEST_TYPE).name() ) ==0 ) \
+ { TEMPLATE_FUNCTION<bbitk::TEMPLATE_TYPE>(); }
+#else
+ #define TEMPLATE_SWITCH(TYPE_INFO,TEST_TYPE,TEMPLATE_FUNCTION,TEMPLATE_TYPE) \
+ else if (TYPE_INFO == typeid(bbitk::TEST_TYPE)) \
+ { TEMPLATE_FUNCTION<bbitk::TEMPLATE_TYPE>(); }
+#endif
// DIMENSION 2
# define BBTK_SWITCH_ITK_IMAGE_double_3(TYPE_INFO,FUN,CONST)
#endif
-
-/* EED
-// DIMENSION 3
-#ifdef BBTK_ITK_IMAGE_DIM_3
-# ifdef BBTK_ITK_IMAGE_TYPE_int8_t
-# define BBTK_SWITCH_ITK_IMAGE_int8_t_3(TYPE_INFO,FUN,CONST) \
- TEMPLATE_SWITCH(TYPE_INFO,Image_int8_t_3_ptr,FUN,Image_int8_t_3)
-# else
-# define BBTK_SWITCH_ITK_IMAGE_int8_t_3(TYPE_INFO,FUN,CONST)
-# endif
-# ifdef BBTK_ITK_IMAGE_TYPE_int16_t
-# define BBTK_SWITCH_ITK_IMAGE_int16_t_3(TYPE_INFO,FUN,CONST) \
- TEMPLATE_SWITCH(TYPE_INFO,Image_int16_t_3_ptr,FUN,Image_int16_t_3)
-# else
-# define BBTK_SWITCH_ITK_IMAGE_int16_t_3(TYPE_INFO,FUN,CONST)
-# endif
-# ifdef BBTK_ITK_IMAGE_TYPE_int32_t
-# define BBTK_SWITCH_ITK_IMAGE_int32_t_3(TYPE_INFO,FUN,CONST) \
- TEMPLATE_SWITCH(TYPE_INFO,Image_int32_t_3_ptr,FUN,Image_int32_t_3)
-# else
-# define BBTK_SWITCH_ITK_IMAGE_int32_t_3(TYPE_INFO,FUN,CONST)
-# endif
-# ifdef BBTK_ITK_IMAGE_TYPE_uint8_t
-# define BBTK_SWITCH_ITK_IMAGE_uint8_t_3(TYPE_INFO,FUN,CONST) \
- TEMPLATE_SWITCH(TYPE_INFO,Image_uint8_t_3_ptr,FUN,Image_uint8_t_3)
-# else
-# define BBTK_SWITCH_ITK_IMAGE_uint8_t_3(TYPE_INFO,FUN,CONST)
-# endif
-# ifdef BBTK_ITK_IMAGE_TYPE_uint16_t
-# define BBTK_SWITCH_ITK_IMAGE_uint16_t_3(TYPE_INFO,FUN,CONST) \
- TEMPLATE_SWITCH(TYPE_INFO,Image_uint16_t_3_,FUN,Image_uint16_t_3)
-# else
-# define BBTK_SWITCH_ITK_IMAGE_uint16_t_3(TYPE_INFO,FUN,CONST)
-# endif
-# ifdef BBTK_ITK_IMAGE_TYPE_uint32_t
-# define BBTK_SWITCH_ITK_IMAGE_uint32_t_3(TYPE_INFO,FUN,CONST) \
- TEMPLATE_SWITCH(TYPE_INFO,Image_uint32_t_3_ptr,FUN,Image_uint32_t_3)
-# else
-# define BBTK_SWITCH_ITK_IMAGE_uint32_t_3(TYPE_INFO,FUN,CONST)
-# endif
-# ifdef BBTK_ITK_IMAGE_TYPE_float
-# define BBTK_SWITCH_ITK_IMAGE_float_3(TYPE_INFO,FUN,CONST) \
- TEMPLATE_SWITCH(TYPE_INFO,Image_float_3_ptr,FUN,Image_float_3)
-# else
-# define BBTK_SWITCH_ITK_IMAGE_float_3(TYPE_INFO,FUN,CONST)
-# endif
-# ifdef BBTK_ITK_IMAGE_TYPE_double
-# define BBTK_SWITCH_ITK_IMAGE_double_3(TYPE_INFO,FUN,CONST) \
- TEMPLATE_SWITCH(TYPE_INFO,Image_double_3_ptr,FUN,Image_double_3)
-# else
-# define BBTK_SWITCH_ITK_IMAGE_double_3(TYPE_INFO,FUN,CONST)
-# endif
-#else
-# define BBTK_SWITCH_ITK_IMAGE_int8_t_3(TYPE_INFO,FUN,CONST)
-# define BBTK_SWITCH_ITK_IMAGE_int16_t_3(TYPE_INFO,FUN,CONST)
-# define BBTK_SWITCH_ITK_IMAGE_int32_t_3(TYPE_INFO,FUN,CONST)
-# define BBTK_SWITCH_ITK_IMAGE_uint8_t_3(TYPE_INFO,FUN,CONST)
-# define BBTK_SWITCH_ITK_IMAGE_uint16_t_3(TYPE_INFO,FUN,CONST)
-# define BBTK_SWITCH_ITK_IMAGE_uint32_t_3(TYPE_INFO,FUN,CONST)
-# define BBTK_SWITCH_ITK_IMAGE_float_3(TYPE_INFO,FUN,CONST)
-# define BBTK_SWITCH_ITK_IMAGE_double_3(TYPE_INFO,FUN,CONST)
-#endif
-*/
-
-
-
// DIMENSION 4
#ifdef BBTK_ITK_IMAGE_DIM_4
# ifdef BBTK_ITK_IMAGE_TYPE_int8_t
void ImageProperties::DoIt()
{
- printf("EED ImageProperties::DoIt Start \n");
BBTK_TEMPLATE_ITK_IMAGE_SWITCH(bbGetInputIn().type(),DoIt);
- printf("EED ImageProperties::DoIt End \n");
}
/**
template<class itkImageType>
void ImageProperties::DoIt()
{
- printf("EED <template>ImageProperties::DoIt Start \n");
bbtkDebugMessageInc("Core",9,"bbitk::ImageProperties::DoIt<"
<<bbtk::TypeName<itkImageType>()
<<">()"<<std::endl);
itkImageType* im = bbGetInputIn().get<itkImageType*>();
-
- printf("EED <template>ImageProperties::DoIt 1 \n");
-
unsigned int dim = im->GetImageDimension();
-
-
bbSetOutputTypeName(bbtk::TypeName<typename itkImageType::PixelType>());
bbSetOutputDimension(dim);
const typename itkImageType::RegionType& r =im->GetLargestPossibleRegion();
bbSetOutputLargestPossibleRegion(r);
-
- printf("EED <template>ImageProperties::DoIt 2 \n");
-
+
const typename itkImageType::IndexType& ind = r.GetIndex();
std::vector<int> vind;
for (unsigned int i=0;i<dim;++i)
for (unsigned int i=0;i<dim;++i)
vsz.push_back(sz[i]);
- printf("EED <template>ImageProperties::DoIt 3 \n");
-
// brute hack to avoid failure of most black boxes that expects 3D images. // JPR
if (dim==2)
vsz.push_back(1);
vog.push_back(1.0);
bbSetOutputOrigin(vog);
- printf("EED <template>ImageProperties::DoIt 4 \n");
typename itkImageType::SpacingType sp = im->GetSpacing();
std::vector<double> vsp;
vminmax.push_back( (float) (minMaxCalculator->GetMinimum()) );
vminmax.push_back( (float) (minMaxCalculator->GetMaximum()) );
bbSetOutputMinMax(vminmax);
-
- printf("EED <template>ImageProperties::DoIt 5 \n");
-
- bbtkDebugDecTab("Core",9);
- printf("EED <template>ImageProperties::DoIt End \n");
+ bbtkDebugDecTab("Core",9);
}
//===================================================
void ResampleImageFilter::ProcessSwitch()
{
- printf("EED ResampleImageFilter::ProcessSwitch Start \n");
bbtk::TypeInfo t = bbGetInputIn().type();
BBTK_TEMPLATE_ITK_IMAGE_SWITCH(t, this->Process);
- printf("EED ResampleImageFilter::ProcessSwitch End \n");
}
//===================================================
template <class T>
void ResampleImageFilter::Process()
{
- printf("EED ResampleImageFilter::Process Start \n");
bbtkDebugMessageInc("Core",9,
"bbitk::ResampleImageFilter::Process<"
<<bbtk::TypeName<T>()<<">()"<<std::endl);
typedef T ImageType;
- printf("EED ResampleImageFilter::Process 1 \n");
typedef itk::ResampleImageFilter<ImageType,ImageType> FilterType;
- printf("EED ResampleImageFilter::Process 2 \n");
typename FilterType::Pointer filter = FilterType::New();
const unsigned int Dimension = ImageType::ImageDimension;
// Input
- printf("EED ResampleImageFilter::Process 3 \n");
T* in = this->bbGetInputIn().get<T*>();
- printf("EED ResampleImageFilter::Process 4 \n");
filter->SetInput( in );
- printf("EED ResampleImageFilter::Process 5 \n");
// Size, Spacing, Origin and DefaultPixelVal
typename ImageType::SizeType size;
mOutput = filter->GetOutput();
bbtkDebugDecTab("Core",9);
-
- printf("EED ResampleImageFilter::Process End \n");
-
}
//===================================================
this->Convert< itk::Image< ty, di > >( )
*/
+
+
+
// -------------------------------------------------------------------------
// LFV: avoid itk::Concept check on 4d or superior images
-#define BBITKVTK_itkImage2vtkImageData_Template( t, ty, di ) \
- if( t == typeid( itk::Image< ty, di >* ) ) \
- this->Convert< itk::Image< ty, di > >( )
+//EED 2021-12-15 typeid comparation is not working in MacOs for objects declared in different libraries
+// ex: itk <-> vtk templates convertion
+#if defined(MACOSX)
+ #define BBITKVTK_itkImage2vtkImageData_Template( t, ty, di ) \
+ if ( strcmp(t.name() , typeid( itk::Image< ty, di >* ).name() ) == 0 ) \
+ this->Convert< itk::Image< ty, di > >( )
+#else
+ #define BBITKVTK_itkImage2vtkImageData_Template( t, ty, di ) \
+ if( t == typeid( itk::Image< ty, di >* ) ) \
+ this->Convert< itk::Image< ty, di > >( )
+#endif
// -------------------------------------------------------------------------
+
+
namespace bbitkvtk
{
BBTK_BLACK_BOX_IMPLEMENTATION(itkImage2vtkImageData,bbtk::AtomicBlackBox);
else BBITKVTK_itkImage2vtkImageData_Template( t, unsigned short, 3 );
else BBITKVTK_itkImage2vtkImageData_Template( t, unsigned int, 3 );
else BBITKVTK_itkImage2vtkImageData_Template( t, unsigned long, 3 );
-
+ else {
+ printf("Warnning! EED itkImage2vtkImageData::Convert Type not found for: <%s>\n", bbtk::demangle_type_name(t.name()).c_str() );
+ }
+
/* Deprecated
BBTK_TEMPLATE_ITK_IMAGE_SWITCH(t,Convert);
*/
#include "bbitkvtkPackage.h"
#include "itkImageToVTKImageFilter.h"
+
+/*
+#EED 2017-08-29 itk3toitk4
+ #define BBITKVTK_itkImageVector2vtkImageDataVector_Template( t, ty, di ) \
+ if( t == typeid( itk::Image< ty, di > ) ) \
+ this->Convert< itk::Image< ty, di > >( )
+*/
+
+
// -------------------------------------------------------------------------
// LFV: avoid itk::Concept check on 4d or superior images
-#define BBITKVTK_itkImageVector2vtkImageDataVector_Template( t, ty, di ) \
- if( t == typeid( itk::Image< ty, di > ) ) \
- this->Convert< itk::Image< ty, di > >( )
+//EED 2021-12-15 typeid comparation is not working in MacOs for objects declared in different libraries
+// ex: itk <-> vtk templates convertion
+#if defined(MACOSX)
+ #define BBITKVTK_itkImageVector2vtkImageDataVector_Template( t, ty, di ) \
+ if ( strcmp(t.name() , typeid( itk::Image< ty, di >* ).name() ) == 0 ) \
+ this->Convert< itk::Image< ty, di > >( )
+#else
+ #define BBITKVTK_itkImageVector2vtkImageDataVector_Template( t, ty, di ) \
+ if( t == typeid( itk::Image< ty, di >* ) ) \
+ this->Convert< itk::Image< ty, di > >( )
+#endif
// -------------------------------------------------------------------------
+
namespace bbitkvtk
{
BBTK_BLACK_BOX_IMPLEMENTATION(itkImageVector2vtkImageDataVector,bbtk::AtomicBlackBox);
else BBITKVTK_itkImageVector2vtkImageDataVector_Template( t, unsigned short, 3 );
else BBITKVTK_itkImageVector2vtkImageDataVector_Template( t, unsigned int, 3 );
else BBITKVTK_itkImageVector2vtkImageDataVector_Template( t, unsigned long, 3 );
+ else {
+ printf("Warnning! EED itkImageVector2vtkImageDataVector::Convert Type not found for: <%s>\n", bbtk::demangle_type_name(t.name()).c_str() );
+ }
/* Deprecated
BBTK_TEMPLATE_ITK_IMAGE_SWITCH(t,Convert);
template<class T, unsigned int D>
void vtkImageData2itkImage::Convert()
{
- printf("vtkImageData2itkImage::Convert A \n");
-
bbtkDebugMessage("process",5,"==> ["<<bbGetFullName()<<"] : Convert<"
<<bbtk::TypeName<T>()<<","<<D
<<">()"<<std::endl);
typedef itk::VTKImageToImageFilter< itkImageType > VtkToItkConnection;
typename VtkToItkConnection::Pointer conv;
- printf("vtkImageData2itkImage::Convert B \n");
-
// No converter yet : create it and set its input
if (!mConverter)
{
- printf("vtkImageData2itkImage::Convert C \n");
bbtkDebugMessage("process",5," ["<<bbGetFullName()<<"] : No converter yet : creating it"<<std::endl);
conv = VtkToItkConnection::New();
mConverter = conv;
((itk::ProcessObject*)mConverter);
if (!conv)
{
- printf("vtkImageData2itkImage::Convert 1 \n");
bbtkDebugMessage("process",5," ["<<bbGetFullName()<<"] : Converter of wrong input type : reacreating it "<<std::endl);
mConverter->UnRegister();
// set new input
else if ( this->bbGetInputIn() != conv->GetExporter()->GetInput())
{
- printf("vtkImageData2itkImage::Convert 2 \n");
bbtkDebugMessage("process",5," ["<<bbGetFullName()<<"] : Converter input changed : resetting it"<<std::endl);
conv->SetInput( this->bbGetInputIn() );
}
else
{
- printf("vtkImageData2itkImage::Convert 3 \n");
bbtkDebugMessage("process",5," ["<<bbGetFullName()<<"] : Nothing changed"<<std::endl);
}
}