X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMath.cpp;h=ba559e7eb6b4888080cc140c303526125602a65a;hb=3e79e0f5f00add2c735d372f4734cf31f64b7e5f;hp=0674d97382b58ffd19dc2f824518f12cd8369a05;hpb=31713932b247802b5b59482f5157c8a4f7206825;p=lyx.git diff --git a/src/mathed/InsetMath.cpp b/src/mathed/InsetMath.cpp index 0674d97382..ba559e7eb6 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,23 +13,32 @@ #include "InsetMath.h" #include "MathData.h" +#include "MathRow.h" #include "MathStream.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 "support/lassert.h" using namespace std; namespace lyx { +docstring InsetMath::name() const +{ + return from_utf8("Unknown"); +} + + MathData & InsetMath::cell(idx_type) { - static MathData dummyCell; + static MathData dummyCell(&buffer()); LYXERR0("I don't have any cell"); return dummyCell; } @@ -43,11 +52,57 @@ MathData const & InsetMath::cell(idx_type) const } +MathClass InsetMath::mathClass() const +{ + return MC_ORD; +} + + +bool InsetMath::addToMathRow(MathRow & mrow, MetricsInfo & ) const +{ + MathRow::Element e(MathRow::INSET, mathClass()); + e.inset = this; + mrow.push_back(e); + return true; +} + +void InsetMath::metricsMarkers(MetricsInfo & mi, Dimension & dim, + int framesize) const +{ + if (!mi.base.macro_nesting) + Inset::metricsMarkers(dim, framesize); +} + + +void InsetMath::metricsMarkers2(MetricsInfo & mi, Dimension & dim, + int framesize) const +{ + if (!mi.base.macro_nesting) + Inset::metricsMarkers2(dim, framesize); +} + + +void InsetMath::drawMarkers(PainterInfo & pi, int x, int y) const +{ + if (!pi.base.macro_nesting) + Inset::drawMarkers(pi, x, y); +} + + +void InsetMath::drawMarkers2(PainterInfo & pi, int x, int y) const +{ + if (!pi.base.macro_nesting) + Inset::drawMarkers2(pi, x, y); +} + + + void InsetMath::dump() const { lyxerr << "---------------------------------------------" << endl; odocstringstream os; - WriteStream wi(os, false, true, false); + otexrowstream ots(os); + WriteStream wi(ots, false, true, WriteStream::wsDefault); write(wi); lyxerr << to_utf8(os.str()); lyxerr << "\n---------------------------------------------" << endl; @@ -68,34 +123,21 @@ void InsetMath::drawT(TextPainter &, int, int) const void InsetMath::write(WriteStream & os) const { - bool brace = ensureMath(os); + MathEnsurer ensurer(os); docstring const s = name(); os << "\\" << s; // We need an extra ' ' unless this is a single-char-non-ASCII name // or anything non-ASCII follows if (s.size() != 1 || isAlphaASCII(s[0])) os.pendingSpace(true); - os.pendingBrace(brace); } -bool InsetMath::ensureMath(WriteStream & os, bool needs_math_mode) const -{ - bool brace = os.pendingBrace(); - os.pendingBrace(false); - if (os.latex() && os.textMode() && needs_math_mode) { - os << "\\ensuremath{"; - os.textMode(false); - brace = true; - } - return brace; -} - - -int InsetMath::plaintext(odocstream &, OutputParams const &) const +int InsetMath::plaintext(odocstringstream &, + OutputParams const &, size_t) const { // all math plain text output shall take place in InsetMathHull - LASSERT(false, /**/); + LATTEST(false); return 0; } @@ -136,8 +178,21 @@ void InsetMath::mathematica(MathematicaStream & os) const void InsetMath::mathmlize(MathStream & os) const { + os << ""; + os << MTag("mi"); + NormalStream ns(os.os()); + normalize(ns); + os << ETag("mi"); +} + + +void InsetMath::htmlize(HtmlStream & os) const +{ + os << ""; + os << MTag("span", "style='color: red;'"); NormalStream ns(os.os()); normalize(ns); + os << ETag("span"); } @@ -150,7 +205,8 @@ HullType InsetMath::getType() const ostream & operator<<(ostream & os, MathAtom const & at) { odocstringstream oss; - WriteStream wi(oss, false, false, false); + otexrowstream ots(oss); + WriteStream wi(ots, false, false, WriteStream::wsDefault); at->write(wi); return os << to_utf8(oss.str()); } @@ -158,7 +214,8 @@ ostream & operator<<(ostream & os, MathAtom const & at) odocstream & operator<<(odocstream & os, MathAtom const & at) { - WriteStream wi(os, false, false, false); + otexrowstream ots(os); + WriteStream wi(ots, false, false, WriteStream::wsDefault); at->write(wi); return os; }