X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathXYMatrix.cpp;h=0994914a941bccaa0809ac5dddabe911a1b928ac;hb=28be7d552f62cc02fa86d7f79201d089bfb2d7b5;hp=6b11ac2415fd9261508c766c1993fd991df16aff;hpb=f1cba8ff64b369792fd49f5ddf90e8126ab476ac;p=lyx.git diff --git a/src/mathed/InsetMathXYMatrix.cpp b/src/mathed/InsetMathXYMatrix.cpp index 6b11ac2415..0994914a94 100644 --- a/src/mathed/InsetMathXYMatrix.cpp +++ b/src/mathed/InsetMathXYMatrix.cpp @@ -12,17 +12,21 @@ #include "InsetMathXYMatrix.h" -#include "LaTeXFeatures.h" #include "MathStream.h" +#include "LaTeXFeatures.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,52 +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); } @@ -119,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