]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/InsetMathXYMatrix.cpp
Fix commented out code
[lyx.git] / src / mathed / InsetMathXYMatrix.cpp
index 9be4e2efa6c67e3ad63bb8ec2f6976e3c6972632..f559aa2d1ab84124474493e8620d46f78e6c3b00 100644 (file)
@@ -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.
  */
 
 #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,59 +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
 {
-       bool brace = os.pendingBrace();
-       os.pendingBrace(false);
-       if (os.latex() && os.textMode()) {
-               os << "\\ensuremath{";
-               os.textMode(false);
-               brace = true;
-       }
+       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.pendingBrace(brace);
+       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);
 }
@@ -126,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