]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/MathRow.h
Merge remote-tracking branch 'features/properpaint' into 2.3.2-staging
[lyx.git] / src / mathed / MathRow.h
index 95786b23b4e398768fae2800797fac8d54e48169..de63ec965ff7a4442191cd044e28be11a07edce4 100644 (file)
@@ -12,6 +12,7 @@
 #ifndef MATH_ROW_H
 #define MATH_ROW_H
 
+#include "InsetMath.h"
 #include "MathClass.h"
 
 #include "ColorCode.h"
@@ -29,7 +30,6 @@ class PainterInfo;
 
 class InsetMath;
 class MathData;
-class MathMacro;
 
 /*
  * While for editing purpose it is important that macros are counted
@@ -47,41 +47,38 @@ public:
        // What row elements can be
        enum Type {
                INSET, // this element is a plain inset
-               BEG_MACRO, // a macro begins here
-               END_MACRO, // a macro ends here
-               BEG_ARG, // a macro argument begins here
-               END_ARG, // a macro argument ends here
-               BEGIN, // dummy element before row
-               END, // dummy element after row
-               BOX // an empty box
+               BOX, // an empty box
+               BEGIN, // an inset and/or a math array begins here
+               END, // an inset and/or a math array ends here
+               DUMMY // a dummy element (used before or after row)
        };
 
        // An elements, together with its spacing
        struct Element
        {
                ///
-               Element(Type t);
+               Element(MetricsInfo const & mi, Type t, MathClass mc = MC_UNKNOWN);
 
                /// Classifies the contents of the object
                Type type;
+               /// the class of the element
+               MathClass mclass;
+               /// the spacing around the element
+               int before, after;
+               /// count wether the current mathdata is nested in macro(s)
+               int macro_nesting;
+               /// Marker type
+               InsetMath::marker_type marker;
 
                /// When type is INSET
-               /// the math inset
+               /// the math inset (also for BEGIN and END)
                InsetMath const * inset;
-               /// the class of the inset
-               MathClass mclass;
-               /// the spacing around the inset
-               int before, after;
                // Non empty when there is a completion to draw
                docstring compl_text;
                // the number of characters forming the unique part.
                size_t compl_unique_to;
 
-               /// When type is BEG_MACRO, END_MACRO, BEG_ARG, END_ARG
-               /// the math macro
-               MathMacro const * macro;
-
-               // type is BEG_ARG, END_ARG
+               // type is BEGIN, END
                MathData const * ar;
 
                // type is BOX
@@ -114,7 +111,7 @@ public:
        MathRow(MetricsInfo & mi, MathData const * ar);
 
        //
-       void metrics(MetricsInfo & mi, Dimension & dim) const;
+       void metrics(MetricsInfo & mi, Dimension & dim);
        //
        void draw(PainterInfo & pi, int const x, int const y) const;