/** * \file InsetMathTabular.C * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * * \author André Pönitz * * Full author contact details are available in file CREDITS. */ #include #include "InsetMathTabular.h" #include "MathData.h" #include "MathMLStream.h" #include "MathStream.h" #include "support/lstrings.h" #include "support/std_ostream.h" #include using std::string; using std::auto_ptr; InsetMathTabular::InsetMathTabular(string const & name, int m, int n) : InsetMathGrid(m, n), name_(name) {} InsetMathTabular::InsetMathTabular(string const & name, int m, int n, char valign, string const & halign) : InsetMathGrid(m, n, valign, halign), name_(name) {} InsetMathTabular::InsetMathTabular(string const & name, char valign, string const & halign) : InsetMathGrid(valign, halign), name_(name) {} auto_ptr InsetMathTabular::doClone() const { return auto_ptr(new InsetMathTabular(*this)); } void InsetMathTabular::metrics(MetricsInfo & mi, Dimension & dim) const { FontSetChanger dummy(mi.base, "textnormal"); InsetMathGrid::metrics(mi, dim); dim.wid += 6; dim_ = dim; } void InsetMathTabular::draw(PainterInfo & pi, int x, int y) const { FontSetChanger dummy(pi.base, "textnormal"); InsetMathGrid::drawWithMargin(pi, x, y, 4, 2); } void InsetMathTabular::write(WriteStream & os) const { if (os.fragile()) os << "\\protect"; os << "\\begin{" << name_ << '}'; if (v_align_ == 't' || v_align_ == 'b') os << '[' << char(v_align_) << ']'; os << '{' << halign() << "}\n"; InsetMathGrid::write(os); if (os.fragile()) os << "\\protect"; os << "\\end{" << name_ << '}'; // adding a \n here is bad if the tabular is the last item // in an \eqnarray... } void InsetMathTabular::infoize(std::ostream & os) const { string name = name_; name[0] = lyx::support::uppercase(name[0]); os << name << ' '; } void InsetMathTabular::normalize(NormalStream & os) const { os << '[' << name_ << ' '; InsetMathGrid::normalize(os); os << ']'; } void InsetMathTabular::maple(MapleStream & os) const { os << "array("; InsetMathGrid::maple(os); os << ')'; }