X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathXYMatrix.cpp;h=0994914a941bccaa0809ac5dddabe911a1b928ac;hb=28be7d552f62cc02fa86d7f79201d089bfb2d7b5;hp=5e1151ce66dedc55b0151965026b65ea683f2bf1;hpb=137158532b1ac0cde1557226ee486b3fda39b545;p=lyx.git diff --git a/src/mathed/InsetMathXYMatrix.cpp b/src/mathed/InsetMathXYMatrix.cpp index 5e1151ce66..0994914a94 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,18 +11,22 @@ #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) +{ +} Inset * InsetMathXYMatrix::clone() const @@ -45,51 +49,83 @@ int InsetMathXYMatrix::rowsep() 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); } +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); } @@ -118,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