X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMath.cpp;h=0d21b871d689f86f151ad2d744445c92cba3b5f5;hb=d9082639080b9de993742bd352f92e5183058cf5;hp=cbf33cdf8707bf76aa82d51131fa181fc3eb53e3;hpb=f643ae700700cbd9aa0b1aca8155c6d7f2aee34d;p=lyx.git diff --git a/src/mathed/InsetMath.cpp b/src/mathed/InsetMath.cpp index cbf33cdf87..0d21b871d6 100644 --- a/src/mathed/InsetMath.cpp +++ b/src/mathed/InsetMath.cpp @@ -30,6 +30,48 @@ using namespace std; namespace lyx { +HullType hullType(docstring const & name) +{ + if (name == "none") return hullNone; + if (name == "simple") return hullSimple; + if (name == "equation") return hullEquation; + if (name == "eqnarray") return hullEqnArray; + if (name == "align") return hullAlign; + if (name == "alignat") return hullAlignAt; + if (name == "xalignat") return hullXAlignAt; + if (name == "xxalignat") return hullXXAlignAt; + if (name == "multline") return hullMultline; + if (name == "gather") return hullGather; + if (name == "flalign") return hullFlAlign; + if (name == "regexp") return hullRegexp; + lyxerr << "unknown hull type '" << to_utf8(name) << "'" << endl; + return hullUnknown; +} + + +docstring hullName(HullType type) +{ + switch (type) { + case hullNone: return from_ascii("none"); + case hullSimple: return from_ascii("simple"); + case hullEquation: return from_ascii("equation"); + case hullEqnArray: return from_ascii("eqnarray"); + case hullAlign: return from_ascii("align"); + case hullAlignAt: return from_ascii("alignat"); + case hullXAlignAt: return from_ascii("xalignat"); + case hullXXAlignAt: return from_ascii("xxalignat"); + case hullMultline: return from_ascii("multline"); + case hullGather: return from_ascii("gather"); + case hullFlAlign: return from_ascii("flalign"); + case hullRegexp: return from_ascii("regexp"); + case hullUnknown: + lyxerr << "unknown hull type" << endl; + break; + } + return from_ascii("none"); +} + + docstring InsetMath::name() const { return from_utf8("Unknown"); @@ -52,58 +94,41 @@ MathData const & InsetMath::cell(idx_type) const } -MathClass InsetMath::mathClass() const +marker_type InsetMath::marker(BufferView const *) const { - return MC_ORD; + return nargs() > 0 ? marker_type::MARKER : marker_type::NO_MARKER; } bool InsetMath::addToMathRow(MathRow & mrow, MetricsInfo & mi) const { - MathRow::Element e(MathRow::INSET, mi); + MathRow::Element e(mi, MathRow::INSET, mathClass()); e.inset = this; - e.mclass = mathClass(); + e.marker = mi.base.macro_nesting ? marker_type::NO_MARKER : marker(mi.base.bv); 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 +/// write LaTeX and LyX code +void InsetMath::writeLimits(TeXMathStream & os) 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); + if (limits() == LIMITS) { + os << "\\limits"; + os.pendingSpace(true); + } else if (limits() == NO_LIMITS) { + os << "\\nolimits"; + os.pendingSpace(true); + } } - void InsetMath::dump() const { lyxerr << "---------------------------------------------" << endl; odocstringstream os; otexrowstream ots(os); - WriteStream wi(ots, false, true, WriteStream::wsDefault); + TeXMathStream wi(ots, false, true, TeXMathStream::wsDefault); write(wi); lyxerr << to_utf8(os.str()); lyxerr << "\n---------------------------------------------" << endl; @@ -122,7 +147,7 @@ void InsetMath::drawT(TextPainter &, int, int) const } -void InsetMath::write(WriteStream & os) const +void InsetMath::write(TeXMathStream & os) const { MathEnsurer ensurer(os); docstring const s = name(); @@ -134,7 +159,7 @@ void InsetMath::write(WriteStream & os) const } -int InsetMath::plaintext(odocstringstream &, +int InsetMath::plaintext(odocstringstream &, OutputParams const &, size_t) const { // all math plain text output shall take place in InsetMathHull @@ -177,13 +202,13 @@ void InsetMath::mathematica(MathematicaStream & os) const } -void InsetMath::mathmlize(MathStream & os) const +void InsetMath::mathmlize(MathMLStream & ms) const { - os << ""; - os << MTag("mi"); - NormalStream ns(os.os()); + ms << ""; + ms << MTag("mi"); + NormalStream ns(ms.os()); normalize(ns); - os << ETag("mi"); + ms << ETag("mi"); } @@ -207,7 +232,7 @@ ostream & operator<<(ostream & os, MathAtom const & at) { odocstringstream oss; otexrowstream ots(oss); - WriteStream wi(ots, false, false, WriteStream::wsDefault); + TeXMathStream wi(ots, false, false, TeXMathStream::wsDefault); at->write(wi); return os << to_utf8(oss.str()); } @@ -216,7 +241,7 @@ ostream & operator<<(ostream & os, MathAtom const & at) odocstream & operator<<(odocstream & os, MathAtom const & at) { otexrowstream ots(os); - WriteStream wi(ots, false, false, WriteStream::wsDefault); + TeXMathStream wi(ots, false, false, TeXMathStream::wsDefault); at->write(wi); return os; }