#ifndef __CPM__IO__MESHREADER__HXX__ #define __CPM__IO__MESHREADER__HXX__ #include #include #include // ------------------------------------------------------------------------- template< typename M > itk::ModifiedTimeType cpm::IO::MeshReader< M >:: GetMTime( ) const { itk::ModifiedTimeType mtime = this->Superclass::GetMTime( ); if( this->m_Reader.IsNotNull( ) ) { itk::ModifiedTimeType rtime = this->m_Reader->GetMTime( ); mtime = ( rtime < mtime )? rtime: mtime; } // fi return( mtime ); } // ------------------------------------------------------------------------- template< typename M > cpm::IO::MeshReader< M >:: MeshReader( ) : Superclass( ) { } // ------------------------------------------------------------------------- template< typename M > cpm::IO::MeshReader< M >:: ~MeshReader( ) { } // ------------------------------------------------------------------------- template< typename M > void cpm::IO::MeshReader< M >:: GenerateData( ) { std::string fn = this->m_FileName; std::transform( fn.begin( ), fn.end( ), fn.begin( ), ::tolower ); if( fn.rfind( ".vtk" ) != std::string::npos ) this->_Read< itk::VTKPolyDataReader< M > >( ); else if( fn.rfind( ".obj" ) != std::string::npos ) this->_Read< cpm::IO::WaveFrontOBJReader< M > >( ); } // ------------------------------------------------------------------------- template< typename M > template< class R > void cpm::IO::MeshReader< M >:: _Read( ) { typename R::Pointer reader = NULL; if( this->m_Reader.IsNotNull( ) ) { reader = dynamic_cast< R* >( this->m_Reader.GetPointer( ) ); if( reader.IsNotNull( ) ) { if( reader->GetFileName( ) == this->m_FileName ) reader = NULL; } else { reader = R::New( ); this->m_Reader = reader; } // fi } else { reader = R::New( ); this->m_Reader = reader; } // fi if( reader.IsNotNull( ) ) { reader->SetFileName( this->m_FileName ); reader->GraftOutput( this->GetOutput( ) ); reader->Update( ); this->GraftOutput( reader->GetOutput( ) ); } // fi } #endif // __CPM__IO__MESHREADER__HXX__ // eof - $RCSfile$