]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/InsetMath.cpp
nullptr
[lyx.git] / src / mathed / InsetMath.cpp
index 093dcda4d08366a867d7f19581eedb97c8af2d7f..0d21b871d689f86f151ad2d744445c92cba3b5f5 100644 (file)
@@ -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,9 +94,9 @@ 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;
 }
 
 
@@ -62,47 +104,31 @@ bool InsetMath::addToMathRow(MathRow & mrow, MetricsInfo & mi) const
 {
        MathRow::Element e(mi, MathRow::INSET, mathClass());
        e.inset = this;
+       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;
@@ -121,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();
@@ -133,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
@@ -176,13 +202,13 @@ void InsetMath::mathematica(MathematicaStream & os) const
 }
 
 
-void InsetMath::mathmlize(MathStream & os) const
+void InsetMath::mathmlize(MathMLStream & ms) const
 {
-       os << "<!-- " << from_utf8(insetName(lyxCode())) << " -->";
-       os << MTag("mi");
-       NormalStream ns(os.os());
+       ms << "<!-- " << from_utf8(insetName(lyxCode())) << " -->";
+       ms << MTag("mi");
+       NormalStream ns(ms.os());
        normalize(ns);
-       os << ETag("mi");
+       ms << ETag("mi");
 }
 
 
@@ -206,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());
 }
@@ -215,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;
 }