X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathFrac.cpp;h=465d1facd1321b51c6f944fe228cdf9500ba7232;hb=cdc847fd304019a19425a0d5d9d42a556a937097;hp=4c7c462fde54e6a5daf1f8fa74cd474d137f71ae;hpb=b5af2292087646f3f7a436b75f0409f2dd9a85af;p=lyx.git diff --git a/src/mathed/InsetMathFrac.cpp b/src/mathed/InsetMathFrac.cpp index 4c7c462fde..465d1facd1 100644 --- a/src/mathed/InsetMathFrac.cpp +++ b/src/mathed/InsetMathFrac.cpp @@ -154,14 +154,6 @@ MathClass InsetMathFrac::mathClass() const namespace { -// align frac to minus character -int dy_for_frac(MetricsBase & mb) -{ - Changer dummy = mb.changeFontSet("mathnormal"); - return theFontMetrics(mb.font).ascent('-') - 1; -} - - // align the top of M in the cell with the top of M in the surrounding font int dy_for_nicefrac(MetricsBase & mb) { @@ -186,6 +178,7 @@ latexkeys const * slash_symbol() void InsetMathFrac::metrics(MetricsInfo & mi, Dimension & dim) const { Dimension dim0, dim1, dim2; + Changer dummy3 = mi.base.changeEnsureMath(); switch (kind_) { case UNIT: { @@ -248,7 +241,7 @@ void InsetMathFrac::metrics(MetricsInfo & mi, Dimension & dim) const case TFRAC: case OVER: case ATOP: { - int const dy = dy_for_frac(mi.base); + int const dy = axis_height(mi.base); Changer dummy = // \tfrac is always in text size (kind_ == TFRAC) ? mi.base.font.changeStyle(LM_ST_SCRIPT) : @@ -259,6 +252,7 @@ void InsetMathFrac::metrics(MetricsInfo & mi, Dimension & dim) const || kind_ == DFRAC) ? mi.base.font.changeStyle(LM_ST_DISPLAY) : // all others mi.base.changeFrac(); + Changer dummy2 = mi.base.changeEnsureMath(); cell(0).metrics(mi, dim0); cell(1).metrics(mi, dim1); dim.wid = max(dim0.wid, dim1.wid) + 2; @@ -267,13 +261,12 @@ void InsetMathFrac::metrics(MetricsInfo & mi, Dimension & dim) const dim.des = max(0, dim1.height() + dy/2 - dy + t); } } //switch (kind_) - metricsMarkers(mi, dim); } void InsetMathFrac::draw(PainterInfo & pi, int x, int y) const { - setPosCache(pi, x, y); + Changer dummy3 = pi.base.changeEnsureMath(); Dimension const dim = dimension(*pi.base.bv); Dimension const dim0 = cell(0).dimension(*pi.base.bv); switch (kind_) { @@ -284,12 +277,12 @@ void InsetMathFrac::draw(PainterInfo & pi, int x, int y) const // is there an extra cell holding the value being given a dimension? // (this is \unittwo) if (nargs() == 2) { - cell(0).draw(pi, x + 1, y); + cell(0).draw(pi, x, y); xx += dim0.wid + 4; unit_cell = 1; } Changer dummy = pi.base.font.changeShape(UP_SHAPE); - cell(unit_cell).draw(pi, xx + 1, y); + cell(unit_cell).draw(pi, xx, y); } break; @@ -301,24 +294,24 @@ void InsetMathFrac::draw(PainterInfo & pi, int x, int y) const // is there an extra cell holding the value being given a dimension? // (this is \unitfracthree) if (kind_ == UNITFRAC && nargs() == 3) { - cell(2).draw(pi, x + 1, y); + cell(2).draw(pi, x, y); xx += cell(2).dimension(*pi.base.bv).wid + 4; } Changer dummy = (kind_ == UNITFRAC) ? pi.base.font.changeShape(UP_SHAPE) : Changer(); // nice fraction Changer dummy2 = pi.base.changeScript(); - cell(0).draw(pi, xx + 2, y - dy); + cell(0).draw(pi, xx, y - dy); // reference LaTeX code from nicefrac.sty: // \mkern-2mu/\mkern-1mu if (latexkeys const * slash = slash_symbol()) { int mkern = mathed_mu(pi.base.font, 2.0); - mathedSymbolDraw(pi, xx + 2 + dim0.wid - mkern, y, slash); + mathedSymbolDraw(pi, xx + 1 + dim0.wid - mkern, y, slash); Dimension dimslash; mathedSymbolDim(pi.base, dimslash, slash); xx += dimslash.wid - mathed_mu(pi.base.font, 3.0); } - cell(1).draw(pi, xx + 2 + dim0.wid, y); + cell(1).draw(pi, xx + 1 + dim0.wid, y); } break; @@ -330,7 +323,7 @@ void InsetMathFrac::draw(PainterInfo & pi, int x, int y) const case TFRAC: case OVER: case ATOP: { - int const dy = dy_for_frac(pi.base); + int const dy = axis_height(pi.base); Changer dummy = // \tfrac is always in text size (kind_ == TFRAC) ? pi.base.font.changeStyle(LM_ST_SCRIPT) : @@ -345,7 +338,7 @@ void InsetMathFrac::draw(PainterInfo & pi, int x, int y) const int const m = x + dim.wid / 2; int const xx = // align left - (kind_ == CFRACLEFT) ? x + 2 : + (kind_ == CFRACLEFT) ? x + 1 : // align right (kind_ == CFRACRIGHT) ? x + dim.wid - dim0.wid - 2 : // center @@ -361,11 +354,10 @@ void InsetMathFrac::draw(PainterInfo & pi, int x, int y) const cell(1).draw(pi, m - dim1.wid / 2, y + dim1.asc + dy/2 - dy + t); // horizontal line if (kind_ != ATOP) - pi.pain.line(x + 1, y - dy, x + dim.wid - 2, y - dy, + pi.pain.line(x, y - dy, x + dim.wid - 2, y - dy, pi.base.font.color(), pi.pain.line_solid, t); } } //switch (kind_) - drawMarkers(pi, x, y); } @@ -654,8 +646,9 @@ int InsetMathBinom::dw(int height) const void InsetMathBinom::metrics(MetricsInfo & mi, Dimension & dim) const { + Changer dummy2 = mi.base.changeEnsureMath(); Dimension dim0, dim1; - int const dy = dy_for_frac(mi.base); + int const dy = axis_height(mi.base); Changer dummy = (kind_ == DBINOM) ? mi.base.font.changeStyle(LM_ST_DISPLAY) : (kind_ == TBINOM) ? mi.base.font.changeStyle(LM_ST_SCRIPT) : @@ -665,16 +658,16 @@ void InsetMathBinom::metrics(MetricsInfo & mi, Dimension & dim) const dim.asc = dim0.height() + 1 + dy/2 + dy; dim.des = max(0, dim1.height() + 1 + dy/2 - dy); dim.wid = max(dim0.wid, dim1.wid) + 2 * dw(dim.height()) + 4; - metricsMarkers2(mi, dim); } void InsetMathBinom::draw(PainterInfo & pi, int x, int y) const { + Changer dummy2 = pi.base.changeEnsureMath(); Dimension const dim = dimension(*pi.base.bv); Dimension const & dim0 = cell(0).dimension(*pi.base.bv); Dimension const & dim1 = cell(1).dimension(*pi.base.bv); - int const dy = dy_for_frac(pi.base); + int const dy = axis_height(pi.base); // define the binom brackets docstring const bra = kind_ == BRACE ? from_ascii("{") : kind_ == BRACK ? from_ascii("[") : from_ascii("("); @@ -697,7 +690,6 @@ void InsetMathBinom::draw(PainterInfo & pi, int x, int y) const dim.height(), bra); mathed_draw_deco(pi, x + dim.width() - dw(dim.height()), y - dim.ascent(), dw(dim.height()), dim.height(), ket); - drawMarkers2(pi, x, y); }