]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/InsetMathXYMatrix.cpp
Account for old versions of Pygments
[lyx.git] / src / mathed / InsetMathXYMatrix.cpp
index 6b11ac2415fd9261508c766c1993fd991df16aff..0994914a941bccaa0809ac5dddabe911a1b928ac 100644 (file)
 
 #include "InsetMathXYMatrix.h"
 
-#include "LaTeXFeatures.h"
 #include "MathStream.h"
 
+#include "LaTeXFeatures.h"
+#include "MetricsInfo.h"
+
 #include <ostream>
 
 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