X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FMetricsInfo.h;h=7534a8e7ca005cfb7c3f2a03777f3bb47996a9aa;hb=16d5c49b383841826d1bc563e2d392e12e497ed8;hp=88dd39fd7d7e5958b5eba94972d9aa3adf7c7c53;hpb=f07ffaee84cef2b28c9d49e388d30f1f8e22cfc5;p=lyx.git diff --git a/src/MetricsInfo.h b/src/MetricsInfo.h index 88dd39fd7d..7534a8e7ca 100644 --- a/src/MetricsInfo.h +++ b/src/MetricsInfo.h @@ -18,51 +18,61 @@ #include "FontInfo.h" #include "support/strfwd.h" +#include "support/Changer.h" + +#include "insets/Inset.h" + #include -class BufferView; namespace lyx { namespace frontend { class Painter; } -class Inset; +class BufferView; class MacroContext; -/// Standard Sizes (mode styles) -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 const & 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(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(); + // Temporarily change to the style suitable for use in arrays + Changer changeArray(); + // Temporarily change the style to (script)script style + Changer changeScript(); + /// + int solidLineThickness() const { return solid_line_thickness_; } + /// + int solidLineOffset() const { return solid_line_offset_; } + /// + int dottedLineThickness() const { return dotted_line_thickness_; } +private: + int solid_line_thickness_; + int solid_line_offset_; + int dotted_line_thickness_; }; @@ -75,7 +85,8 @@ public: /// MetricsInfo(); /// - MetricsInfo(BufferView * bv, FontInfo const & font, int textwidth, MacroContext const & mc); + MetricsInfo(BufferView * bv, FontInfo font, int textwidth, + MacroContext const & mc); /// MetricsBase base; @@ -117,6 +128,8 @@ public: Change change_; /// Whether the parent is selected as a whole bool selected; + /// Whether the spell checker is enabled for the parent + bool do_spellcheck; /// bool full_repaint; /// Current background color @@ -125,121 +138,6 @@ public: class TextMetricsInfo {}; - -/// Generic base for temporarily changing things. The derived class is -/// responsible for restoring the original state when the Changer is -/// destructed. -template -class Changer { -protected: - /// - Changer(Struct & orig, Temp const & save) : orig_(orig), save_(save) {} - /// - Changer(Struct & orig) : orig_(orig), save_(orig) {} - /// - Struct & orig_; - /// - Temp save_; -}; - - - -// temporarily change some aspect of a font -class FontChanger : public Changer { -public: - /// - FontChanger(FontInfo & orig, docstring const & font); - FontChanger(MetricsBase & mb, char const * const font); - /// - ~FontChanger(); -}; - - -// temporarily change a full font -class FontSetChanger : public Changer { -public: - /// - FontSetChanger(MetricsBase & mb, docstring const & font, - bool really_change_font = true); - FontSetChanger(MetricsBase & mb, char const * const font, - bool really_change_font = true); - /// - ~FontSetChanger(); -private: - /// - bool change_; -}; - - -// temporarily change the style -class StyleChanger : public Changer { -public: - /// - StyleChanger(MetricsBase & mb, Styles style); - /// - ~StyleChanger(); -}; - - -// temporarily change the style to script style -class ScriptChanger : public StyleChanger { -public: - /// - ScriptChanger(MetricsBase & mb); -}; - - -// temporarily change the style suitable for use in fractions -class FracChanger : public StyleChanger { -public: - /// - FracChanger(MetricsBase & mb); -}; - - -// temporarily change the style suitable for use in tabulars and arrays -class ArrayChanger : public StyleChanger { -public: - /// - ArrayChanger(MetricsBase & mb); -}; - - - -// temporarily change the shape of a font -class ShapeChanger : public Changer { -public: - /// - ShapeChanger(FontInfo & font, FontShape shape); - /// - ~ShapeChanger(); -}; - - -// temporarily change the available text width -class WidthChanger : public Changer -{ -public: - /// - WidthChanger(MetricsBase & mb, int width); - /// - ~WidthChanger(); -}; - - -// temporarily change the used color -class ColorChanger : public Changer { -public: - /// - ColorChanger(FontInfo & font, ColorCode color, - bool really_change_color = true); - /// - ~ColorChanger(); -private: - /// - bool change_; -}; - } // namespace lyx #endif