X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FFontInfo.h;h=42eea31e9209f05ceb3a8ada7402c71eecc52ad2;hb=62af7ee772f16f154225d2d0b65d77f4376b6001;hp=8db78d5ce1a492fe52e7ada0ecbf491cc1df9ba2;hpb=20d5148dca2f706a453b83fb413d99016e809496;p=lyx.git diff --git a/src/FontInfo.h b/src/FontInfo.h index 8db78d5ce1..42eea31e92 100644 --- a/src/FontInfo.h +++ b/src/FontInfo.h @@ -15,16 +15,18 @@ #ifndef FONT_PROPERTIES_H #define FONT_PROPERTIES_H -#ifdef TEX2LYX -#include "tex2lyx/Font.h" -#else - #include "Color.h" #include "ColorCode.h" #include "FontEnums.h" +#include "support/Changer.h" +#include "support/strfwd.h" + + namespace lyx { +class Lexer; + /// class FontInfo { @@ -35,17 +37,24 @@ public: FontInfo( FontFamily family, FontSeries series, - FontShape shape, - FontSize size, - ColorCode color, - ColorCode background, - FontState emph, - FontState underbar, - FontState noun, - FontState number) - : family_(family), series_(series), shape_(shape), size_(size), - color_(color), background_(background), paint_color_(), emph_(emph), - underbar_(underbar), noun_(noun), number_(number) + FontShape shape, + FontSize size, + MathStyle style, + ColorCode color, + ColorCode background, + FontState emph, + FontState underbar, + FontState strikeout, + FontState xout, + FontState uuline, + FontState uwave, + FontState noun, + FontState number, + FontState nospellcheck) + : family_(family), series_(series), shape_(shape), size_(size), + style_(style), color_(color), background_(background), emph_(emph), + underbar_(underbar), strikeout_(strikeout), xout_(xout), uuline_(uuline), + uwave_(uwave), noun_(noun), number_(number), nospellcheck_(nospellcheck) {} /// Decreases font size by one @@ -53,8 +62,8 @@ public: /// Increases font size by one FontInfo & incSize(); - /// Accessor methods. - ///@{ + /// \name Accessor methods + //@{ FontFamily family() const { return family_; } void setFamily(FontFamily f) { family_ = f; } FontSeries series() const { return series_; } @@ -63,10 +72,20 @@ public: void setShape(FontShape s) { shape_ = s; } FontSize size() const { return size_; } void setSize(FontSize s) { size_ = s; } + MathStyle style() const {return style_; } + void setStyle(MathStyle s) { style_ = s; } FontState emph() const { return emph_; } void setEmph(FontState e) { emph_ = e; } FontState underbar() const { return underbar_; } void setUnderbar(FontState u) { underbar_ = u; } + FontState strikeout() const { return strikeout_; } + void setStrikeout(FontState s) { strikeout_ = s; } + FontState xout() const { return xout_; } + void setXout(FontState s) { xout_ = s; } + FontState uuline() const { return uuline_; } + void setUuline(FontState s) { uuline_ = s; } + FontState uwave() const { return uwave_; } + void setUwave(FontState s) { uwave_ = s; } FontState noun() const { return noun_; } void setNoun(FontState n) { noun_ = n; } FontState number() const { return number_; } @@ -75,7 +94,9 @@ public: void setColor(ColorCode c) { color_ = c; } ColorCode background() const { return background_; } void setBackground(ColorCode b) { background_ = b; } - ///@} + FontState nospellcheck() const { return nospellcheck_; } + void setNoSpellcheck(FontState n) { nospellcheck_ = n; } + //@} /// void update(FontInfo const & newfont, bool toggleall); @@ -89,12 +110,18 @@ public: /// Is a given font fully resolved? bool resolved() const; - /// The real color of the font. This can be the color that is + /// The real color of the font. This can be the color that is /// set for painting, the color of the font or a default color. Color realColor() const; /// Sets the color which is used during painting void setPaintColor(Color c) { paint_color_ = c; } + /// Compute the font size, taking size and math style into account. + double realSize() const; + + /// + docstring asCSS() const; + /// Converts logical attributes to concrete shape attribute /// Try hard to inline this as it shows up with 4.6 % in the profiler. FontShape realShape() const @@ -102,7 +129,7 @@ public: if (noun_ == FONT_ON) return SMALLCAPS_SHAPE; if (emph_ == FONT_ON) - return (shape_ == UP_SHAPE) ? ITALIC_SHAPE : UP_SHAPE; + return (shape_ == ITALIC_SHAPE) ? UP_SHAPE : ITALIC_SHAPE; return shape_; } @@ -115,6 +142,7 @@ public: case CMEX_FAMILY: case MSA_FAMILY: case MSB_FAMILY: + case STMARY_FAMILY: case WASY_FAMILY: case ESINT_FAMILY: return true; @@ -123,6 +151,19 @@ public: } } + /// Temporarily replace the color with \param color. + Changer changeColor(ColorCode const color); + /// Temporarily replace the shape with \param shape. + Changer changeShape(FontShape const shape); + /// Temporarily replace the style + Changer changeStyle(MathStyle style); + /// Temporarily replace the FontInfo with \param font, and optionally + /// \param realize the \param font against the current FontInfo. + Changer change(FontInfo font, bool realize = false); + + /// Build GUI description of font state + docstring const stateText(bool const terse = false) const; + private: friend bool operator==(FontInfo const & lhs, FontInfo const & rhs); @@ -135,6 +176,8 @@ private: /// FontSize size_; /// + MathStyle style_; + /// ColorCode color_; /// ColorCode background_; @@ -145,9 +188,19 @@ private: /// FontState underbar_; /// + FontState strikeout_; + /// + FontState xout_; + /// + FontState uuline_; + /// + FontState uwave_; + /// FontState noun_; /// FontState number_; + /// + FontState nospellcheck_; }; @@ -157,12 +210,18 @@ inline bool operator==(FontInfo const & lhs, FontInfo const & rhs) && lhs.series_ == rhs.series_ && lhs.shape_ == rhs.shape_ && lhs.size_ == rhs.size_ + && lhs.style_ == rhs.style_ && lhs.color_ == rhs.color_ && lhs.background_ == rhs.background_ && lhs.emph_ == rhs.emph_ && lhs.underbar_ == rhs.underbar_ + && lhs.strikeout_ == rhs.strikeout_ + && lhs.xout_ == rhs.xout_ + && lhs.uuline_ == rhs.uuline_ + && lhs.uwave_ == rhs.uwave_ && lhs.noun_ == rhs.noun_ - && lhs.number_ == rhs.number_; + && lhs.number_ == rhs.number_ + && lhs.nospellcheck_ == rhs.nospellcheck_; } @@ -178,7 +237,30 @@ extern FontInfo const inherit_font; /// All ignore font. extern FontInfo const ignore_font; +/// Set family after LyX text format +void setLyXFamily(std::string const &, FontInfo &); + +/// Set series after LyX text format +void setLyXSeries(std::string const &, FontInfo &); + +/// Set shape after LyX text format +void setLyXShape(std::string const &, FontInfo &); + +/// Set size after LyX text format +void setLyXSize(std::string const &, FontInfo &); + +/// Sets color after LyX text format +void setLyXColor(std::string const &, FontInfo &); + +/// Returns misc flag after LyX text format +FontState setLyXMisc(std::string const &); + +/// Read a font specification from Lexer. Used for layout files. +FontInfo lyxRead(Lexer &, FontInfo const & fi = sane_font); + +/// Write a font specification. Used for layout files. +void lyxWrite(std::ostream &, FontInfo const &, std::string const &, int); + } // namespace lyx -#endif // TEX2LYX_FONT_H #endif