X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathSqrt.cpp;h=7cfe028c242cec0c09ba42083db3f9a1ecba29ff;hb=e5bb491e2e10a8097284d11eae5501a3673731cb;hp=7fff18f6f10a726d7ee198eb11e19fa57febd062;hpb=f1cba8ff64b369792fd49f5ddf90e8126ab476ac;p=lyx.git diff --git a/src/mathed/InsetMathSqrt.cpp b/src/mathed/InsetMathSqrt.cpp index 7fff18f6f1..7cfe028c24 100644 --- a/src/mathed/InsetMathSqrt.cpp +++ b/src/mathed/InsetMathSqrt.cpp @@ -11,16 +11,23 @@ #include #include "InsetMathSqrt.h" + +#include "InsetMathRoot.h" #include "MathData.h" #include "MathStream.h" +#include "MathSupport.h" + +#include "LaTeXFeatures.h" +#include "MetricsInfo.h" #include "TextPainter.h" + #include "frontends/Painter.h" namespace lyx { -InsetMathSqrt::InsetMathSqrt() - : InsetMathNest(1) +InsetMathSqrt::InsetMathSqrt(Buffer * buf) + : InsetMathNest(buf, 1) {} @@ -32,29 +39,13 @@ Inset * InsetMathSqrt::clone() const void InsetMathSqrt::metrics(MetricsInfo & mi, Dimension & dim) const { - cell(0).metrics(mi, dim); - dim.asc += 4; - dim.des += 2; - dim.wid += 12; - metricsMarkers(dim); + mathed_root_metrics(mi, cell(0), nullptr, dim); } void InsetMathSqrt::draw(PainterInfo & pi, int x, int y) const { - cell(0).draw(pi, x + 10, y); - Dimension const dim = dimension(*pi.base.bv); - int const a = dim.ascent(); - int const d = dim.descent(); - int xp[3]; - int yp[3]; - pi.pain.line(x + dim.width(), y - a + 1, - x + 8, y - a + 1, Color_math); - xp[0] = x + 8; yp[0] = y - a + 1; - xp[1] = x + 5; yp[1] = y + d - 1; - xp[2] = x; yp[2] = y + (d - a)/2; - pi.pain.lines(xp, yp, 3, Color_math); - drawMarkers(pi, x, y); + mathed_draw_root(pi, x, y, cell(0), nullptr, dimension(*pi.base.bv)); } @@ -78,7 +69,7 @@ void InsetMathSqrt::drawT(TextPainter & /*pain*/, int /*x*/, int /*y*/) const } -void InsetMathSqrt::write(WriteStream & os) const +void InsetMathSqrt::write(TeXMathStream & os) const { MathEnsurer ensurer(os); os << "\\sqrt{" << cell(0) << '}'; @@ -107,10 +98,26 @@ void InsetMathSqrt::octave(OctaveStream & os) const } -void InsetMathSqrt::mathmlize(MathStream & os) const +void InsetMathSqrt::mathmlize(MathMLStream & ms) const +{ + ms << MTag("msqrt") << cell(0) << ETag("msqrt"); +} + + +void InsetMathSqrt::htmlize(HtmlStream & os) const { - os << MTag("msqrt") << cell(0) << ETag("msqrt"); + os << MTag("span", "class='sqrt'") + << from_ascii("√") + << MTag("span", "class='sqrtof'") << cell(0) << ETag("span") + << ETag("span"); } +void InsetMathSqrt::validate(LaTeXFeatures & features) const +{ + if (features.runparams().math_flavor == OutputParams::MathAsHTML) + features.addCSSSnippet("span.sqrtof{border-top: thin solid black;}"); + InsetMathNest::validate(features); +} + } // namespace lyx