X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathSqrt.cpp;h=a7385cc708ccd9b30443c7b03e1554935d931e6f;hb=64007533a76dd0634d39800dd11da9ef418871ed;hp=7fff18f6f10a726d7ee198eb11e19fa57febd062;hpb=f1cba8ff64b369792fd49f5ddf90e8126ab476ac;p=lyx.git diff --git a/src/mathed/InsetMathSqrt.cpp b/src/mathed/InsetMathSqrt.cpp index 7fff18f6f1..a7385cc708 100644 --- a/src/mathed/InsetMathSqrt.cpp +++ b/src/mathed/InsetMathSqrt.cpp @@ -11,16 +11,22 @@ #include #include "InsetMathSqrt.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 +38,33 @@ Inset * InsetMathSqrt::clone() const void InsetMathSqrt::metrics(MetricsInfo & mi, Dimension & dim) const { + Changer dummy = mi.base.changeEnsureMath(); cell(0).metrics(mi, dim); - dim.asc += 4; - dim.des += 2; - dim.wid += 12; - metricsMarkers(dim); + // make sure that the dim is high enough for any character + Dimension fontDim; + math_font_max_dim(mi.base.font, fontDim.asc, fontDim.des); + dim += fontDim; + // Some room for the decoration + dim.asc += 1; + dim.wid += 7; } void InsetMathSqrt::draw(PainterInfo & pi, int x, int y) const { - cell(0).draw(pi, x + 10, y); + Changer dummy = pi.base.changeEnsureMath(); + cell(0).draw(pi, x + 9, 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; + x + 7, y - a + 1, pi.base.font.color()); + xp[0] = x + 7; yp[0] = y - a + 1; + xp[1] = x + 4; 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); + pi.pain.lines(xp, yp, 3, pi.base.font.color()); } @@ -113,4 +123,20 @@ void InsetMathSqrt::mathmlize(MathStream & os) const } +void InsetMathSqrt::htmlize(HtmlStream & os) const +{ + 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