4 #include "metricsinfo.h"
5 #include "mathed/math_support.h"
6 #include "frontends/Painter.h"
11 MetricsBase::MetricsBase()
12 : font(), style(LM_ST_TEXT), fontname("mathnormal"),
13 restrictwidth(false), textwidth(0)
19 MetricsInfo::MetricsInfo()
26 PainterInfo::PainterInfo(Painter & p)
31 void PainterInfo::draw(int x, int y, char c)
33 pain.text(x, y, c, base.font);
37 Styles smallerScriptStyle(Styles st)
44 case LM_ST_SCRIPTSCRIPT:
45 return LM_ST_SCRIPTSCRIPT;
48 lyxerr << "should not happen\n";
52 ScriptChanger::ScriptChanger(MetricsBase & mb)
53 : StyleChanger(mb, smallerScriptStyle(mb.style))
58 Styles smallerFracStyle(Styles st)
66 case LM_ST_SCRIPTSCRIPT:
67 return LM_ST_SCRIPTSCRIPT;
70 lyxerr << "should not happen\n";
74 FracChanger::FracChanger(MetricsBase & mb)
75 : StyleChanger(mb, smallerFracStyle(mb.style))
80 ArrayChanger::ArrayChanger(MetricsBase & mb)
81 : StyleChanger(mb, mb.style == LM_ST_DISPLAY ? LM_ST_TEXT : mb.style)
85 ShapeChanger::ShapeChanger(LyXFont & font, LyXFont::FONT_SHAPE shape)
86 : Changer<LyXFont, LyXFont::FONT_SHAPE>(font)
88 save_ = orig_.shape();
89 orig_.setShape(shape);
92 ShapeChanger::~ShapeChanger()
94 orig_.setShape(save_);
99 StyleChanger::StyleChanger(MetricsBase & mb, Styles style)
100 : Changer<MetricsBase>(mb)
102 static const int diff[4][4] = { { 0, 0, -3, -5 },
107 int t = diff[mb.style][style];
118 StyleChanger::~StyleChanger()
125 FontSetChanger::FontSetChanger(MetricsBase & mb, char const * name)
126 : Changer<MetricsBase>(mb)
130 augmentFont(mb.font, name);
133 FontSetChanger::~FontSetChanger()
139 WidthChanger::WidthChanger(MetricsBase & mb, int w)
140 : Changer<MetricsBase>(mb)
143 mb.restrictwidth = true;
148 WidthChanger::~WidthChanger()