2 * \file InsetMathPhantom.cpp
3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
8 * Full author contact details are available in file CREDITS.
13 #include "InsetMathPhantom.h"
15 #include "MathStream.h"
16 #include "frontends/Painter.h"
23 InsetMathPhantom::InsetMathPhantom(Buffer
* buf
, Kind k
)
24 : InsetMathNest(buf
, 1), kind_(k
)
28 Inset
* InsetMathPhantom::clone() const
30 return new InsetMathPhantom(*this);
34 void InsetMathPhantom::metrics(MetricsInfo
& mi
, Dimension
& dim
) const
36 cell(0).metrics(mi
, dim
);
41 void InsetMathPhantom::draw(PainterInfo
& pi
, int x
, int y
) const
43 static int const arrow_size
= 4;
45 // We first draw the text and then an arrow
46 ColorCode
const origcol
= pi
.base
.font
.color();
47 pi
.base
.font
.setColor(Color_special
);
48 cell(0).draw(pi
, x
+ 1, y
);
49 pi
.base
.font
.setColor(origcol
);
50 Dimension
const dim
= dimension(*pi
.base
.bv
);
52 if (kind_
== phantom
|| kind_
== vphantom
) {
65 int const x2
= x
+ dim
.wid
/ 2;
66 int const x1
= x2
- arrow_size
;
67 int const x3
= x2
+ arrow_size
;
69 int const y1
= y
- dim
.asc
;
70 int const y2
= y1
+ arrow_size
;
71 int const y4
= y
+ dim
.des
;
72 int const y3
= y4
- arrow_size
;
75 pi
.pain
.line(x2
, y1
, x1
, y2
, Color_added_space
);
76 pi
.pain
.line(x2
, y1
, x3
, y2
, Color_added_space
);
79 pi
.pain
.line(x2
, y4
, x1
, y3
, Color_added_space
);
80 pi
.pain
.line(x2
, y4
, x3
, y3
, Color_added_space
);
83 pi
.pain
.line(x2
, y1
, x2
, y4
, Color_added_space
);
86 if (kind_
== phantom
|| kind_
== hphantom
) {
89 // y2--- <---------------->
96 int const x2
= x
+ arrow_size
;
97 int const x4
= x
+ dim
.wid
;
98 int const x3
= x4
- arrow_size
;
100 int const y2
= y
+ (dim
.des
- dim
.asc
) / 2;
101 int const y1
= y2
- arrow_size
;
102 int const y3
= y2
+ arrow_size
;
105 pi
.pain
.line(x1
, y2
, x2
, y3
, Color_added_space
);
106 pi
.pain
.line(x1
, y2
, x2
, y1
, Color_added_space
);
109 pi
.pain
.line(x4
, y2
, x3
, y3
, Color_added_space
);
110 pi
.pain
.line(x4
, y2
, x3
, y1
, Color_added_space
);
113 pi
.pain
.line(x1
, y2
, x4
, y2
, Color_added_space
);
116 drawMarkers(pi
, x
, y
);
120 void InsetMathPhantom::write(WriteStream
& os
) const
122 MathEnsurer
ensurer(os
);
134 os
<< cell(0) << '}';
138 void InsetMathPhantom::normalize(NormalStream
& os
) const
151 os
<< cell(0) << ']';
155 void InsetMathPhantom::infoize(odocstream
& os
) const