1
0
Fork 0

Add support for multiple panel fonts (specifically an LED font.)

This commit is contained in:
curt 2002-02-19 03:42:16 +00:00
parent 3b870192f4
commit b8fc42d824
3 changed files with 41 additions and 6 deletions

View file

@ -164,7 +164,8 @@ FGCroppedTexture::getTexture ()
FGPanel * current_panel = NULL; FGPanel * current_panel = NULL;
static fntRenderer text_renderer; static fntRenderer text_renderer;
static fntTexFont *default_font;
static fntTexFont *led_font;
/** /**
* Constructor. * Constructor.
@ -215,7 +216,28 @@ FGPanel::addInstrument (FGPanelInstrument * instrument)
void void
FGPanel::init () FGPanel::init ()
{ {
// NO-OP SGPath base_path;
char* envp = ::getenv( "FG_FONTS" );
if ( envp != NULL ) {
base_path.set( envp );
} else {
base_path.set( globals->get_fg_root() );
base_path.append( "Fonts" );
}
SGPath fntpath;
// Install the default font
fntpath = base_path;
fntpath.append( "typewriter.txf" );
default_font = new fntTexFont ;
default_font -> load ( (char *)fntpath.c_str() ) ;
// Install the LED font
fntpath = base_path;
fntpath.append( "led.txf" );
led_font = new fntTexFont ;
led_font -> load ( (char *)fntpath.c_str() ) ;
} }
@ -824,7 +846,7 @@ FGTexturedLayer::draw ()
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
FGTextLayer::FGTextLayer (int w, int h) FGTextLayer::FGTextLayer (int w, int h)
: FGInstrumentLayer(w, h), _pointSize(14.0) : FGInstrumentLayer(w, h), _pointSize(14.0), _font_name("default")
{ {
_then.stamp(); _then.stamp();
_color[0] = _color[1] = _color[2] = 0.0; _color[0] = _color[1] = _color[2] = 0.0;
@ -847,7 +869,11 @@ FGTextLayer::draw ()
glPushMatrix(); glPushMatrix();
glColor4fv(_color); glColor4fv(_color);
transform(); transform();
text_renderer.setFont(guiFntHandle); if ( _font_name == "led" ) {
text_renderer.setFont(led_font);
} else {
text_renderer.setFont(guiFntHandle);
}
text_renderer.setPointSize(_pointSize); text_renderer.setPointSize(_pointSize);
text_renderer.begin(); text_renderer.begin();
text_renderer.start3f(0, 0, 0); text_renderer.start3f(0, 0, 0);
@ -886,6 +912,13 @@ FGTextLayer::setPointSize (float size)
_pointSize = size; _pointSize = size;
} }
void
FGTextLayer::setFontName(const string &name)
{
_font_name = name;
}
void void
FGTextLayer::setFont(fntFont * font) FGTextLayer::setFont(fntFont * font)
{ {

View file

@ -498,6 +498,7 @@ public:
virtual void addChunk (Chunk * chunk); virtual void addChunk (Chunk * chunk);
virtual void setColor (float r, float g, float b); virtual void setColor (float r, float g, float b);
virtual void setPointSize (float size); virtual void setPointSize (float size);
virtual void setFontName ( const string &name );
virtual void setFont (fntFont * font); virtual void setFont (fntFont * font);
private: private:
@ -509,7 +510,7 @@ private:
float _color[4]; float _color[4];
float _pointSize; float _pointSize;
mutable string _font_name;
mutable string _value; mutable string _value;
mutable SGTimeStamp _then; mutable SGTimeStamp _then;
mutable SGTimeStamp _now; mutable SGTimeStamp _now;

View file

@ -508,7 +508,8 @@ readLayer (const SGPropertyNode * node, float w_scale, float h_scale)
tlayer->setPointSize(pointSize); tlayer->setPointSize(pointSize);
// Set the font. // Set the font.
// TODO string fontName = node->getStringValue("font", "default");
tlayer->setFontName(fontName);
const SGPropertyNode * chunk_group = node->getNode("chunks"); const SGPropertyNode * chunk_group = node->getNode("chunks");
if (chunk_group != 0) { if (chunk_group != 0) {