-ScriptChanger::ScriptChanger(MetricsBase & mb)
- : StyleChanger(mb, smallerScriptStyle(mb.style))
-{}
-
-
-/////////////////////////////////////////////////////////////////////////
-//
-// FracChanger
-//
-/////////////////////////////////////////////////////////////////////////
-
-Styles smallerFracStyle(Styles st)
-{
- switch (st) {
- case LM_ST_DISPLAY:
- return LM_ST_TEXT;
- case LM_ST_TEXT:
- return LM_ST_SCRIPT;
- case LM_ST_SCRIPT:
- case LM_ST_SCRIPTSCRIPT:
- default: // shut up compiler
- return LM_ST_SCRIPTSCRIPT;
- }
-}
-
-
-FracChanger::FracChanger(MetricsBase & mb)
- : StyleChanger(mb, smallerFracStyle(mb.style))
-{}
-
-
-/////////////////////////////////////////////////////////////////////////
-//
-// ArrayChanger
-//
-/////////////////////////////////////////////////////////////////////////
-
-ArrayChanger::ArrayChanger(MetricsBase & mb)
- : StyleChanger(mb, mb.style == LM_ST_DISPLAY ? LM_ST_TEXT : mb.style)
-{}
-
-
-/////////////////////////////////////////////////////////////////////////
-//
-// ShapeChanger
-//
-/////////////////////////////////////////////////////////////////////////
-
-ShapeChanger::ShapeChanger(FontInfo & font, FontShape shape)
- : Changer<FontInfo, FontShape>(font, font.shape())
-{
- orig_.setShape(shape);
-}
-
-
-ShapeChanger::~ShapeChanger()
-{
- orig_.setShape(save_);
-}
-
-
-/////////////////////////////////////////////////////////////////////////
-//
-// StyleChanger
-//
-/////////////////////////////////////////////////////////////////////////
-
-StyleChanger::StyleChanger(MetricsBase & mb, Styles style)
- : Changer<MetricsBase>(mb)
-{
- static const int diff[4][4] =
- { { 0, 0, -3, -5 },
- { 0, 0, -3, -5 },
- { 3, 3, 0, -2 },
- { 5, 5, 2, 0 } };
- int t = diff[mb.style][style];
- if (t > 0)
- while (t--)
- mb.font.incSize();
- else
- while (t++)
- mb.font.decSize();
- mb.style = style;
-}
-
-
-StyleChanger::~StyleChanger()
-{
- orig_ = save_;
-}
-
-
-/////////////////////////////////////////////////////////////////////////
-//
-// FontSetChanger
-//
-/////////////////////////////////////////////////////////////////////////
-
-FontSetChanger::FontSetChanger(MetricsBase & mb, char const * name,
- bool really_change_font)
- : Changer<MetricsBase>(mb), change_(really_change_font)
-{
- if (change_) {
- FontSize oldsize = save_.font.size();
- ColorCode oldcolor = save_.font.color();
- docstring const oldname = from_ascii(save_.fontname);
- mb.fontname = name;
- mb.font = sane_font;
- augmentFont(mb.font, from_ascii(name));
- mb.font.setSize(oldsize);
- if (string(name) != "lyxtex"
- && ((isTextFont(oldname) && oldcolor != Color_foreground)
- || (isMathFont(oldname) && oldcolor != Color_math)))
- mb.font.setColor(oldcolor);
- }
-}
-
-
-FontSetChanger::FontSetChanger(MetricsBase & mb, docstring const & name,
- bool really_change_font)
- : Changer<MetricsBase>(mb), change_(really_change_font)
-{
- if (change_) {
- FontSize oldsize = save_.font.size();
- ColorCode oldcolor = save_.font.color();
- docstring const oldname = from_ascii(save_.fontname);
- mb.fontname = to_utf8(name);
- mb.font = sane_font;
- augmentFont(mb.font, name);
- mb.font.setSize(oldsize);
- if (name != "lyxtex"
- && ((isTextFont(oldname) && oldcolor != Color_foreground)
- || (isMathFont(oldname) && oldcolor != Color_math)))
- mb.font.setColor(oldcolor);
- }
-}
-
-
-FontSetChanger::~FontSetChanger()
-{
- if (change_)
- orig_ = save_;
-}
-
-
-/////////////////////////////////////////////////////////////////////////
-//
-// WidthChanger
-//
-/////////////////////////////////////////////////////////////////////////
-
-WidthChanger::WidthChanger(MetricsBase & mb, int w)
- : Changer<MetricsBase>(mb)
-{
- mb.textwidth = w;
-}
-
-
-WidthChanger::~WidthChanger()
-{
- orig_ = save_;
-}
-
-
-/////////////////////////////////////////////////////////////////////////
-//
-// ColorChanger
-//
-/////////////////////////////////////////////////////////////////////////
-
-ColorChanger::ColorChanger(FontInfo & font, ColorCode color,
- bool really_change_color)
- : Changer<FontInfo, ColorCode>(font, font.color()), change_(really_change_color)