You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
190 lines
7.5 KiB
190 lines
7.5 KiB
# This file attempts to convert an old pipeline filter to a new pipeline
|
|
# filter. Run it with a -DCLASS=classname it will use that class name
|
|
# for processing
|
|
|
|
IF (NOT DEFINED CLASS)
|
|
MESSAGE ("You did not specify the class to process. Usage: cmake -DCLASS=vtkMyClass -P NewPipeConvert" FATAL_ERROR)
|
|
ENDIF (NOT DEFINED CLASS)
|
|
|
|
FILE (GLOB H_FILE ${CLASS}.h)
|
|
FILE (GLOB CXX_FILE ${CLASS}.cxx)
|
|
|
|
# read in both files
|
|
FILE (READ ${H_FILE} H_CONTENTS)
|
|
FILE (READ ${CXX_FILE} CXX_CONTENTS)
|
|
|
|
#================================================================
|
|
# First do the H file
|
|
#================================================================
|
|
|
|
# convert vtkImageToImageFilter subclasses to subclass off of
|
|
# vtkImageAlgorithm, if it is threaded use threaded one
|
|
IF ("${CXX_CONTENTS}" MATCHES ".*ThreadedExecute.*")
|
|
STRING (REGEX REPLACE
|
|
"vtkImageToImageFilter"
|
|
"vtkThreadedImageAlgorithm"
|
|
H_CONTENTS "${H_CONTENTS}")
|
|
STRING (REGEX REPLACE
|
|
"vtkImageTwoInputFilter"
|
|
"vtkThreadedImageAlgorithm"
|
|
H_CONTENTS "${H_CONTENTS}")
|
|
ELSE ("${CXX_CONTENTS}" MATCHES ".*ThreadedExecute.*")
|
|
STRING (REGEX REPLACE
|
|
"vtkImageToImageFilter"
|
|
"vtkImageAlgorithm"
|
|
H_CONTENTS "${H_CONTENTS}")
|
|
STRING (REGEX REPLACE
|
|
"vtkImageSource"
|
|
"vtkImageAlgorithm"
|
|
H_CONTENTS "${H_CONTENTS}")
|
|
STRING (REGEX REPLACE
|
|
"vtkImageTwoInputFilter"
|
|
"vtkImageAlgorithm"
|
|
H_CONTENTS "${H_CONTENTS}")
|
|
STRING (REGEX REPLACE
|
|
"vtkDataSetToImageFilter"
|
|
"vtkImageAlgorithm"
|
|
H_CONTENTS "${H_CONTENTS}")
|
|
ENDIF ("${CXX_CONTENTS}" MATCHES ".*ThreadedExecute.*")
|
|
|
|
|
|
# polyDataAlgorithm
|
|
STRING (REGEX REPLACE
|
|
"vtkPolyDataToPolyDataFilter"
|
|
"vtkPolyDataAlgorithm"
|
|
H_CONTENTS "${H_CONTENTS}")
|
|
|
|
STRING (REGEX REPLACE
|
|
"ExecuteInformation[ \t]*\\([^,\)]*,[^\)]*\\)"
|
|
"ExecuteInformation (vtkInformation *, vtkInformationVector **, vtkInformationVector *)"
|
|
H_CONTENTS "${H_CONTENTS}")
|
|
|
|
STRING (REGEX REPLACE
|
|
"void ExecuteInformation[ \t]*\\([ \t]*\\)[ \t\n]*{[^}]*};"
|
|
""
|
|
H_CONTENTS "${H_CONTENTS}")
|
|
|
|
STRING (REGEX REPLACE
|
|
"ExecuteInformation[ \t]*\\([ \t]*\\)"
|
|
"ExecuteInformation (vtkInformation *, vtkInformationVector **, vtkInformationVector *)"
|
|
H_CONTENTS "${H_CONTENTS}")
|
|
|
|
STRING (REGEX REPLACE
|
|
"ComputeInputUpdateExtent[ \t]*\\([^,]*,[^,\)]*\\)"
|
|
"RequestUpdateExtent (vtkInformation *, vtkInformationVector **, vtkInformationVector *)"
|
|
H_CONTENTS "${H_CONTENTS}")
|
|
|
|
FILE (WRITE ${H_FILE} "${H_CONTENTS}")
|
|
|
|
|
|
#================================================================
|
|
# Now do the CXX files
|
|
#================================================================
|
|
|
|
STRING (REGEX REPLACE
|
|
"::ExecuteInformation[ \t]*\\([^{]*{"
|
|
"::ExecuteInformation (\n vtkInformation * vtkNotUsed(request),\n vtkInformationVector **inputVector,\n vtkInformationVector *outputVector)\n{"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
|
|
# add outInfo only once
|
|
IF (NOT "${CXX_CONTENTS}" MATCHES ".*::ExecuteInformation[^{]*{\n // get the info objects.*")
|
|
STRING (REGEX REPLACE
|
|
"::ExecuteInformation[ \t]*\\([^{]*{"
|
|
"::ExecuteInformation (\n vtkInformation * vtkNotUsed(request),\n vtkInformationVector **inputVector,\n vtkInformationVector *outputVector)\n{\n // get the info objects\n vtkInformation* outInfo = outputVector->GetInformationObject(0);\n vtkInformation *inInfo = inputVector[0]->GetInformationObject(0);\n"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
ENDIF (NOT "${CXX_CONTENTS}" MATCHES ".*::ExecuteInformation[^{]*{\n // get the info objects.*")
|
|
|
|
|
|
STRING (REGEX REPLACE
|
|
"::ComputeInputUpdateExtent[ \t]*\\([^,\)]*,[^,\)]*\\)"
|
|
"::RequestUpdateExtent (\n vtkInformation * vtkNotUsed(request),\n vtkInformationVector **inputVector,\n vtkInformationVector *outputVector)"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
|
|
# add outInfo only once
|
|
IF (NOT "${CXX_CONTENTS}" MATCHES ".*::RequestUpdateExtent[^{]*{\n // get the info objects.*")
|
|
STRING (REGEX REPLACE
|
|
"::RequestUpdateExtent[ \t]*\\([^{]*{"
|
|
"::RequestUpdateExtent (\n vtkInformation * vtkNotUsed(request),\n vtkInformationVector **inputVector,\n vtkInformationVector *outputVector)\n{\n // get the info objects\n vtkInformation* outInfo = outputVector->GetInformationObject(0);\n vtkInformation *inInfo = inputVector[0]->GetInformationObject(0);\n"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
ENDIF (NOT "${CXX_CONTENTS}" MATCHES ".*::RequestUpdateExtent[^{]*{\n // get the info objects.*")
|
|
|
|
STRING (REGEX REPLACE
|
|
"this->GetInput\\(\\)->GetWholeExtent\\("
|
|
"inInfo->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(),"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
STRING (REGEX REPLACE
|
|
"input->GetWholeExtent\\("
|
|
"inInfo->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(),"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
STRING (REGEX REPLACE
|
|
"inData->GetWholeExtent\\("
|
|
"inInfo->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(),"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
STRING (REGEX REPLACE
|
|
"this->GetOutput\\(\\)->SetWholeExtent[ \t\n]*\\(([^)]*)"
|
|
"outInfo->Set(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(),\\1,6"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
STRING (REGEX REPLACE
|
|
"output->SetWholeExtent[ \t\n]*\\(([^)]*)"
|
|
"outInfo->Set(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(),\\1,6"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
STRING (REGEX REPLACE
|
|
"outData->SetWholeExtent[ \t\n]*\\(([^)]*)"
|
|
"outInfo->Set(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(),\\1,6"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
|
|
STRING (REGEX REPLACE
|
|
"this->GetOutput\\(\\)->SetOrigin[ \t\n]*\\(([^)]*)"
|
|
"outInfo->Set(vtkDataObject::ORIGIN(),\\1,3"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
STRING (REGEX REPLACE
|
|
"output->SetOrigin[ \t\n]*\\(([^)]*)"
|
|
"outInfo->Set(vtkDataObject::ORIGIN(),\\1,3"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
STRING (REGEX REPLACE
|
|
"outData->SetOrigin[ \t\n]*\\(([^)]*)"
|
|
"outInfo->Set(vtkDataObject::ORIGIN(),\\1,3"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
|
|
STRING (REGEX REPLACE
|
|
"this->GetOutput\\(\\)->SetSpacing[ \t\n]*\\(([^)]*)"
|
|
"outInfo->Set(vtkDataObject::SPACING(),\\1,3"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
STRING (REGEX REPLACE
|
|
"output->SetSpacing[ \t\n]*\\(([^)]*)"
|
|
"outInfo->Set(vtkDataObject::SPACING(),\\1,3"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
STRING (REGEX REPLACE
|
|
"outData->SetSpacing[ \t\n]*\\(([^)]*)"
|
|
"outInfo->Set(vtkDataObject::SPACING(),\\1,3"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
|
|
STRING (REGEX REPLACE
|
|
"output->SetScalarType[ \t\n]*\\(([^)]*)"
|
|
"outInfo->Set(vtkDataObject::SCALAR_TYPE(),\\1"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
STRING (REGEX REPLACE
|
|
"outData->SetScalarType[ \t\n]*\\(([^)]*)"
|
|
"outInfo->Set(vtkDataObject::SCALAR_TYPE(),\\1"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
STRING (REGEX REPLACE
|
|
"output->SetNumberOfScalarComponents[ \t\n]*\\(([^)]*)"
|
|
"outInfo->Set(vtkDataObject::SCALAR_NUMBER_OF_COMPONENTS(),\\1"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
STRING (REGEX REPLACE
|
|
"outData->SetNumberOfScalarComponents[ \t\n]*\\(([^)]*)"
|
|
"outInfo->Set(vtkDataObject::SCALAR_NUMBER_OF_COMPONENTS(),\\1"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
|
|
# add some useful include files if needed
|
|
IF ("${CXX_CONTENTS}" MATCHES ".*vtkInformation.*")
|
|
# do not do these replacements multiple times
|
|
IF (NOT "${CXX_CONTENTS}" MATCHES ".*vtkInformation.h.*")
|
|
STRING (REGEX REPLACE
|
|
"vtkObjectFactory.h"
|
|
"vtkInformation.h\"\n#include \"vtkInformationVector.h\"\n#include \"vtkObjectFactory.h\"\n#include \"vtkStreamingDemandDrivenPipeline.h"
|
|
CXX_CONTENTS "${CXX_CONTENTS}")
|
|
ENDIF (NOT "${CXX_CONTENTS}" MATCHES ".*vtkInformation.h.*")
|
|
ENDIF ("${CXX_CONTENTS}" MATCHES ".*vtkInformation.*")
|
|
|
|
FILE (WRITE ${CXX_FILE} "${CXX_CONTENTS}")
|
|
|