]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/MathData.h
Improve the list of equations
[lyx.git] / src / mathed / MathData.h
index 0419b5918168b3397c55c2d2f134f21e17bedd93..a1ce7a6df0e720aae0099f4df7f134814bd8da1c 100644 (file)
@@ -16,7 +16,9 @@
 #define MATH_DATA_H
 
 #include "Dimension.h"
+
 #include "MathAtom.h"
+#include "MathRow.h"
 
 #include "OutputEnums.h"
 
@@ -24,6 +26,7 @@
 
 #include <cstddef>
 #include <vector>
+#include <map>
 
 
 namespace lyx {
@@ -117,6 +120,10 @@ public:
        MathAtom & operator[](pos_type);
        /// checked read access
        MathAtom const & operator[](pos_type) const;
+
+       /// Add this array to a math row. Return true if contents got added
+       bool addToMathRow(MathRow &, MetricsInfo & mi) const;
+
        /// rebuild cached metrics information
        void metrics(MetricsInfo & mi, Dimension & dim) const;
        ///
@@ -130,6 +137,8 @@ public:
        void drawT(TextPainter & pi, int x, int y) const;
        /// mark cell for re-drawing
        void touch() const;
+       /// approximate the math class of the data
+       MathClass mathClass() const;
 
        /// access to cached x coordinate of last drawing
        int xo(BufferView const & bv) const;
@@ -144,11 +153,7 @@ public:
        /// returns x coordinate of given position in the array
        int pos2x(BufferView const * bv, size_type pos) const;
        /// returns position of given x coordinate
-       int pos2x(BufferView const * bv, size_type pos, int glue) const;
-       /// returns position of given x coordinate
        size_type x2pos(BufferView const * bv, int targetx) const;
-       /// returns position of given x coordinate starting from a certain pos
-       size_type x2pos(BufferView const * bv, int targetx, int glue) const;
        /// returns distance of this cell to the point given by x and y
        // assumes valid position and size cache
        int dist(BufferView const & bv, int x, int y) const;
@@ -168,7 +173,7 @@ public:
 
        /// attach/detach arguments to macros, updating the cur to
        /// stay visually at the same position (cur==0 is allowed)
-       void updateMacros(Cursor * cur, MacroContext const & mc, UpdateType);
+       void updateMacros(Cursor * cur, MacroContext const & mc, UpdateType, int nesting);
        ///
        void updateBuffer(ParIterator const &, UpdateType);
 
@@ -181,6 +186,9 @@ protected:
        mutable int kerning_;
        Buffer * buffer_;
 
+       /// cached object that describes typeset data
+       mutable std::map<BufferView*, MathRow> mrow_cache_;
+
 private:
        /// is this an exact match at this position?
        bool find1(MathData const & ar, size_type pos) const;