]> git.lyx.org Git - lyx.git/blobdiff - src/lyxfont.h
Fix bug 2029 (RtL space width)
[lyx.git] / src / lyxfont.h
index 488932d208f592e52bd8299aa101b0bfb9c8c9be..8d0d3a26102418fb33c3c2dce3712750ad58d8bf 100644 (file)
 #ifndef LYXFONT_H
 #define LYXFONT_H
 
+#include "LColor.h"
+
 #include <iosfwd>
 #include <string>
 
-class LColor_color;
 class LyXLex;
 class BufferParams;
 class Language;
@@ -156,6 +157,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 +200,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;
 
@@ -310,33 +319,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 +366,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
 {