X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fmath_macrotemplate.C;h=22186a52ee52fff2d81898f46f026ba39f9957a9;hb=46880e2b9b49632c56bab2377ce9a3c826cf8d1d;hp=486e200cc0e15be1823f9d945987e2894a7b5316;hpb=40b2b89d4dbd9f948732741503574333ac7b7df7;p=lyx.git diff --git a/src/mathed/math_macrotemplate.C b/src/mathed/math_macrotemplate.C index 486e200cc0..22186a52ee 100644 --- a/src/mathed/math_macrotemplate.C +++ b/src/mathed/math_macrotemplate.C @@ -3,22 +3,22 @@ #endif #include "math_macrotemplate.h" -#include "Painter.h" +#include "math_mathmlstream.h" +#include "frontends/Painter.h" #include "debug.h" MathMacroTemplate::MathMacroTemplate() - : MathNestInset(1), numargs_(0), name_() + : MathNestInset(2), numargs_(0), name_() {} MathMacroTemplate::MathMacroTemplate(string const & nm, int numargs) - : MathNestInset(1), numargs_(numargs), name_(nm) + : MathNestInset(2), numargs_(numargs), name_(nm) { - if (numargs_ > 9) { + if (numargs_ > 9) lyxerr << "MathMacroTemplate::MathMacroTemplate: wrong # of arguments: " << numargs_ << std::endl; - } } @@ -47,28 +47,44 @@ string const & MathMacroTemplate::name() const } -void MathMacroTemplate::write(MathWriteInfo & os) const +void MathMacroTemplate::metrics(MathMetricsInfo & mi) const { - os << "\n\\newcommand{\\" << name_ << '}'; - if (numargs_ > 0) - os << '[' << numargs_ << ']'; - os << '{' << cell(0) << "}\n"; + xcell(0).metrics(mi); + xcell(1).metrics(mi); + width_ = xcell(0).width() + xcell(1).width() + 10; + ascent_ = std::max(xcell(0).ascent(), xcell(1).ascent()) + 2; + descent_ = std::max(xcell(0).descent(), xcell(1).descent()) + 2; } -void MathMacroTemplate::metrics(MathMetricsInfo const & mi) const +void MathMacroTemplate::draw(MathPainterInfo & pi, int x, int y) const { - xcell(0).metrics(mi); - width_ = xcell(0).width() + 4; - ascent_ = xcell(0).ascent() + 2; - descent_ = xcell(0).descent() + 2; + int const w0 = xcell(0).width(); + int const w1 = xcell(1).width(); + xcell(0).draw(pi, x + 2, y + 1); + pi.pain.rectangle(x, y - ascent() + 1, w0 + 4, height(), + LColor::blue); + xcell(1).draw(pi, x + 8 + w0, y + 1); + pi.pain.rectangle(x + w0 + 6 , y - ascent() + 1, w1 + 4, + height(), LColor::blue); } -void MathMacroTemplate::draw(Painter & pain, int x, int y) const +void MathMacroTemplate::write(WriteStream & os) const { - xo(x); - yo(y); - xcell(0).draw(pain, x + 2, y + 1); - pain.rectangle(x, y - ascent(), width(), height(), LColor::blue); + if (os.latex()) { + os << "\n\\newcommand{\\" << name_.c_str() << '}'; + if (numargs_ > 0) + os << '[' << numargs_ << ']'; + os << '{' << cell(0) << "}\n"; + } else { + // writing .lyx + os << "\n\\newcommand{\\" << name_.c_str() << '}'; + if (numargs_ > 0) + os << '[' << numargs_ << ']'; + os << '{' << cell(0) << '}'; + // write special .tex export only if necessary + if (!cell(1).empty()) + os << "\n{" << cell(1) << '}'; + } }