* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
- * \author André Pönitz
+ * \author André Pönitz
*
* Full author contact details are available in file CREDITS.
*/
#include <config.h>
#include "InsetMathExInt.h"
-#include "MathArray.h"
+#include "MathData.h"
#include "MathStream.h"
#include "MathStream.h"
#include "InsetMathSymbol.h"
-#include "debug.h"
-#include <boost/scoped_ptr.hpp>
+#include "support/debug.h"
+#include "support/docstring.h"
namespace lyx {
-
-using std::string;
-using std::auto_ptr;
-using std::endl;
-
-
-InsetMathExInt::InsetMathExInt(docstring const & name)
- : InsetMathNest(4), symbol_(name)
+InsetMathExInt::InsetMathExInt(Buffer * buf, docstring const & name)
+ : InsetMathNest(buf, 4), symbol_(name)
{}
// 0 - core
// 3 - upper
-auto_ptr<InsetBase> InsetMathExInt::doClone() const
+Inset * InsetMathExInt::clone() const
{
- return auto_ptr<InsetBase>(new InsetMathExInt(*this));
+ return new InsetMathExInt(*this);
}
}
-bool InsetMathExInt::metrics(MetricsInfo &, Dimension &) const
+void InsetMathExInt::metrics(MetricsInfo &, Dimension &) const
{
- lyxerr << "should not happen" << endl;
- return true;
+ LYXERR0("should not happen");
}
void InsetMathExInt::draw(PainterInfo &, int, int) const
{
- lyxerr << "should not happen" << endl;
+ LYXERR0("should not happen");
}
void InsetMathExInt::maxima(MaximaStream & os) const
{
- if ( symbol_ == "int" )
+ if (symbol_ == "int")
os << "integrate(";
else
os << symbol_ << '(';
void InsetMathExInt::mathematica(MathematicaStream & os) const
{
- if ( symbol_ == "int" )
+ if (symbol_ == "int")
os << "Integrate[";
else if (symbol_ == "sum")
os << "Sum[";
void InsetMathExInt::mathmlize(MathStream & os) const
{
- boost::scoped_ptr<InsetMathSymbol> sym(new InsetMathSymbol(symbol_));
- //if (hasScripts())
- // mathmlize(sym, os);
- //else
- sym->mathmlize(os);
+ // At the moment, we are not extracting sums and the like for MathML.
+ // If we should decide to do so later, then we'll need to re-merge
+ // r32566 and r32568.
+ // So right now this only handles integrals.
+ InsetMathSymbol sym(symbol_);
+ bool const lower = !cell(2).empty();
+ bool const upper = !cell(3).empty();
+ if (lower && upper)
+ os << MTag("msubsup");
+ else if (lower)
+ os << MTag("msub");
+ else if (upper)
+ os << MTag("msup");
+ os << MTag("mrow");
+ sym.mathmlize(os);
+ os << ETag("mrow");
+ if (lower)
+ os << MTag("mrow") << cell(2) << ETag("mrow");
+ if (upper)
+ os << MTag("mrow") << cell(3) << ETag("mrow");
+ if (lower && upper)
+ os << ETag("msubsup");
+ else if (lower)
+ os << ETag("msub");
+ else if (upper)
+ os << ETag("msup");
os << cell(0) << "<mo> ⁢ </mo>"
<< MTag("mrow") << "<mo> ⅆ </mo>"
<< cell(1) << ETag("mrow");
void InsetMathExInt::write(WriteStream &) const
{
- lyxerr << "should not happen" << endl;
+ LYXERR0("should not happen");
}