X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FFontInfo.cpp;h=9edf97e52e9e7ee56e63d9e7da738a502bec1595;hb=68b60ec529db2e7bfe642bd09902824ea69e2fb5;hp=251e509d6b3cb645fda739c9b6f156b6b0b85d19;hpb=f67cf6f4bb3e3d22ac9aebfa22027c3537cbdf61;p=lyx.git diff --git a/src/FontInfo.cpp b/src/FontInfo.cpp index 251e509d6b..9edf97e52e 100644 --- a/src/FontInfo.cpp +++ b/src/FontInfo.cpp @@ -21,6 +21,10 @@ #include "support/debug.h" #include "support/docstring.h" #include "support/lstrings.h" +#include "support/RefChanger.h" + +#include +#include using namespace std; using namespace lyx::support; @@ -242,6 +246,26 @@ FontInfo & FontInfo::realize(FontInfo const & tmplt) } +Changer FontInfo::changeColor(ColorCode const color, bool cond) +{ + return make_change(color_, color, cond); +} + + +Changer FontInfo::changeShape(FontShape const shape, bool cond) +{ + return make_change(shape_, shape, cond); +} + + +Changer FontInfo::change(FontInfo font, bool realiz, bool cond) +{ + if (realiz) + font.realize(*this); + return make_change(*this, font, cond); +} + + /// Updates a misc setting according to request static FontState setMisc(FontState newfont, FontState org) @@ -636,4 +660,57 @@ FontInfo lyxRead(Lexer & lex, FontInfo const & fi) } +void lyxWrite(ostream & os, FontInfo const & f, string const & start, int level) +{ + string indent; + for (int i = 0; i < level; ++i) + indent += '\t'; + ostringstream oss; + if (f.family() != INHERIT_FAMILY) + oss << indent << "\tFamily " << LyXFamilyNames[f.family()] + << '\n'; + if (f.series() != INHERIT_SERIES) + oss << indent << "\tSeries " << LyXSeriesNames[f.series()] + << '\n'; + if (f.shape() != INHERIT_SHAPE) + oss << indent << "\tShape " << LyXShapeNames[f.shape()] + << '\n'; + if (f.size() != FONT_SIZE_INHERIT) + oss << indent << "\tSize " << LyXSizeNames[f.size()] + << '\n'; + if (f.underbar() == FONT_ON) + oss << indent << "\tMisc Underbar\n"; + else if (f.underbar() == FONT_OFF) + oss << indent << "\tMisc No_Bar\n"; + if (f.strikeout() == FONT_ON) + oss << indent << "\tMisc Strikeout\n"; + else if (f.strikeout() == FONT_OFF) + oss << indent << "\tMisc No_Strikeout\n"; + if (f.uuline() == FONT_ON) + oss << indent << "\tMisc Uuline\n"; + else if (f.uuline() == FONT_OFF) + oss << indent << "\tMisc No_Uuline\n"; + if (f.uwave() == FONT_ON) + oss << indent << "\tMisc Uwave\n"; + else if (f.uwave() == FONT_OFF) + oss << indent << "\tMisc No_Uwave\n"; + if (f.emph() == FONT_ON) + oss << indent << "\tMisc Emph\n"; + else if (f.emph() == FONT_OFF) + oss << indent << "\tMisc No_Emph\n"; + if (f.noun() == FONT_ON) + oss << indent << "\tMisc Noun\n"; + else if (f.noun() == FONT_OFF) + oss << indent << "\tMisc No_Noun\n"; + if (f.color() != Color_inherit && f.color() != Color_none) + oss << indent << "\tColor " << lcolor.getLyXName(f.color()) + << '\n'; + if (!oss.str().empty()) { + os << indent << start << '\n' + << oss.str() + << indent << "EndFont\n"; + } +} + + } // namespace lyx