]> git.lyx.org Git - lyx.git/blob - src/mathed/math_sqrtinset.C
mathed cleanup, change mask for tmpdir
[lyx.git] / src / mathed / math_sqrtinset.C
1 #include <config.h>
2
3 #ifdef __GNUG__
4 #pragma implementation
5 #endif
6
7 #include "math_sqrtinset.h"
8 #include "math_iter.h"
9 #include "LColor.h"
10 #include "Painter.h"
11 #include "support.h"
12 #include "support/LOstream.h"
13
14 using std::ostream;
15
16
17 MathSqrtInset::MathSqrtInset(short st)
18         : MathParInset(st, "sqrt", LM_OT_SQRT) {}
19
20
21 MathedInset * MathSqrtInset::Clone()
22 {   
23         return new MathSqrtInset(*this);
24 }
25
26
27 void
28 MathSqrtInset::draw(Painter & pain, int x, int y)
29
30         MathParInset::draw(pain, x + hmax_ + 2, y); 
31         int const h = ascent;
32         int const d = descent;
33         int const h2 = Height() / 2;
34         int const w2 = (Height() > 4 * hmax_) ? hmax_ : hmax_ / 2; 
35         int xp[4];
36         int yp[4];
37         xp[0] = x + hmax_ + wbody_; yp[0] = y - h;
38         xp[1] = x + hmax_;          yp[1] = y - h;
39         xp[2] = x + w2;             yp[2] = y + d;
40         xp[3] = x;                  yp[3] = y + d - h2;
41         pain.lines(xp, yp, 4, LColor::mathline);
42 }
43
44
45 void MathSqrtInset::Write(ostream & os, bool fragile)
46 {
47         os << '\\' << name << '{';
48         MathParInset::Write(os, fragile); 
49         os << '}';
50 }
51
52
53 void
54 MathSqrtInset::Metrics()
55 {
56         MathParInset::Metrics();
57         ascent += 4;
58         descent += 2;
59         int a;
60         int b;
61         hmax_ = mathed_char_height(LM_TC_VAR, size(), 'I', a, b);
62         if (hmax_ < 10) hmax_ = 10;
63         wbody_ = width + 4;
64         width += hmax_ + 4;
65 }
66
67
68 bool MathSqrtInset::Inside(int x, int y) 
69 {
70         return x >= xo() - hmax_
71                 && x <= xo() + width - hmax_
72                 && y <= yo() + descent
73                 && y >= yo() - ascent;
74 }