]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/InsetMathCancel.cpp
Get rid of Inset::setPosCache
[lyx.git] / src / mathed / InsetMathCancel.cpp
index 13d5606bef75fe005abf58bd4e91bfe45020ebaf..0e91575d8df2d3f58f38a8d1e82a0a38f8d5488b 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 Uwe Stöhr
+ * \author Uwe Stöhr
  *
  * Full author contact details are available in file CREDITS.
  */
 
 #include "InsetMathCancel.h"
 
-#include "LaTeXFeatures.h"
 #include "MathStream.h"
 
+#include "LaTeXFeatures.h"
+#include "MetricsInfo.h"
+
 #include "frontends/Painter.h"
 
 #include <ostream>
@@ -35,13 +37,15 @@ Inset * InsetMathCancel::clone() const
 
 void InsetMathCancel::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       Changer dummy = mi.base.changeEnsureMath();
        cell(0).metrics(mi, dim);
-       metricsMarkers(dim);
+       metricsMarkers(mi, dim);
 }
 
 
 void InsetMathCancel::draw(PainterInfo & pi, int x, int y) const
 {
+       Changer dummy = pi.base.changeEnsureMath();
        // We first draw the text and then an arrow
        ColorCode const origcol = pi.base.font.color();
        cell(0).draw(pi, x + 1, y);
@@ -125,6 +129,41 @@ void InsetMathCancel::infoize(odocstream & os) const
        }
 }
 
+
+// unfortunately, we do not have many options here, so we have to treat
+// them all the same way.
+void InsetMathCancel::htmlize(HtmlStream & os) const
+{
+       os << MTag("span", "style='text-decoration: line-through;'")
+          << cell(0)
+          << ETag("span");
+}
+
+
+void InsetMathCancel::mathmlize(MathStream & os) const
+{
+       switch (kind_) {
+       case cancel:
+               os << MTag("menclose", "notation='updiagonalstrike'")
+                  << cell(0)
+                  << ETag("menclose"); 
+               break;
+       case bcancel:
+               os << MTag("menclose", "notation='downdiagonalstrike'")
+                  << cell(0)
+                  << ETag("menclose"); 
+               break;
+       case xcancel:
+               os << MTag("menclose", "notation='updiagonalstrike'")
+                  << MTag("menclose", "notation='downdiagonalstrike'")
+                  << cell(0)
+                  << ETag("menclose")
+                  << ETag("menclose");
+               break;
+       }
+}
+
+
 void InsetMathCancel::validate(LaTeXFeatures & features) const
 {
        InsetMathNest::validate(features);