From 31341bedc0beec0f2079f89d1688b60bfda8f213 Mon Sep 17 00:00:00 2001 From: "DESKTOP-FEDH8QB\\misha" Date: Tue, 22 Aug 2017 01:05:07 -0400 Subject: [PATCH] Version 9.011 --- Src/Geometry.cpp | 5 +++-- Src/Geometry.h | 4 ++-- Src/Geometry.inl | 6 +++--- Src/PoissonRecon.cpp | 28 +++++++++++++++++++++++++++- Src/SSDRecon.cpp | 28 +++++++++++++++++++++++++++- 5 files changed, 62 insertions(+), 9 deletions(-) diff --git a/Src/Geometry.cpp b/Src/Geometry.cpp index d6fa728..e6d03d8 100644 --- a/Src/Geometry.cpp +++ b/Src/Geometry.cpp @@ -42,14 +42,15 @@ TriangulationTriangle::TriangulationTriangle(void){eIndex[0]=eIndex[1]=eIndex[2] /////////////////////////// // BufferedReadWriteFile // /////////////////////////// -BufferedReadWriteFile::BufferedReadWriteFile( char* fileName , int bufferSize ) +BufferedReadWriteFile::BufferedReadWriteFile( const char* fileName , const char* fileHeader , int bufferSize ) { _bufferIndex = 0; _bufferSize = bufferSize; if( fileName ) strcpy( _fileName , fileName ) , tempFile = false , _fp = fopen( _fileName , "w+b" ); else { - strcpy( _fileName , "PR_XXXXXX" ); + if( fileHeader && strlen(fileHeader) ) sprintf( _fileName , "%sXXXXXX" , fileHeader ); + else strcpy( _fileName , "XXXXXX" ); #ifdef _WIN32 _mktemp( _fileName ); _fp = fopen( _fileName , "w+b" ); diff --git a/Src/Geometry.h b/Src/Geometry.h index 9c2018d..ea8c951 100644 --- a/Src/Geometry.h +++ b/Src/Geometry.h @@ -380,7 +380,7 @@ class BufferedReadWriteFile char *_buffer , _fileName[1024]; size_t _bufferIndex , _bufferSize; public: - BufferedReadWriteFile( char* fileName=NULL , int bufferSize=(1<<20) ); + BufferedReadWriteFile( const char* fileName=NULL , const char* fileHeader="" , int bufferSize=(1<<20) ); ~BufferedReadWriteFile( void ); bool write( const void* data , size_t size ); bool read ( void* data , size_t size ); @@ -393,7 +393,7 @@ class CoredFileMeshData : public CoredMeshData< Vertex > BufferedReadWriteFile *oocPointFile , *polygonFile; int oocPoints , polygons; public: - CoredFileMeshData( void ); + CoredFileMeshData( const char* fileHeader="" ); ~CoredFileMeshData( void ); void resetIterator( void ); diff --git a/Src/Geometry.inl b/Src/Geometry.inl index b38f0e6..ad2be93 100644 --- a/Src/Geometry.inl +++ b/Src/Geometry.inl @@ -500,12 +500,12 @@ int CoredVectorMeshData< Vertex >::polygonCount( void ) { return int( polygons.s // CoredFileMeshData // /////////////////////// template< class Vertex > -CoredFileMeshData< Vertex >::CoredFileMeshData( void ) +CoredFileMeshData< Vertex >::CoredFileMeshData( const char* fileHeader ) { oocPoints = polygons = 0; - oocPointFile = new BufferedReadWriteFile(); - polygonFile = new BufferedReadWriteFile(); + oocPointFile = new BufferedReadWriteFile( NULL , fileHeader ); + polygonFile = new BufferedReadWriteFile( NULL , fileHeader ); } template< class Vertex > CoredFileMeshData< Vertex >::~CoredFileMeshData( void ) diff --git a/Src/PoissonRecon.cpp b/Src/PoissonRecon.cpp index 13ff3ec..03ee165 100644 --- a/Src/PoissonRecon.cpp +++ b/Src/PoissonRecon.cpp @@ -115,6 +115,7 @@ void DumpOutput2( std::vector< char* >& comments , const char* format , ... ) cmdLineString In( "in" ) , Out( "out" ) , + TempDir( "tempDir" ) , VoxelGrid( "voxel" ) , XForm( "xForm" ); @@ -179,6 +180,7 @@ cmdLineReadable* params[] = &Color , &LinearFit , &PrimalVoxel , + &TempDir , #if defined( _WIN32 ) || defined( _WIN64 ) &Performance , #endif // _WIN32 || _WIN64 @@ -251,6 +253,8 @@ void ShowUsage(char* ex) printf( "\t[--%s =%d]\n" , Threads.name , Threads.value ); #endif // _OPENMP + printf( "\t[--%s]\n" , TempDir.name ); + printf( "\t[--%s]\n" , Verbose.name ); #ifndef FOR_RELEASE @@ -576,7 +580,29 @@ int _Execute( int argc , char* argv[] ) } } - CoredFileMeshData< Vertex > mesh; + char tempHeader[1024]; + { +#if defined( _WIN32 ) || defined( _WIN64 ) + const char FileSeparator = '\\'; +#else // !_WIN + const char FileSeparator = '/'; +#endif // _WIN + char tempPath[1024]; + tempPath[0] = 0; + if( TempDir.set ) strcpy( tempPath , TempDir.value ); + else + { +#if defined( _WIN32 ) || defined( _WIN64 ) + GetTempPath( sizeof(tempPath) , tempPath ); +#else // !_WIN + if( std::getenv( "TMPDIR" ) ) strcpy( tempPath , std::getenv( "TMPDIR" ) ); +#endif // _WIN + } + if( strlen(tempPath)==0 ) sprintf( tempPath , ".%c" , FileSeparator ); + if( tempPath[ strlen( tempPath )-1 ]==FileSeparator ) sprintf( tempHeader , "%sPR_" , tempPath ); + else sprintf( tempHeader , "%s%cPR_" , tempPath , FileSeparator ); + } + CoredFileMeshData< Vertex > mesh( tempHeader ); { profiler.start(); diff --git a/Src/SSDRecon.cpp b/Src/SSDRecon.cpp index 3f109c3..6ad0a68 100644 --- a/Src/SSDRecon.cpp +++ b/Src/SSDRecon.cpp @@ -115,6 +115,7 @@ void DumpOutput2( std::vector< char* >& comments , const char* format , ... ) cmdLineString In( "in" ) , Out( "out" ) , + TempDir( "tempDir" ) , VoxelGrid( "voxel" ) , XForm( "xForm" ); @@ -180,6 +181,7 @@ cmdLineReadable* params[] = &Color , &NonLinearFit , &PrimalVoxel , + &TempDir , #if defined( _WIN32 ) || defined( _WIN64 ) &Performance , #endif // _WIN32 || _WIN64 @@ -257,6 +259,8 @@ void ShowUsage( char* ex ) printf( "\t[--%s =%d]\n" , Threads.name , Threads.value ); #endif // _OPENMP + printf( "\t[--%s]\n" , TempDir.name ); + printf( "\t[--%s]\n" , Verbose.name ); #ifndef FOR_RELEASE @@ -580,7 +584,29 @@ int _Execute( int argc , char* argv[] ) } } - CoredFileMeshData< Vertex > mesh; + char tempHeader[1024]; + { +#if defined( _WIN32 ) || defined( _WIN64 ) + const char FileSeparator = '\\'; +#else // !_WIN + const char FileSeparator = '/'; +#endif // _WIN + char tempPath[1024]; + tempPath[0] = 0; + if( TempDir.set ) strcpy( tempPath , TempDir.value ); + else + { +#if defined( _WIN32 ) || defined( _WIN64 ) + GetTempPath( sizeof(tempPath) , tempPath ); +#else // !_WIN + if( std::getenv( "TMPDIR" ) ) strcpy( tempPath , std::getenv( "TMPDIR" ) ); +#endif // _WIN + } + if( strlen(tempPath)==0 ) sprintf( tempPath , ".%c" , FileSeparator ); + if( tempPath[ strlen( tempPath )-1 ]==FileSeparator ) sprintf( tempHeader , "%sPR_" , tempPath ); + else sprintf( tempHeader , "%s%cPR_" , tempPath , FileSeparator ); + } + CoredFileMeshData< Vertex > mesh( tempHeader ); { profiler.start();