X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FFont.h;h=2cdd5c1f2e4fcae3ba7f50bc69378b8208844a05;hb=a3c84666b2dbfc75c9a80cf4f94612149cb2b570;hp=c2b9f405de7a4615fc50b9cb6e3b0b86c0c16073;hpb=eea79637c78bb9916031924eca7b305cfb8e83df;p=lyx.git diff --git a/src/Font.h b/src/Font.h index c2b9f405de..2cdd5c1f2e 100644 --- a/src/Font.h +++ b/src/Font.h @@ -4,7 +4,7 @@ * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * - * \author Lars Gullik Bjønnes + * \author Lars Gullik Bjønnes * \author Jean-Marc Lasgouttes * \author Angus Leeming * \author Dekel Tsur @@ -15,18 +15,14 @@ #ifndef FONT_H #define FONT_H -#ifdef TEX2LYX -#include "tex2lyx/Font.h" -#else - #include "ColorCode.h" +#include "FontInfo.h" -#include "support/docstream.h" +#include "support/strfwd.h" namespace lyx { -class Lexer; class BufferParams; class Language; class LaTeXFeatures; @@ -34,235 +30,24 @@ class OutputParams; /// class Font { -public: - /** The value INHERIT_* means that the font attribute is - inherited from the layout. In the case of layout fonts, the - attribute is inherited from the default font. - The value IGNORE_* is used with Font::update() when the - attribute should not be changed. - */ - enum FONT_FAMILY { - /// - ROMAN_FAMILY, // fontstruct rely on this to be 0 - /// - SANS_FAMILY, - /// - TYPEWRITER_FAMILY, - /// - SYMBOL_FAMILY, - /// - CMR_FAMILY, - /// - CMSY_FAMILY, - /// - CMM_FAMILY, - /// - CMEX_FAMILY, - /// - MSA_FAMILY, - /// - MSB_FAMILY, - /// - EUFRAK_FAMILY, - /// - WASY_FAMILY, - /// - ESINT_FAMILY, - /// - INHERIT_FAMILY, - /// - IGNORE_FAMILY, - /// - NUM_FAMILIES = INHERIT_FAMILY - }; - - /// - enum FONT_SERIES { - /// - MEDIUM_SERIES, // fontstruct rely on this to be 0 - /// - BOLD_SERIES, - /// - INHERIT_SERIES, - /// - IGNORE_SERIES - }; - - /// - enum FONT_SHAPE { - /// - UP_SHAPE, // fontstruct rely on this to be 0 - /// - ITALIC_SHAPE, - /// - SLANTED_SHAPE, - /// - SMALLCAPS_SHAPE, - /// - INHERIT_SHAPE, - /// - IGNORE_SHAPE - }; +public: /// - enum FONT_SIZE { - /// - SIZE_TINY, // fontstruct rely on this to be 0 - /// - SIZE_SCRIPT, - /// - SIZE_FOOTNOTE, - /// - SIZE_SMALL, - /// - SIZE_NORMAL, - /// - SIZE_LARGE, - /// - SIZE_LARGER, - /// - SIZE_LARGEST, - /// - SIZE_HUGE, - /// - SIZE_HUGER, - /// - INCREASE_SIZE, - /// - DECREASE_SIZE, - /// - INHERIT_SIZE, - /// - IGNORE_SIZE - }; - - /// Used for emph, underbar, noun and latex toggles - enum FONT_MISC_STATE { - /// - OFF, - /// - ON, - /// - TOGGLE, - /// - INHERIT, - /// - IGNORE - }; - - /// Trick to overload constructor and make it megafast - enum FONT_INIT1 { - /// - ALL_INHERIT - }; - /// - enum FONT_INIT2 { - /// - ALL_IGNORE - }; - /// - enum FONT_INIT3 { - /// - ALL_SANE - }; - - struct FontBits { - /// - FONT_FAMILY family; - /// - FONT_SERIES series; - /// - FONT_SHAPE shape; - /// - FONT_SIZE size; - /// - ColorCode color; - /// - FONT_MISC_STATE emph; - /// - FONT_MISC_STATE underbar; - /// - FONT_MISC_STATE noun; - /// - FONT_MISC_STATE number; - }; - /// - Font(); - - /// Shortcut initialization - explicit Font(Font::FONT_INIT1); - /// Shortcut initialization - explicit Font(Font::FONT_INIT2); - /// Shortcut initialization - explicit Font(Font::FONT_INIT3); - /// Shortcut initialization - Font(Font::FONT_INIT1, Language const * l); - /// Shortcut initialization - Font(Font::FONT_INIT2, Language const * l); - /// Shortcut initialization - Font(Font::FONT_INIT3, Language const * l); + explicit Font(FontInfo = sane_font, Language const * l = 0); - /// Decreases font size by one - Font & decSize(); - /// Increases font size by one - Font & incSize(); /// - FONT_FAMILY family() const { return bits.family; } + FontInfo & fontInfo() { return bits_; } /// - FONT_SERIES series() const { return bits.series; } + FontInfo const & fontInfo() const { return bits_; } /// - FONT_SHAPE shape() const { return bits.shape; } - /// - FONT_SIZE size() const { return bits.size; } - /// - FONT_MISC_STATE emph() const { return bits.emph; } - /// - FONT_MISC_STATE underbar() const { return bits.underbar; } - /// - FONT_MISC_STATE noun() const { return bits.noun; } - /// - FONT_MISC_STATE number() const { return bits.number; } - /// - ColorCode color() const; - /// - Language const * language() const { return lang; } + Language const * language() const { return lang_; } /// bool isRightToLeft() const; /// bool isVisibleRightToLeft() const; /// - bool isSymbolFont() const; - - /// - void setFamily(Font::FONT_FAMILY f); - void setSeries(Font::FONT_SERIES s); - void setShape(Font::FONT_SHAPE s); - void setSize(Font::FONT_SIZE s); - void setEmph(Font::FONT_MISC_STATE e); - void setUnderbar(Font::FONT_MISC_STATE u); - void setNoun(Font::FONT_MISC_STATE n); - void setNumber(Font::FONT_MISC_STATE n); - void setColor(ColorCode c); void setLanguage(Language const * l); - /// Set family after LyX text format - Font & setLyXFamily(std::string const &); - - /// Set series after LyX text format - Font & setLyXSeries(std::string const &); - - /// Set shape after LyX text format - Font & setLyXShape(std::string const &); - - /// Set size after LyX text format - Font & setLyXSize(std::string const &); - - /// Returns misc flag after LyX text format - Font::FONT_MISC_STATE setLyXMisc(std::string const &); - - /// Sets color after LyX text format - Font & setLyXColor(std::string const &); - /// Returns size of font in LaTeX text notation std::string const latexSize() const; @@ -279,18 +64,6 @@ public: Language const * default_lang, bool toggleall = false); - /** Reduce font to fall back to template where possible. - Equal fields are reduced to INHERIT */ - void reduce(Font const & tmplt); - - /// Realize font from a template (INHERIT are realized) - Font & realize(Font const & tmplt); - /// Is a given font fully resolved? - bool resolved() const; - - /// Read a font specification from Lexer. Used for layout files. - Font & lyxRead(Lexer &); - /// Writes the changes from this font to orgfont in .lyx format in file void lyxWriteChanges(Font const & orgfont, std::ostream &) const; @@ -318,9 +91,6 @@ public: /// Build GUI description of font state docstring const stateText(BufferParams * params) const; - /// - ColorCode realColor() const; - /// void validate(LaTeXFeatures & features) const; @@ -331,95 +101,27 @@ public: friend std::ostream & operator<<(std::ostream & os, Font const & font); - /// Converts logical attributes to concrete shape attribute - // Try hard to inline this as it shows up with 4.6 % in the profiler. - inline Font::FONT_SHAPE realShape() const { - if (bits.noun == ON) - return SMALLCAPS_SHAPE; - if (bits.emph == ON) - return (bits.shape == UP_SHAPE) ? ITALIC_SHAPE : UP_SHAPE; - return bits.shape; - } - /// Set \param data using \param font and \param toggle. std::string toString(bool toggle) const; /// Set \param font and \param toggle using \param data. Return success. bool fromString(std::string const & data, bool & toggle); - /** Compaq cxx 6.5 requires that the definition be public so that - it can compile operator==() - */ private: /// - FontBits bits; + FontInfo bits_; /// - Language const * lang; - /// Sane font - static FontBits sane; - /// All inherit font - static FontBits inherit; - /// All ignore font - static FontBits ignore; - /// Updates a misc setting according to request - Font::FONT_MISC_STATE setMisc(Font::FONT_MISC_STATE newfont, - Font::FONT_MISC_STATE org); + Language const * lang_; /// Did latexWriteStartChanges open an encoding environment? mutable bool open_encoding_; }; -/** \c Font_size is a wrapper for Font::FONT_SIZE. - * It can be forward-declared and passed as a function argument without - * having to expose Font.h. - */ -class Font_size { -public: - /// - Font_size(Font::FONT_SIZE val) : val_(val) {} - /// - operator Font::FONT_SIZE() const { return val_; } -private: - /// - Font::FONT_SIZE val_; -}; - - - -inline -bool Font::isSymbolFont() const -{ - switch (family()) { - case Font::SYMBOL_FAMILY: - case Font::CMSY_FAMILY: - case Font::CMM_FAMILY: - case Font::CMEX_FAMILY: - case Font::MSA_FAMILY: - case Font::MSB_FAMILY: - case Font::WASY_FAMILY: - case Font::ESINT_FAMILY: - return true; - default: - return false; - } -} - -/// -std::ostream & operator<<(std::ostream &, Font::FONT_MISC_STATE); - -bool operator==(Font::FontBits const & lhs, Font::FontBits const & rhs); - -inline -bool operator!=(Font::FontBits const & lhs, Font::FontBits const & rhs) -{ - return !(lhs == rhs); -} - /// inline bool operator==(Font const & font1, Font const & font2) { - return font1.bits == font2.bits && font1.lang == font2.lang; + return font1.bits_ == font2.bits_ && font1.lang_ == font2.lang_; } /// @@ -430,12 +132,10 @@ bool operator!=(Font const & font1, Font const & font2) } /** Returns the current freefont, encoded as a std::string to be passed to the - * frontends. + * frontends. Implemented in Text3.cpp. */ std::string const freefont2string(); - } // namespace lyx -#endif // TEX2LYX #endif