//---------------------------------------------------------------------------- // EgalTech 2014-2014 //---------------------------------------------------------------------------- // File : FontAux.cpp Data : 05.06.14 Versione : 1.5f2 // Contenuto : Implementazione delle funzioni ausiliarie per i font. // // // // Modifiche : 05.06.14 DS Creazione modulo. // // //---------------------------------------------------------------------------- //--------------------------- Include ---------------------------------------- #include "stdafx.h" #include "FontAux.h" #include "/EgtDev/Include/EGkExtText.h" #include "/EgtDev/Include/EgtNumUtils.h" //---------------------------------------------------------------------------- double AdjustFontRatio( double dRatio) { // se nullo viene posto a 1 if ( abs( dRatio) < EPS_SMALL) return 1.0 ; // altrimenti deve stare nei limiti const double MIN_FONT_RATIO = 0.1 ; const double MAX_FONT_RATIO = 10.0 ; return Clamp( dRatio, MIN_FONT_RATIO, MAX_FONT_RATIO) ; } //---------------------------------------------------------------------------- bool IsLineBreak( const UINTVECTOR& vCode, int nInd, int& nLen) { // riconoscimento del comando di interruzione di linea "
" if ( vCode[nInd] == '<' && ( nInd + 4) < int( vCode.size()) && vCode[nInd+1] == 'b' && vCode[nInd+2] == 'r' && vCode[nInd+3] == '/' && vCode[nInd+4] == '>') { nLen = 4 ; return true ; } return false ; } //---------------------------------------------------------------------------- Vector3d GetTextInsertPointMove( double dMaxW, double dAscent, double dMinH, int nInsPos) { switch ( nInsPos) { case ETXT_IPTL : return Vector3d( 0, - dAscent, 0) ; case ETXT_IPTC : return Vector3d( - 0.5 * dMaxW, - dAscent, 0) ; case ETXT_IPTR : return Vector3d( - dMaxW, - dAscent, 0) ; case ETXT_IPML : return Vector3d( 0, - 0.5 * ( dMinH + dAscent), 0) ; case ETXT_IPMC : return Vector3d( - 0.5 * dMaxW, - 0.5 * ( dMinH + dAscent), 0) ; case ETXT_IPMR : return Vector3d( - dMaxW, - 0.5 * ( dMinH + dAscent), 0) ; default : case ETXT_IPBL : return Vector3d( 0, - dMinH, 0) ; case ETXT_IPBC : return Vector3d( - 0.5 * dMaxW, - dMinH, 0) ; case ETXT_IPBR : return Vector3d( - dMaxW, - dMinH, 0) ; } }