X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FMathData.h;h=3c93421821230f6b78bd8b1f7af3dfad5b44f6e6;hb=62af7ee772f16f154225d2d0b65d77f4376b6001;hp=a1ce7a6df0e720aae0099f4df7f134814bd8da1c;hpb=f6d4bce12303a2f30ea129ee86e7f7d879668260;p=lyx.git diff --git a/src/mathed/MathData.h b/src/mathed/MathData.h index a1ce7a6df0..3c93421821 100644 --- a/src/mathed/MathData.h +++ b/src/mathed/MathData.h @@ -26,7 +26,6 @@ #include #include -#include namespace lyx { @@ -38,7 +37,7 @@ class DocIterator; class LaTeXFeatures; class ReplaceData; class MacroContext; -class MathMacro; +class InsetMathMacro; class MetricsInfo; class PainterInfo; class ParIterator; @@ -69,8 +68,8 @@ public: public: /// - MathData(Buffer * buf = 0) : minasc_(0), mindes_(0), slevel_(0), - sshift_(0), kerning_(0), buffer_(buf) {} + explicit MathData(Buffer * buf = 0) : minasc_(0), mindes_(0), slevel_(0), + sshift_(0), buffer_(buf) {} /// MathData(Buffer * buf, const_iterator from, const_iterator to); /// @@ -125,18 +124,22 @@ public: bool addToMathRow(MathRow &, MetricsInfo & mi) const; /// rebuild cached metrics information - void metrics(MetricsInfo & mi, Dimension & dim) const; + /** When \c tight is true, the height of the cell will be at least + * the x height of the font. Otherwise, it will be the max height + * of the font. + */ + void metrics(MetricsInfo & mi, Dimension & dim, bool tight = true) const; /// Dimension const & dimension(BufferView const &) const; + /// draw the selection over the cell + void drawSelection(PainterInfo & pi, int x, int y) const; /// redraw cell using cache metrics information void draw(PainterInfo & pi, int x, int y) const; /// rebuild cached metrics information void metricsT(TextMetricsInfo const & mi, Dimension & dim) const; /// redraw cell using cache metrics information 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; @@ -166,8 +169,8 @@ public: int slevel() const { return slevel_; } /// additional super/subscript shift int sshift() const { return sshift_; } - /// superscript kerning - int kerning(BufferView const *) const { return kerning_; } + /// Italic correction as described in InsetMathScript.h + int kerning(BufferView const *) const; /// void swap(MathData & ar) { base_type::swap(ar); } @@ -176,6 +179,8 @@ public: void updateMacros(Cursor * cur, MacroContext const & mc, UpdateType, int nesting); /// void updateBuffer(ParIterator const &, UpdateType); + /// + void setBuffer(Buffer & b); protected: /// cached values for super/subscript placement @@ -183,12 +188,8 @@ protected: mutable int mindes_; mutable int slevel_; mutable int sshift_; - mutable int kerning_; Buffer * buffer_; - /// cached object that describes typeset data - mutable std::map mrow_cache_; - private: /// is this an exact match at this position? bool find1(MathData const & ar, size_type pos) const; @@ -196,18 +197,18 @@ private: /// void detachMacroParameters(DocIterator * dit, const size_type macroPos); /// - void attachMacroParameters(Cursor * cur, 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 size_t appetite); /// - void collectOptionalParameters(Cursor * cur, - const size_type numOptionalParams, std::vector & params, + void collectOptionalParameters(Cursor * cur, + const size_type numOptionalParams, std::vector & params, 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 & params, + void collectParameters(Cursor * cur, + const size_type numParams, std::vector & params, size_t & pos, MathAtom & scriptToPutAround, const pos_type macroPos, const int thisPos, const int thisSlice, const size_t appetite);