X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FMetricsInfo.h;h=1508eb345f9e751086704101de6c7912b8a43214;hb=9b18a9b609c0af78b4bb08667fd8e02ebd897d5e;hp=9a1fff47e5fcadf494726627abaf9629e0b0b3b4;hpb=760bca8265820331b68fb1b5628aa389345a6d11;p=lyx.git diff --git a/src/MetricsInfo.h b/src/MetricsInfo.h index 9a1fff47e5..1508eb345f 100644 --- a/src/MetricsInfo.h +++ b/src/MetricsInfo.h @@ -20,6 +20,8 @@ #include "support/strfwd.h" #include "support/Changer.h" +#include "insets/Inset.h" + #include @@ -28,60 +30,54 @@ namespace lyx { namespace frontend { class Painter; } class BufferView; -class Inset; +class Length; class MacroContext; -/// Standard Sizes (mode styles) -/// note: These values are hard-coded in changeStyle -enum Styles { - /// - LM_ST_DISPLAY = 0, - /// - LM_ST_TEXT, - /// - LM_ST_SCRIPT, - /// - LM_ST_SCRIPTSCRIPT -}; - - // // This is the part common to MetricsInfo and PainterInfo // class MetricsBase { public: /// - MetricsBase(); - /// - MetricsBase(BufferView * bv, FontInfo font, int textwidth); + MetricsBase(BufferView * bv = 0, FontInfo font = FontInfo(), + int textwidth = 0); /// the current view BufferView * bv; /// current font FontInfo font; - /// current math style (display/text/script/..) - Styles style; /// name of current font - mathed specific std::string fontname; /// This is the width available in pixels int textwidth; + /// count wether the current mathdata is nested in macro(s) + int macro_nesting; /// Temporarily change a full font. - Changer changeFontSet(docstring const & font, bool cond = true); - Changer changeFontSet(char const * font, bool cond = true); - /// Temporarily change the font size and the math style. - Changer changeStyle(Styles style, bool cond = true); + Changer changeFontSet(std::string const & font); + /// Temporarily change the font to math if needed. + Changer changeEnsureMath(Inset::mode_type mode = Inset::MATH_MODE); // Temporarily change to the style suitable for use in fractions - Changer changeFrac(bool cond = true); + Changer changeFrac(); + // Temporarily change to the style suitable for use in arrays + // or to style suitable for smallmatrix when \c small is true. + Changer changeArray(bool small = false); // Temporarily change the style to (script)script style - Changer changeScript(bool cond = true); + Changer changeScript(); /// int solidLineThickness() const { return solid_line_thickness_; } /// int solidLineOffset() const { return solid_line_offset_; } /// int dottedLineThickness() const { return dotted_line_thickness_; } + /** return the on-screen size of this length + * + * This version of the function uses the current inset width as + * width and the EM value of the current font. + */ + int inPixels(Length const & len) const; + private: int solid_line_thickness_; int solid_line_offset_; @@ -99,12 +95,14 @@ public: MetricsInfo(); /// MetricsInfo(BufferView * bv, FontInfo font, int textwidth, - MacroContext const & mc); + MacroContext const & mc, bool vm); /// MetricsBase base; /// The context to resolve macros MacroContext const & macrocontext; + /// Are we at the start of a paragraph (vertical mode)? + bool vmode; }; @@ -120,14 +118,14 @@ public: void draw(int x, int y, char_type c); /// void draw(int x, int y, docstring const & str); - /// Determines the background color for the specified inset based on the - /// selection state, the background color inherited from the parent inset - /// and the inset's own background color. + /// Determines the background color based on the + /// selection state, the background color inherited from the parent inset + /// and the inset's own background color (if one is specified). /// \param sel whether to take the selection state into account - ColorCode backgroundColor(Inset const * inset, bool sel = true) const; + ColorCode backgroundColor(Inset const * inset = nullptr, bool sel = true) const; /// Determines the text color based on the intended color, the - /// change tracking state and the selection state. + /// change tracking state and the selection state. /// \param color what the color should be by default Color textColor(Color const & color) const; @@ -135,18 +133,20 @@ public: MetricsBase base; /// frontend::Painter & pain; - /// Whether the text at this point is right-to-left (for InsetNewline) + /// Whether the text at this point is right-to-left (for insets) bool ltr_pos; /// The change the parent is part of (change tracking) - Change change_; + Change change; /// Whether the parent is selected as a whole bool selected; /// Whether the spell checker is enabled for the parent bool do_spellcheck; - /// + /// True when it can be assumed that the screen has been cleared bool full_repaint; /// Current background color ColorCode background_color; + /// Useful for drawing display math numbering + int leftx, rightx; }; class TextMetricsInfo {};