2 * \file InsetMathStackrel.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 "InsetMathStackrel.h"
15 #include "MathStream.h"
21 InsetMathStackrel::InsetMathStackrel(Buffer
* buf
) : InsetMathFracBase(buf
)
25 Inset
* InsetMathStackrel::clone() const
27 return new InsetMathStackrel(*this);
31 void InsetMathStackrel::metrics(MetricsInfo
& mi
, Dimension
& dim
) const
34 cell(1).metrics(mi
, dim1
);
35 FracChanger
dummy(mi
.base
);
37 cell(0).metrics(mi
, dim0
);
38 dim
.wid
= max(dim0
.width(), dim1
.width()) + 4;
39 dim
.asc
= dim1
.ascent() + dim0
.height() + 4;
40 dim
.des
= dim1
.descent();
45 void InsetMathStackrel::draw(PainterInfo
& pi
, int x
, int y
) const
47 Dimension
const dim
= dimension(*pi
.base
.bv
);
48 Dimension
const & dim0
= cell(0).dimension(*pi
.base
.bv
);
49 Dimension
const & dim1
= cell(1).dimension(*pi
.base
.bv
);
50 int m
= x
+ dim
.width() / 2;
51 int yo
= y
- dim1
.ascent() - dim0
.descent() - 1;
52 cell(1).draw(pi
, m
- dim1
.width() / 2, y
);
53 FracChanger
dummy(pi
.base
);
54 cell(0).draw(pi
, m
- dim0
.width() / 2, yo
);
55 drawMarkers(pi
, x
, y
);
59 void InsetMathStackrel::write(WriteStream
& os
) const
61 MathEnsurer
ensurer(os
);
62 os
<< "\\stackrel{" << cell(0) << "}{" << cell(1) << '}';
66 void InsetMathStackrel::normalize(NormalStream
& os
) const
68 os
<< "[stackrel " << cell(0) << ' ' << cell(1) << ']';