From 608668bd5f479368003ee26b35c1165bbe1e2d41 Mon Sep 17 00:00:00 2001 From: david Date: Tue, 19 Feb 2002 23:54:17 +0000 Subject: [PATCH] Attempt to merge LED font patches back in (they were wiped out by Jim's tiled-background patches). --- src/Cockpit/panel.cxx | 41 ++++++++++++++++++++++++++++++++++++---- src/Cockpit/panel.hxx | 3 ++- src/Cockpit/panel_io.cxx | 3 ++- 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/Cockpit/panel.cxx b/src/Cockpit/panel.cxx index 69c2741ea..23f8e4b28 100644 --- a/src/Cockpit/panel.cxx +++ b/src/Cockpit/panel.cxx @@ -164,7 +164,8 @@ FGCroppedTexture::getTexture () FGPanel * current_panel = NULL; static fntRenderer text_renderer; - +static fntTexFont *default_font; +static fntTexFont *led_font; /** * Constructor. @@ -215,7 +216,28 @@ FGPanel::addInstrument (FGPanelInstrument * instrument) void 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() ) ; } @@ -857,7 +879,7 @@ FGTexturedLayer::draw () //////////////////////////////////////////////////////////////////////// FGTextLayer::FGTextLayer (int w, int h) - : FGInstrumentLayer(w, h), _pointSize(14.0) + : FGInstrumentLayer(w, h), _pointSize(14.0), _font_name("default") { _then.stamp(); _color[0] = _color[1] = _color[2] = 0.0; @@ -880,7 +902,11 @@ FGTextLayer::draw () glPushMatrix(); glColor4fv(_color); 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.begin(); text_renderer.start3f(0, 0, 0); @@ -919,6 +945,13 @@ FGTextLayer::setPointSize (float size) _pointSize = size; } +void +FGTextLayer::setFontName(const string &name) +{ + _font_name = name; +} + + void FGTextLayer::setFont(fntFont * font) { diff --git a/src/Cockpit/panel.hxx b/src/Cockpit/panel.hxx index 7b68b6d40..2c64c56d7 100644 --- a/src/Cockpit/panel.hxx +++ b/src/Cockpit/panel.hxx @@ -502,6 +502,7 @@ public: virtual void addChunk (Chunk * chunk); virtual void setColor (float r, float g, float b); virtual void setPointSize (float size); + virtual void setFontName ( const string &name ); virtual void setFont (fntFont * font); private: @@ -513,7 +514,7 @@ private: float _color[4]; float _pointSize; - + mutable string _font_name; mutable string _value; mutable SGTimeStamp _then; mutable SGTimeStamp _now; diff --git a/src/Cockpit/panel_io.cxx b/src/Cockpit/panel_io.cxx index d1dad3880..f77ff2626 100644 --- a/src/Cockpit/panel_io.cxx +++ b/src/Cockpit/panel_io.cxx @@ -508,7 +508,8 @@ readLayer (const SGPropertyNode * node, float w_scale, float h_scale) tlayer->setPointSize(pointSize); // Set the font. - // TODO + string fontName = node->getStringValue("font", "default"); + tlayer->setFontName(fontName); const SGPropertyNode * chunk_group = node->getNode("chunks"); if (chunk_group != 0) { -- 2.39.5