]> git.lyx.org Git - lyx.git/blob - src/metricsinfo.C
Small clean-up.
[lyx.git] / src / metricsinfo.C
1 /**
2  * \file metricsinfo.C
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author André Pönitz
7  *
8  * Full author contact details are available in file CREDITS.
9  */
10
11 #include <config.h>
12
13 #include "metricsinfo.h"
14 #include "mathed/math_support.h"
15 #include "frontends/Painter.h"
16 #include "BufferView.h"
17
18
19
20 MetricsBase::MetricsBase()
21         : bv(0), font(), style(LM_ST_TEXT), fontname("mathnormal"),
22           textwidth(0)
23 {}
24
25
26
27 MetricsBase::MetricsBase(BufferView * b, LyXFont const & f, int w)
28         : bv(b), font(f), style(LM_ST_TEXT), fontname("mathnormal"),
29           textwidth(w)
30 {}
31
32
33
34 MetricsInfo::MetricsInfo()
35 {}
36
37
38 MetricsInfo::MetricsInfo(BufferView * bv, LyXFont const & font, int textwidth)
39         : base(bv, font, textwidth)
40 {}
41
42
43
44 PainterInfo::PainterInfo(BufferView * bv)
45         : pain(bv->painter())
46 {
47         base.bv = bv;
48 }
49
50
51 void PainterInfo::draw(int x, int y, char c)
52 {
53         pain.text(x, y, c, base.font);
54 }
55
56
57 Styles smallerScriptStyle(Styles st)
58 {
59         switch (st) {
60                 case LM_ST_DISPLAY:
61                 case LM_ST_TEXT:
62                         return LM_ST_SCRIPT;
63                 case LM_ST_SCRIPT:
64                 case LM_ST_SCRIPTSCRIPT:
65                 default: // shut up compiler
66                         return LM_ST_SCRIPTSCRIPT;
67         }
68 }
69
70 ScriptChanger::ScriptChanger(MetricsBase & mb)
71         : StyleChanger(mb, smallerScriptStyle(mb.style))
72 {}
73
74
75
76 Styles smallerFracStyle(Styles st)
77 {
78         switch (st) {
79                 case LM_ST_DISPLAY:
80                         return LM_ST_TEXT;
81                 case LM_ST_TEXT:
82                         return LM_ST_SCRIPT;
83                 case LM_ST_SCRIPT:
84                 case LM_ST_SCRIPTSCRIPT:
85                 default: // shut up compiler
86                         return LM_ST_SCRIPTSCRIPT;
87         }
88 }
89
90
91 FracChanger::FracChanger(MetricsBase & mb)
92         : StyleChanger(mb, smallerFracStyle(mb.style))
93 {}
94
95
96
97 ArrayChanger::ArrayChanger(MetricsBase & mb)
98         : StyleChanger(mb, mb.style == LM_ST_DISPLAY ? LM_ST_TEXT : mb.style)
99 {}
100
101
102 ShapeChanger::ShapeChanger(LyXFont & font, LyXFont::FONT_SHAPE shape)
103         : Changer<LyXFont, LyXFont::FONT_SHAPE>(font)
104 {
105         save_ = orig_.shape();
106         orig_.setShape(shape);
107 }
108
109 ShapeChanger::~ShapeChanger()
110 {
111         orig_.setShape(save_);
112 }
113
114
115
116 StyleChanger::StyleChanger(MetricsBase & mb, Styles style)
117         :       Changer<MetricsBase>(mb)
118 {
119         static const int diff[4][4]  = { { 0, 0, -3, -5 },
120                                          { 0, 0, -3, -5 },
121                                          { 3, 3,  0, -2 },
122                                          { 5, 5,  2,  0 } };
123         save_ = mb;
124         int t = diff[mb.style][style];
125         if (t > 0)
126                 while (t--)
127                         mb.font.incSize();
128         else
129                 while (t++)
130                         mb.font.decSize();
131         mb.style = style;
132 }
133
134
135 StyleChanger::~StyleChanger()
136 {
137         orig_ = save_;
138 }
139
140
141
142 FontSetChanger::FontSetChanger(MetricsBase & mb, char const * name)
143         :       Changer<MetricsBase>(mb)
144 {
145         save_ = mb;
146         mb.fontname = name;
147         augmentFont(mb.font, name);
148 }
149
150 FontSetChanger::~FontSetChanger()
151 {
152         orig_ = save_;
153 }
154
155
156 WidthChanger::WidthChanger(MetricsBase & mb, int w)
157         :       Changer<MetricsBase>(mb)
158 {
159         save_ = mb;
160         mb.textwidth     = w;
161 }
162
163
164 WidthChanger::~WidthChanger()
165 {
166         orig_ = save_;
167 }