X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathCancel.cpp;h=e0c86114a8ed71f9b680cdc1c5e68dfa9c38ef49;hb=2de30c62f8d671a8c8d4d52a6a7310e2c5ca84de;hp=13d5606bef75fe005abf58bd4e91bfe45020ebaf;hpb=e770e958618854a42c79f5a2b70a35f0ca37fb5f;p=lyx.git diff --git a/src/mathed/InsetMathCancel.cpp b/src/mathed/InsetMathCancel.cpp index 13d5606bef..e0c86114a8 100644 --- a/src/mathed/InsetMathCancel.cpp +++ b/src/mathed/InsetMathCancel.cpp @@ -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. */ @@ -12,9 +12,11 @@ #include "InsetMathCancel.h" -#include "LaTeXFeatures.h" #include "MathStream.h" +#include "LaTeXFeatures.h" +#include "MetricsInfo.h" + #include "frontends/Painter.h" #include @@ -35,17 +37,20 @@ 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); Dimension const dim = dimension(*pi.base.bv); + int const t = pi.base.solidLineThickness(); /* * y1 \ / @@ -63,12 +68,12 @@ void InsetMathCancel::draw(PainterInfo & pi, int x, int y) const int const y2 = y + dim.des; if (kind_ == cancel) - pi.pain.line(x2, y1, x1, y2, origcol); + pi.pain.line(x2, y1, x1, y2, origcol, pi.pain.line_solid, t); else if (kind_ == bcancel) - pi.pain.line(x2, y2, x1, y1, origcol); + pi.pain.line(x2, y2, x1, y1, origcol, pi.pain.line_solid, t); else if (kind_ == xcancel) { - pi.pain.line(x2, y1, x1, y2, origcol); - pi.pain.line(x2, y2, x1, y1, origcol); + pi.pain.line(x2, y1, x1, y2, origcol, pi.pain.line_solid, t); + pi.pain.line(x2, y2, x1, y1, origcol, pi.pain.line_solid, t); } drawMarkers(pi, x, y); @@ -125,6 +130,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);