]> git.lyx.org Git - lyx.git/blobdiff - src/FontLoader.C
One third of Andre' no-gui patch.
[lyx.git] / src / FontLoader.C
index a6446a6439849600667fe29c19a4abf47051d95c..cbf3bd5c456e6adc272f8b93480c038e03edf8e3 100644 (file)
 #include "FontInfo.h"
 #include "debug.h"
 #include "lyxrc.h"     // lyxrc.font_*
-extern LyXRC * lyxrc;
 #include "BufferView.h"
 #include "LyXView.h"
 #include "minibuffer.h"
+
 extern BufferView * current_view;
 
 // Initialize font loader
@@ -103,7 +103,7 @@ void FontLoader::getFontinfo(LyXFont::FONT_FAMILY family,
        string ffamily;
        string fseries;
        string fshape;
-       string norm = lyxrc->font_norm;
+       string norm = lyxrc.font_norm;
        string fontname;
 
        FontInfo * fi = new FontInfo();
@@ -114,21 +114,21 @@ void FontLoader::getFontinfo(LyXFont::FONT_FAMILY family,
                switch (family) {
                case LyXFont::ROMAN_FAMILY:
                        switch (cfam) {
-                       case 0: ffamily = lyxrc->roman_font_name; break;
+                       case 0: ffamily = lyxrc.roman_font_name; break;
                        case 1: ffamily = "-*-times";
                        default: cfam = 100;
                        }
                        break;
                case LyXFont::SANS_FAMILY:
                        switch (cfam) {
-                       case 0: ffamily = lyxrc->sans_font_name; break;
+                       case 0: ffamily = lyxrc.sans_font_name; break;
                        case 1: ffamily = "-*-helvetica";
                        default: cfam = 100;
                        }
                        break;
                case LyXFont::TYPEWRITER_FAMILY:
                        switch (cfam) {
-                       case 0: ffamily = lyxrc->typewriter_font_name; break;
+                       case 0: ffamily = lyxrc.typewriter_font_name; break;
                        case 1: ffamily = "-*-courier";
                        default: cfam = 100;
                        }
@@ -197,15 +197,42 @@ 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
+};
+
+
 /// Do load font
 XFontStruct * FontLoader::doLoad(LyXFont::FONT_FAMILY family, 
                                LyXFont::FONT_SERIES series, 
                                LyXFont::FONT_SHAPE shape, 
                                LyXFont::FONT_SIZE size)
 {
+       if (!lyxrc.use_gui) {
+               return &dummyXFontStruct;
+       }
+
        getFontinfo(family, series, shape);
-       int fsize = int( (lyxrc->font_sizes[size] * lyxrc->dpi * 
-                         (lyxrc->zoom/100.0) ) / 72.27 + 0.5 );
+       int fsize = int( (lyxrc.font_sizes[size] * lyxrc.dpi * 
+                         (lyxrc.zoom/100.0) ) / 72.27 + 0.5 );
 
        string font = fontinfo[family][series][shape]->getFontname(fsize);
 
@@ -215,11 +242,12 @@ XFontStruct * FontLoader::doLoad(LyXFont::FONT_FAMILY family,
                font = "fixed";
        }
 
+       XFontStruct * fs = 0;
+
        current_view->owner()->getMiniBuffer()->Store();
        current_view->owner()->getMiniBuffer()->Set(_("Loading font into X-Server..."));
-
-       XFontStruct * fs = XLoadQueryFont(fl_display, font.c_str());
-
+       fs = XLoadQueryFont(fl_display, font.c_str());
+       
        if (fs == 0) {
                if (font == "fixed") {
                        lyxerr << "We're doomed. Can't get 'fixed' font." << endl;