From 2d72a27d8004ff64cc1ba93b35eddff978c916c3 Mon Sep 17 00:00:00 2001 From: Leonardo Florez-Valencia Date: Mon, 4 Apr 2016 18:19:04 -0500 Subject: [PATCH] ... --- appli/bash/cpPlugins_CreateInstances.cxx | 176 ++++++++---------- lib/cpPlugins/CMakeLists.txt | 4 + lib/cpPlugins_Instances/Base.i | 38 ++-- lib/cpPlugins_Instances/Base_extra.cxx | 43 +++-- lib/cpPlugins_Instances/CMakeLists.txt | 93 +++++---- lib/cpPlugins_Instances/DistanceMapFilters.i | 15 +- lib/cpPlugins_Instances/Image.i | 35 ++-- lib/cpPlugins_Instances/ImageFiltersBase.i | 26 ++- lib/cpPlugins_Instances/ImageIO.i | 28 ++- lib/cpPlugins_Instances/ImageITK2VTK.i | 18 +- lib/cpPlugins_Instances/ImageIterators.i | 40 +++- .../InPlaceImageFiltersBase.i | 19 ++ lib/cpPlugins_Instances/Mesh.i | 7 +- lib/cpPlugins_Instances/ResamplingFilters.i | 12 ++ lib/cpPlugins_Instances/ThresholdFilters.i | 13 +- lib/cpPlugins_Instances/Transforms.i | 12 ++ plugins/CMakeLists.txt | 1 + .../BinaryContourImageFilter.cxx | 6 +- .../BinaryThresholdImageFilter.cxx | 44 +---- plugins/cpPluginsImageFilters/CMakeLists.txt | 22 ++- .../ResampleImageFilter.cxx | 9 +- .../SignedMaurerDistanceMapImageFilter.cxx | 12 +- 22 files changed, 368 insertions(+), 305 deletions(-) create mode 100644 lib/cpPlugins_Instances/InPlaceImageFiltersBase.i create mode 100644 lib/cpPlugins_Instances/ResamplingFilters.i create mode 100644 lib/cpPlugins_Instances/Transforms.i diff --git a/appli/bash/cpPlugins_CreateInstances.cxx b/appli/bash/cpPlugins_CreateInstances.cxx index e9a4590..2340678 100644 --- a/appli/bash/cpPlugins_CreateInstances.cxx +++ b/appli/bash/cpPlugins_CreateInstances.cxx @@ -19,9 +19,9 @@ std::string Replace( const std::string& str, const std::string& sub, const std::string& nsub ); bool ReadFile( TParsedLines& lines, const std::string& fname ); -void ExpandGroups( TLines& res, const TLines& lines ); +void ExpandGroups( TLines& res, const TLines& lines, const TVariables& vars ); void ExpandVariables( TLines& res, const TLines& lines, const TVariables& vars ); -void ParseIncludes( TLines& res, const TLines& lines, const std::string& ext ); +void ParseIncludes( TLines& res, const TLines& lines, const std::string& ext = "" ); void PrintLines( const std::string& prefix, const std::string& suffix, const TLines& lines, std::ostream& out @@ -39,21 +39,24 @@ int main( int argc, char* argv[] ) return( 1 ); } // fi - std::string lname = argv[ 2 ]; + std::string input_definitions_fname = argv[ 1 ]; + std::string library_name = argv[ 2 ]; + std::string header_file_fname = argv[ 3 ]; + std::string source_file_fname = argv[ 4 ]; // Read file and simple parse it TParsedLines lines; - if( !ReadFile( lines, argv[ 1 ] ) ) + if( !ReadFile( lines, input_definitions_fname ) ) { std::cerr << "Error opening file: \"" - << argv[ 1 ] << "\"" + << input_definitions_fname << "\"" << std::endl; return( 1 ); } // fi - // Build definitions + // Expand variable definitions TVariables vars; for( auto dIt = lines[ 'd' ].begin( ); dIt != lines[ 'd' ].end( ); ++dIt ) { @@ -64,102 +67,81 @@ int main( int argc, char* argv[] ) for( ; tIt != tokens.end( ); ++tIt ) vars[ vName ].push_back( *tIt ); + TLines res; + ExpandVariables( res, vars[ vName ], vars ); + vars[ vName ] = res; + } // rof // First include section - TLines first_includes; - ParseIncludes( first_includes, lines[ 'f' ], "" ); - - TLines normal_includes; - ParseIncludes( normal_includes, lines[ 'i' ], "" ); - - TLines template_includes; - ParseIncludes( template_includes, lines[ 't' ], "" ); - - TLines template_sources; + TLines first_includes, normal_includes, template_includes, template_sources; + ParseIncludes( first_includes, lines[ 'f' ] ); + ParseIncludes( normal_includes, lines[ 'i' ] ); + ParseIncludes( template_includes, lines[ 't' ] ); ParseIncludes( template_sources, lines[ 't' ], "xx" ); // Expand groups - TLines classes; - ExpandGroups( classes, lines[ 'c' ] ); + TLines pre_classes; + ExpandGroups( pre_classes, lines[ 'c' ], vars ); // Expand variables TLines real_classes; - ExpandVariables( real_classes, classes, vars ); - - // Prepare precompiler options - TLines global_header; - std::stringstream global_header_stream; - global_header_stream - << "#ifndef __" << lname << "__H__" << std::endl - << "#define __" << lname << "__H__" << std::endl<< std::endl - << "#include " << std::endl << std::endl; - global_header.push_back( global_header_stream.str( ) ); - - TLines macro_header; - std::stringstream macro_header_stream; - macro_header_stream - << "#ifdef " << lname << "_EXPORTS" << std::endl - << "# define " << lname << "_PREFIX template class " - << lname << "_EXPORT" << std::endl - << "#else // " << lname << "_EXPORTS" << std::endl - << "# define " << lname << "_PREFIX extern template class" << std::endl - << "#endif // " << lname << "_EXPORTS" << std::endl; - macro_header.push_back( macro_header_stream.str( ) ); - - TLines end_global_header; - std::stringstream end_global_header_stream; - end_global_header_stream - << "#endif // __" << lname << "__H__" << std::endl; - end_global_header.push_back( end_global_header_stream.str( ) ); - - // Write header file - std::ofstream header_file( argv[ 3 ] ); + ExpandVariables( real_classes, pre_classes, vars ); + + // Prepare header file + std::ofstream header_file( header_file_fname.c_str( ) ); if( !header_file ) { std::cerr - << "Error opening \"" << argv[ 3 ] << "\" for writing." << std::endl; + << "Error opening \"" << header_file_fname + << "\" for writing." << std::endl; return( 1 ); } // fi - PrintLines( "", "", global_header, header_file ); + + // Print header header_file - << "#include <" << lname << "_Export.h>" << std::endl << std::endl; + << "#ifndef __" << library_name << "__H__" << std::endl + << "#define __" << library_name << "__H__" << std::endl<< std::endl + << "#include " << std::endl + << "#include <" << library_name << "_Export.h>" << std::endl << std::endl; PrintLines( "", "", lines[ 'b' ], header_file ); header_file << std::endl; PrintLines( "", "", first_includes, header_file ); - PrintLines( "", "", macro_header, header_file ); + header_file + << "#ifdef " << library_name << "_EXPORTS" << std::endl + << "# define " << library_name << "_PREFIX template class " + << library_name << "_EXPORT" << std::endl + << "#else // " << library_name << "_EXPORTS" << std::endl + << "# define " << library_name + << "_PREFIX extern template class" << std::endl + << "#endif // " + << library_name << "_EXPORTS" << std::endl; PrintLines( "", "", normal_includes, header_file ); PrintLines( "", "", template_includes, header_file ); - header_file << std::endl << "#ifdef " << lname << "_EXPORTS" << std::endl; + header_file + << std::endl << "#ifdef " << library_name << "_EXPORTS" << std::endl; PrintLines( "", "", template_sources, header_file ); - header_file << "#endif // " << lname << "_EXPORTS" << std::endl; - header_file << std::endl; - PrintLines( lname + std::string( "_PREFIX " ), ";", real_classes, header_file ); + header_file << "#endif // " << library_name << "_EXPORTS" << std::endl; header_file << std::endl; - PrintLines( "", "", end_global_header, header_file ); + PrintLines( + library_name + std::string( "_PREFIX " ), ";", real_classes, header_file + ); + header_file + << std::endl << "#endif // __" << library_name << "__H__" << std::endl; header_file.close( ); // Write source file - std::ofstream source_file( argv[ 4 ] ); + std::ofstream source_file( source_file_fname ); if( !source_file ) { std::cerr - << "Error opening \"" << argv[ 3 ] << "\" for writing." << std::endl; + << "Error opening \"" << header_file_fname << "\" for writing." << std::endl; return( 1 ); } // fi source_file - << "#include \"" << argv[ 3 ] << "\"" << std::endl; - /* TODO - PrintLines( "", "", first_includes, source_file ); - PrintLines( "", "", template_includes, source_file ); - source_file << std::endl; - PrintLines( - std::string( "template class " ) + lname + std::string( "_EXPORT " ), - ";", real_classes, source_file - ); - */ + << "#include \"" << header_file_fname << "\"" << std::endl; source_file.close( ); return( 0 ); } @@ -192,15 +174,9 @@ std::string Replace( ) { std::string res = str; - size_t index = 0; - while( true ) - { - index = res.find( sub, index ); - if( index == std::string::npos ) break; + size_t index; + while( ( index = res.find( sub ) ) != std::string::npos ) res.replace( index, sub.size( ), nsub ); - index += sub.size( ); - - } // elihw return( res ); } @@ -260,19 +236,32 @@ bool ReadFile( TParsedLines& lines, const std::string& fname ) } // ------------------------------------------------------------------------- -void ExpandGroups( TLines& res, const TLines& lines ) +void ExpandGroups( TLines& res, const TLines& lines, const TVariables& vars ) { for( auto lIt = lines.begin( ); lIt != lines.end( ); ++lIt ) { - auto b_pos = lIt->find( "#{" ); + auto b_pos = lIt->find( "@{" ); if( b_pos != std::string::npos ) { auto e_pos = lIt->find( "}" ); auto expansion = lIt->substr( b_pos + 2, e_pos - b_pos - 2 ); auto tokens = Tokenize( expansion, ";" ); for( auto tIt = tokens.begin( ); tIt != tokens.end( ); ++tIt ) - *tIt = lIt->substr( 0, b_pos ) + *tIt + lIt->substr( e_pos + 1 ); - ExpandGroups( res, tokens ); + { + auto vIt = vars.find( *tIt ); + if( vIt != vars.end( ) ) + { + auto wIt = vIt->second.begin( ); + std::string values = *wIt; + for( wIt++; wIt != vIt->second.end( ); ++wIt ) + values += ";" + *wIt; + *tIt = Replace( *lIt, vIt->first, values ); + } + else + *tIt = lIt->substr( 0, b_pos ) + *tIt + lIt->substr( e_pos + 1 ); + + } // rof + ExpandGroups( res, tokens, vars ); } else res.push_back( *lIt ); @@ -283,9 +272,6 @@ void ExpandGroups( TLines& res, const TLines& lines ) // ------------------------------------------------------------------------- void ExpandVariables( TLines& res, const TLines& lines, const TVariables& vars ) { - const char* int_types[] = { "char", "short", "int", "long" }; - const char* float_types[] = { "float", "double" }; - unsigned int n_int_types = 4, n_float_types = 2; for( auto lIt = lines.begin( ); lIt != lines.end( ); ++lIt ) { auto b_pos = lIt->find( "#" ); @@ -293,27 +279,13 @@ void ExpandVariables( TLines& res, const TLines& lines, const TVariables& vars ) { auto tokens = Tokenize( lIt->substr( b_pos ), " ,;:{}[]()\"$&<>" ); std::string cmd = tokens[ 0 ]; - if( - cmd == "#int_types" || cmd == "#uint_types" || cmd == "#float_types" - ) + auto vIt = vars.find( cmd ); + if( vIt != vars.end( ) ) { - const char** types = ( cmd == "#float_types" )? float_types: int_types; - unsigned int size = ( cmd == "#float_types" )? n_float_types: n_int_types; - std::string ustr = ( ( cmd == "#uint_types" )? "unsigned ": "" ); - TLines new_res; - for( unsigned int i = 0; i < size; ++i ) - new_res.push_back( Replace( *lIt, cmd, ustr + types[ i ] ) ); - ExpandVariables( res, new_res, vars ); - } - else - { - auto vIt = vars.find( cmd ); - if( vIt != vars.end( ) ) + if( vIt->second.size( ) > 0 ) { TLines new_res; - for( - auto wIt = vIt->second.begin( ); wIt != vIt->second.end( ); ++wIt - ) + for( auto wIt = vIt->second.begin( ); wIt != vIt->second.end( ); ++wIt ) new_res.push_back( Replace( *lIt, cmd, *wIt ) ); ExpandVariables( res, new_res, vars ); diff --git a/lib/cpPlugins/CMakeLists.txt b/lib/cpPlugins/CMakeLists.txt index fc2f2a7..d289746 100644 --- a/lib/cpPlugins/CMakeLists.txt +++ b/lib/cpPlugins/CMakeLists.txt @@ -84,12 +84,16 @@ SET( SET( target_LIBRARIES cpPlugins_Base + cpPlugins_Transforms cpPlugins_Image cpPlugins_Mesh cpPlugins_ImageFiltersBase cpPlugins_ImageIO cpPlugins_ImageIterators cpPlugins_ImageITK2VTK + cpPlugins_ThresholdFilters + cpPlugins_DistanceMapFilters + cpPlugins_ResamplingFilters cpPlugins_tinyxml2 ) IF(NOT WIN32) diff --git a/lib/cpPlugins_Instances/Base.i b/lib/cpPlugins_Instances/Base.i index 5495635..40e158d 100644 --- a/lib/cpPlugins_Instances/Base.i +++ b/lib/cpPlugins_Instances/Base.i @@ -1,27 +1,25 @@ -i string -i vector -i itkIndex.h -t itkArray.h -t itkFixedArray.h +f cpPlugins_Config.h + t itkCovariantVector.h +t itkFixedArray.h t itkMatrix.h t itkPoint.h -t itkVector.h t itkRGBPixel.h t itkRGBAPixel.h -t itkSimpleDataObjectDecorator.h -t itkVectorContainer.h - -c itk::Array< #scalars > -c itk::FixedArray< #scalars, #dims > -c itk::FixedArray< float, 6 > -c #{itk::CovariantVector;itk::Point;itk::Vector}< #float_types, #dims > -c #{itk::RGBPixel;itk::RGBAPixel}< #scalars > -c itk::Matrix< #float_types, #dims, #dims > -c itk::SimpleDataObjectDecorator< #{#scalars;std::string} > -c itk::SimpleDataObjectDecorator< std::vector< itk::Index< #{2;3} > > > -c itk::SimpleDataObjectDecorator< std::vector< itk::Point< #float_types, #{2;3} > > > -c itk::VectorContainer< unsigned long, itk::Point< #float_types, #dims > > +t itkSymmetricEigenAnalysis.h +t itkSymmetricSecondRankTensor.h +t itkVector.h -d #scalars=#int_types;#uint_types;#float_types d #dims=1;2;3;4 +d #int=char;short;int;long +d #float=float;double +d #scalar=#int;unsigned #int;#float +d #color_pixels=itk::RGBPixel< #scalar >;itk::RGBAPixel< #scalar > +d #lin_alg_vectors=itk::CovariantVector;itk::Point;itk::Vector + +c itk::FixedArray< #scalar, #dims > +c #color_pixels +c #lin_alg_vectors< #float, #dims > +c itk::Matrix< #float, #dims, #dims > +c itk::SymmetricEigenAnalysis< itk::Matrix< #float, #dims, #dims >, itk::FixedArray< #float, #dims >, itk::Matrix< #float, #dims, #dims > > +c itk::SymmetricSecondRankTensor< #float, #dims > diff --git a/lib/cpPlugins_Instances/Base_extra.cxx b/lib/cpPlugins_Instances/Base_extra.cxx index 0e1912c..4da6463 100644 --- a/lib/cpPlugins_Instances/Base_extra.cxx +++ b/lib/cpPlugins_Instances/Base_extra.cxx @@ -10,32 +10,35 @@ #include // ------------------------------------------------------------------------- -#define cpPlugins_Base_extra_SimpleArray( V, D ) \ - template cpPlugins_Base_EXPORT \ - std::ostream& itk::operator<< < D >( \ - std::ostream& a, itk::V< D > const& b \ +#define cpPlugins_Base_extra_SimpleArray( V, D ) \ + template cpPlugins_Base_EXPORT \ + std::ostream& itk::operator<< < D >( \ + std::ostream& a, V< D > const& b \ ) -cpPlugins_Base_extra_SimpleArray( ImageRegion, 1 ); -cpPlugins_Base_extra_SimpleArray( ImageRegion, 2 ); -cpPlugins_Base_extra_SimpleArray( ImageRegion, 3 ); -cpPlugins_Base_extra_SimpleArray( ImageRegion, 4 ); +cpPlugins_Base_extra_SimpleArray( itk::ImageRegion, 1 ); +cpPlugins_Base_extra_SimpleArray( itk::ImageRegion, 2 ); +cpPlugins_Base_extra_SimpleArray( itk::ImageRegion, 3 ); +cpPlugins_Base_extra_SimpleArray( itk::ImageRegion, 4 ); // ------------------------------------------------------------------------- -#define cpPlugins_Base_extra_Array( V, T, D ) \ - template cpPlugins_Base_EXPORT \ - std::ostream& itk::operator<< < T, D >( \ - std::ostream& a, itk::V< T, D > const& b \ +#define cpPlugins_Base_extra_Array( V, T, D ) \ + template cpPlugins_Base_EXPORT \ + std::ostream& itk::operator<< < T, D >( \ + std::ostream& a, V< T, D > const& b \ ) -cpPlugins_Base_extra_Array( Point, double, 1 ); -cpPlugins_Base_extra_Array( Point, double, 2 ); -cpPlugins_Base_extra_Array( Point, double, 3 ); -cpPlugins_Base_extra_Array( Point, double, 4 ); +#define cpPlugins_Base_extra_Array_AllScalars( V, D ) \ + cpPlugins_Base_extra_Array( V, float, D ); \ + cpPlugins_Base_extra_Array( V, double, D ) -cpPlugins_Base_extra_Array( Vector, double, 1 ); -cpPlugins_Base_extra_Array( Vector, double, 2 ); -cpPlugins_Base_extra_Array( Vector, double, 3 ); -cpPlugins_Base_extra_Array( Vector, double, 4 ); +#define cpPlugins_Base_extra_Array_AllScalars_AllDims( V ) \ + cpPlugins_Base_extra_Array_AllScalars( V, 1 ); \ + cpPlugins_Base_extra_Array_AllScalars( V, 2 ); \ + cpPlugins_Base_extra_Array_AllScalars( V, 3 ); \ + cpPlugins_Base_extra_Array_AllScalars( V, 4 ) + +cpPlugins_Base_extra_Array_AllScalars_AllDims( itk::Point ); +cpPlugins_Base_extra_Array_AllScalars_AllDims( itk::Vector ); // eof - $RCSfile$ diff --git a/lib/cpPlugins_Instances/CMakeLists.txt b/lib/cpPlugins_Instances/CMakeLists.txt index 04b61b8..a70119b 100644 --- a/lib/cpPlugins_Instances/CMakeLists.txt +++ b/lib/cpPlugins_Instances/CMakeLists.txt @@ -36,44 +36,61 @@ FOREACH(i ${libs_DEFS}) ENDFOREACH(i) ## Target links -TARGET_LINK_LIBRARIES( - cpPlugins_Base - ${ITK_LIBRARIES} - ${VTK_LIBRARIES} - ) -TARGET_LINK_LIBRARIES( - cpPlugins_Image - cpPlugins_Base - ) -TARGET_LINK_LIBRARIES( - cpPlugins_Mesh - cpPlugins_Base - ) -TARGET_LINK_LIBRARIES( - cpPlugins_ImageFiltersBase - cpPlugins_Image - ) -TARGET_LINK_LIBRARIES( - cpPlugins_ImageITK2VTK - cpPlugins_ImageFiltersBase - ) -TARGET_LINK_LIBRARIES( - cpPlugins_ImageIterators - cpPlugins_Image - ) -TARGET_LINK_LIBRARIES( - cpPlugins_ImageIO - cpPlugins_ImageFiltersBase - cpPlugins_ImageIterators - ) -TARGET_LINK_LIBRARIES( - cpPlugins_ThresholdFilters - cpPlugins_ImageFiltersBase - ) -TARGET_LINK_LIBRARIES( - cpPlugins_DistanceMapFilters - cpPlugins_ThresholdFilters - ) +TARGET_LINK_LIBRARIES(cpPlugins_Base ${ITK_LIBRARIES} ${VTK_LIBRARIES}) +TARGET_LINK_LIBRARIES(cpPlugins_Image cpPlugins_Base) +TARGET_LINK_LIBRARIES(cpPlugins_Mesh cpPlugins_Base) +TARGET_LINK_LIBRARIES(cpPlugins_Transforms cpPlugins_Base) +TARGET_LINK_LIBRARIES(cpPlugins_ImageIterators cpPlugins_Image) +TARGET_LINK_LIBRARIES(cpPlugins_ImageFiltersBase cpPlugins_Image) +TARGET_LINK_LIBRARIES(cpPlugins_InPlaceImageFiltersBase cpPlugins_ImageFiltersBase) +TARGET_LINK_LIBRARIES(cpPlugins_ThresholdFilters cpPlugins_InPlaceImageFiltersBase cpPlugins_ImageIterators) +TARGET_LINK_LIBRARIES(cpPlugins_DistanceMapFilters cpPlugins_ThresholdFilters) +TARGET_LINK_LIBRARIES(cpPlugins_ImageIO cpPlugins_ImageFiltersBase) +TARGET_LINK_LIBRARIES(cpPlugins_ImageITK2VTK cpPlugins_ImageFiltersBase) + +#TARGET_LINK_LIBRARIES(cpPlugins_Transforms +# cpPlugins_Base +# ) +# TARGET_LINK_LIBRARIES( +# cpPlugins_Image +# cpPlugins_Base +# ) +# TARGET_LINK_LIBRARIES( +# cpPlugins_Mesh +# cpPlugins_Base +# ) +# TARGET_LINK_LIBRARIES( +# cpPlugins_ImageFiltersBase +# cpPlugins_Image +# ) +# TARGET_LINK_LIBRARIES( +# cpPlugins_ImageITK2VTK +# cpPlugins_ImageFiltersBase +# ) +# TARGET_LINK_LIBRARIES( +# cpPlugins_ImageIterators +# cpPlugins_Image +# ) +# TARGET_LINK_LIBRARIES( +# cpPlugins_ImageIO +# cpPlugins_ImageFiltersBase +# cpPlugins_ImageIterators +# ) +# TARGET_LINK_LIBRARIES( +# cpPlugins_ThresholdFilters +# cpPlugins_ImageFiltersBase +# cpPlugins_ImageIterators +# ) +# TARGET_LINK_LIBRARIES( +# cpPlugins_DistanceMapFilters +# cpPlugins_ThresholdFilters +# ) +# TARGET_LINK_LIBRARIES( +# cpPlugins_ResamplingFilters +# cpPlugins_Transforms +# cpPlugins_ImageFiltersBase +# cpPlugins_ImageIterators +# ) # # =================================== # # = Integrate all source file names = diff --git a/lib/cpPlugins_Instances/DistanceMapFilters.i b/lib/cpPlugins_Instances/DistanceMapFilters.i index 0ad35d7..1938f35 100644 --- a/lib/cpPlugins_Instances/DistanceMapFilters.i +++ b/lib/cpPlugins_Instances/DistanceMapFilters.i @@ -1,8 +1,13 @@ -f cpPlugins_Instances/ImageFiltersBase.h -f cpPlugins_Instances/ImageIterators.h +f cpPlugins_Instances/InPlaceImageFiltersBase.h + +i itkProgressReporter.h +t itkBinaryContourImageFilter.h t itkSignedMaurerDistanceMapImageFilter.h -c itk::SignedMaurerDistanceMapImageFilter< itk::Image< #scalars, #dims >, itk::Image< #float_types, #dims > > +d #dims=2;3 +d #int=char;short;int;long +d #float=float;double +d #scalar=#int;unsigned #int;#float +d #filters=itk::BinaryContourImageFilter;itk::SignedMaurerDistanceMapImageFilter -d #scalars=#int_types;#uint_types;#float_types -d #dims=1;2;3;4 +c #filters< itk::Image< @{#scalar}, #dims >, itk::Image< @{#float}, #dims > > diff --git a/lib/cpPlugins_Instances/Image.i b/lib/cpPlugins_Instances/Image.i index 49c8e3d..1370210 100644 --- a/lib/cpPlugins_Instances/Image.i +++ b/lib/cpPlugins_Instances/Image.i @@ -1,19 +1,26 @@ f cpPlugins_Instances/Base.h + i complex -t itkImageRegion.h -t itkImportImageContainer.h -t itkImageBase.h t itkImage.h +t itkImageBase.h +t itkImportImageContainer.h +t itkImageRegion.h -c itk::ImageRegion< #dims > -c itk::ImportImageContainer< unsigned long, #{#scalars;#colors;#complex} > -c itk::ImportImageContainer< unsigned long, #vectors< #float_types, #dims > > -c itk::ImageBase< #dims > -c itk::Image< #{#scalars;#colors;#complex}, #dims > -c itk::Image< #vectors< #float_types, #dims >, #dims > - -d #scalars=#int_types;#uint_types;#float_types -d #colors=itk::RGBPixel< #scalars >;itk::RGBAPixel< #scalars > -d #complex=std::complex< #float_types > -d #vectors=itk::CovariantVector;itk::Point;itk::Vector d #dims=1;2;3;4 +d #int=char;short;int;long +d #float=float;double +d #scalar=#int;unsigned #int;#float +d #color_pixels=itk::RGBPixel< #scalar >;itk::RGBAPixel< #scalar > +d #complex_pixels=std::complex< #float > +d #lin_alg_vectors=itk::CovariantVector;itk::Point;itk::Vector +d #pixels=#scalar;#color_pixels;#complex_pixels +d #array_pixels=#lin_alg_vectors;itk::SymmetricSecondRankTensor +d #double_array_pixels=itk::Matrix + +c itk::ImportImageContainer< unsigned long, #pixels > +c itk::ImportImageContainer< unsigned long, #array_pixels< #float, #dims > > +c itk::ImportImageContainer< unsigned long, #double_array_pixels< #float, #dims, #dims > > + +c itk::Image< #pixels, #dims > +c itk::Image< #array_pixels< #float, #dims >, #dims > +c itk::Image< #double_array_pixels< #float, #dims, #dims >, #dims > diff --git a/lib/cpPlugins_Instances/ImageFiltersBase.i b/lib/cpPlugins_Instances/ImageFiltersBase.i index 355cf6c..30b308a 100644 --- a/lib/cpPlugins_Instances/ImageFiltersBase.i +++ b/lib/cpPlugins_Instances/ImageFiltersBase.i @@ -1,12 +1,24 @@ f cpPlugins_Instances/Image.h + t itkImageSource.h t itkImageToImageFilter.h -c itk::ImageSource< itk::Image< #{#scalars;#colors;#complex}, #dims > > -c itk::ImageSource< itk::Image< #vectors< #float_types, #dims >, #dims > > - -d #scalars=#int_types;#uint_types;#float_types -d #colors=itk::RGBPixel< #scalars >;itk::RGBAPixel< #scalars > -d #complex=std::complex< #float_types > -d #vectors=itk::CovariantVector;itk::Point;itk::Vector d #dims=1;2;3;4 +d #int=char;short;int;long +d #float=float;double +d #scalar=#int;unsigned #int;#float +d #color_pixels=itk::RGBPixel< #scalar >;itk::RGBAPixel< #scalar > +d #complex_pixels=std::complex< #float > +d #lin_alg_vectors=itk::CovariantVector;itk::Point;itk::Vector +d #pixels=#scalar;#color_pixels;#complex_pixels +d #array_pixels=#lin_alg_vectors;itk::SymmetricSecondRankTensor +d #double_array_pixels=itk::Matrix +d #filters=itk::ImageToImageFilter + +c itk::ImageSource< itk::Image< #pixels, #dims > > +c itk::ImageSource< itk::Image< #array_pixels< #float, #dims >, #dims > > +c itk::ImageSource< itk::Image< #double_array_pixels< #float, #dims, #dims >, #dims > > + +c #filters< itk::Image< @{#pixels}, #dims >, itk::Image< @{#pixels}, #dims > > +c #filters< itk::Image< #array_pixels< @{#float}, #dims >, #dims >, itk::Image< #array_pixels< @{#float}, #dims >, #dims > > +c #filters< itk::Image< #double_array_pixels< @{#float}, #dims, #dims >, #dims >, itk::Image< #double_array_pixels< @{#float}, #dims, #dims >, #dims > > diff --git a/lib/cpPlugins_Instances/ImageIO.i b/lib/cpPlugins_Instances/ImageIO.i index faec127..4c781e0 100644 --- a/lib/cpPlugins_Instances/ImageIO.i +++ b/lib/cpPlugins_Instances/ImageIO.i @@ -1,20 +1,30 @@ b #include b #undef ITKIOImageBase_HIDDEN b #define ITKIOImageBase_HIDDEN + f cpPlugins_Instances/Image.h + +i itkImageIOFactory.h +i itkGDCMSeriesFileNames.h + t itkImageFileReader.h t itkImageFileWriter.h t itkImageSeriesReader.h t itkConvertPixelBuffer.h t itkImageAlgorithm.h -i itkImageIOFactory.h -i itkGDCMSeriesFileNames.h -c #{itk::ImageFileReader;itk::ImageFileWriter;itk::ImageSeriesReader}< itk::Image< #{#scalars;#colors;#complex}, #dims > > -c #{itk::ImageFileReader;itk::ImageFileWriter;itk::ImageSeriesReader}< itk::Image< #vectors< #float_types, #dims >, #dims > > - -d #scalars=#int_types;#uint_types;#float_types -d #colors=itk::RGBPixel< #scalars >;itk::RGBAPixel< #scalars > -d #complex=std::complex< #float_types > -d #vectors=itk::CovariantVector;itk::Point;itk::Vector d #dims=1;2;3;4 +d #int=char;short;int;long +d #float=float;double +d #scalar=#int;unsigned #int;#float +d #color_pixels=itk::RGBPixel< #scalar >;itk::RGBAPixel< #scalar > +d #complex_pixels=std::complex< #float > +d #lin_alg_vectors=itk::CovariantVector;itk::Point;itk::Vector +d #pixels=#scalar;#color_pixels;#complex_pixels +d #array_pixels=#lin_alg_vectors;itk::SymmetricSecondRankTensor +d #double_array_pixels=itk::Matrix +d #filters=itk::ImageFileReader;itk::ImageFileWriter;itk::ImageSeriesReader + +c #filters< itk::Image< #pixels, #dims > > +c #filters< itk::Image< #array_pixels< #float, #dims >, #dims > > +c #filters< itk::Image< #double_array_pixels< #float, #dims, #dims >, #dims > > diff --git a/lib/cpPlugins_Instances/ImageITK2VTK.i b/lib/cpPlugins_Instances/ImageITK2VTK.i index e1451fe..2c9315a 100644 --- a/lib/cpPlugins_Instances/ImageITK2VTK.i +++ b/lib/cpPlugins_Instances/ImageITK2VTK.i @@ -4,11 +4,17 @@ t itkVTKImageToImageFilter.h t itkVTKImageExport.h t itkVTKImageImport.h -c #filters< itk::Image< #{#scalars;#colors}, #dims > > -c #filters< itk::Image< #vectors< #float_types, #dims >, #dims > > - -d #scalars=#int_types;#uint_types;#float_types -d #colors=itk::RGBPixel< #scalars >;itk::RGBAPixel< #scalars > -d #vectors=itk::CovariantVector;itk::Point;itk::Vector d #dims=2;3 +d #int=char;short;int;long +d #float=float;double +d #scalar=#int;unsigned #int;#float +d #color_pixels=itk::RGBPixel< #scalar >;itk::RGBAPixel< #scalar > +d #lin_alg_vectors=itk::CovariantVector;itk::Point;itk::Vector +d #pixels=#scalar;#color_pixels;#complex_pixels +d #array_pixels=#lin_alg_vectors;itk::SymmetricSecondRankTensor +d #double_array_pixels=itk::Matrix d #filters=itk::ImageToVTKImageFilter;itk::VTKImageToImageFilter + +c #filters< itk::Image< #pixels, #dims > > +c #filters< itk::Image< #array_pixels< #float, #dims >, #dims > > +c #filters< itk::Image< #double_array_pixels< #float, #dims, #dims >, #dims > > diff --git a/lib/cpPlugins_Instances/ImageIterators.i b/lib/cpPlugins_Instances/ImageIterators.i index 834610c..276a937 100644 --- a/lib/cpPlugins_Instances/ImageIterators.i +++ b/lib/cpPlugins_Instances/ImageIterators.i @@ -1,16 +1,40 @@ b #define ITK_LEGACY_REMOVE + f cpPlugins_Instances/Image.h + t itkImageRegionConstIterator.h t itkImageRegionIterator.h t itkImageScanlineConstIterator.h t itkImageScanlineIterator.h +t itkImageLinearConstIteratorWithIndex.h +t itkImageLinearIteratorWithIndex.h +t itkImageConstIteratorWithIndex.h +t itkImageIteratorWithIndex.h +t itkZeroFluxNeumannBoundaryCondition.h +t itkConstNeighborhoodIterator.h +t itkNeighborhoodIterator.h +t itkNeighborhood.h +t itkConstShapedNeighborhoodIterator.h +t itkShapedNeighborhoodIterator.h +t itkImageRegionConstIteratorWithIndex.h +t itkImageRegionIteratorWithIndex.h -c #iterators< itk::Image< #{#scalars;#colors;#complex}, #dims > > -c #iterators< itk::Image< #vectors< #float_types, #dims >, #dims > > - -d #scalars=#int_types;#uint_types;#float_types -d #colors=itk::RGBPixel< #scalars >;itk::RGBAPixel< #scalars > -d #complex=std::complex< #float_types > -d #vectors=itk::CovariantVector;itk::Point;itk::Vector d #dims=1;2;3;4 -d #iterators=itk::ImageRegionConstIterator;itk::ImageRegionIterator;itk::ImageScanlineConstIterator;itk::ImageScanlineIterator \ No newline at end of file +d #int=char;short;int;long +d #float=float;double +d #scalar=#int;unsigned #int;#float +d #color_pixels=itk::RGBPixel< #scalar >;itk::RGBAPixel< #scalar > +d #complex_pixels=std::complex< #float > +d #lin_alg_vectors=itk::CovariantVector;itk::Point;itk::Vector +d #pixels=#scalar;#color_pixels;#complex_pixels +d #array_pixels=#lin_alg_vectors;itk::SymmetricSecondRankTensor +d #double_array_pixels=itk::Matrix +d #iterators=itk::ImageRegionConstIterator;itk::ImageRegionIterator;itk::ImageConstIteratorWithIndex;itk::ImageIteratorWithIndex;itk::ImageScanlineConstIterator;itk::ImageScanlineIterator;itk::ImageLinearConstIteratorWithIndex;itk::ImageLinearIteratorWithIndex;itk::ImageRegionConstIteratorWithIndex;itk::ImageRegionIteratorWithIndex +d #conds=itk::ZeroFluxNeumannBoundaryCondition +d #neigh_iterators=itk::ConstNeighborhoodIterator;itk::NeighborhoodIterator;itk::ConstShapedNeighborhoodIterator;itk::ShapedNeighborhoodIterator + +c #iterators< itk::Image< #pixels, #dims > > +c #iterators< itk::Image< #array_pixels< #float, #dims >, #dims > > +c #iterators< itk::Image< #double_array_pixels< #float, #dims, #dims >, #dims > > +c #conds< itk::Image< #scalar, #dims >, itk::Image< #scalar, #dims > > +c #neigh_iterators< itk::Image< #scalar, #dims >, #conds< itk::Image< #scalar, #dims >, itk::Image< #scalar, #dims > > > diff --git a/lib/cpPlugins_Instances/InPlaceImageFiltersBase.i b/lib/cpPlugins_Instances/InPlaceImageFiltersBase.i new file mode 100644 index 0000000..15469b6 --- /dev/null +++ b/lib/cpPlugins_Instances/InPlaceImageFiltersBase.i @@ -0,0 +1,19 @@ +f cpPlugins_Instances/ImageFiltersBase.h + +t itkInPlaceImageFilter.h + +d #dims=1;2;3;4 +d #int=char;short;int;long +d #float=float;double +d #scalar=#int;unsigned #int;#float +d #color_pixels=itk::RGBPixel< #scalar >;itk::RGBAPixel< #scalar > +d #complex_pixels=std::complex< #float > +d #lin_alg_vectors=itk::CovariantVector;itk::Point;itk::Vector +d #pixels=#scalar;#color_pixels;#complex_pixels +d #array_pixels=#lin_alg_vectors;itk::SymmetricSecondRankTensor +d #double_array_pixels=itk::Matrix +d #filters=itk::InPlaceImageFilter + +c #filters< itk::Image< @{#pixels}, #dims >, itk::Image< @{#pixels}, #dims > > +c #filters< itk::Image< #array_pixels< @{#float}, #dims >, #dims >, itk::Image< #array_pixels< @{#float}, #dims >, #dims > > +c #filters< itk::Image< #double_array_pixels< @{#float}, #dims, #dims >, #dims >, itk::Image< #double_array_pixels< @{#float}, #dims, #dims >, #dims > > diff --git a/lib/cpPlugins_Instances/Mesh.i b/lib/cpPlugins_Instances/Mesh.i index 040ddec..e0d68a9 100644 --- a/lib/cpPlugins_Instances/Mesh.i +++ b/lib/cpPlugins_Instances/Mesh.i @@ -1,10 +1,13 @@ f cpPlugins_Instances/Base.h + +d #dims=2;3 +d #float=float;double + t itkMesh.h t itkPointSet.h t itkBoundingBox.h t itkMapContainer.h t itkVectorContainer.h -c #{itk::PointSet;itk::Mesh}< #float_types, #dims > +c @{itk::PointSet;itk::Mesh}< #float, #dims > -d #dims=2;3 diff --git a/lib/cpPlugins_Instances/ResamplingFilters.i b/lib/cpPlugins_Instances/ResamplingFilters.i new file mode 100644 index 0000000..864a0b4 --- /dev/null +++ b/lib/cpPlugins_Instances/ResamplingFilters.i @@ -0,0 +1,12 @@ +f cpPlugins_Instances/ImageFiltersBase.h +f cpPlugins_Instances/Transforms.h +i itkContinuousIndex.h +t itkResampleImageFilter.h +t itkLinearInterpolateImageFunction.h + +c itk::LinearInterpolateImageFunction< itk::Image< #scalars, #dims >, #float_types > +c itk::ResampleImageFilter< itk::Image< #scalars, #dims >, itk::Image< #scalars, #dims >, float, float > +c itk::ResampleImageFilter< itk::Image< #scalars, #dims >, itk::Image< #scalars, #dims >, double, double > + +d #scalars=#int_types;#uint_types;#float_types +d #dims=1;2;3;4 diff --git a/lib/cpPlugins_Instances/ThresholdFilters.i b/lib/cpPlugins_Instances/ThresholdFilters.i index 6a26d1c..c0066be 100644 --- a/lib/cpPlugins_Instances/ThresholdFilters.i +++ b/lib/cpPlugins_Instances/ThresholdFilters.i @@ -1,7 +1,12 @@ -f cpPlugins_Instances/ImageFiltersBase.h -t itkBinaryThresholdImageFilter.h +f cpPlugins_Instances/InPlaceImageFiltersBase.h -c itk::BinaryThresholdImageFilter< itk::Image< #scalars, #dims >, itk::Image< #{unsigned char;#float_types}, #dims > > +t itkBinaryThresholdImageFilter.h +t itkUnaryFunctorImageFilter.h +t itkSimpleDataObjectDecorator.h -d #scalars=#int_types;#uint_types;#float_types d #dims=1;2;3;4 +d #int=char;short;int;long +d #float=float;double +d #scalar=#int;unsigned #int;#float + +c itk::BinaryThresholdImageFilter< itk::Image< @{#scalar}, #dims >, itk::Image< @{#scalar}, #dims > > diff --git a/lib/cpPlugins_Instances/Transforms.i b/lib/cpPlugins_Instances/Transforms.i new file mode 100644 index 0000000..dc85eea --- /dev/null +++ b/lib/cpPlugins_Instances/Transforms.i @@ -0,0 +1,12 @@ +f cpPlugins_Instances/Base.h + +d #dims=1;2;3;4 +d #float=float;double + +t itkTransform.h +t itkOptimizerParameters.h +t itkDataObjectDecorator.h + +c itk::OptimizerParameters< #float > +c itk::Transform< #float, #dims, #dims > +c itk::DataObjectDecorator< itk::Transform< #float, #dims, #dims > > diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 11ab113..0d25544 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -1,5 +1,6 @@ SUBDIRS( cpPluginsIO + cpPluginsImageFilters cpPluginsWidgets ) diff --git a/plugins/cpPluginsImageFilters/BinaryContourImageFilter.cxx b/plugins/cpPluginsImageFilters/BinaryContourImageFilter.cxx index 487f687..41bf3ef 100644 --- a/plugins/cpPluginsImageFilters/BinaryContourImageFilter.cxx +++ b/plugins/cpPluginsImageFilters/BinaryContourImageFilter.cxx @@ -1,10 +1,6 @@ #include #include -#include - -#include -#include -#include +#include // ------------------------------------------------------------------------- cpPluginsImageFilters::BinaryContourImageFilter:: diff --git a/plugins/cpPluginsImageFilters/BinaryThresholdImageFilter.cxx b/plugins/cpPluginsImageFilters/BinaryThresholdImageFilter.cxx index 37342a5..62cafdb 100644 --- a/plugins/cpPluginsImageFilters/BinaryThresholdImageFilter.cxx +++ b/plugins/cpPluginsImageFilters/BinaryThresholdImageFilter.cxx @@ -1,10 +1,6 @@ #include #include -#include - -#include -#include -#include +#include // ------------------------------------------------------------------------- cpPluginsImageFilters::BinaryThresholdImageFilter:: @@ -19,19 +15,6 @@ BinaryThresholdImageFilter( ) this->m_Parameters.ConfigureAsUint( "InsideValue" ); this->m_Parameters.ConfigureAsUint( "OutsideValue" ); - std::vector< std::string > choices; - choices.push_back( "char" ); - choices.push_back( "short" ); - choices.push_back( "int" ); - choices.push_back( "long" ); - choices.push_back( "float" ); - choices.push_back( "double" ); - choices.push_back( "unsigned char" ); - choices.push_back( "unsigned short" ); - choices.push_back( "unsigned int" ); - choices.push_back( "unsigned long" ); - this->m_Parameters.ConfigureAsChoices( "OutputResolution", choices ); - this->m_Parameters.SetReal( "LowerThresholdValue", 0 ); this->m_Parameters.SetReal( "UpperThresholdValue", 10000 ); this->m_Parameters.SetReal( "InsideValue", 1 ); @@ -63,30 +46,7 @@ std::string cpPluginsImageFilters::BinaryThresholdImageFilter:: _GD0( _TImage* image ) { if( image != NULL ) - { - auto choice = this->m_Parameters.GetSelectedChoice( "OutputResolution" ); - if( choice == "char" ) - return( this->_GD1< _TImage, char >( image ) ); - else if( choice == "short" ) - return( this->_GD1< _TImage, short >( image ) ); - else if( choice == "int" ) - return( this->_GD1< _TImage, int >( image ) ); - else if( choice == "long" ) - return( this->_GD1< _TImage, long >( image ) ); - else if( choice == "float" ) - return( this->_GD1< _TImage, float >( image ) ); - else if( choice == "double" ) - return( this->_GD1< _TImage, double >( image ) ); - else if( choice == "unsigned char" ) - return( this->_GD1< _TImage, unsigned char >( image ) ); - else if( choice == "unsigned short" ) - return( this->_GD1< _TImage, unsigned short >( image ) ); - else if( choice == "unsigned int" ) - return( this->_GD1< _TImage, unsigned int >( image ) ); - else if( choice == "unsigned long" ) - return( this->_GD1< _TImage, unsigned long >( image ) ); - else return( "BinaryThresholdImageFilter: no valid output type." ); - } + return( this->_GD1< _TImage, unsigned char >( image ) ); else return( "ImageFilters::BinaryThresholdImageFilter: No valid input image." diff --git a/plugins/cpPluginsImageFilters/CMakeLists.txt b/plugins/cpPluginsImageFilters/CMakeLists.txt index 94af7c5..bd8d504 100644 --- a/plugins/cpPluginsImageFilters/CMakeLists.txt +++ b/plugins/cpPluginsImageFilters/CMakeLists.txt @@ -5,12 +5,27 @@ SET(lib_DIR cpPluginsImageFilters) ## = Source code = ## =============== -FILE(GLOB lib_HEADERS_H "*.h") +#FILE(GLOB lib_HEADERS_H "*.h") FILE(GLOB lib_HEADERS_HPP "*.hpp") FILE(GLOB lib_HEADERS_HXX "*.hxx") FILE(GLOB lib_SOURCES_C "*.c") FILE(GLOB lib_SOURCES_CPP "*.cpp") -FILE(GLOB lib_SOURCES_CXX "*.cxx") +#FILE(GLOB lib_SOURCES_CXX "*.cxx") + +SET( + lib_HEADERS_H + ${CMAKE_CURRENT_SOURCE_DIR}/SignedMaurerDistanceMapImageFilter.h + ${CMAKE_CURRENT_SOURCE_DIR}/BinaryThresholdImageFilter.h + ${CMAKE_CURRENT_SOURCE_DIR}/BinaryContourImageFilter.h + ${CMAKE_CURRENT_SOURCE_DIR}/ResampleImageFilter.h + ) +SET( + lib_SOURCES_CXX + ${CMAKE_CURRENT_SOURCE_DIR}/SignedMaurerDistanceMapImageFilter.cxx + ${CMAKE_CURRENT_SOURCE_DIR}/BinaryThresholdImageFilter.cxx + ${CMAKE_CURRENT_SOURCE_DIR}/BinaryContourImageFilter.cxx + ${CMAKE_CURRENT_SOURCE_DIR}/ResampleImageFilter.cxx + ) # =================================== # = Integrate all source file names = @@ -32,7 +47,6 @@ SET( SET( target_LIBRARIES - cpExtensions cpPlugins ) @@ -42,7 +56,7 @@ SET( ADD_CUSTOM_COMMAND( OUTPUT ${lib_NAME}_Host.cxx - DEPENDS cpPlugins_HostCreator ${LIB_HEADERS_H} + DEPENDS cpPlugins_HostCreator ${lib_HEADERS_H} COMMAND cpPlugins_HostCreator ${lib_NAME}_Host.cxx ${lib_HEADERS_H} ) ADD_LIBRARY(${lib_NAME} SHARED ${lib_NAME}_Host.cxx ${lib_SOURCES}) diff --git a/plugins/cpPluginsImageFilters/ResampleImageFilter.cxx b/plugins/cpPluginsImageFilters/ResampleImageFilter.cxx index 8c23956..1d5b592 100644 --- a/plugins/cpPluginsImageFilters/ResampleImageFilter.cxx +++ b/plugins/cpPluginsImageFilters/ResampleImageFilter.cxx @@ -1,12 +1,6 @@ #include #include -#include - -#include -#include -#include -#include -#include +#include // ------------------------------------------------------------------------- cpPluginsImageFilters::ResampleImageFilter:: @@ -74,7 +68,6 @@ _GD1( _TImage* image ) "ImageFilters::ResampleImageFilter: No valid input image." ); - // Configure filter _TFilter* filter = this->_CreateITK< _TFilter >( ); filter->SetInput( image ); diff --git a/plugins/cpPluginsImageFilters/SignedMaurerDistanceMapImageFilter.cxx b/plugins/cpPluginsImageFilters/SignedMaurerDistanceMapImageFilter.cxx index 6e3ca34..a0f29d8 100644 --- a/plugins/cpPluginsImageFilters/SignedMaurerDistanceMapImageFilter.cxx +++ b/plugins/cpPluginsImageFilters/SignedMaurerDistanceMapImageFilter.cxx @@ -1,16 +1,6 @@ #include #include -#include - -#include -#include - -#include -#include -#include -#include -#include - +#include // ------------------------------------------------------------------------- cpPluginsImageFilters::SignedMaurerDistanceMapImageFilter:: -- 2.47.1