X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxfont.h;h=0cfaaf24c5d94dbbcd5427f2a5b60f698dce5032;hb=e5a46922e916a06ad1b958d5895cc3cfb4f13d2c;hp=06eef154ea7efe1015a21df8d7a4644972ea64d9;hpb=d8dd55eb33a140a810e3d5fd005d79e4166893e5;p=lyx.git diff --git a/src/lyxfont.h b/src/lyxfont.h index 06eef154ea..0cfaaf24c5 100644 --- a/src/lyxfont.h +++ b/src/lyxfont.h @@ -16,9 +16,11 @@ #define LYXFONT_H #include "LColor.h" +#include "support/docstream.h" + + +namespace lyx { -#include -#include class LyXLex; class BufferParams; @@ -60,6 +62,8 @@ public: /// WASY_FAMILY, /// + ESINT_FAMILY, + /// INHERIT_FAMILY, /// IGNORE_FAMILY, @@ -157,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(); @@ -178,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; @@ -287,18 +299,21 @@ public: to this font. Returns number of chars written. Base is the font state active now. */ - int latexWriteStartChanges(std::ostream &, LyXFont const & base, - LyXFont const & prev) const; + int latexWriteStartChanges(odocstream &, LyXFont const & base, + LyXFont const & prev, + BufferParams const &) 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, - LyXFont const & next) const; + int latexWriteEndChanges(odocstream &, LyXFont const & base, + LyXFont const & next, + BufferParams const &) const; + /// Build GUI description of font state - std::string const stateText(BufferParams * params) const; + docstring const stateText(BufferParams * params) const; /// LColor_color realColor() const; @@ -311,33 +326,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; @@ -372,48 +373,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 { @@ -425,6 +384,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; @@ -456,4 +416,7 @@ bool operator!=(LyXFont const & font1, LyXFont const & font2) return !(font1 == font2); } + +} // namespace lyx + #endif