Hi, I'm currently working on this bug. And probably will do an NMU soon to fix this bug.
I rewrite the texfont.cpp and texfont.h by using plib. I am enclosing these files for reference. Regards, Ying-Chun Liu -- PaulLiu(Ying-Chun Liu) E-mail address: [EMAIL PROTECTED]
/* replacement for non-free texfont.cpp for openuniverse Copyright (C) 2008 PaulLiu(Ying-Chun Liu). This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include <cstdio> #include <cstring> #include <cstdlib> #include <cctype> #include "texfont.h" #include "ou.h" static int plib_init_flag=(1==0); static void init_plib() { if (!plib_init_flag) { fntInit(); plib_init_flag=(1==1); } } TexFont* txfLoadFont (char* filename) { TexFont* ret=NULL; char newfilename[1024]; init_plib(); ret = (TexFont*)malloc (sizeof(TexFont)); memset(ret,0,sizeof(TexFont)); memset(newfilename,0,sizeof(newfilename)); snprintf(newfilename,sizeof(newfilename)-1,"%s/%s",fontpath,filename); ret->plibtexfont = new fntTexFont(newfilename); ret->tgi = (TexGlyphInfo*)malloc(sizeof(TexGlyphInfo)); memset(ret->tgi,0,sizeof(TexGlyphInfo)); ret->tgi->width = 3; ret->tgi->advance = 3; ret->tgi->height = 12; ret->plibrenderer = new fntRenderer(); ret->plibrenderer->setFont(ret->plibtexfont); return ret; } GLuint txfEstablishTexture(TexFont* f,GLuint b,GLboolean c) { init_plib(); return 0; } void txfBindFontTexture(TexFont* f) { init_plib(); } void txfUnloadFont(TexFont* f) { init_plib(); if (f!=NULL) { if (f->plibrenderer!=NULL) { delete f->plibrenderer; f->plibrenderer=NULL; } if (f->tgi != NULL) { free(f->tgi); f->tgi=NULL; } if (f->plibtexfont!=NULL) { delete f->plibtexfont; f->plibtexfont=NULL; } free(f); } } void txfRenderString(TexFont* f,char* string,int string_len) { init_plib(); f->plibrenderer->begin(); f->plibrenderer->puts(string); f->plibrenderer->end(); }
/* replacement for non-free texfont.cpp for openuniverse Copyright (C) 2008 PaulLiu(Ying-Chun Liu). This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef __PAULLIU_TEXFONT_H__ #define __PAULLIU_TEXFONT_H__ #include <fnt.h> #include <GL/gl.h> typedef struct { unsigned char width; unsigned char height; signed char advance; } TexGlyphInfo; typedef struct { TexGlyphInfo* tgi; fntTexFont* plibtexfont; fntRenderer* plibrenderer; } TexFont; extern TexFont* txfLoadFont(char*); extern void txfUnloadFont(TexFont*); extern GLuint txfEstablishTexture(TexFont*,GLuint,GLboolean); extern void txfBindFontTexture(TexFont*); extern void txfRenderString(TexFont*,char*,int); #endif
signature.asc
Description: OpenPGP digital signature