+#ifdef __GNUG__
+#pragma implementation
+#endif
+
+#include "math_stackrelinset.h"
+#include "mathed/support.h"
+#include "support/LOstream.h"
+
+
+MathStackrelInset::MathStackrelInset()
+{}
+
+
+MathInset * MathStackrelInset::clone() const
+{
+ return new MathStackrelInset(*this);
+}
+
+
+void MathStackrelInset::metrics(MathStyles st) const
+{
+ size_ = smallerStyleFrac(st);
+ xcell(0).metrics(size_);
+ xcell(1).metrics(st);
+ width_ = std::max(xcell(0).width(), xcell(1).width()) + 4;
+ ascent_ = xcell(1).ascent() + xcell(0).height() + 4;
+ descent_ = xcell(1).descent();
+}
+
+
+void MathStackrelInset::draw(Painter & pain, int x, int y) const
+{
+ xo(x);
+ yo(y);
+ int m = x + width() / 2;
+ xcell(0).draw(pain, m - xcell(0).width() / 2, y - xcell(0).height() - 4);
+ xcell(1).draw(pain, m - xcell(1).width() / 2, y);
+}
+
+
+void MathStackrelInset::write(std::ostream & os, bool fragile) const
+{
+ os << "\\stackrel{";
+ cell(0).write(os, fragile);
+ os << "}{";
+ cell(1).write(os, fragile);
+ os << '}';
+}
+
+
+void MathStackrelInset::writeNormal(std::ostream & os) const
+{
+ os << "[stackrel ";
+ cell(0).writeNormal(os);
+ os << " ";
+ cell(1).writeNormal(os);
+ os << "] ";
+}