]> git.lyx.org Git - lyx.git/blob - src/mathed/math_fboxinset.C
architectural changes to tex2lyx
[lyx.git] / src / mathed / math_fboxinset.C
1 #include <config.h>
2
3 #include "math_fboxinset.h"
4 #include "math_support.h"
5 #include "math_mathmlstream.h"
6 #include "math_streamstr.h"
7 #include "math_parser.h"
8 #include "frontends/Painter.h"
9
10 using std::auto_ptr;
11
12
13 MathFboxInset::MathFboxInset(latexkeys const * key)
14         : MathNestInset(1), key_(key)
15 {}
16
17
18 auto_ptr<InsetBase> MathFboxInset::clone() const
19 {
20         return auto_ptr<InsetBase>(new MathFboxInset(*this));
21 }
22
23
24 MathInset::mode_type MathFboxInset::currentMode() const
25 {
26         if (key_->name == "fbox")
27                 return TEXT_MODE;
28         return MATH_MODE;
29 }
30
31
32 void MathFboxInset::metrics(MetricsInfo & mi, Dimension & dim) const
33 {
34         if (key_->name == "fbox") {
35                 FontSetChanger dummy(mi.base, "textnormal");
36                 cell(0).metrics(mi, dim_);
37         } else {
38                 cell(0).metrics(mi, dim_);
39         }
40         metricsMarkers(5); // 5 pixels margin
41         dim = dim_;
42 }
43
44
45 void MathFboxInset::draw(PainterInfo & pi, int x, int y) const
46 {
47         pi.pain.rectangle(x + 1, y - dim_.ascent() + 1,
48                 dim_.width() - 2, dim_.height() - 2, LColor::foreground);
49         if (key_->name == "fbox") {
50                 FontSetChanger dummy(pi.base, "textnormal");
51                 cell(0).draw(pi, x + 5, y);
52         } else {
53                 cell(0).draw(pi, x + 5, y);
54         }
55 }
56
57
58 void MathFboxInset::write(WriteStream & os) const
59 {
60         os << '\\' << key_->name << '{' << cell(0) << '}';
61 }
62
63
64 void MathFboxInset::normalize(NormalStream & os) const
65 {
66         os << '[' << key_->name << ' ' << cell(0) << ']';
67 }