]> git.lyx.org Git - lyx.git/blob - src/mathed/math_metricsinfo.C
fix the <...> delimiters
[lyx.git] / src / mathed / math_metricsinfo.C
1
2 #include <config.h>
3
4 #include "math_metricsinfo.h"
5 #include "math_support.h"
6 #include "frontends/Painter.h"
7
8
9
10 MathMetricsBase::MathMetricsBase()
11         : font(), style(LM_ST_TEXT), fontname("mathnormal")
12 {}
13
14
15
16
17 MathMetricsInfo::MathMetricsInfo()
18         : view(0), inset(0), idx(0), fullredraw(false)
19 {}
20
21
22
23
24 MathPainterInfo::MathPainterInfo(Painter & p)
25         : pain(p)
26 {}
27
28
29 void MathPainterInfo::draw(int x, int y, char c)
30 {
31         pain.text(x, y, c, base.font);
32 }
33
34
35
36
37 MathScriptChanger::MathScriptChanger(MathMetricsBase & mb)
38         : MathChanger<MathMetricsBase>(mb)
39 {
40         save_ = mb;
41         switch (mb.style) {
42                 case LM_ST_DISPLAY:
43                 case LM_ST_TEXT:
44                         mb.style = LM_ST_SCRIPT;
45                         mb.font.decSize();
46                         mb.font.decSize();
47                         break;
48                 case LM_ST_SCRIPT:
49                         mb.style = LM_ST_SCRIPTSCRIPT;
50                         mb.font.decSize();
51                 default:
52                         break;
53         }
54 }
55
56 MathScriptChanger::~MathScriptChanger()
57 {
58         orig_ = save_;
59 }
60
61
62
63
64 // decrease math size for fractions
65 MathFracChanger::MathFracChanger(MathMetricsBase & mb)
66         : MathChanger<MathMetricsBase>(mb)
67 {
68         save_ = mb;
69         switch (mb.style) {
70                 case LM_ST_DISPLAY:
71                         mb.style = LM_ST_TEXT;
72                         break;
73                 case LM_ST_TEXT:
74                         mb.style = LM_ST_SCRIPT;
75                         mb.font.decSize();
76                         mb.font.decSize();
77                         break;
78                 case LM_ST_SCRIPT:
79                         mb.style = LM_ST_SCRIPTSCRIPT;
80                         mb.font.decSize();
81                         break;
82                 default:
83                         break;
84         }
85 }
86
87 MathFracChanger::~MathFracChanger()
88 {
89         orig_ = save_;
90 }
91
92
93
94
95 MathShapeChanger::MathShapeChanger(LyXFont & font, LyXFont::FONT_SHAPE shape)
96         : MathChanger<LyXFont, LyXFont::FONT_SHAPE>(font)
97 {
98         save_ = orig_.shape();
99         orig_.setShape(shape);
100 }
101
102 MathShapeChanger::~MathShapeChanger()
103 {
104         orig_.setShape(save_);
105 }
106
107
108
109
110 void changeSize(LyXFont & font, int diff)
111 {
112         if (diff < 0) {
113                 font.decSize();
114                 changeSize(font, diff + 1);
115         } else if (diff > 0) {
116                 font.incSize();
117                 changeSize(font, diff - 1);
118         }
119 }
120
121 MathStyleChanger::MathStyleChanger(MathMetricsBase & mb, MathStyles style)
122         :       MathChanger<MathMetricsBase>(mb)
123 {
124         save_ = mb;
125         changeSize(mb.font, mb.style - style);
126 }
127
128
129 MathStyleChanger::~MathStyleChanger()
130 {
131         orig_ = save_;
132 }
133
134
135
136
137 MathFontSetChanger::MathFontSetChanger(MathMetricsBase & mb, char const * name)
138         :       MathChanger<MathMetricsBase>(mb)
139 {
140         save_ = mb;     
141         mb.fontname = name;
142         augmentFont(mb.font, name);
143 }
144
145 MathFontSetChanger::~MathFontSetChanger()
146 {
147         orig_ = save_;
148 }
149