]> git.mxchange.org Git - flightgear.git/commitdiff
Add support for multiple panel fonts (specifically an LED font.)
authorcurt <curt>
Tue, 19 Feb 2002 03:42:16 +0000 (03:42 +0000)
committercurt <curt>
Tue, 19 Feb 2002 03:42:16 +0000 (03:42 +0000)
src/Cockpit/panel.cxx
src/Cockpit/panel.hxx
src/Cockpit/panel_io.cxx

index 239500f9c6d8ecc9bd562304f5e48bc2c6497945..de6fd02b510e2ee68f783f8d7e0adfbe052cf546 100644 (file)
@@ -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() ) ;
 }
 
 
@@ -824,7 +846,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;
@@ -847,7 +869,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);
@@ -886,6 +912,13 @@ FGTextLayer::setPointSize (float size)
   _pointSize = size;
 }
 
+void
+FGTextLayer::setFontName(const string &name)
+{
+  _font_name = name;
+}
+
+
 void
 FGTextLayer::setFont(fntFont * font)
 {
index d58ccf3339bf5a7a849b32f3afdab7c15e1ad859..7afc96893505c9a9e5d610b011e3b555977a20d5 100644 (file)
@@ -498,6 +498,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:
@@ -509,7 +510,7 @@ private:
   float _color[4];
 
   float _pointSize;
-
+  mutable string _font_name;
   mutable string _value;
   mutable SGTimeStamp _then;
   mutable SGTimeStamp _now;
index 7c578ea8b6b5bb64e63c808ed675de73001ff21c..02168f98db5b21269a9b4f9118db1dcee80b2d8c 100644 (file)
@@ -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) {