X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fmath_macro.C;h=9983cf5f78b523af9c7425a1a17867bf75460d45;hb=d359dd8fca52c4f0100f7cf4bf636113c5c4e49f;hp=d849e6d48549448ad34a3890bb6208f2a387a388;hpb=858355fb69e30dbfbe84fb023076b5ac4ad7b0ec;p=lyx.git diff --git a/src/mathed/math_macro.C b/src/mathed/math_macro.C index d849e6d485..9983cf5f78 100644 --- a/src/mathed/math_macro.C +++ b/src/mathed/math_macro.C @@ -1,7 +1,7 @@ /* * File: math_macro.C - * Purpose: Implementation of macro class for mathed - * Author: Alejandro Aguilar Sierra + * Purpose: Implementation of macro class for mathed + * Author: Alejandro Aguilar Sierra * Created: November 1996 * Description: WYSIWYG math macros * @@ -24,10 +24,10 @@ #include "math_macrotable.h" #include "math_macrotemplate.h" #include "math_mathmlstream.h" +#include "math_streamstr.h" #include "support/lstrings.h" #include "support/LAssert.h" #include "debug.h" -#include "Painter.h" #include "LaTeXFeatures.h" @@ -53,9 +53,9 @@ MathInset * MathMacro::clone() const } -const char * MathMacro::name() const +string const & MathMacro::name() const { - return tmplate_->asMacroTemplate()->name().c_str(); + return tmplate_->asMacroTemplate()->name(); } @@ -66,9 +66,15 @@ bool MathMacro::defining() const } -void MathMacro::metrics(MathMetricsInfo const & mi) const +void MathMacro::expand() const { - whichFont(font_, LM_TC_TEX, mi); + expanded_ = tmplate_->xcell(tmplate_->cell(1).empty() ? 0 : 1); +} + + +void MathMacro::metrics(MathMetricsInfo & mi) const +{ + augmentFont(font_, "lyxtex"); mi_ = mi; if (defining()) { @@ -77,7 +83,7 @@ void MathMacro::metrics(MathMetricsInfo const & mi) const } if (editing()) { - expanded_ = tmplate_->xcell(0); + expand(); expanded_.metrics(mi_); width_ = expanded_.width() + 4; ascent_ = expanded_.ascent() + 2; @@ -98,10 +104,10 @@ void MathMacro::metrics(MathMetricsInfo const & mi) const descent_ += max(c.descent(), ldes) + 5; } return; - } + } - expanded_ = tmplate_->xcell(0); - expanded_.data_.substitute(*this); + expand(); + expanded_.data().substitute(*this); expanded_.metrics(mi_); width_ = expanded_.width(); ascent_ = expanded_.ascent(); @@ -109,24 +115,24 @@ void MathMacro::metrics(MathMetricsInfo const & mi) const } -void MathMacro::draw(Painter & pain, int x, int y) const +void MathMacro::draw(MathPainterInfo & pi, int x, int y) const { metrics(mi_); LyXFont texfont; - whichFont(texfont, LM_TC_TEX, mi_); + augmentFont(texfont, "lyxtex"); if (defining()) { - drawStr(pain, texfont, x, y, name()); + drawStr(pi, texfont, x, y, name()); return; } if (editing()) { int h = y - ascent() + 2 + expanded_.ascent(); - drawStr(pain, font_, x + 3, h, name()); + drawStr(pi, font_, x + 3, h, name()); int const w = mathed_string_width(font_, name()); - expanded_.draw(pain, x + w + 12, h); + expanded_.draw(pi, x + w + 12, h); h += expanded_.descent(); int lasc; @@ -137,16 +143,16 @@ void MathMacro::draw(Painter & pain, int x, int y) const for (idx_type i = 0; i < nargs(); ++i) { MathXArray const & c = xcell(i); h += max(c.ascent(), lasc) + 5; - c.draw(pain, x + lwid, h); + c.draw(pi, x + lwid, h); char str[] = "#1:"; str[1] += static_cast(i); - drawStr(pain, texfont, x + 3, h, str); + drawStr(pi, texfont, x + 3, h, str); h += max(c.descent(), ldes) + 5; } return; } - expanded_.draw(pain, x, y); + expanded_.draw(pi, x, y); } @@ -162,17 +168,11 @@ void MathMacro::dump() const } -bool MathMacro::idxUp(idx_type & idx) const +bool MathMacro::idxUpDown(idx_type & idx, bool up) const { pos_type pos; - return MathNestInset::idxLeft(idx, pos); -} - - -bool MathMacro::idxDown(idx_type & idx) const -{ - pos_type pos; - return MathNestInset::idxRight(idx, pos); + return + up ? MathNestInset::idxLeft(idx, pos) : MathNestInset::idxRight(idx, pos); } @@ -190,8 +190,8 @@ bool MathMacro::idxRight(idx_type &, pos_type &) const void MathMacro::validate(LaTeXFeatures & features) const { - if (name() == "binom") - features.require("binom"); + if (name() == "binom" || name() == "mathcircumflex") + features.require(name()); //MathInset::validate(features); } @@ -199,28 +199,28 @@ void MathMacro::validate(LaTeXFeatures & features) const void MathMacro::maplize(MapleStream & os) const { updateExpansion(); - ::maplize(expanded_.data_, os); + ::maplize(expanded_.data(), os); } void MathMacro::mathmlize(MathMLStream & os) const { updateExpansion(); - ::mathmlize(expanded_.data_, os); + ::mathmlize(expanded_.data(), os); } void MathMacro::octavize(OctaveStream & os) const { updateExpansion(); - ::octavize(expanded_.data_, os); + ::octavize(expanded_.data(), os); } void MathMacro::normalize(NormalStream & os) const { os << "[macro " << name() << " "; - for (idx_type i = 0; i < nargs(); ++i) + for (idx_type i = 0; i < nargs(); ++i) os << cell(i) << ' '; os << ']'; } @@ -231,13 +231,13 @@ void MathMacro::write(WriteStream & os) const os << '\\' << name(); for (idx_type i = 0; i < nargs(); ++i) os << '{' << cell(i) << '}'; - if (nargs() == 0) + if (nargs() == 0) os << ' '; } void MathMacro::updateExpansion() const { - expanded_ = tmplate_->xcell(0); - expanded_.data_.substitute(*this); + expand(); + expanded_.data().substitute(*this); }