EgtGeomKernel 1.5d5 :
- aggiunta scrittura binaria - tolte GetKey, Load e Save da interfaccia IGeoObj.
This commit is contained in:
+262
@@ -0,0 +1,262 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2014-2014
|
||||
//----------------------------------------------------------------------------
|
||||
// File : NgeWriter.cpp Data : 13.04.14 Versione : 1.5d5
|
||||
// Contenuto : Implementazione della classe Writer.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 13.04.14 DS Creazione modulo.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
//--------------------------- Include ----------------------------------------
|
||||
#include "stdafx.h"
|
||||
#include "NgeWriter.h"
|
||||
#include "NgeConst.h"
|
||||
#include "NgeKeyW.h"
|
||||
#include "/EgtDev/Include/EGkStringUtils3d.h"
|
||||
#include "/EgtDev/Include/EgnStringConverter.h"
|
||||
|
||||
using namespace std ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
NgeWriter::Init( const std::string& sFileOut, bool bBinary)
|
||||
{
|
||||
// salvo tipo file
|
||||
m_bBinary = bBinary ;
|
||||
|
||||
// apertura del file di uscita
|
||||
ios_base::openmode nMode = ios::out | ( m_bBinary ? ios::binary : 0) ;
|
||||
int nProt = _SH_DENYWR ;
|
||||
m_OutFile.open( stringtoW( sFileOut), nMode, nProt) ;
|
||||
return m_OutFile.good() ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
NgeWriter::Close( void)
|
||||
{
|
||||
bool bOk = ( m_OutFile.good() && m_OutFile.is_open()) ;
|
||||
|
||||
if ( m_OutFile.is_open())
|
||||
m_OutFile.close() ;
|
||||
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
NgeWriter::WriteUchar( unsigned char ucVal, const char* szSep, bool bEndL)
|
||||
{
|
||||
if ( ! m_OutFile.is_open())
|
||||
return ;
|
||||
|
||||
if ( m_bBinary)
|
||||
m_OutFile.write( (char*) &ucVal, sizeof( ucVal)) ;
|
||||
else {
|
||||
m_OutFile << ToString( ucVal) ;
|
||||
if ( szSep != nullptr)
|
||||
m_OutFile << szSep ;
|
||||
if ( bEndL)
|
||||
m_OutFile << endl ;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
NgeWriter::WriteBool( bool bVal, const char* szSep, bool bEndL)
|
||||
{
|
||||
if ( ! m_OutFile.is_open())
|
||||
return ;
|
||||
|
||||
if ( m_bBinary)
|
||||
m_OutFile.write( (char*) &bVal, sizeof( bVal)) ;
|
||||
else {
|
||||
m_OutFile << ToString( bVal) ;
|
||||
if ( szSep != nullptr)
|
||||
m_OutFile << szSep ;
|
||||
if ( bEndL)
|
||||
m_OutFile << endl ;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
NgeWriter::WriteInt( int nVal, const char* szSep, bool bEndL)
|
||||
{
|
||||
if ( ! m_OutFile.is_open())
|
||||
return ;
|
||||
|
||||
if ( m_bBinary)
|
||||
m_OutFile.write( (char*) &nVal, sizeof( nVal)) ;
|
||||
else {
|
||||
m_OutFile << ToString( nVal) ;
|
||||
if ( szSep != nullptr)
|
||||
m_OutFile << szSep ;
|
||||
if ( bEndL)
|
||||
m_OutFile << endl ;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
NgeWriter::WriteDouble( double dVal, const char* szSep, bool bEndL, int nPrec)
|
||||
{
|
||||
if ( ! m_OutFile.is_open())
|
||||
return ;
|
||||
|
||||
if ( m_bBinary)
|
||||
m_OutFile.write( (char*) &dVal, sizeof( dVal)) ;
|
||||
else {
|
||||
m_OutFile << ToString( dVal, nPrec) ;
|
||||
if ( szSep != nullptr)
|
||||
m_OutFile << szSep ;
|
||||
if ( bEndL)
|
||||
m_OutFile << endl ;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
NgeWriter::WriteString( const std::string& sVal, const char* szSep, bool bEndL)
|
||||
{
|
||||
if ( ! m_OutFile.is_open())
|
||||
return ;
|
||||
|
||||
if ( m_bBinary) {
|
||||
int nDim= int( sVal.size()) ;
|
||||
m_OutFile.write( (char*) &nDim, sizeof( nDim)) ;
|
||||
m_OutFile.write( sVal.c_str(), sVal.size()) ;
|
||||
}
|
||||
else {
|
||||
m_OutFile << sVal ;
|
||||
if ( szSep != nullptr)
|
||||
m_OutFile << szSep ;
|
||||
if ( bEndL)
|
||||
m_OutFile << endl ;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
NgeWriter::WriteVector( const Vector3d& vtV, const char* szSep, bool bEndL, int nPrec)
|
||||
{
|
||||
if ( ! m_OutFile.is_open())
|
||||
return ;
|
||||
|
||||
if ( m_bBinary)
|
||||
m_OutFile.write( (char*) &vtV.v, sizeof( vtV.v)) ;
|
||||
else {
|
||||
m_OutFile << ToString( vtV, nPrec) ;
|
||||
if ( szSep != nullptr)
|
||||
m_OutFile << szSep ;
|
||||
if ( bEndL)
|
||||
m_OutFile << endl ;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
NgeWriter::WritePoint( const Point3d& ptP, const char* szSep, bool bEndL, int nPrec)
|
||||
{
|
||||
if ( ! m_OutFile.is_open())
|
||||
return ;
|
||||
|
||||
if ( m_bBinary)
|
||||
m_OutFile.write( (char*) &ptP.v, sizeof( ptP.v)) ;
|
||||
else {
|
||||
m_OutFile << ToString( ptP, nPrec) ;
|
||||
if ( szSep != nullptr)
|
||||
m_OutFile << szSep ;
|
||||
if ( bEndL)
|
||||
m_OutFile << endl ;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
NgeWriter::WritePointW( const Point3d& ptP, double dW, const char* szSep, bool bEndL, int nPrecP, int nPrecW)
|
||||
{
|
||||
if ( ! m_OutFile.is_open())
|
||||
return ;
|
||||
|
||||
if ( m_bBinary) {
|
||||
m_OutFile.write( (char*) &ptP.v, sizeof( ptP.v)) ;
|
||||
m_OutFile.write( (char*) &dW, sizeof( dW)) ;
|
||||
}
|
||||
else {
|
||||
m_OutFile << ToString( ptP, dW, nPrecP, nPrecW) ;
|
||||
if ( szSep != nullptr)
|
||||
m_OutFile << szSep ;
|
||||
if ( bEndL)
|
||||
m_OutFile << endl ;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
NgeWriter::WriteFrame( const Frame3d& frF, const char* szSep, bool bEndL, int nPrecP, int nPrecV)
|
||||
{
|
||||
if ( ! m_OutFile.is_open())
|
||||
return ;
|
||||
|
||||
if ( m_bBinary) {
|
||||
m_OutFile.write( (char*) &frF.Orig().v, sizeof( frF.Orig().v)) ;
|
||||
m_OutFile.write( (char*) &frF.VersX().v, sizeof( frF.VersX().v)) ;
|
||||
m_OutFile.write( (char*) &frF.VersY().v, sizeof( frF.VersY().v)) ;
|
||||
m_OutFile.write( (char*) &frF.VersZ().v, sizeof( frF.VersZ().v)) ;
|
||||
}
|
||||
else {
|
||||
m_OutFile << ToString( frF, nPrecP, nPrecV) ;
|
||||
if ( szSep != nullptr)
|
||||
m_OutFile << szSep ;
|
||||
if ( bEndL)
|
||||
m_OutFile << endl ;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
NgeWriter::WriteKey( int nKey, bool bEndL)
|
||||
{
|
||||
if ( ! m_OutFile.is_open())
|
||||
return ;
|
||||
|
||||
if ( nKey < 0 || nKey > NGE_LAST_ID)
|
||||
return ;
|
||||
|
||||
if ( m_bBinary)
|
||||
m_OutFile.write( (char*) &NgeBinKeyW[nKey], sizeof( int)) ;
|
||||
else {
|
||||
m_OutFile << NgeAscKeyW[nKey] ;
|
||||
if ( bEndL)
|
||||
m_OutFile << endl ;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
NgeWriter::WriteCol( const Color& cCol, const char* szSep, bool bEndL)
|
||||
{
|
||||
if ( ! m_OutFile.is_open())
|
||||
return ;
|
||||
|
||||
if ( m_bBinary) {
|
||||
unsigned char ucCol[4] ;
|
||||
ucCol[0] = cCol.GetIntRed() ;
|
||||
ucCol[1] = cCol.GetIntGreen() ;
|
||||
ucCol[2] = cCol.GetIntBlue() ;
|
||||
ucCol[3] = cCol.GetIntAlpha() ;
|
||||
m_OutFile.write( (char*) ucCol, sizeof( ucCol)) ;
|
||||
}
|
||||
else {
|
||||
m_OutFile << ToString( cCol) ;
|
||||
if ( szSep != nullptr)
|
||||
m_OutFile << szSep ;
|
||||
if ( bEndL)
|
||||
m_OutFile << endl ;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user