]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/MathData.h
Years forgotten files.
[lyx.git] / src / mathed / MathData.h
index c235b2ce18e67d84bc5f29a40ea3e9f55b3fe64b..6f92852a0171ddb77039c82b7e6f7961be512b6f 100644 (file)
@@ -5,8 +5,8 @@
  * Licence details can be found in the file COPYING.
  *
  * \author Alejandro Aguilar Sierra
- * \author André Pönitz
- * \author Lars Gullik Bjønnes
+ * \author André Pönitz
+ * \author Lars Gullik Bjønnes
  * \author Stefan Schimanski
  *
  * Full author contact details are available in file CREDITS.
 #include "Dimension.h"
 #include "MathAtom.h"
 
+#include "OutputEnums.h"
+
 #include "support/strfwd.h"
 
+#include <cstddef>
 #include <vector>
 
 
 namespace lyx {
 
+class Buffer;
 class BufferView;
 class Cursor;
 class DocIterator;
@@ -34,6 +38,7 @@ class MacroContext;
 class MathMacro;
 class MetricsInfo;
 class PainterInfo;
+class ParIterator;
 class TextMetricsInfo;
 class TextPainter;
 
@@ -61,9 +66,13 @@ public:
 
 public:
        ///
-       MathData() {}
+       MathData(Buffer * buf = 0) : buffer_(buf) {}
+       ///
+       MathData(Buffer * buf, const_iterator from, const_iterator to);
        ///
-       MathData(const_iterator from, const_iterator to);
+       Buffer * buffer() { return buffer_; }
+       ///
+       Buffer const * buffer() const { return buffer_; }
        ///
        void append(MathData const & ar);
 
@@ -158,7 +167,9 @@ 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);
+       void updateMacros(Cursor * cur, MacroContext const & mc, UpdateType);
+       ///
+       void updateBuffer(ParIterator const &, UpdateType);
 
 protected:
        /// cached values for super/subscript placement
@@ -167,26 +178,30 @@ protected:
        mutable int slevel_;
        mutable int sshift_;
        mutable int kerning_;
-       
+       Buffer * buffer_;
+
 private:
        /// is this an exact match at this position?
        bool find1(MathData const & ar, size_type pos) const;
 
        ///
-       void detachMacroParameters(Cursor * cur, const size_type macroPos);
+       void detachMacroParameters(DocIterator * dit, const size_type macroPos);
        ///
        void attachMacroParameters(Cursor * cur, const size_type macroPos, 
                const size_type macroNumArgs, const int macroOptionals,
-               const bool fromInitToNormalMode, const bool interactiveInit);
+               const bool fromInitToNormalMode, const bool interactiveInit,
+               const size_t appetite);
        ///
        void collectOptionalParameters(Cursor * cur, 
                const size_type numOptionalParams, std::vector<MathData> & params, 
-               size_t & pos, const pos_type macroPos, const int thisPos, const int thisSlice);
+               size_t & pos, MathAtom & scriptToPutAround,
+               const pos_type macroPos, const int thisPos, const int thisSlice);
        ///
        void collectParameters(Cursor * cur, 
                const size_type numParams, std::vector<MathData> & params, 
                size_t & pos, MathAtom & scriptToPutAround,
-               const pos_type macroPos, const int thisPos, const int thisSlice);
+               const pos_type macroPos, const int thisPos, const int thisSlice,
+               const size_t appetite);
 };
 
 ///