X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fmath_exintinset.C;h=e41dad31346ccb8ff075bd239999bab548313280;hb=12ac7f339e14c4f76a24f45a21c0697303099145;hp=0168fd9cb31a64e2249f014286510f99edce875d;hpb=86c2cf6f65d126a73bff901f5dd8e6e711481fd3;p=lyx.git diff --git a/src/mathed/math_exintinset.C b/src/mathed/math_exintinset.C index 0168fd9cb3..e41dad3134 100644 --- a/src/mathed/math_exintinset.C +++ b/src/mathed/math_exintinset.C @@ -1,96 +1,144 @@ +/** + * \file math_exintinset.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author André Pönitz + * + * Full author contact details are available in file CREDITS. + */ + +#include + #include "math_exintinset.h" -#include "math_support.h" -#include "debug.h" +#include "math_data.h" #include "math_mathmlstream.h" +#include "math_streamstr.h" #include "math_symbolinset.h" +#include "debug.h" + +#include + + +using std::string; +using std::auto_ptr; +using std::endl; -MathExIntInset::MathExIntInset() - : int_(new MathSymbolInset("int")) +MathExIntInset::MathExIntInset(string const & name) + : MathNestInset(4), symbol_(name) {} +// 0 - core +// 1 - diff +// 2 - lower +// 3 - upper -MathInset * MathExIntInset::clone() const + +auto_ptr MathExIntInset::clone() const { - return new MathExIntInset(*this); + return auto_ptr(new MathExIntInset(*this)); } -void MathExIntInset::differential(MathArray const & ar) +void MathExIntInset::symbol(string const & symbol) { - diff_ = ar; + symbol_ = symbol; } -void MathExIntInset::core(MathArray const & ar) +bool MathExIntInset::hasScripts() const { - core_ = ar; + // take empty upper bound as "no scripts" + return !cell(3).empty(); } -void MathExIntInset::scripts(MathAtom const & at) + +void MathExIntInset::normalize(NormalStream & os) const { - scripts_ = at; + os << '[' << symbol_ << ' ' << cell(0) << ' ' << cell(1) << ' ' + << cell(2) << ' ' << cell(3) << ']'; } -void MathExIntInset::symbol(MathAtom const & at) +void MathExIntInset::metrics(MetricsInfo &, Dimension &) const { - int_ = at; + lyxerr << "should not happen" << endl; } -bool MathExIntInset::hasScripts() const +void MathExIntInset::draw(PainterInfo &, int, int) const { - return scripts_.hasNucleus(); + lyxerr << "should not happen" << endl; } - -void MathExIntInset::normalize(NormalStream & os) const +void MathExIntInset::maple(MapleStream & os) const { - os << "[int "; + os << symbol_ << '('; + if (cell(0).size()) + os << cell(0); + else + os << '1'; + os << ',' << cell(1); if (hasScripts()) - os << scripts_.nucleus(); - else - os << "{}"; - os << ' ' << core_ << ' ' << diff_ << ']'; + os << '=' << cell(2) << ".." << cell(3); + os << ')'; } -void MathExIntInset::metrics(MathMetricsInfo const &) const +void MathExIntInset::maxima(MaximaStream & os) const { - lyxerr << "should not happen\n"; -} - - -void MathExIntInset::draw(Painter &, int, int) const -{ - lyxerr << "should not happen\n"; + if ( symbol_ == "int" ) + os << "integrate("; + else + os << symbol_ << '('; + + if (cell(0).size()) + os << cell(0) << ','; + else + os << '1' << ','; + if (hasScripts()) + os << cell(1) << ',' << cell(2) << ',' << cell(3) << ')'; + else + os << cell(1) << ')'; } - -void MathExIntInset::maplize(MapleStream & os) const +void MathExIntInset::mathematica(MathematicaStream & os) const { - os << int_.nucleus() << '(' << core_ << ',' << diff_; - if (hasScripts()) { - MathScriptInset * p = scripts_->asScriptInset(); - os << '=' << p->down().data_ << ".." << p->up().data_; - } - os << ')'; + if ( symbol_ == "int" ) + os << "Integrate["; + else if (symbol_ == "sum") + os << "Sum["; + else + os << symbol_ << '['; + + if (cell(0).size()) + os << cell(0) << ','; + else + os << '1' << ','; + if (hasScripts()) + os << '{' << cell(1) << ',' << cell(2) << ',' << cell(3) << "}]"; + else + os << cell(1) << ']'; } void MathExIntInset::mathmlize(MathMLStream & os) const { - //os << name_.c_str() << '(' << cell(0) << ')'; + boost::scoped_ptr sym(new MathSymbolInset(symbol_)); + //if (hasScripts()) + // mathmlize(sym, os); + //else + sym->mathmlize(os); + os << cell(0) << "" + << MTag("mrow") << "" + << cell(1) << ETag("mrow"); } -void MathExIntInset::write(WriteStream & os) const +void MathExIntInset::write(WriteStream &) const { - if (hasScripts()) - os << scripts_.nucleus(); - os << core_ << "d" << diff_; + lyxerr << "should not happen" << endl; } -