00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <stdio.h>
00023 #include <string.h>
00024 #include "lista.cc"
00025 #include "toolkits/util/gl_fonts.h"
00026
00027 #ifdef GLTT_ENABLED
00028
00029
00030
00031
00032
00033 #if PLATAFORMA == SGI
00034 extern
00035 #endif
00036 LISTA <TTF_PAIR *> LAS_fuentes_truetype;
00037
00038 FTFace * chequear_fuente(char *archivo)
00045 {
00046 int i;
00047
00048 for ( i = 0; i < LAS_fuentes_truetype.tam(); i++ ) {
00049 if ( strcmp(LAS_fuentes_truetype[i]->nombre, archivo) == 0 ) {
00050 return LAS_fuentes_truetype[i]->f;
00051 }
00052 }
00053
00054 TTF_PAIR *nueva = new TTF_PAIR;
00055
00056 if ( !nueva ) {
00057 fprintf(stderr, "<gl_fonts> ERROR! No se puede cargar la letra \"%s\""
00058 "\n", archivo);
00059 return NULL;
00060 }
00061
00062 nueva->f = new FTFace;
00063
00064 if ( !nueva->f ) {
00065 fprintf(stderr, "<gl_fonts> ERROR! No se puede cargar la letra \"%s\""
00066 "\n", archivo);
00067 delete nueva;
00068 return NULL;
00069 }
00070
00071 if( !nueva->f->open(archivo) ) {
00072 fprintf(stderr, "<gl_fonts> ERROR! No se puede cargar la letra \"%s\""
00073 "\n", archivo);
00074 delete nueva->f;
00075 delete nueva;
00076 return NULL;
00077 }
00078
00079 LAS_fuentes_truetype.anx(nueva);
00080
00081 return nueva->f;
00082 }
00083
00084 void
00085 revisar_ASCII(char *cad)
00098 {
00099 int i;
00100
00101 for ( i = 0; cad[i]; i++ ) {
00102 switch ( (BYTE)cad[i] ) {
00103 case 0x9D:
00104
00105 cad[i] = 'N';
00106
00107 break;
00108 default: break;
00109 }
00110 }
00111 }
00112
00113
00114
00115
00116
00117 CARACTER_GLTT::CARACTER_GLTT(FTGlyphVectorizer* vectorizer) :
00118 GLTTGlyphTriangulator(vectorizer)
00119 {
00120 triangles= 0;
00121 nTriangles= 0;
00122 count_them= GLTT_TRUE;
00123 }
00124
00125 CARACTER_GLTT::~CARACTER_GLTT() {
00126 delete triangles;
00127 triangles= 0;
00128 }
00129
00130 void
00131 CARACTER_GLTT::alloc() {
00132 delete triangles;
00133 triangles= new TRIANGULO_GLTT [ nTriangles + 1 ];
00134 }
00135
00136 void
00137 CARACTER_GLTT::triangle( FTGlyphVectorizer::POINT* p1,
00138 FTGlyphVectorizer::POINT* p2,
00139 FTGlyphVectorizer::POINT* p3 )
00140 {
00141 if( count_them ) {
00142 ++nTriangles;
00143 return;
00144 }
00145 triangles[nTriangles].p1= p1;
00146 triangles[nTriangles].p2= p2;
00147 triangles[nTriangles].p3= p3;
00148 ++nTriangles;
00149 }
00150
00151 #endif // GLTT_ENABLED
00152
00153
00154
00155
00156