Hello!
I am writng a plugin for my paraview. I already succeeded doing this
with another filter but this one drives me crazy. I keep getting these
"*** SYNTAX ERROR found in parsing the header file
/home/christian/programming/pv-plugins/Transformation/ivtkSampleFilter.h
before line 8 ***
messages, no matter where I put these //BTX //ETX. This is my header:
#ifndef IVTK_SAMPLE_FILTER
#define IVTK_SAMPLE_FILTER
#include "vtkObjectFactory.h"
#include "vtkSimpleImageToImageFilter.h"
#include "xtkBox.h"
class VTK_IMAGING_EXPORT ivtkSampleImageFilter : public
vtkSimpleImageToImageFilter {
public:
static ivtkSampleImageFilter* New();
vtkTypeMacro( ivtkSampleImageFilter, vtkSimpleImageToImageFilter);
protected:
ivtkSampleImageFilter();
ivtkSampleImageFilter(const ivtkSampleImageFilter&) {};
void operator=(const ivtkSampleImageFilter&) {};
//override from vtkImageToImageFilter
virtual void SimpleExecute(vtkImageData* inp, vtkImageData* out);
//BTX
vtkImageData* vtkResultImage;
//ETX
vtkITKFilter_H_Macro;
/// custom Filter function ///
template <typename ImageType>
void ApplyFilter(vtkImageData* vtkInput);
};
#endif
It also complains if I comment out my #include "xtkBox.h", or put some
//BTX//ETX all around other places. It keeps coming with the error
message as if I did not even edit the right file. (I do, I checked
that... :)
I call a macro later in the header which is defined in the xtkBox.h but
the compiler does not even care if it is defined or not. Anyway, for
completeness I attached this xtkBox.h.
Does anyone see what I am missing?
Best regards,
Chrsitian
#ifndef XTK_BOX
#define XTK_BOX
#include "vtkImageExport.h"
#include "vtkImageImport.h"
#include "itkVTKImageImport.h"
#include "itkVTKImageExport.h"
#include "vtkImageData.h"
//ETX
#include "itkImage.h"
//BTX
template <typename ImageType>
class XTKBox {
protected:
//BTX
typedef itk::VTKImageImport<ImageType> ImageImportType;
typedef itk::VTKImageExport<ImageType> ImageExportType;
typename ImageImportType::Pointer itkImporter;
typename ImageExportType::Pointer itkExporter;
vtkImageImport* vtkImporter;
vtkImageExport* vtkExporter;
ImageType* itkImage;
vtkImageData* vtkImage;
//ETX
public:
XTKBox() {};
XTKBox(vtkImageData*);
//get/set ITK Image Data
void setITKImage(ImageType*);
ImageType* getITKFromVTKImage();
//get/set VTK Image Data
void setVTKImage(vtkImageData*);
vtkImageData* getVTKFromITKImage();
vtkImageData* getVTKImage();
};
///Two macros that have to be called in all ivkt Filters.
///vtkITKFilter_CXX_Macro(ClassName) and vtkITKFilter_H_Macro
///(they construct the proper ITK ImageType according to the input vtkImageData)
#define vtkITKFilter_H_Macro \
virtual void StartTypeGeneration(vtkImageData*); \
template<unsigned int DIM> \
void FinalizeImageType(vtkImageData* vtkInput); \
template<unsigned int DIM, unsigned int COMP> \
void CreateType(vtkImageData* vtkInput);
#define vtkITKFilter_CXX_Macro(thisClass) \
/** \
* Step 1) Initialize TypeCreation by getting the dimensionality of the vtkInput. \
*/ \
void thisClass:: \
StartTypeGeneration(vtkImageData* vtkInput) \
{ \
unsigned int dimensionality = vtkInput->GetDataDimension(); \
switch(dimensionality) { \
case 1: FinalizeImageType<1>(vtkInput); \
break; \
case 2: FinalizeImageType<2>(vtkInput); \
break; \
case 3: FinalizeImageType<3>(vtkInput); \
break; \
default: \
vtkErrorMacro(<<"vtkSimpleImageToImageITKFilter: ApplyITKFilter Error" \
<< "\ndimensionality of vtk input image is " << dimensionality); \
} \
} \
/** \
* Step 2) Get the number of scalar components and setup the final image type. \
*/ \
template<unsigned int DIM> \
void thisClass:: \
FinalizeImageType(vtkImageData* vtkInput) \
{ \
unsigned int components = vtkInput->GetNumberOfScalarComponents(); \
\
switch(components) { \
case 1: return CreateType<DIM, 1>(vtkInput); \
break; \
case 2: return CreateType<DIM, 2>(vtkInput); \
break; \
case 3: return CreateType<DIM, 3>(vtkInput); \
break; \
default: \
vtkErrorMacro(<<"vtkSimpleImageToImageITKFilter: SetupImageType Error" \
<< "\nnumber of components of vtk input image is " << components); \
} \
} \
/** \
* Step 3) Setup the appropriate itk::Image data type. \
*/ \
template<unsigned int DIM, unsigned int COMP> \
void thisClass:: \
CreateType(vtkImageData* vtkInput) \
{ \
const int scalarType = vtkInput->GetScalarType(); \
if (scalarType == VTK_CHAR) { \
typedef itk::Vector< char, COMP > PixelType; \
typedef itk::Image< PixelType, DIM > ImageType; \
ApplyFilter<ImageType>( vtkInput ); \
} else if (scalarType == VTK_UNSIGNED_CHAR) { \
typedef itk::Vector< unsigned char, COMP > PixelType; \
typedef itk::Image< PixelType, DIM > ImageType; \
ApplyFilter<ImageType>( vtkInput ); \
} else if (scalarType == VTK_SHORT) { \
typedef itk::Vector< short, COMP > PixelType; \
typedef itk::Image< PixelType, DIM > ImageType; \
ApplyFilter<ImageType>( vtkInput ); \
} else if (scalarType == VTK_UNSIGNED_SHORT) { \
typedef itk::Vector< unsigned short, COMP > PixelType; \
typedef itk::Image< PixelType, DIM > ImageType; \
ApplyFilter<ImageType>( vtkInput ); \
} else if (scalarType == VTK_INT) { \
typedef itk::Vector< int, COMP > PixelType; \
typedef itk::Image< PixelType, DIM > ImageType; \
ApplyFilter<ImageType>( vtkInput ); \
} else if (scalarType == VTK_UNSIGNED_INT) { \
typedef itk::Vector< unsigned int, COMP > PixelType; \
typedef itk::Image< PixelType, DIM > ImageType; \
ApplyFilter<ImageType>( vtkInput ); \
} else if (scalarType == VTK_LONG) { \
typedef itk::Vector< long, COMP > PixelType; \
typedef itk::Image< PixelType, DIM > ImageType; \
ApplyFilter<ImageType>( vtkInput ); \
} else if (scalarType == VTK_UNSIGNED_LONG) { \
typedef itk::Vector< unsigned long, COMP > PixelType; \
typedef itk::Image< PixelType, DIM > ImageType; \
ApplyFilter<ImageType>( vtkInput ); \
} else if (scalarType == VTK_FLOAT) { \
typedef itk::Vector< float, COMP > PixelType; \
typedef itk::Image< PixelType, DIM > ImageType; \
ApplyFilter<ImageType>( vtkInput ); \
} else if (scalarType == VTK_DOUBLE) { \
typedef itk::Vector< double, COMP > PixelType; \
typedef itk::Image< PixelType, DIM > ImageType; \
ApplyFilter<ImageType>( vtkInput ); \
} else { \
const char* scalarTypeString = vtkInput->GetScalarTypeAsString(); \
vtkErrorMacro(<<"vtkSimpleImageToImageITKFilter: CreateType Error" \
<< "\nscalar type of vtk input image is " << scalarTypeString \
<< "(" << scalarType << ")"); \
} \
}
#endif
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the ParaView Wiki at:
http://paraview.org/Wiki/ParaView
Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview