38 char laFont::_str[256] =
"";
51 void laFont::discard()
55 void laFont::ctlSize(
double sz)
62 void laFont::_draw_string(
laRenderer* r, laPoint3 pos,
char* strStr)
65 double len = lenght(strStr);
66 unsigned nLenght = strlen(strStr);
101 int index, nvisisble=0;
102 double x_original = pos.x();
104 for(
unsigned i=0; i<nLenght; i++)
106 if( strStr[i] ==
'#')
113 pos[0] += _dSz*_dWidthFactor;
114 index = strStr[i] - _charStart;
121 *(pquad++) = pos + laPoint3(_dSz*_dWidthFactor, 0);
122 *(pquad++) = pos + laPoint3(_dSz*_dWidthFactor, _dSz);
123 *(pquad++) = pos + laPoint3(0, _dSz);
125 uv =
laPoint2( ((index%_nCharsPerLine)*_dTexCharW), 1.01 - (index/_nCharsPerLine+1)*_dTexCharH );
127 *(puv++) = uv +
laPoint2(0,_dTexCharH);
128 *(puv++) = uv +
laPoint2(_dTexCharW,_dTexCharH);
129 *(puv++) = uv +
laPoint2(_dTexCharW,0);
143 void laFont::draw(
const laPoint3 &pos,
char* strFormat, ...)
150 if ( !strFormat )
return;
152 va_start(ap, strFormat);
153 vsnprintf(text, 250, strFormat, ap);
157 _draw_string(::laSystemIntegrator::getRenderer(), pos, text);
163 char strFileName[128];
166 laRenderer* r = ::laSystemIntegrator::getIntegrator()->getRenderer();
170 fp->readText(strName);
171 sprintf(strFileName,
"%s%s",
M_DIR_FONT, strName);
174 fp->readText(strName);
175 _charStart = strName[0];
177 fp->readUnsigned(&nCharW);
178 fp->readUnsigned(&nCharH);
179 _dTexCharW = 1.0/((double)_tex.w/nCharW);
180 _dTexCharH = 1.0/((double)_tex.h/nCharH);
181 _nCharsPerLine = ((double)_tex.w)/nCharW;
183 _dWidthFactor = (double)nCharW/nCharH;
187 fp->readDouble(&_dSz);
193 char* laFont::obfuscated(
char* str)
195 unsigned n = strlen(str);
198 ASSERT(n<255,
"Can't produce obfuscated string for lenght %d", n);
202 for(
unsigned i=0; i<n; i++)
204 _str[i] = (str[i]) ^ ( (n*3 - i) % 127 + 1 );
214 char* laFont::obfuscated_escape(
char* str_in,
char* str_out) {
215 unsigned n = strlen(str_in);
218 for(
unsigned i=0; i<n; i++)
221 sprintf(snum,
"\\x%x", (
unsigned)(str_in[i]));
222 strcat(str_out, snum);
233 char* laFont::getSourceStr(
unsigned i)
241 case 0:
return laFont::obfuscated(
"\x69\x46\x58\x5e\x54\x4c\x43\x4b\x56\x1\x8\x5c\x37\x3d\x2e\x2b\x2b\x29\x38\x56\x62\x74\x7a\x72\x61\x31\x5c\x6e\x7d\x66\x63\x7d\x26\x29\x34\x6b\x67\x76\x6f\x6c\x74\x41\xc\x1b\x13\x51\xc\x15\xb\x13\x4\x58\x1b\x11\x7\x4c");
242 case 1:
return laFont::obfuscated(
"\x57\x41\x7f\x64\x78\x6e\x68\x62\x24\x51\x4d\x4f\x22\x5e\x3e\x13\xb\x3\xb\x11\x10\x1e\x1\x54\x5b\x31\x58\x50\x5d\x5e\x5c\x5c\x4b\x2b\x1d\x9\x9\x7\x16\x44\x2f\x3\x12\xb\x30\x28");
243 case 2:
return laFont::obfuscated(
"\xf\x1f\x37\x27\x35\x23\x6e\xa\x29\x25\x2f\x3b\x29\x33\x2f\x2a\x2a\x63\x23\x2f\x24\x1f\x7b\x59\x55\x4f\x53\x57\x5f\x17\x65\x4c\x47\x47\x57\x5c\x6d\xf\x6d\x42\x5c\x52\x58\x40\x4f\x4f\x52\x5\xc\x60\xb\x1\x12\x2f\x2f\x2d\x3c\x5a\x6e\x78\x76\x76\x65\x35\x58\x72\x61\x7a\x7f\x79");
246 ASSERT(M_FALSE,
"Undeifned String (%d)", i);
laPoint2 * vquadsTexCoord(unsigned nQuad, unsigned nCount=1)
Get a pointer to VQ texture coordinates.
#define M_AB
Text align bottom.
#define M_UNIT
Unit of 1 meter.
#define M_AM
Text align middle.
#define M_AL
Text align left.
#define M_AT
Text align top.
#define M_AR
Text align right.
virtual void vquadsDraw(unsigned nQuads, laPoint2 *ar_uv=NULL, laColor *ar_color=NULL, M_BOOL bBillboards=M_FALSE, M_BOOL bUseColorArrays=M_FALSE)=0
Draw an array of VQ, starting with the psecified pointers (or the first VQ if null) ...
#define M_AC
Text align center.
Virtual interface for the Engine graphics renderer.
laPoint3 * vquadsData(unsigned nQuad, unsigned nCount=1)
Get a pointer to VQ vertex data.
#define M_DIR_FONT
Fonts directory.
#define M_TEX_TMAP
Transparent texture with an alpha channel.