| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | #include "Geometry.h" |
| | #include <stdio.h> |
| | #include <string.h> |
| | #ifdef _WIN32 |
| | #include <io.h> |
| | #endif |
| |
|
| | |
| | |
| | |
| |
|
| | TriangulationEdge::TriangulationEdge(void){pIndex[0]=pIndex[1]=tIndex[0]=tIndex[1]=-1;} |
| | TriangulationTriangle::TriangulationTriangle(void){eIndex[0]=eIndex[1]=eIndex[2]=-1;} |
| |
|
| | |
| | |
| | |
| | BufferedReadWriteFile::BufferedReadWriteFile( char* fileName , int bufferSize ) |
| | { |
| | _bufferIndex = 0; |
| | _bufferSize = bufferSize; |
| | if( fileName ) strcpy( _fileName , fileName ) , tempFile = false , _fp = fopen( _fileName , "w+b" ); |
| | else |
| | { |
| | strcpy( _fileName , "PR_XXXXXX" ); |
| | #ifdef _WIN32 |
| | _mktemp( _fileName ); |
| | _fp = fopen( _fileName , "w+b" ); |
| | #else |
| | _fp = fdopen( mkstemp( _fileName ) , "w+b" ); |
| | #endif |
| | tempFile = true; |
| | } |
| | if( !_fp ) fprintf( stderr , "[ERROR] Failed to open file: %s\n" , _fileName ) , exit( 0 ); |
| | _buffer = (char*) malloc( _bufferSize ); |
| | } |
| | BufferedReadWriteFile::~BufferedReadWriteFile( void ) |
| | { |
| | free( _buffer ); |
| | fclose( _fp ); |
| | if( tempFile ) remove( _fileName ); |
| | } |
| | void BufferedReadWriteFile::reset( void ) |
| | { |
| | if( _bufferIndex ) fwrite( _buffer , 1 , _bufferIndex , _fp ); |
| | _bufferIndex = 0; |
| | fseek( _fp , 0 , SEEK_SET ); |
| | _bufferIndex = 0; |
| | _bufferSize = fread( _buffer , 1 , _bufferSize , _fp ); |
| | } |
| | bool BufferedReadWriteFile::write( const void* data , size_t size ) |
| | { |
| | if( !size ) return true; |
| | char* _data = (char*) data; |
| | size_t sz = _bufferSize - _bufferIndex; |
| | while( sz<=size ) |
| | { |
| | memcpy( _buffer+_bufferIndex , _data , sz ); |
| | fwrite( _buffer , 1 , _bufferSize , _fp ); |
| | _data += sz; |
| | size -= sz; |
| | _bufferIndex = 0; |
| | sz = _bufferSize; |
| | } |
| | if( size ) |
| | { |
| | memcpy( _buffer+_bufferIndex , _data , size ); |
| | _bufferIndex += size; |
| | } |
| | return true; |
| | } |
| | bool BufferedReadWriteFile::read( void* data , size_t size ) |
| | { |
| | if( !size ) return true; |
| | char *_data = (char*) data; |
| | size_t sz = _bufferSize - _bufferIndex; |
| | while( sz<=size ) |
| | { |
| | if( size && !_bufferSize ) return false; |
| | memcpy( _data , _buffer+_bufferIndex , sz ); |
| | _bufferSize = fread( _buffer , 1 , _bufferSize , _fp ); |
| | _data += sz; |
| | size -= sz; |
| | _bufferIndex = 0; |
| | if( !size ) return true; |
| | sz = _bufferSize; |
| | } |
| | if( size ) |
| | { |
| | if( !_bufferSize ) return false; |
| | memcpy( _data , _buffer+_bufferIndex , size ); |
| | _bufferIndex += size; |
| | } |
| | return true; |
| | } |