X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmathed%2Fmath_dotsinset.C;h=821ad4c70c92d55ff383644b1666d06f826e5c2a;hb=a8e8e755fc32233e91bf787d5032fd81147d0909;hp=d173a3bb71e16ef4181f24f2452a97469e323901;hpb=b24b504cd296351e1109a6cd58b645567a8a68a3;p=lyx.git diff --git a/src/mathed/math_dotsinset.C b/src/mathed/math_dotsinset.C index d173a3bb71..821ad4c70c 100644 --- a/src/mathed/math_dotsinset.C +++ b/src/mathed/math_dotsinset.C @@ -1,58 +1,54 @@ #include -#ifdef __GNUG__ -#pragma implementation -#endif #include "math_dotsinset.h" -#include "mathed/support.h" -#include "support/LOstream.h" +#include "math_mathmlstream.h" +#include "math_streamstr.h" +#include "math_support.h" +#include "math_parser.h" -using std::ostream; - -MathDotsInset::MathDotsInset(string const & name, int id) - : MathInset(0, name), code_(id) +MathDotsInset::MathDotsInset(latexkeys const * key) + : key_(key) {} MathInset * MathDotsInset::clone() const { return new MathDotsInset(*this); -} - - -void MathDotsInset::draw(Painter & pain, int x, int y) -{ - mathed_draw_deco(pain, x + 2, y - dh_, width_ - 2, ascent_, code_); - if (code_ == LM_vdots || code_ == LM_ddots) - ++x; - if (code_ != LM_vdots) - --y; - mathed_draw_deco(pain, x + 2, y - dh_, width_ - 2, ascent_, code_); } -void MathDotsInset::Metrics(MathStyles st) +void MathDotsInset::metrics(MetricsInfo & mi) const { - size(st); - mathed_char_dim(LM_TC_VAR, size(), 'M', ascent_, descent_, width_); - switch (code_) { - case LM_ldots: dh_ = 0; break; - case LM_cdots: dh_ = ascent_/2; break; - case LM_vdots: width_ /= 2; - case LM_ddots: dh_ = ascent_; break; + mathed_char_dim(mi.base.font, 'M', dim_); + dh_ = 0; + if (key_->name == "cdots" || key_->name == "dotsb" + || key_->name == "dotsm" || key_->name == "dotsi") + dh_ = ascent() / 2; + else if (key_->name == "dotsc") + dh_ = ascent() / 4; + else if (key_->name == "vdots") { + dim_.wid = (dim_.wid / 2) + 1; + dh_ = ascent(); } -} + else if (key_->name == "ddots") + dh_ = ascent(); +} -void MathDotsInset::Write(ostream & os, bool /* fragile */) const +void MathDotsInset::draw(PainterInfo & pain, int x, int y) const { - os << '\\' << name() << ' '; + mathed_draw_deco(pain, x + 2, y - dh_, width() - 2, ascent(), key_->name); + if (key_->name == "vdots" || key_->name == "ddots") + ++x; + if (key_->name != "vdots") + --y; + mathed_draw_deco(pain, x + 2, y - dh_, width() - 2, ascent(), key_->name); } -void MathDotsInset::WriteNormal(ostream & os) const +string MathDotsInset::name() const { - os << "[" << name() << "] "; + return key_->name; }