]> git.lyx.org Git - lyx.git/blobdiff - src/FontInfo.h
#5502 add binding for full screen toggle on mac
[lyx.git] / src / FontInfo.h
index 29f26f2d8f71bc0d2f067f2e9bf21d71f092d200..2b639a926ca4fa8d7b6eb561824e35f1de870133 100644 (file)
 #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/strfwd.h"
 
 namespace lyx {
 
+class Lexer;
+
 ///
 class FontInfo
 {
@@ -41,11 +40,15 @@ public:
                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), emph_(emph),
-               underbar_(underbar), noun_(noun), number_(number)
+               FontState number)
+               : family_(family), series_(series), shape_(shape), size_(size), 
+               color_(color), background_(background), paint_color_(), emph_(emph),
+               underbar_(underbar), strikeout_(strikeout), uuline_(uuline),
+               uwave_(uwave), noun_(noun), number_(number)
        {}
 
        /// Decreases font size by one
@@ -53,8 +56,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_; }
@@ -67,6 +70,12 @@ public:
        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 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,9 +84,7 @@ public:
        void setColor(ColorCode c) { color_ = c; }
        ColorCode background() const { return background_; }
        void setBackground(ColorCode b) { background_ = b; }
-       Color drawColor() const { return draw_color_; }
-       void setDrawColor(Color c) { draw_color_ = c; }
-       ///@}
+       //@}
 
        ///
        void update(FontInfo const & newfont, bool toggleall);
@@ -91,8 +98,14 @@ public:
        /// Is a given font fully resolved?
        bool resolved() const;
 
-       ///
+       /// 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; }
+
+       ///
+       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.
@@ -114,6 +127,7 @@ public:
                case CMEX_FAMILY:
                case MSA_FAMILY:
                case MSB_FAMILY:
+               case STMARY_FAMILY:
                case WASY_FAMILY:
                case ESINT_FAMILY:
                        return true;
@@ -137,13 +151,19 @@ private:
        ColorCode color_;
        ///
        ColorCode background_;
-       ///
-       Color draw_color_;
+       /// The color used for painting
+       Color paint_color_;
        ///
        FontState emph_;
        ///
        FontState underbar_;
        ///
+       FontState strikeout_;
+       ///
+       FontState uuline_;
+       ///
+       FontState uwave_;
+       ///
        FontState noun_;
        ///
        FontState number_;
@@ -160,6 +180,9 @@ inline bool operator==(FontInfo const & lhs, FontInfo const & rhs)
                && lhs.background_ == rhs.background_
                && lhs.emph_ == rhs.emph_
                && lhs.underbar_ == rhs.underbar_
+               && lhs.strikeout_ == rhs.strikeout_
+               && lhs.uuline_ == rhs.uuline_
+               && lhs.uwave_ == rhs.uwave_
                && lhs.noun_ == rhs.noun_
                && lhs.number_ == rhs.number_;
 }
@@ -177,7 +200,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