X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fmath_decorationinset.C;h=de582f6f9057eafa03c52dbe480c6d53185dfd55;hb=ec5d8718c51e86b6300de5de29732634cace81d3;hp=b1a1c4352dd92ee0279309952049023029f8f4fb;hpb=f1d829a18584fe8c787c7ea428f10cc7a82d6083;p=lyx.git diff --git a/src/mathed/math_decorationinset.C b/src/mathed/math_decorationinset.C index b1a1c4352d..de582f6f90 100644 --- a/src/mathed/math_decorationinset.C +++ b/src/mathed/math_decorationinset.C @@ -5,7 +5,6 @@ #endif #include "math_decorationinset.h" -#include "math_iter.h" #include "mathed/support.h" #include "math_parser.h" #include "support/LOstream.h" @@ -15,57 +14,48 @@ using std::ostream; -MathDecorationInset::MathDecorationInset(int d, short st) - : MathParInset(st, "", LM_OT_DECO), deco_(d) +MathDecorationInset::MathDecorationInset(int d) + : MathInset("", LM_OT_DECO, 1), deco_(d) { - upper_ = (deco_ != LM_underline && deco_ != LM_underbrace); + upper_ = deco_ != LM_underline && deco_ != LM_underbrace; } -bool MathDecorationInset::GetLimits() const -{ - return deco_ == LM_underbrace || deco_ == LM_overbrace; -} - - -MathedInset * MathDecorationInset::Clone() +MathInset * MathDecorationInset::clone() const { return new MathDecorationInset(*this); } -void -MathDecorationInset::draw(Painter & pain, int x, int y) -{ - MathParInset::draw(pain, x + (width - dw_) / 2, y); - mathed_draw_deco(pain, x, y + dy_, width, dh_, deco_); -} - -void -MathDecorationInset::Metrics() +void MathDecorationInset::Metrics(MathStyles st) { - int const h = 2 * mathed_char_height(LM_TC_VAR, size(), 'I', - ascent, descent); - MathParInset::Metrics(); - int w = Width() + 4; - if (w < 16) w = 16; - dh_ = w / 5; - if (dh_ > h) dh_ = h; - + xcell(0).Metrics(st); + width_ = xcell(0).width(); + ascent_ = xcell(0).ascent(); + descent_ = xcell(0).descent(); + + dh_ = mathed_char_height(LM_TC_VAR, size(), 'I', ascent_, descent_); + if (upper_) { - ascent += dh_ + 2; - dy_ = -ascent; + ascent_ += dh_ + 1; + dy_ = -ascent_; } else { - dy_ = descent + 2; - descent += dh_ + 4; + dy_ = descent_ + 1; + descent_ += dh_ + 2; } - dw_ = width; - width = w; +} + +void MathDecorationInset::draw(Painter & pain, int x, int y) +{ + xo(x); + yo(x); + xcell(0).draw(pain, x, y); + mathed_draw_deco(pain, x, y + dy_, width_, dh_, deco_); } -void MathDecorationInset::Write(ostream & os, bool fragile) +void MathDecorationInset::Write(ostream & os, bool fragile) const { latexkeys const * l = lm_get_key_by_id(deco_, LM_TK_WIDE); if (fragile && @@ -75,6 +65,6 @@ void MathDecorationInset::Write(ostream & os, bool fragile) compare(l->name, "overrightarrow") == 0)) os << "\\protect"; os << '\\' << l->name << '{'; - MathParInset::Write(os, fragile); + cell(0).Write(os, fragile); os << '}'; }