X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxfont.h;h=34a0b24325f9851fd4acc8b38bd73b949db94058;hb=095625dc3cd0542d13d8cc62362aa71c896eb3e0;hp=488932d208f592e52bd8299aa101b0bfb9c8c9be;hpb=5c3d9a254640468e40b2d30467a26222c91d856d;p=lyx.git diff --git a/src/lyxfont.h b/src/lyxfont.h index 488932d208..34a0b24325 100644 --- a/src/lyxfont.h +++ b/src/lyxfont.h @@ -15,10 +15,13 @@ #ifndef LYXFONT_H #define LYXFONT_H -#include -#include +#include "LColor.h" +#include "support/docstream.h" + + +namespace lyx { + -class LColor_color; class LyXLex; class BufferParams; class Language; @@ -59,6 +62,8 @@ public: /// WASY_FAMILY, /// + ESINT_FAMILY, + /// INHERIT_FAMILY, /// IGNORE_FAMILY, @@ -156,6 +161,28 @@ public: ALL_SANE }; + struct FontBits { + /// + FONT_FAMILY family; + /// + FONT_SERIES series; + /// + FONT_SHAPE shape; + /// + FONT_SIZE size; + /** We store the LColor::color value as an int to get LColor.h out + * of the header file. + */ + int color; + /// + FONT_MISC_STATE emph; + /// + FONT_MISC_STATE underbar; + /// + FONT_MISC_STATE noun; + /// + FONT_MISC_STATE number; + }; /// LyXFont(); @@ -177,46 +204,32 @@ public: /// Decreases font size by one LyXFont & decSize(); - /// Increases font size by one LyXFont & incSize(); - /// - FONT_FAMILY family() const; - + FONT_FAMILY family() const { return bits.family; } /// - FONT_SERIES series() const; - + FONT_SERIES series() const { return bits.series; } /// - FONT_SHAPE shape() const; - + FONT_SHAPE shape() const { return bits.shape; } /// - FONT_SIZE size() const; - + FONT_SIZE size() const { return bits.size; } /// - FONT_MISC_STATE emph() const; - + FONT_MISC_STATE emph() const { return bits.emph; } /// - FONT_MISC_STATE underbar() const; - + FONT_MISC_STATE underbar() const { return bits.underbar; } /// - FONT_MISC_STATE noun() const; - + FONT_MISC_STATE noun() const { return bits.noun; } /// - FONT_MISC_STATE number() const; - + FONT_MISC_STATE number() const { return bits.number; } /// LColor_color color() const; - /// - Language const * language() const; - + Language const * language() const { return lang; } /// bool isRightToLeft() const; - /// bool isVisibleRightToLeft() const; - /// bool isSymbolFont() const; @@ -286,14 +299,14 @@ public: to this font. Returns number of chars written. Base is the font state active now. */ - int latexWriteStartChanges(std::ostream &, LyXFont const & base, + int latexWriteStartChanges(odocstream &, LyXFont const & base, LyXFont const & prev) const; /** Writes the tail of the LaTeX needed to change to this font. Returns number of chars written. Base is the font state we want to achieve. */ - int latexWriteEndChanges(std::ostream &, LyXFont const & base, + int latexWriteEndChanges(odocstream &, LyXFont const & base, LyXFont const & next) const; /// Build GUI description of font state @@ -310,33 +323,19 @@ public: std::ostream & operator<<(std::ostream & os, LyXFont const & font); /// Converts logical attributes to concrete shape attribute - LyXFont::FONT_SHAPE realShape() const; + // Try hard to inline this as it shows up with 4.6 % in the profiler. + LyXFont::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; + } + /** Compaq cxx 6.5 requires that the definition be public so that it can compile operator==() */ - struct FontBits { - /// - FONT_FAMILY family; - /// - FONT_SERIES series; - /// - FONT_SHAPE shape; - /// - FONT_SIZE size; - /** We store the LColor::color value as an int to get LColor.h out - * of the header file. - */ - int color; - /// - FONT_MISC_STATE emph; - /// - FONT_MISC_STATE underbar; - /// - FONT_MISC_STATE noun; - /// - FONT_MISC_STATE number; - }; private: /// FontBits bits; @@ -371,48 +370,6 @@ private: -inline -LyXFont::FONT_SHAPE LyXFont::shape() const -{ - return bits.shape; -} - - -inline -LyXFont::FONT_FAMILY LyXFont::family() const -{ - return bits.family; -} - - -inline -LyXFont::FONT_SERIES LyXFont::series() const -{ - return bits.series; -} - - -inline -LyXFont::FONT_SIZE LyXFont::size() const -{ - return bits.size; -} - - -inline -LyXFont::FONT_MISC_STATE LyXFont::emph() const -{ - return bits.emph; -} - - -inline -LyXFont::FONT_MISC_STATE LyXFont::noun() const -{ - return bits.noun; -} - - inline bool LyXFont::isSymbolFont() const { @@ -424,6 +381,7 @@ bool LyXFont::isSymbolFont() const case LyXFont::MSA_FAMILY: case LyXFont::MSB_FAMILY: case LyXFont::WASY_FAMILY: + case LyXFont::ESINT_FAMILY: return true; default: return false; @@ -455,4 +413,7 @@ bool operator!=(LyXFont const & font1, LyXFont const & font2) return !(font1 == font2); } + +} // namespace lyx + #endif