X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fmath_dotsinset.C;h=b6c460acb1352e3fc82b10c0fa2b703363580e6d;hb=d359dd8fca52c4f0100f7cf4bf636113c5c4e49f;hp=9d2e777d52148f568989f8b6a59b3409e1b7fea0;hpb=b9d25422e0e54b298a6706918e03765c10bd4c7a;p=lyx.git diff --git a/src/mathed/math_dotsinset.C b/src/mathed/math_dotsinset.C index 9d2e777d52..b6c460acb1 100644 --- a/src/mathed/math_dotsinset.C +++ b/src/mathed/math_dotsinset.C @@ -5,53 +5,57 @@ #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" -using std::ostream; +MathDotsInset::MathDotsInset(string const & name) + : name_(name) +{} -MathDotsInset::MathDotsInset(string const & nam, int id, short st) - : MathedInset(nam, LM_OT_DOTS, st), code_(id) {} + +MathInset * MathDotsInset::clone() const +{ + return new MathDotsInset(*this); +} -MathedInset * MathDotsInset::Clone() +void MathDotsInset::metrics(MathMetricsInfo & mi) const { - return new MathDotsInset(name, code_, GetStyle()); -} + mathed_char_dim(mi.base.font, 'M', ascent_, descent_, width_); + if (name_ == "ldots" || name_ == "dotsm") + dh_ = 0; + else if (name_ == "cdots" || name_ == "dotsb" + || name_ == "dotsm" || name_ == "dotsi") + dh_ = ascent_ / 2; + else if (name_ == "dotsc") + dh_ = ascent_ / 4; + else if (name_ == "vdots") + width_ /= 2; + else if (name_ == "ddots") + dh_ = ascent_; +} -void MathDotsInset::draw(Painter & pain, int x, int y) +void MathDotsInset::draw(MathPainterInfo & pain, int x, int y) const { - mathed_draw_deco(pain, x + 2, y - dh_, width - 2, ascent, code_); - if (code_ == LM_vdots || code_ == LM_ddots) + mathed_draw_deco(pain, x + 2, y - dh_, width_ - 2, ascent_, name_); + if (name_ == "vdots" || name_ == "ddots") ++x; - if (code_ != LM_vdots) + if (name_ != "vdots") --y; - mathed_draw_deco(pain, x + 2, y - dh_, width - 2, ascent, code_); + mathed_draw_deco(pain, x + 2, y - dh_, width_ - 2, ascent_, name_); } -void MathDotsInset::Metrics() -{ - mathed_char_height(LM_TC_VAR, size(), 'M', ascent, descent); - width = mathed_char_width(LM_TC_VAR, size(), 'M'); - 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; - } -} - - -void MathDotsInset::Write(ostream & os, bool /* fragile */) +void MathDotsInset::write(WriteStream & os) const { - os << '\\' << name << ' '; + os << '\\' << name_ << ' '; } -void MathDotsInset::WriteNormal(ostream & os) +void MathDotsInset::normalize(NormalStream & os) const { - os << "[" << name << "] "; + os << "[" << name_ << "] "; }