#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()
{
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;
}
}
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;
}
}
}
-// 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,
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;
}
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
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;
}