X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FFontInfo.h;h=4248904854420077fbb03e075ff5d25bfc450c63;hb=28be7d552f62cc02fa86d7f79201d089bfb2d7b5;hp=a083eae2aa85c0834465f3c0888c645180e0a6f4;hpb=f67cf6f4bb3e3d22ac9aebfa22027c3537cbdf61;p=lyx.git diff --git a/src/FontInfo.h b/src/FontInfo.h index a083eae2aa..4248904854 100644 --- a/src/FontInfo.h +++ b/src/FontInfo.h @@ -18,8 +18,11 @@ #include "Color.h" #include "ColorCode.h" #include "FontEnums.h" + +#include "support/Changer.h" #include "support/strfwd.h" + namespace lyx { class Lexer; @@ -34,20 +37,21 @@ public: FontInfo( FontFamily family, FontSeries series, - FontShape shape, - FontSize size, - ColorCode color, - ColorCode background, - FontState emph, - FontState underbar, - FontState strikeout, - FontState uuline, - FontState uwave, - FontState noun, - FontState number) - : family_(family), series_(series), shape_(shape), size_(size), - color_(color), background_(background), paint_color_(), emph_(emph), - underbar_(underbar), strikeout_(strikeout), uuline_(uuline), + FontShape shape, + FontSize size, + ColorCode color, + ColorCode background, + FontState emph, + FontState underbar, + FontState strikeout, + FontState xout, + FontState uuline, + FontState uwave, + FontState noun, + FontState number) + : family_(family), series_(series), shape_(shape), size_(size), + style_(LM_ST_TEXT), color_(color), background_(background), emph_(emph), + underbar_(underbar), strikeout_(strikeout), xout_(xout), uuline_(uuline), uwave_(uwave), noun_(noun), number_(number) {} @@ -66,12 +70,16 @@ 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_; } @@ -104,6 +112,9 @@ public: /// 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; @@ -114,7 +125,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_; } @@ -136,6 +147,16 @@ 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); + private: friend bool operator==(FontInfo const & lhs, FontInfo const & rhs); @@ -148,6 +169,8 @@ private: /// FontSize size_; /// + MathStyle style_; + /// ColorCode color_; /// ColorCode background_; @@ -160,6 +183,8 @@ private: /// FontState strikeout_; /// + FontState xout_; + /// FontState uuline_; /// FontState uwave_; @@ -181,6 +206,7 @@ inline bool operator==(FontInfo const & lhs, FontInfo const & rhs) && 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_ @@ -221,6 +247,9 @@ 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