]> git.lyx.org Git - lyx.git/blobdiff - src/FontLoader.C
prepare for 1.1.6pre2
[lyx.git] / src / FontLoader.C
index cbf3bd5c456e6adc272f8b93480c038e03edf8e3..fafb7110b96fd9801d0f8f95e2637301417bb5ae 100644 (file)
@@ -11,7 +11,6 @@
 
 #include <config.h>
 #include <cmath>       // fabs()
-#include <cstdlib>     // atoi()
 
 #ifdef __GNUG__
 #pragma implementation "FontLoader.h"
 #include "LyXView.h"
 #include "minibuffer.h"
 
+using std::endl;
+
 extern BufferView * current_view;
 
+
+// The global fontloader
+FontLoader fontloader;
+
+
 // Initialize font loader
 FontLoader::FontLoader()
 {
@@ -52,11 +58,11 @@ void FontLoader::update()
 void FontLoader::reset()
 {
        // Clear font infos, font structs and font metrics
-       for (int i1 = 0; i1<4; i1++)
-               for (int i2 = 0; i2<2; i2++)
-                       for (int i3 = 0; i3<4; i3++) {
+       for (int i1 = 0; i1 < 4; ++i1)
+               for (int i2 = 0; i2 < 2; ++i2)
+                       for (int i3 = 0; i3 < 4; ++i3) {
                                fontinfo[i1][i2][i3] = 0;
-                               for (int i4 = 0; i4<10; i4++) {
+                               for (int i4 = 0; i4<10; ++i4) {
                                        fontstruct[i1][i2][i3][i4] = 0;
                                }
                        }
@@ -66,16 +72,16 @@ void FontLoader::reset()
 void FontLoader::unload() 
 {
        // Unload all fonts
-       for (int i1 = 0; i1<4; i1++)
-               for (int i2 = 0; i2<2; i2++)
-                       for (int i3 = 0; i3<4; i3++) {
+       for (int i1 = 0; i1 < 4; ++i1)
+               for (int i2 = 0; i2 < 2; ++i2)
+                       for (int i3 = 0; i3 < 4; ++i3) {
                                if (fontinfo[i1][i2][i3]) {
                                        delete fontinfo[i1][i2][i3];
                                        fontinfo[i1][i2][i3] = 0;
                                }
-                               for (int i4 = 0; i4<10; i4++) {
+                               for (int i4 = 0; i4 < 10; ++i4) {
                                        if (fontstruct[i1][i2][i3][i4]) {
-                                               XFreeFont(fl_display, fontstruct[i1][i2][i3][i4]);
+                                               XFreeFont(fl_get_display(), fontstruct[i1][i2][i3][i4]);
                                                fontstruct[i1][i2][i3][i4] = 0;
                                        }
                                }
@@ -198,27 +204,9 @@ void FontLoader::getFontinfo(LyXFont::FONT_FAMILY family,
 }
 
 
-// A dummy fontstruct used when there is no gui. Only the last 3 have
-// well-thought values...  
-static XFontStruct dummyXFontStruct = {
-       /*XExtData *ext_data; */        0,  
-       /* Font fid; */                 0,
-       /* unsigned direction; */       FontLeftToRight,
-       /* unsigned min_char_or_byte2; */ 0,
-       /* unsigned max_char_or_byte2; */ 0,
-       /* unsigned min_byte1; */       0,
-        /* unsigned max_byte1; */      0,
-        /* Bool all_chars_exist; */    0,
-       /* unsigned default_char; */    0,
-        /* int n_properties; */                0,
-        /* XFontProp *properties; */   0,
-        /* XCharStruct min_bounds; */  0,
-       /* XCharStruct max_bounds; */   0,
-       /* XCharStruct *per_char; */    0, // no character specific info
-        /* int ascent; */              1, // unit ascent on character displays
-        /* int descent; */             0, // no descent on character displays
-};
-
+// A dummy fontstruct used when there is no gui. 
+static XFontStruct dummyXFontStruct;
+static bool dummyXFontStructisGood = false;
 
 /// Do load font
 XFontStruct * FontLoader::doLoad(LyXFont::FONT_FAMILY family, 
@@ -227,6 +215,16 @@ XFontStruct * FontLoader::doLoad(LyXFont::FONT_FAMILY family,
                                LyXFont::FONT_SIZE size)
 {
        if (!lyxrc.use_gui) {
+               if (!dummyXFontStructisGood) {
+                       // no character specific info
+                       dummyXFontStruct.per_char = 0; 
+                       // unit ascent on character displays
+                       dummyXFontStruct.ascent = 1; 
+                       // no descent on character displays
+                       dummyXFontStruct.descent = 0; 
+                       dummyXFontStructisGood = true;
+               }
+
                return &dummyXFontStruct;
        }
 
@@ -246,14 +244,14 @@ XFontStruct * FontLoader::doLoad(LyXFont::FONT_FAMILY family,
 
        current_view->owner()->getMiniBuffer()->Store();
        current_view->owner()->getMiniBuffer()->Set(_("Loading font into X-Server..."));
-       fs = XLoadQueryFont(fl_display, font.c_str());
+       fs = XLoadQueryFont(fl_get_display(), font.c_str());
        
        if (fs == 0) {
                if (font == "fixed") {
                        lyxerr << "We're doomed. Can't get 'fixed' font." << endl;
                } else {
                        lyxerr << "Could not get font. Using 'fixed'." << endl;
-                       fs = XLoadQueryFont(fl_display, "fixed");
+                       fs = XLoadQueryFont(fl_get_display(), "fixed");
                }
        } else if (lyxerr.debugging(Debug::FONT)) {
                // Tell user the font matching
@@ -268,7 +266,7 @@ XFontStruct * FontLoader::doLoad(LyXFont::FONT_FAMILY family,
                f.setNoun(LyXFont::INHERIT);
                f.setLatex(LyXFont::INHERIT);
                f.setColor(LColor::inherit);
-               lyxerr << "Font '" << f.stateText() 
+               lyxerr << "Font '" << f.stateText(0
                       << "' matched by\n" << font << endl;
        }