* 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 "support/debug.h"
-#include <boost/assert.hpp>
+#include "support/lassert.h"
#include <ostream>
namespace lyx {
-InsetMathScript::InsetMathScript()
- : InsetMathNest(1), cell_1_is_up_(false), limits_(0)
+InsetMathScript::InsetMathScript(Buffer * buf)
+ : InsetMathNest(buf, 1), cell_1_is_up_(false), limits_(0)
{}
-InsetMathScript::InsetMathScript(bool up)
- : InsetMathNest(2), cell_1_is_up_(up), limits_(0)
+InsetMathScript::InsetMathScript(Buffer * buf, bool up)
+ : InsetMathNest(buf, 2), cell_1_is_up_(up), limits_(0)
{}
-InsetMathScript::InsetMathScript(MathAtom const & at, bool up)
- : InsetMathNest(2), cell_1_is_up_(up), limits_(0)
+InsetMathScript::InsetMathScript(Buffer * buf, MathAtom const & at, bool up)
+ : InsetMathNest(buf, 2), cell_1_is_up_(up), limits_(0)
{
- BOOST_ASSERT(nargs() >= 1);
+ LASSERT(nargs() >= 1, /**/);
cell(0).push_back(at);
}
{
if (nargs() == 3)
return cell(2);
- BOOST_ASSERT(nargs() > 1);
+ LASSERT(nargs() > 1, /**/);
return cell(1);
}
{
if (nargs() == 3)
return cell(2);
- BOOST_ASSERT(nargs() > 1);
+ LASSERT(nargs() > 1, /**/);
return cell(1);
}
MathData const & InsetMathScript::up() const
{
- BOOST_ASSERT(nargs() > 1);
+ LASSERT(nargs() > 1, /**/);
return cell(1);
}
MathData & InsetMathScript::up()
{
- BOOST_ASSERT(nargs() > 1);
+ LASSERT(nargs() > 1, /**/);
return cell(1);
}
int InsetMathScript::dx0(BufferView const & bv) const
{
- BOOST_ASSERT(hasDown());
+ LASSERT(hasDown(), /**/);
Dimension const dim = dimension(bv);
return hasLimits() ? (dim.wid - down().dimension(bv).width()) / 2 : nwid(bv);
}
int InsetMathScript::dx1(BufferView const & bv) const
{
- BOOST_ASSERT(hasUp());
+ LASSERT(hasUp(), /**/);
Dimension const dim = dimension(bv);
return hasLimits() ? (dim.wid - up().dimension(bv).width()) / 2 : nwid(bv) + nker(&bv);
}
return (cell_1_is_up_ == up) ? 1 : 0;
if (nargs() == 3)
return up ? 1 : 2;
- BOOST_ASSERT(false);
+ LASSERT(false, /**/);
// Silence compiler
return 0;
}
void InsetMathScript::write(WriteStream & os) const
{
+ MathEnsurer ensurer(os);
+
if (nuc().size()) {
os << nuc();
//if (nuc().back()->takesLimits()) {
}
+// FIXME XHTML
+// It may be worth trying to output munder, mover, and munderover
+// in certain cases, e.g., for display formulas. But then we would
+// need to know if we're in a display formula.
void InsetMathScript::mathmlize(MathStream & os) const
{
bool d = hasDown() && down().size();
os << MTag("msub");
if (nuc().size())
- os << nuc();
+ os << MTag("mrow") << nuc() << ETag("mrow");
else
- os << "<mrow/>";
+ os << "<mrow />";
if (u && d)
- os << down() << up() << ETag("msubsup");
+ os << MTag("mrow") << down() << ETag("mrow")
+ << MTag("mrow") << up() << ETag("mrow")
+ << ETag("msubsup");
else if (u)
- os << up() << ETag("msup");
+ os << MTag("mrow") << up() << ETag("mrow") << ETag("msup");
else if (d)
- os << down() << ETag("msub");
+ os << MTag("mrow") << down() << ETag("mrow") << ETag("msub");
}
if (nargs() > 2 && (!cell(1).empty() || !cell(2).empty())) {
if (cell(2).empty()) {
// must be a subscript...
+ old.recordUndoInset();
removeScript(false);
cur.updateFlags(cur.disp_.update() | Update::SinglePar);
return true;
} else if (cell(1).empty()) {
// must be a superscript...
+ old.recordUndoInset();
removeScript(true);
cur.updateFlags(cur.disp_.update() | Update::SinglePar);
return true;
// should be on top of the cursor old.
Cursor insetCur = old;
int scriptSlice = insetCur.find(this);
- BOOST_ASSERT(scriptSlice != -1);
+ LASSERT(scriptSlice != -1, /**/);
insetCur.cutOff(scriptSlice);
insetCur.recordUndoInset();