//---------------------------------------------------------------------------- // EgalTech 2014-2014 //---------------------------------------------------------------------------- // File : ExtText.h Data : 27.05.14 Versione : 1.5f1 // Contenuto : Dichiarazione della classe Testo. // // // // Modifiche : 27.05.14 DS Creazione modulo. // // //---------------------------------------------------------------------------- #pragma once #include "ObjGraphicsMgr.h" #include "DllMain.h" #include "GeoObjRW.h" #include "/EgtDev/Include/EGkExtText.h" //---------------------------------------------------------------------------- class ExtText : public IExtText, public IGeoObjRW { public : // IGeoObj virtual ~ExtText( void) ; virtual ExtText* Clone( void) const ; virtual GeoObjType GetType( void) const ; virtual bool IsValid( void) const { return true ; } virtual const std::string& GetTitle( void) const ; virtual bool Dump( std::string& sOut, const char* szNewLine = "\n") const ; virtual bool GetLocalBBox( BBox3d& b3Loc, int nFlag = BBF_STANDARD) const ; virtual bool GetBBox( const Frame3d& frRef, BBox3d& b3Ref, int nFlag = BBF_STANDARD) const ; virtual bool Translate( const Vector3d& vtMove) ; virtual bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dAngDeg) { double dAngRad = dAngDeg * DEGTORAD ; return Rotate( ptAx, vtAx, cos( dAngRad), sin( dAngRad)) ; } virtual bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dCosAng, double dSinAng) ; virtual bool Scale( const Frame3d& frRef, double dCoeffX, double dCoeffY, double dCoeffZ) ; virtual bool Mirror( const Point3d& ptOn, const Vector3d& vtNorm) ; virtual bool Shear( const Point3d& ptOn, const Vector3d& vtNorm, const Vector3d& vtDir, double dCoeff) ; virtual bool ToGlob( const Frame3d& frRef) ; virtual bool ToLoc( const Frame3d& frRef) ; virtual bool LocToLoc( const Frame3d& frOri, const Frame3d& frDest) ; virtual void SetObjGraphics( IObjGraphics* pOGr) { m_OGrMgr.SetObjGraphics( pOGr) ; } virtual IObjGraphics* GetObjGraphics( void) { return m_OGrMgr.GetObjGraphics() ; } virtual const IObjGraphics* GetObjGraphics( void) const { return m_OGrMgr.GetObjGraphics() ; } virtual void SetTempProp( int nProp) { m_nTempProp = nProp ; } virtual int GetTempProp( void) { return m_nTempProp ; } public : // IExtText virtual bool CopyFrom( const IGeoObj* pGObjSrc) ; virtual bool Set( const Point3d& ptP, double dAngDeg, const std::string& sText, double dH) ; virtual bool Set( const Point3d& ptP, const Vector3d& vtN, const Vector3d& vtD, const std::string& sText, const std::string& sFont, bool bItl, double dH) ; virtual bool Set( const Point3d& ptP, const Vector3d& vtN, const Vector3d& vtD, const std::string& sText, const std::string& sFont, int nW, bool bItl, double dH, double dRat, double dAddAdv, int nInsPos = 7) ; virtual const Point3d& GetPoint( void) const { return m_ptP ; } virtual const Vector3d& GetNormVersor( void) const { return m_vtN ; } virtual const Vector3d& GetDirVersor( void) const { return m_vtD ; } virtual const std::string& GetText( void) const { return m_sText ; } virtual const std::string& GetFont( void) const { return m_sFont ; } virtual int GetWeight( void) const { return m_nWeight ; } virtual bool GetItalic( void) const { return m_bItalic ; } virtual double GetHeight( void) const { return m_dHeight ; } virtual double GetRatio( void) const { return m_dRatio ; } virtual double GetAddAdvance( void) const { return m_dAddAdvance ; } virtual int GetInsPosition( void) const { return m_nInsPos ; } virtual bool GetHeightVersor( Vector3d& vtH) const ; virtual bool GetStartPoint( Point3d& ptStart) const ; virtual bool GetOverStartPoint( Point3d& ptStart) const ; virtual bool GetEndPoint( Point3d& ptEnd) const ; virtual bool GetOverEndPoint( Point3d& ptEnd) const ; virtual bool GetMidPoint( Point3d& ptMid) const ; virtual bool GetCenterPoint( Point3d& ptCen) const ; virtual bool GetOutline( ICURVEPLIST& lstPC) const ; virtual bool SplitOnLineBreak( IEXTTEXTPVECTOR& vText) const ; virtual bool ApproxWithLines( double dLinTol, double dAngTolDeg, POLYLINELIST& lstPL) const ; virtual bool ApproxWithArcs( double dLinTol, double dAngTolDeg, POLYARCLIST& lstPA) const ; virtual bool Flip( void) ; virtual bool Mir( bool bOnLen) ; virtual bool ModifyText( const std::string& sText) ; virtual bool ChangeFont( const std::string& sFont) ; public : // IGeoObjRW virtual int GetNgeId( void) const ; virtual bool Save( NgeWriter& ngeOut) const ; virtual bool Load( NgeReader& ngeIn) ; public : ExtText( void) ; ExtText( const ExtText& gpSrc) { if ( ! CopyFrom( gpSrc)) LOG_ERROR( GetEGkLogger(), "ExtText : copy constructor error") } ExtText& operator =( const ExtText& gpSrc) { if ( ! CopyFrom( gpSrc)) LOG_ERROR( GetEGkLogger(), "ExtText : copy error") return *this ; } private : bool CopyFrom( const ExtText& gpSrc) ; private : static const int MAX_FONT_LEN = 125 ; static const int MAX_TXT_LINE = 125 ; static const char CHR_SPECIAL = '\a' ; private : ObjGraphicsMgr m_OGrMgr ; // gestore grafica dell'oggetto Point3d m_ptP ; // punto di inserimento Vector3d m_vtN ; // versore normale Vector3d m_vtD ; // versore di direzione std::string m_sText ; // testo con codifica UTF-8 std::string m_sFont ; // font utilizzato int m_nWeight ; // 0 (don't care), 100 (thin) - 900 (black) bool m_bItalic ; // flag per italico (inclinato) double m_dHeight ; // altezza del carattere double m_dRatio ; // rapporto tra larghezza e altezza double m_dAddAdvance ; // avanzamento addizionale tra caratteri int m_nInsPos ; // posizione del punto di inserimento rispetto al testo int m_nTempProp ; // proprietà temporanea } ;