X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxfont.C;h=61143f4bac1b2ed8751df51adc630c0569a2a640;hb=c0ef23bc2a2f2b3bd6c3520e0c0bd6223bb1a1a2;hp=8aae34aac23a3c5168ffcf9df1570bb8276c6099;hpb=f1d829a18584fe8c787c7ea428f10cc7a82d6083;p=lyx.git diff --git a/src/lyxfont.C b/src/lyxfont.C index 8aae34aac2..61143f4bac 100644 --- a/src/lyxfont.C +++ b/src/lyxfont.C @@ -29,15 +29,20 @@ using std::ostream; using std::endl; +#ifndef CXX_GLOBAL_CSTD +using std::strlen; +#endif + // // Names for the GUI // namespace { -char const * GUIFamilyNames[6] = -{ N_("Roman"), N_("Sans serif"), N_("Typewriter"), N_("Symbol"), N_("Inherit"), - N_("Ignore") }; +char const * GUIFamilyNames[12] = +{ N_("Roman"), N_("Sans serif"), N_("Typewriter"), N_("Symbol"), + "cmr", "cmsy", "cmm", "cmex", "msa", "msb", + N_("Inherit"), N_("Ignore") }; char const * GUISeriesNames[4] = { N_("Medium"), N_("Bold"), N_("Inherit"), N_("Ignore") }; @@ -58,8 +63,10 @@ char const * GUIMiscNames[5] = // // Strings used to read and write .lyx format files // -char const * LyXFamilyNames[6] = -{ "roman", "sans", "typewriter", "symbol", "default", "error" }; +char const * LyXFamilyNames[12] = +{ "roman", "sans", "typewriter", "symbol", + "cmr", "cmsy", "cmm", "cmex", "msa", "msb", + "default", "error" }; char const * LyXSeriesNames[4] = { "medium", "bold", "default", "error" }; @@ -70,7 +77,7 @@ char const * LyXShapeNames[6] = char const * LyXSizeNames[14] = { "tiny", "scriptsize", "footnotesize", "small", "normal", "large", "larger", "largest", "huge", "giant", - "increase-error", "decrease-error", "default", "error" }; + "increase", "decrease", "default", "error" }; char const * LyXMiscNames[5] = { "off", "on", "toggle", "default", "error" }; @@ -104,7 +111,6 @@ LyXFont::FontBits LyXFont::sane = { OFF, OFF, OFF, - OFF, OFF }; // Initialize static member @@ -117,7 +123,6 @@ LyXFont::FontBits LyXFont::inherit = { INHERIT, INHERIT, INHERIT, - INHERIT, OFF }; // Initialize static member @@ -130,7 +135,6 @@ LyXFont::FontBits LyXFont::ignore = { IGNORE, IGNORE, IGNORE, - IGNORE, IGNORE }; @@ -144,7 +148,6 @@ bool LyXFont::FontBits::operator==(LyXFont::FontBits const & fb1) const fb1.emph == emph && fb1.underbar == underbar && fb1.noun == noun && - fb1.latex == latex && fb1.number == number; } @@ -156,7 +159,11 @@ bool LyXFont::FontBits::operator!=(LyXFont::FontBits const & fb1) const LyXFont::LyXFont(LyXFont::FONT_INIT1) +#ifndef INHERIT_LANGUAGE : bits(inherit), lang(default_language) +#else + : bits(inherit), lang(inherit_language) +#endif {} @@ -191,12 +198,6 @@ LyXFont::FONT_MISC_STATE LyXFont::underbar() const } -LyXFont::FONT_MISC_STATE LyXFont::latex() const -{ - return bits.latex; -} - - LColor::color LyXFont::color() const { return bits.color; @@ -223,7 +224,8 @@ bool LyXFont::isRightToLeft() const bool LyXFont::isVisibleRightToLeft() const { - return (lang->RightToLeft() && latex() != ON && number() != ON); + return (lang->RightToLeft() && + number() != ON); } @@ -276,13 +278,6 @@ LyXFont & LyXFont::setNoun(LyXFont::FONT_MISC_STATE n) } -LyXFont & LyXFont::setLatex(LyXFont::FONT_MISC_STATE l) -{ - bits.latex = l; - return *this; -} - - LyXFont & LyXFont::setColor(LColor::color c) { bits.color = c; @@ -388,8 +383,9 @@ LyXFont::FONT_MISC_STATE LyXFont::setMisc(FONT_MISC_STATE newfont, /// Updates font settings according to request -void LyXFont::update(LyXFont const & newfont, - Language const * document_language, bool toggleall) +void LyXFont::update(LyXFont const & newfont, + Language const * document_language, + bool toggleall) { if (newfont.family() == family() && toggleall) setFamily(INHERIT_FAMILY); // toggle 'back' @@ -432,14 +428,17 @@ void LyXFont::update(LyXFont const & newfont, setEmph(setMisc(newfont.emph(), emph())); setUnderbar(setMisc(newfont.underbar(), underbar())); setNoun(setMisc(newfont.noun(), noun())); - setLatex(setMisc(newfont.latex(), latex())); - + setNumber(setMisc(newfont.number(), number())); if (newfont.language() == language() && toggleall) if (language() == document_language) setLanguage(default_language); else +#ifndef INHERIT_LANGUAGE setLanguage(document_language); +#else + setLanguage(inherit_language); +#endif else if (newfont.language() != ignore_language) setLanguage(newfont.language()); @@ -467,16 +466,34 @@ void LyXFont::reduce(LyXFont const & tmplt) setUnderbar(INHERIT); if (noun() == tmplt.noun()) setNoun(INHERIT); - if (latex() == tmplt.latex()) - setLatex(INHERIT); if (color() == tmplt.color()) setColor(LColor::inherit); +#ifdef INHERIT_LANGUAGE + if (language() == tmplt.language()) + setLanguage(inherit_language); +#endif } /// Realize font from a template +#ifndef INHERIT_LANGUAGE LyXFont & LyXFont::realize(LyXFont const & tmplt) +#else +LyXFont & LyXFont::realize(LyXFont const & tmplt, Language const * deflang) +#endif { +#ifdef INHERIT_LANGUAGE + if (language() == inherit_language) { + if (tmplt.language() == inherit_language || + tmplt.language() == ignore_language || + tmplt.language() == default_language) + { + setLanguage(deflang); + } else { + setLanguage(tmplt.language()); + } + } +#endif if (bits == inherit) { bits = tmplt.bits; return *this; @@ -503,9 +520,6 @@ LyXFont & LyXFont::realize(LyXFont const & tmplt) if (bits.noun == INHERIT) { bits.noun = tmplt.bits.noun; } - if (bits.latex == INHERIT) { - bits.latex = tmplt.bits.latex; - } if (bits.color == LColor::inherit) { bits.color = tmplt.bits.color; } @@ -519,7 +533,10 @@ bool LyXFont::resolved() const return (family() != INHERIT_FAMILY && series() != INHERIT_SERIES && shape() != INHERIT_SHAPE && size() != INHERIT_SIZE && emph() != INHERIT && underbar() != INHERIT && - noun() != INHERIT && latex() != INHERIT && + noun() != INHERIT && +#ifdef INHERIT_LANGUAGE + language() != inherit_language && +#endif color() != LColor::inherit); } @@ -527,7 +544,7 @@ bool LyXFont::resolved() const /// Build GUI description of font state string const LyXFont::stateText(BufferParams * params) const { - std::ostringstream ost; + ostringstream ost; if (family() != INHERIT_FAMILY) ost << _(GUIFamilyNames[family()]) << ", "; if (series() != INHERIT_SERIES) @@ -546,8 +563,6 @@ string const LyXFont::stateText(BufferParams * params) const << _(GUIMiscNames[underbar()]) << ", "; if (noun() != INHERIT) ost << _("Noun ") << _(GUIMiscNames[noun()]) << ", "; - if (latex() != INHERIT) - ost << _("Latex ") << _(GUIMiscNames[latex()]) << ", "; if (bits == inherit) ost << _("Default") << ", "; if (!params || (language() != params->language)) @@ -660,9 +675,9 @@ LyXFont & LyXFont::lyxRead(LyXLex & lex) { bool error = false; bool finished = false; - while (!finished && lex.IsOK() && !error) { + while (!finished && lex.isOK() && !error) { lex.next(); - string const tok = lowercase(lex.GetString()); + string const tok = lowercase(lex.getString()); if (tok.empty()) { continue; @@ -670,34 +685,23 @@ LyXFont & LyXFont::lyxRead(LyXLex & lex) finished = true; } else if (tok == "family") { lex.next(); - string const ttok = lex.GetString(); + string const ttok = lex.getString(); setLyXFamily(ttok); } else if (tok == "series") { lex.next(); - string const ttok = lex.GetString(); + string const ttok = lex.getString(); setLyXSeries(ttok); } else if (tok == "shape") { lex.next(); - string const ttok = lex.GetString(); + string const ttok = lex.getString(); setLyXShape(ttok); } else if (tok == "size") { lex.next(); - string const ttok = lex.GetString(); + string const ttok = lex.getString(); setLyXSize(ttok); - } else if (tok == "latex") { - lex.next(); - string const ttok = lowercase(lex.GetString()); - - if (ttok == "no_latex") { - setLatex(OFF); - } else if (ttok == "latex") { - setLatex(ON); - } else { - lex.printError("Illegal LaTeX type`$$Token'"); - } } else if (tok == "misc") { lex.next(); - string const ttok = lowercase(lex.GetString()); + string const ttok = lowercase(lex.getString()); if (ttok == "no_bar") { setUnderbar(OFF); @@ -716,7 +720,7 @@ LyXFont & LyXFont::lyxRead(LyXLex & lex) } } else if (tok == "color") { lex.next(); - string const ttok = lex.GetString(); + string const ttok = lex.getString(); setLyXColor(ttok); } else { lex.printError("Unknown tag `$$Token'"); @@ -728,7 +732,11 @@ LyXFont & LyXFont::lyxRead(LyXLex & lex) /// Writes the changes from this font to orgfont in .lyx format in file -void LyXFont::lyxWriteChanges(LyXFont const & orgfont, ostream & os) const +void LyXFont::lyxWriteChanges(LyXFont const & orgfont, +#ifdef INHERIT_LANGUAGE + Language const * doclang, +#endif + ostream & os) const { os << "\n"; if (orgfont.family() != family()) { @@ -768,22 +776,6 @@ void LyXFont::lyxWriteChanges(LyXFont const & orgfont, ostream & os) const if (orgfont.noun() != noun()) { os << "\\noun " << LyXMiscNames[noun()] << " \n"; } - if (orgfont.latex() != latex()) { - // This is only for backwards compatibility - switch (latex()) { - case OFF: os << "\\latex no_latex \n"; break; - case ON: os << "\\latex latex \n"; break; - case TOGGLE: lyxerr << "LyXFont::lyxWriteFontChanges: " - "TOGGLE should not appear here!" - << endl; - break; - case INHERIT: os << "\\latex default \n"; break; - case IGNORE: lyxerr << "LyXFont::lyxWriteFontChanges: " - "IGNORE should not appear here!" - << endl; - break; - } - } if (orgfont.color() != color()) { // To make us file compatible with older // lyx versions we emit "default" instead @@ -793,7 +785,13 @@ void LyXFont::lyxWriteChanges(LyXFont const & orgfont, ostream & os) const os << "\\color " << col_str << "\n"; } if (orgfont.language() != language()) { +#ifndef INHERIT_LANGUAGE if (language()) +#else + if (language() == inherit_language) + os << "\\lang " << doclang->lang() << "\n"; + else if (language()) +#endif os << "\\lang " << language()->lang() << "\n"; else os << "\\lang unknown\n"; @@ -841,21 +839,21 @@ int LyXFont::latexWriteStartChanges(ostream & os, LyXFont const & base, os << '\\' << LaTeXFamilyNames[f.family()] << '{'; - count += std::strlen(LaTeXFamilyNames[f.family()]) + 2; + count += strlen(LaTeXFamilyNames[f.family()]) + 2; env = true; //We have opened a new environment } if (f.series() != INHERIT_SERIES) { os << '\\' << LaTeXSeriesNames[f.series()] << '{'; - count += std::strlen(LaTeXSeriesNames[f.series()]) + 2; + count += strlen(LaTeXSeriesNames[f.series()]) + 2; env = true; //We have opened a new environment } if (f.shape() != INHERIT_SHAPE) { os << '\\' << LaTeXShapeNames[f.shape()] << '{'; - count += std::strlen(LaTeXShapeNames[f.shape()]) + 2; + count += strlen(LaTeXShapeNames[f.shape()]) + 2; env = true; //We have opened a new environment } if (f.color() != LColor::inherit && f.color() != LColor::ignore) { @@ -890,7 +888,7 @@ int LyXFont::latexWriteStartChanges(ostream & os, LyXFont const & base, os << '\\' << LaTeXSizeNames[f.size()] << ' '; - count += std::strlen(LaTeXSizeNames[f.size()]) + 2; + count += strlen(LaTeXSizeNames[f.size()]) + 2; } return count; } @@ -900,7 +898,7 @@ int LyXFont::latexWriteStartChanges(ostream & os, LyXFont const & base, // Returns number of chars written // This one corresponds to latexWriteStartChanges(). (Asger) int LyXFont::latexWriteEndChanges(ostream & os, LyXFont const & base, - LyXFont const & next) const + LyXFont const & next) const { int count = 0; bool env = false; @@ -972,8 +970,6 @@ int LyXFont::latexWriteEndChanges(ostream & os, LyXFont const & base, LColor::color LyXFont::realColor() const { - if (latex() == ON) - return LColor::latex; if (color() == LColor::none) return LColor::foreground; return color(); @@ -997,14 +993,6 @@ LyXFont::FONT_SHAPE LyXFont::realShape() const } -bool LyXFont::equalExceptLatex(LyXFont const & f) const -{ - LyXFont f1 = *this; - f1.setLatex(f.latex()); - return f1 == f; -} - - ostream & operator<<(ostream & o, LyXFont::FONT_MISC_STATE fms) { return o << int(fms);