X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMath.cpp;h=e3b46b9e5caa484c9613e27ff992af3d85d8d036;hb=ad79ac406f9c8fc85880cfeb5416b0299ee9a617;hp=9be69abbaaca077dc7452718a240d7693e6b5637;hpb=31059d1741933d95403e7f07ed033cae482f778b;p=lyx.git diff --git a/src/mathed/InsetMath.cpp b/src/mathed/InsetMath.cpp index 9be69abbaa..e3b46b9e5c 100644 --- a/src/mathed/InsetMath.cpp +++ b/src/mathed/InsetMath.cpp @@ -4,7 +4,7 @@ * Licence details can be found in the file COPYING. * * \author Alejandro Aguilar Sierra - * \author André Pönitz + * \author André Pönitz * * Full author contact details are available in file CREDITS. */ @@ -13,25 +13,33 @@ #include "InsetMath.h" #include "MathData.h" +#include "MathRow.h" #include "MathStream.h" -#include "gettext.h" -#include "debug.h" +#include "MetricsInfo.h" + +#include "support/debug.h" +#include "support/docstream.h" +#include "support/gettext.h" +#include "support/lassert.h" #include "support/lstrings.h" #include "support/textutils.h" -#include -using std::endl; +using namespace std; namespace lyx { +docstring InsetMath::name() const +{ + return from_utf8("Unknown"); +} MathData & InsetMath::cell(idx_type) { - static MathData dummyCell; - lyxerr << BOOST_CURRENT_FUNCTION << ": I don't have any cell" << endl; + static MathData dummyCell(&buffer()); + LYXERR0("I don't have any cell"); return dummyCell; } @@ -39,16 +47,39 @@ MathData & InsetMath::cell(idx_type) MathData const & InsetMath::cell(idx_type) const { static MathData dummyCell; - lyxerr << BOOST_CURRENT_FUNCTION << ": I don't have any cell" << endl; + LYXERR0("I don't have any cell"); return dummyCell; } +MathClass InsetMath::mathClass() const +{ + return MC_ORD; +} + + +InsetMath::marker_type InsetMath::marker() const +{ + return nargs() > 0 ? MARKER : NO_MARKER; +} + + +bool InsetMath::addToMathRow(MathRow & mrow, MetricsInfo & mi) const +{ + MathRow::Element e(mi, MathRow::INSET, mathClass()); + e.inset = this; + e.marker = mi.base.macro_nesting ? NO_MARKER : marker(); + mrow.push_back(e); + return true; +} + + void InsetMath::dump() const { lyxerr << "---------------------------------------------" << endl; odocstringstream os; - WriteStream wi(os, false, true); + otexrowstream ots(os); + WriteStream wi(ots, false, true, WriteStream::wsDefault); write(wi); lyxerr << to_utf8(os.str()); lyxerr << "\n---------------------------------------------" << endl; @@ -57,23 +88,19 @@ void InsetMath::dump() const void InsetMath::metricsT(TextMetricsInfo const &, Dimension &) const { -#ifdef WITH_WARNINGS - lyxerr << "InsetMath::metricsT(Text) called directly!" << endl; -#endif + LYXERR0("InsetMath::metricsT(Text) called directly!"); } void InsetMath::drawT(TextPainter &, int, int) const { -#ifdef WITH_WARNINGS - lyxerr << "InsetMath::drawT(Text) called directly!" << endl; -#endif + LYXERR0("InsetMath::drawT(Text) called directly!"); } - void InsetMath::write(WriteStream & os) const { + MathEnsurer ensurer(os); docstring const s = name(); os << "\\" << s; // We need an extra ' ' unless this is a single-char-non-ASCII name @@ -83,11 +110,11 @@ void InsetMath::write(WriteStream & os) const } -int InsetMath::plaintext(Buffer const &, odocstream &, - OutputParams const &) const +int InsetMath::plaintext(odocstringstream &, + OutputParams const &, size_t) const { // all math plain text output shall take place in InsetMathHull - BOOST_ASSERT(false); + LATTEST(false); return 0; } @@ -128,27 +155,35 @@ void InsetMath::mathematica(MathematicaStream & os) const void InsetMath::mathmlize(MathStream & os) const { - NormalStream ns(os.os()); - normalize(ns); + os << ""; + os << MTag("mi"); + NormalStream ns(os.os()); + normalize(ns); + os << ETag("mi"); } -HullType InsetMath::getType() const +void InsetMath::htmlize(HtmlStream & os) const { - return hullNone; + os << ""; + os << MTag("span", "style='color: red;'"); + NormalStream ns(os.os()); + normalize(ns); + os << ETag("span"); } -docstring InsetMath::name() const +HullType InsetMath::getType() const { - return from_ascii("unknown"); + return hullNone; } -std::ostream & operator<<(std::ostream & os, MathAtom const & at) +ostream & operator<<(ostream & os, MathAtom const & at) { odocstringstream oss; - WriteStream wi(oss, false, false); + otexrowstream ots(oss); + WriteStream wi(ots, false, false, WriteStream::wsDefault); at->write(wi); return os << to_utf8(oss.str()); } @@ -156,7 +191,8 @@ std::ostream & operator<<(std::ostream & os, MathAtom const & at) odocstream & operator<<(odocstream & os, MathAtom const & at) { - WriteStream wi(os, false, false); + otexrowstream ots(os); + WriteStream wi(ots, false, false, WriteStream::wsDefault); at->write(wi); return os; }