]> git.lyx.org Git - lyx.git/blobdiff - src/FontInfo.h
Account for old versions of Pygments
[lyx.git] / src / FontInfo.h
index b471c297194f8ec71063ff6470cd0459ea02d78f..4248904854420077fbb03e075ff5d25bfc450c63 100644 (file)
 #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_;
        }
 
@@ -127,6 +138,7 @@ public:
                case CMEX_FAMILY:
                case MSA_FAMILY:
                case MSB_FAMILY:
+               case STMARY_FAMILY:
                case WASY_FAMILY:
                case ESINT_FAMILY:
                        return true;
@@ -135,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);
 
@@ -147,6 +169,8 @@ private:
        ///
        FontSize size_;
        ///
+       MathStyle style_;
+       ///
        ColorCode color_;
        ///
        ColorCode background_;
@@ -159,6 +183,8 @@ private:
        ///
        FontState strikeout_;
        ///
+       FontState xout_;
+       ///
        FontState uuline_;
        ///
        FontState uwave_;
@@ -180,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_
@@ -220,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