]> git.lyx.org Git - lyx.git/blobdiff - src/lyxfont.h
Applied Angus patch to compile on DEC C++ and to avoid name clashes
[lyx.git] / src / lyxfont.h
index fdc011588a9d3c344e8056b71c336b80b0901a14..2309eab91789510d4db67e401837c14ccbb791d9 100644 (file)
@@ -18,9 +18,7 @@
 
 #include <iosfwd>
 
-#include FORMS_H_LOCATION
 #include "LString.h"
-#include "debug.h"
 #include "language.h"
 #include "LColor.h"
 
@@ -37,9 +35,8 @@
 #undef OFF
 #endif
 
-using std::ostream;
-
 class LyXLex;
+class BufferParams;
 
 ///
 class LyXFont {
@@ -158,14 +155,14 @@ public:
        ///
        LyXFont();
 
-       /// LyXFont x(LyXFont ...) and LyXFont x = LyXFont ...
-       LyXFont(LyXFont const & x);
        /// Shortcut initialization
+       explicit
        LyXFont(LyXFont::FONT_INIT1);
        /// Shortcut initialization
+       explicit
        LyXFont(LyXFont::FONT_INIT2);
        /// Shortcut initialization
+       explicit
        LyXFont(LyXFont::FONT_INIT3);
        /// Shortcut initialization
        LyXFont(LyXFont::FONT_INIT1, Language const * l);
@@ -174,9 +171,6 @@ public:
        /// Shortcut initialization
        LyXFont(LyXFont::FONT_INIT3, Language const * l);
 
-       /// LyXFont x, y; x = y;
-       LyXFont & operator=(LyXFont const & x);
        /// Decreases font size by one
        LyXFont & decSize();
  
@@ -207,6 +201,9 @@ public:
        ///
        FONT_MISC_STATE latex() const;
 
+       ///
+       FONT_MISC_STATE number() const;
+
        ///
        LColor::color color() const;
 
@@ -236,6 +233,8 @@ public:
        ///
        LyXFont & setLatex(LyXFont::FONT_MISC_STATE l);
        ///
+       LyXFont & setNumber(LyXFont::FONT_MISC_STATE n);
+       ///
        LyXFont & setColor(LColor::color c);
        ///
        LyXFont & setLanguage(Language const * l);
@@ -257,23 +256,19 @@ public:
 
        /// Sets color after LyX text format
        LyXFont & setLyXColor(string const &);
-       /// Sets size after GUI name
-       LyXFont & setGUISize(string const &);
+
        /// Returns size of font in LaTeX text notation
-       string latexSize() const;
+       string const latexSize() const;
  
-       /** Updates font settings according to request. If an
-           attribute is IGNORE, the attribute is left as it is. */
-       /* 
-        * When toggleall = true, all properties that matches the font in use
-        * will have the effect that the properties is reset to the
-        * default.  If we have a text that is TYPEWRITER_FAMILY, and is
-        * update()'ed with TYPEWRITER_FAMILY, the operation will be as if
-        * a INHERIT_FAMILY was asked for.  This is necessary for the
-        * toggle-user-defined-style button on the toolbar.
-        */
+       /** Updates font settings according to request.
+           If an attribute is IGNORE, the attribute is left as it is.
+           When toggleall = true, all properties that matches the font in use
+           will have the effect that the properties is reset to the
+           default.  If we have a text that is TYPEWRITER_FAMILY, and is
+           update()'ed with TYPEWRITER_FAMILY, the operation will be as if
+           a INHERIT_FAMILY was asked for.  This is necessary for the
+           toggle-user-defined-style button on the toolbar.
+       */
        void update(LyXFont const & newfont, 
                    Language const * default_lang,
                    bool toggleall = false);
@@ -292,117 +287,71 @@ public:
        LyXFont & lyxRead(LyXLex &);
  
        /// Writes the changes from this font to orgfont in .lyx format in file
-       void lyxWriteChanges(LyXFont const & orgfont, ostream &) const;
+       void lyxWriteChanges(LyXFont const & orgfont, std::ostream &) const;
 
        /** Writes the head of the LaTeX needed to change to this font.
            Writes to string, the head of the LaTeX needed to change
            to this font. Returns number of chars written. Base is the
            font state active now.
        */
-       int latexWriteStartChanges(ostream &, LyXFont const & base,
+       int latexWriteStartChanges(std::ostream &, LyXFont const & base,
                                   LyXFont const & prev) const;
 
        /** Writes tha tail of the LaTeX needed to chagne to this font.
            Returns number of chars written. Base is the font state we want
            to achieve.
        */
-       int latexWriteEndChanges(ostream &, LyXFont const & base,
+       int latexWriteEndChanges(std::ostream &, LyXFont const & base,
                                 LyXFont const & next) const;
 
        /// Build GUI description of font state
-       string stateText() const;
-
-       ///
-       int maxAscent() const; 
-
-       ///
-       int maxDescent() const;
-
-       ///
-       int ascent(char c) const;
-
-       ///
-       int descent(char c) const;
-
-       ///
-       int width(char c) const;
-
-       ///
-       int lbearing(char c) const;
-
-       ///
-       int rbearing(char c) const;
-       
-       ///
-       int textWidth(char const *s, int n) const;
-
-       ///
-       int stringWidth(string const & s) const;
-
-       ///
-       int signedStringWidth(string const & s) const;
-
-       /// Draws text and returns width of text
-       int drawText(char const *, int n, Pixmap, int baseline, int x) const;
-
-       ///
-       int drawString(string const &, Pixmap pm, int baseline, int x) const;
+       string const stateText(BufferParams * params) const;
 
        ///
        LColor::color realColor() const;
 
        ///
-       XID getFontID() const {
-               return getXFontstruct()->fid;
-       }
-       
-       ///
-       friend inline
-       bool operator==(LyXFont const & font1, LyXFont const & font2) {
-               return font1.bits == font2.bits &&
-                       font1.lang == font2.lang;
-       }
-
-       ///
-       friend inline
-       bool operator!=(LyXFont const & font1, LyXFont const & font2) {
-               return font1.bits != font2.bits ||
-                       font1.lang != font2.lang;
-       }
+       friend
+       bool operator==(LyXFont const & font1, LyXFont const & font2);
 
        /// compares two fonts, ignoring the setting of the Latex part.
        bool equalExceptLatex(LyXFont const &) const;
 
+       /// Converts logical attributes to concrete shape attribute
+       LyXFont::FONT_SHAPE realShape() const;
 private:
        ///
        struct FontBits {
-               bool operator==(FontBits const & fb1) const {
-                       return fb1.family == family &&
-                               fb1.series == series &&
-                               fb1.shape == shape &&
-                               fb1.size == size &&
-                               fb1.color == color &&
-                               fb1.emph == emph &&
-                               fb1.underbar == underbar &&
-                               fb1.noun == noun &&
-                               fb1.latex == latex;
-               }
-               bool operator!=(FontBits const & fb1) const {
-                       return !(fb1 == *this);
-               }
-               
+               ///
+               bool operator==(FontBits const & fb1) const;
+               ///
+               bool operator!=(FontBits const & fb1) const;
+               ///
                FONT_FAMILY family;
+               ///
                FONT_SERIES series;
+               ///
                FONT_SHAPE shape;
+               ///
                FONT_SIZE size;
+               ///
                LColor::color color;
+               ///
                FONT_MISC_STATE emph;
+               ///
                FONT_MISC_STATE underbar;
+               ///
                FONT_MISC_STATE noun;
+               ///
                FONT_MISC_STATE latex;
+               ///
+               FONT_MISC_STATE number;
        };
 
+       ///
        FontBits bits;
+       
+       ///
        Language const * lang;
        
        /// Sane font
@@ -417,246 +366,23 @@ private:
        /// Updates a misc setting according to request
        LyXFont::FONT_MISC_STATE setMisc(LyXFont::FONT_MISC_STATE newfont,
                                         LyXFont::FONT_MISC_STATE org);
-
-       /// Converts logical attributes to concrete shape attribute
-       LyXFont::FONT_SHAPE realShape() const;
-
-       ///
-       XFontStruct * getXFontstruct() const;
 };
 
-ostream & operator<<(ostream &, LyXFont::FONT_MISC_STATE);
-
-inline
-LyXFont::LyXFont()
-{
-       bits = sane;
-       lang = default_language;
-}
-
-
-inline
-LyXFont::LyXFont(LyXFont const & x)
-{
-       bits = x.bits;
-       lang = x.lang;
-}
-
-
-inline
-LyXFont::LyXFont(LyXFont::FONT_INIT1)
-{
-       bits = inherit;
-       lang = default_language;
-}
-
-
-inline
-LyXFont::LyXFont(LyXFont::FONT_INIT2)
-{
-       bits = ignore;
-       lang = ignore_language;
-}
-
-
-inline
-LyXFont::LyXFont(LyXFont::FONT_INIT3)
-{
-       bits = sane;
-       lang = default_language;
-}
-inline
-LyXFont::LyXFont(LyXFont::FONT_INIT1, Language const * l)
-{
-       bits = inherit;
-       lang = l;
-}
-
-
-inline
-LyXFont::LyXFont(LyXFont::FONT_INIT2, Language const * l)
-{
-       bits = ignore;
-       lang = l;
-}
-
-
-inline
-LyXFont::LyXFont(LyXFont::FONT_INIT3, Language const * l)
-{
-       bits = sane;
-       lang = l;
-}
-
-inline
-LyXFont & LyXFont::operator=(LyXFont const & x) 
-{
-       bits = x.bits;
-       lang = x.lang;
-       return *this;
-}
-
-
-inline
-LyXFont::FONT_FAMILY LyXFont::family() const 
-{
-       return bits.family;
-}
-
-
-inline
-LyXFont::FONT_SERIES LyXFont::series() const
-{
-       return bits.series;
-}
-
-
-inline
-LyXFont::FONT_SHAPE LyXFont::shape() const
-{
-       return bits.shape;
-}
-
-
-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::underbar() const
-{
-       return bits.underbar;
-}
-
-
-inline
-LyXFont::FONT_MISC_STATE LyXFont::noun() const
-{
-       return bits.noun;
-}
-
-
-inline
-LyXFont::FONT_MISC_STATE LyXFont::latex() const 
-{
-       return bits.latex;
-}
-
-
-inline
-LColor::color LyXFont::color() const 
-{
-       return bits.color;
-}
-
-
-inline
-Language const * LyXFont::language() const 
-{
-       return lang;
-}
-
-
-inline
-bool LyXFont::isRightToLeft() const 
-{
-       return lang->RightToLeft;
-}
-
-
-inline
-bool LyXFont::isVisibleRightToLeft() const 
-{
-       return (lang->RightToLeft && latex() != ON);
-}
-
-
-inline
-LyXFont & LyXFont::setFamily(LyXFont::FONT_FAMILY f)
-{
-       bits.family = f;
-       return *this;
-}
-
-
-inline
-LyXFont & LyXFont::setSeries(LyXFont::FONT_SERIES s)
-{
-       bits.series = s;
-       return *this;
-}
-
-
-inline
-LyXFont & LyXFont::setShape(LyXFont::FONT_SHAPE s)
-{
-       bits.shape = s;
-       return *this;
-}
-
-
-inline
-LyXFont & LyXFont::setSize(LyXFont::FONT_SIZE s)
-{
-       bits.size = s;
-       return *this;
-}
-
-
-inline
-LyXFont & LyXFont::setEmph(LyXFont::FONT_MISC_STATE e)
-{
-       bits.emph = e;
-       return *this;
-}
-
-
-inline
-LyXFont & LyXFont::setUnderbar(LyXFont::FONT_MISC_STATE u)
-{
-       bits.underbar = u;
-       return *this;
-}
-
-
-inline
-LyXFont & LyXFont::setNoun(LyXFont::FONT_MISC_STATE n)
-{
-       bits.noun = n;
-       return *this;
-}
-
-inline
-LyXFont & LyXFont::setLatex(LyXFont::FONT_MISC_STATE l)
-{
-       bits.latex = l;
-       return *this;
-}
-
+///
+std::ostream & operator<<(std::ostream &, LyXFont::FONT_MISC_STATE);
 
+///
 inline
-LyXFont & LyXFont::setColor(LColor::color c)
+bool operator==(LyXFont const & font1, LyXFont const & font2)
 {
-       bits.color = c;
-       return *this;
+       return font1.bits == font2.bits &&
+               font1.lang == font2.lang;
 }
 
-
+///
 inline
-LyXFont & LyXFont::setLanguage(Language const * l)
+bool operator!=(LyXFont const & font1, LyXFont const & font2)
 {
-       lang = l;
-       return *this;
+       return !(font1 == font2);
 }
-
 #endif