X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathXYMatrix.cpp;h=f559aa2d1ab84124474493e8620d46f78e6c3b00;hb=23abb5aaa36af07aadfa5e565869104778ba0d6d;hp=e5250f897b383fbf432cf852ac19e5088bfa3a8d;hpb=8c622e4ff04765c786cbe9ccc9824f4429aee4e7;p=lyx.git diff --git a/src/mathed/InsetMathXYMatrix.cpp b/src/mathed/InsetMathXYMatrix.cpp index e5250f897b..f559aa2d1a 100644 --- a/src/mathed/InsetMathXYMatrix.cpp +++ b/src/mathed/InsetMathXYMatrix.cpp @@ -3,7 +3,7 @@ * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * - * \author André Pönitz + * \author André Pönitz * * Full author contact details are available in file CREDITS. */ @@ -11,23 +11,27 @@ #include #include "InsetMathXYMatrix.h" + #include "MathStream.h" #include "LaTeXFeatures.h" -#include "support/std_ostream.h" +#include "MetricsInfo.h" +#include namespace lyx { -InsetMathXYMatrix::InsetMathXYMatrix(Length const & s, char c) - : InsetMathGrid(1, 1), spacing_(s), spacing_code_(c) -{} +InsetMathXYMatrix::InsetMathXYMatrix(Buffer * buf, Length const & s, char c, + bool e) : InsetMathGrid(buf, 1, 1), spacing_(s), spacing_code_(c), + equal_spacing_(e) +{ +} -std::auto_ptr InsetMathXYMatrix::doClone() const +Inset * InsetMathXYMatrix::clone() const { - return std::auto_ptr(new InsetMathXYMatrix(*this)); + return new InsetMathXYMatrix(*this); } @@ -43,57 +47,85 @@ int InsetMathXYMatrix::rowsep() const } -bool InsetMathXYMatrix::metrics(MetricsInfo & mi, Dimension & dim) const +void InsetMathXYMatrix::metrics(MetricsInfo & mi, Dimension & dim) const { - if (mi.base.style == LM_ST_DISPLAY) - mi.base.style = LM_ST_TEXT; + Changer dummy2 = mi.base.changeEnsureMath(); + Changer dummy = mi.base.changeArray(); InsetMathGrid::metrics(mi, dim); - if (dim_ == dim) - return false; - dim_ = dim; - return true; +} + + +void InsetMathXYMatrix::draw(PainterInfo & pi, int x, int y) const +{ + Changer dummy2 = pi.base.changeEnsureMath(); + Changer dummy = pi.base.changeArray(); + InsetMathGrid::draw(pi, x, y); } void InsetMathXYMatrix::write(WriteStream & os) const { + MathEnsurer ensurer(os); os << "\\xymatrix"; - switch (spacing_code_) { - case 'R': - case 'C': - case 'M': - case 'W': - case 'H': - case 'L': - os << '@' << spacing_code_ << '=' - << from_ascii(spacing_.asLatexString()); - break; - default: - if (!spacing_.empty()) - os << "@=" << from_ascii(spacing_.asLatexString()); + bool open = os.startOuterRow(); + if (equal_spacing_) { + os << "@!"; + switch (spacing_code_) { + case '0': + case 'R': + case 'C': + os << spacing_code_; + } + } else { + switch (spacing_code_) { + case 'R': + case 'C': + case 'M': + case 'W': + case 'H': + case 'L': + os << '@' << spacing_code_ << '=' + << from_ascii(spacing_.asLatexString()); + break; + default: + if (!spacing_.empty()) + os << "@=" << from_ascii(spacing_.asLatexString()); + } } os << '{'; InsetMathGrid::write(os); - os << "}\n"; + os << "}"; + if (open) + os.startOuterRow(); + os << "\n"; } void InsetMathXYMatrix::infoize(odocstream & os) const { os << "xymatrix "; - switch (spacing_code_) { - case 'R': - case 'C': - case 'M': - case 'W': - case 'H': - case 'L': - os << spacing_code_ << ' ' - << from_ascii(spacing_.asLatexString()) << ' '; - break; - default: - if (!spacing_.empty()) - os << from_ascii(spacing_.asLatexString()) << ' '; + if (equal_spacing_) { + switch (spacing_code_) { + case '0': + case 'R': + case 'C': + os << '!' << spacing_code_ << ' '; + } + } else { + switch (spacing_code_) { + case 'R': + case 'C': + case 'M': + case 'W': + case 'H': + case 'L': + os << spacing_code_ << ' ' + << from_ascii(spacing_.asLatexString()) << ' '; + break; + default: + if (!spacing_.empty()) + os << from_ascii(spacing_.asLatexString()) << ' '; + } } InsetMathGrid::infoize(os); } @@ -122,4 +154,16 @@ void InsetMathXYMatrix::validate(LaTeXFeatures & features) const } +void InsetMathXYMatrix::mathmlize(MathStream &) const +{ + throw MathExportException(); +} + + +void InsetMathXYMatrix::htmlize(HtmlStream &) const +{ + throw MathExportException(); +} + + } // namespace lyx