X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxfont.C;h=fa54c547b5ae2fbb59bb53b5519684f2765e2367;hb=f448e22d483e1370bcbfbb7be8cb47ad7251ed77;hp=19b6ee727c2a8e8ae1932b069ea64a534705c478;hpb=556970623c69ca02e2379533f010cd9397809564;p=lyx.git diff --git a/src/lyxfont.C b/src/lyxfont.C index 19b6ee727c..fa54c547b5 100644 --- a/src/lyxfont.C +++ b/src/lyxfont.C @@ -24,6 +24,7 @@ #include "lyxlex.h" #include "FontLoader.h" #include "support/lstrings.h" +#include "bufferparams.h" // stateText using std::ostream; using std::endl; @@ -191,7 +192,7 @@ LyXFont & LyXFont::decSize() /// Increases font size by one LyXFont & LyXFont::incSize() { - switch(size()) { + switch (size()) { case SIZE_HUGER: break; case SIZE_HUGE: setSize(SIZE_HUGER); break; case SIZE_LARGEST: setSize(SIZE_HUGE); break; @@ -244,7 +245,7 @@ LyXFont::FONT_MISC_STATE LyXFont::setMisc(FONT_MISC_STATE newfont, void LyXFont::update(LyXFont const & newfont, Language const * document_language, bool toggleall) { - if(newfont.family() == family() && toggleall) + if (newfont.family() == family() && toggleall) setFamily(INHERIT_FAMILY); // toggle 'back' else if (newfont.family() != IGNORE_FAMILY) setFamily(newfont.family()); @@ -267,7 +268,7 @@ void LyXFont::update(LyXFont const & newfont, break; } - if(newfont.shape() == shape() && toggleall) + if (newfont.shape() == shape() && toggleall) setShape(INHERIT_SHAPE); // toggle 'back' else if (newfont.shape() != IGNORE_SHAPE) setShape(newfont.shape()); @@ -289,6 +290,7 @@ void LyXFont::update(LyXFont const & newfont, 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); @@ -380,14 +382,9 @@ bool LyXFont::resolved() const /// Build GUI description of font state -string LyXFont::stateText() const +string const LyXFont::stateText(BufferParams * params) const { -#ifdef HAVE_SSTREAM std::ostringstream ost; -#else - char str[1024]; - ostrstream ost(str, 1024); -#endif if (family() != INHERIT_FAMILY) ost << _(GUIFamilyNames[family()]) << ", "; if (series() != INHERIT_SERIES) @@ -410,13 +407,12 @@ string LyXFont::stateText() const ost << _("Latex ") << _(GUIMiscNames[latex()]) << ", "; if (bits == inherit) ost << _("Default") << ", "; - ost << _("Language: ") << _(language()->display.c_str()); -#ifdef HAVE_SSTREAM + if (!params || (language() != params->language)) + ost << _("Language: ") << _(language()->display()) << ", "; + if (number() != OFF) + ost << _(" Number ") << _(GUIMiscNames[number()]); + string buf(ost.str().c_str()); -#else - ost << '\0'; - string buf(ost.str()); -#endif buf = strip(buf, ' '); buf = strip(buf, ','); return buf; @@ -521,7 +517,7 @@ LyXFont & LyXFont::setGUISize(string const & siz) // Returns size in latex format -string LyXFont::latexSize() const +string const LyXFont::latexSize() const { return LaTeXSizeNames[size()]; } @@ -619,6 +615,9 @@ void LyXFont::lyxWriteChanges(LyXFont const & orgfont, ostream & os) const if (orgfont.emph() != emph()) { os << "\\emph " << LyXMiscNames[emph()] << " \n"; } + if (orgfont.number() != number()) { + os << "\\numeric " << LyXMiscNames[number()] << " \n"; + } if (orgfont.underbar() != underbar()) { // This is only for backwards compatibility switch (underbar()) { @@ -664,7 +663,7 @@ void LyXFont::lyxWriteChanges(LyXFont const & orgfont, ostream & os) const } if (orgfont.language() != language()) { if (language()) - os << "\\lang " << language()->lang << "\n"; + os << "\\lang " << language()->lang() << "\n"; else os << "\\lang unknown\n"; } @@ -679,27 +678,31 @@ int LyXFont::latexWriteStartChanges(ostream & os, LyXFont const & base, int count = 0; bool env = false; - if (language() != base.language() && language() != prev.language()) { + if (language()->babel() != base.language()->babel() && + language()->babel() != prev.language()->babel()) { if (isRightToLeft() != prev.isRightToLeft()) { if (isRightToLeft()) { os << "\\R{"; count += 3; - env = true; //We have opened a new environment } else { os << "\\L{"; count += 3; - env = true; //We have opened a new environment } } else { string tmp = '{' + subst(lyxrc.language_command_begin, - "$$lang", language()->lang); + "$$lang", language()->babel()); os << tmp; count += tmp.length(); - env = true; //We have opened a new environment } } + if (number() == ON && prev.number() != ON && + language()->lang() == "hebrew") { + os << "{\\beginL "; + count += 9; + } + LyXFont f = *this; f.reduce(base); @@ -724,7 +727,7 @@ int LyXFont::latexWriteStartChanges(ostream & os, LyXFont const & base, count += strlen(LaTeXShapeNames[f.shape()]) + 2; env = true; //We have opened a new environment } - if (f.color() != LColor::inherit) { + if (f.color() != LColor::inherit && f.color() != LColor::ignore) { os << "\\textcolor{" << lcolor.getLaTeXName(f.color()) << "}{"; @@ -771,18 +774,13 @@ int LyXFont::latexWriteEndChanges(ostream & os, LyXFont const & base, int count = 0; bool env = false; - if (language() != base.language() && language() != next.language()) { - os << "}"; - ++count; - env = true; // Size change need not bother about closing env. - } - LyXFont f = *this; // why do you need this? f.reduce(base); // why isn't this just "reduce(base);" (Lgb) // Because this function is const. Everything breaks if this // method changes the font it represents. There is no speed penalty // by using the temporary. (Asger) + if (f.family() != INHERIT_FAMILY) { os << '}'; ++count; @@ -798,7 +796,7 @@ int LyXFont::latexWriteEndChanges(ostream & os, LyXFont const & base, ++count; env = true; // Size change need not bother about closing env. } - if (f.color() != LColor::inherit) { + if (f.color() != LColor::inherit && f.color() != LColor::ignore) { os << '}'; ++count; env = true; // Size change need not bother about closing env. @@ -826,6 +824,17 @@ int LyXFont::latexWriteEndChanges(ostream & os, LyXFont const & base, } } + if (number() == ON && next.number() != ON && + language()->lang() == "hebrew") { + os << "\\endL}"; + count += 6; + } + + if (language() != base.language() && language() != next.language()) { + os << "}"; + ++count; + } + return count; }