2a2c0065ed
- aggiunta prima gestione attributi.
150 lines
4.4 KiB
C++
150 lines
4.4 KiB
C++
//----------------------------------------------------------------------------
|
|
// EgalTech 2014-2014
|
|
//----------------------------------------------------------------------------
|
|
// File : Attribs.cpp Data : 05.03.14 Versione : 1.5c1
|
|
// Contenuto : Implementazione della classe Attribs.
|
|
//
|
|
//
|
|
//
|
|
// Modifiche : 05.03.14 DS Creazione modulo.
|
|
//
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
//--------------------------- Include ----------------------------------------
|
|
#include "stdafx.h"
|
|
#include "Attribs.h"
|
|
#include "/EgtDev/Include/EgnStringUtils.h"
|
|
|
|
using namespace std ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
bool
|
|
Attribs::Dump( string& sOut, const char* szNewLine) const
|
|
{
|
|
sOut += "Lev=" ;
|
|
switch ( m_Data[LEVEL]) {
|
|
default : /* LEV_USER */ sOut += "user" ; break ;
|
|
case LEV_SYSTEM : sOut += "system" ; break ;
|
|
case LEV_TEMP : sOut += "temp" ; break ;
|
|
}
|
|
sOut += " Mod=" ;
|
|
switch ( m_Data[MODE]) {
|
|
default : /* MOD_STD */ sOut += "std" ; break ;
|
|
case MOD_LOCKED : sOut += "locked" ; break ;
|
|
case MOD_HIDDEN : sOut += "hidden" ; break ;
|
|
}
|
|
sOut += " Sta=" ;
|
|
switch ( m_Data[STATUS]) {
|
|
default : /* STS_ON */ sOut += "on" ; break ;
|
|
case STS_SEL : sOut += "sel" ; break ;
|
|
case STS_OFF : sOut += "off" ; break ;
|
|
}
|
|
sOut += szNewLine ;
|
|
sOut += "Mat=" ;
|
|
switch ( m_Material) {
|
|
case MAT_PARENT : sOut += "by parent" ; break ;
|
|
case MAT_COLOR : sOut += "color" ; break ;
|
|
case MAT_NULL : sOut += "null" ; break ;
|
|
default : sOut += ToString( m_Material) ; break ;
|
|
}
|
|
if ( m_Material != MAT_PARENT && m_Material != MAT_NULL) {
|
|
sOut += " Col=" ;
|
|
sOut += ToString( m_Color.GetIntRed()) + "," ;
|
|
sOut += ToString( m_Color.GetIntGreen()) + "," ;
|
|
sOut += ToString( m_Color.GetIntBlue()) + "," ;
|
|
sOut += ToString( m_Color.GetIntAlpha()) ;
|
|
}
|
|
sOut += szNewLine ;
|
|
|
|
return true ;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
bool
|
|
Attribs::Save( ostream& osOut) const
|
|
{
|
|
// flag presenza attributi
|
|
osOut << "A" << endl ;
|
|
|
|
// livello
|
|
osOut << ToString( m_Data[LEVEL]) ;
|
|
// modo
|
|
osOut << "," << ToString( m_Data[MODE]) ;
|
|
// stato
|
|
osOut << "," << ToString( m_Data[STATUS]) ;
|
|
// altro
|
|
osOut << "," << ToString( m_Data[OTHER]) ;
|
|
// materiale
|
|
osOut << ";" << ToString( m_Material) ;
|
|
// colore
|
|
osOut << ";" << ToString( m_Color.GetIntRed()) ;
|
|
osOut << "," << ToString( m_Color.GetIntGreen()) ;
|
|
osOut << "," << ToString( m_Color.GetIntBlue()) ;
|
|
osOut << "," << ToString( m_Color.GetIntAlpha()) ;
|
|
// numero di stringhe (nelle linee successive)
|
|
osOut << ";" << ToString( 0) << ";" << endl ;
|
|
|
|
return true ;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
bool
|
|
Attribs::Load( Scanner& TheScanner)
|
|
{
|
|
// leggo la prossima linea
|
|
string sLine ;
|
|
if ( ! TheScanner.GetLine( sLine))
|
|
return false ;
|
|
// la divido in parametri
|
|
STRVECTOR vsParams ;
|
|
Tokenize( sLine, ",;", vsParams) ;
|
|
// 10 parametri
|
|
if ( vsParams.size() != 10)
|
|
return false ;
|
|
// livello
|
|
int nLev ;
|
|
if ( ! FromString( vsParams[0], nLev))
|
|
return false ;
|
|
m_Data[LEVEL] = CLIP( nLev, LEV_USER, LEV_TEMP) ;
|
|
// modo
|
|
int nMode ;
|
|
if ( ! FromString( vsParams[1], nMode))
|
|
return false ;
|
|
m_Data[MODE] = CLIP( nMode, MOD_STD, MOD_HIDDEN) ;
|
|
// stato
|
|
int nStat ;
|
|
if ( ! FromString( vsParams[2], nStat))
|
|
return false ;
|
|
m_Data[STATUS] = CLIP( nStat, STS_ON, STS_OFF) ;
|
|
// altro
|
|
int nOther ;
|
|
if ( ! FromString( vsParams[3], nOther))
|
|
return false ;
|
|
m_Data[OTHER] = CLIP( nOther, 0, 255) ;
|
|
// materiale
|
|
int nMat ;
|
|
if ( ! FromString( vsParams[4], nMat))
|
|
return false ;
|
|
m_Material = __max( nMat, MAT_PARENT) ;
|
|
// colore
|
|
int nRed ;
|
|
if ( ! FromString( vsParams[5], nRed))
|
|
return false ;
|
|
int nGreen ;
|
|
if ( ! FromString( vsParams[6], nGreen))
|
|
return false ;
|
|
int nBlue ;
|
|
if ( ! FromString( vsParams[7], nBlue))
|
|
return false ;
|
|
int nAlpha ;
|
|
if ( ! FromString( vsParams[8], nAlpha))
|
|
return false ;
|
|
m_Color.Set( nRed, nGreen, nBlue, nAlpha) ;
|
|
// numero di stringhe (nelle linee successive)
|
|
int nNext ;
|
|
if ( ! FromString( vsParams[9], nNext))
|
|
return false ;
|
|
|
|
return true ;
|
|
} |