]> git.lyx.org Git - lyx.git/blobdiff - src/lyxfont.h
to much stuff for my liking...
[lyx.git] / src / lyxfont.h
index 4123fa35134fd464350c8a7b17ef41ffefdda06c..28611e542959c8c43975f61d828896d3244615a3 100644 (file)
@@ -5,7 +5,7 @@
  *           LyX, The Document Processor
  *      
  *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-2000 The LyX Team.   
+ *           Copyright 1995-2001 The LyX Team.   
  *
  * ====================================================== */
 
 #include <iosfwd>
 
 #include "LString.h"
-#include "language.h"
 #include "LColor.h"
 
-// It might happen that locale.h defines ON and OFF. This is not good
-// for us, since we use these names below. But of course this is due
-// to some old compilers. Than is broken when it comes to C++ scoping.
-#include "gettext.h" // so that we are sure tht it won't be included
-// later. 
-#ifdef ON
-#undef ON
-#endif
-
-#ifdef OFF
-#undef OFF
-#endif
-
 class LyXLex;
 class BufferParams;
+class Language;
+
 
 ///
 class LyXFont {
@@ -57,9 +45,25 @@ public:
                ///
                SYMBOL_FAMILY,
                ///
+               CMR_FAMILY,
+               ///
+               CMSY_FAMILY,
+               ///
+               CMM_FAMILY,
+               ///
+               CMEX_FAMILY,
+               ///
+               MSA_FAMILY,
+               ///
+               MSB_FAMILY,
+               ///
+               EUFRAK_FAMILY,
+               ///
                INHERIT_FAMILY,
                ///
-               IGNORE_FAMILY
+               IGNORE_FAMILY,
+               ///
+               NUM_FAMILIES = INHERIT_FAMILY
        };
 
        ///
@@ -155,9 +159,6 @@ public:
        ///
        LyXFont();
 
-       // LyXFont x(LyXFont ...) and LyXFont x = LyXFont ...
-       LyXFont(LyXFont const & x);
        /// Shortcut initialization
        explicit
        LyXFont(LyXFont::FONT_INIT1);
@@ -174,9 +175,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();
  
@@ -205,7 +203,7 @@ public:
        FONT_MISC_STATE noun() const;
 
        ///
-       FONT_MISC_STATE latex() const;
+       FONT_MISC_STATE number() const;
 
        ///
        LColor::color color() const;
@@ -218,6 +216,9 @@ public:
 
        ///
        bool isVisibleRightToLeft() const;
+
+       ///
+       bool isSymbolFont() const;
        
        ///
        LyXFont & setFamily(LyXFont::FONT_FAMILY f);
@@ -234,7 +235,7 @@ public:
        ///
        LyXFont & setNoun(LyXFont::FONT_MISC_STATE n);
        ///
-       LyXFont & setLatex(LyXFont::FONT_MISC_STATE l);
+       LyXFont & setNumber(LyXFont::FONT_MISC_STATE n);
        ///
        LyXFont & setColor(LColor::color c);
        ///
@@ -257,12 +258,9 @@ 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.
@@ -273,7 +271,7 @@ public:
            a INHERIT_FAMILY was asked for.  This is necessary for the
            toggle-user-defined-style button on the toolbar.
        */
-       void update(LyXFont const & newfont, 
+       void update(LyXFont const & newfont,
                    Language const * default_lang,
                    bool toggleall = false);
  
@@ -282,8 +280,11 @@ public:
        void reduce(LyXFont const & tmplt);
  
        /// Realize font from a template (INHERIT are realized)
+#ifndef INHERIT_LANGUAGE
        LyXFont & realize(LyXFont const & tmplt);
-
+#else
+       LyXFont & realize(LyXFont const & tmplt, Language const * language);
+#endif
        /// Is a given font fully resolved?
        bool resolved() const;
  
@@ -291,7 +292,12 @@ public:
        LyXFont & lyxRead(LyXLex &);
  
        /// Writes the changes from this font to orgfont in .lyx format in file
+#ifndef INHERIT_LANGUAGE
        void lyxWriteChanges(LyXFont const & orgfont, std::ostream &) const;
+#else
+       void lyxWriteChanges(LyXFont const & orgfont, Language const * doclang,
+                            std::ostream &) const;
+#endif
 
        /** Writes the head of the LaTeX needed to change to this font.
            Writes to string, the head of the LaTeX needed to change
@@ -309,7 +315,7 @@ public:
                                 LyXFont const & next) const;
 
        /// Build GUI description of font state
-       string stateText(BufferParams * params) const;
+       string const stateText(BufferParams * params) const;
 
        ///
        LColor::color realColor() const;
@@ -318,13 +324,6 @@ public:
        friend
        bool operator==(LyXFont const & font1, LyXFont const & font2);
 
-       ///
-       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:
@@ -351,10 +350,12 @@ private:
                ///
                FONT_MISC_STATE noun;
                ///
-               FONT_MISC_STATE latex;
+               FONT_MISC_STATE number;
        };
+
        ///
        FontBits bits;
+       
        ///
        Language const * lang;
        
@@ -372,93 +373,11 @@ private:
                                         LyXFont::FONT_MISC_STATE org);
 };
 
-///
-std::ostream & operator<<(std::ostream &, LyXFont::FONT_MISC_STATE);
-
-///
-inline
-bool operator==(LyXFont const & font1, LyXFont const & font2) {
-       return font1.bits == font2.bits &&
-               font1.lang == font2.lang;
-}
-
-///
-inline
-bool operator!=(LyXFont const & font1, LyXFont const & font2) {
-       return !(font1 == font2);
-}
-
-
-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) 
+LyXFont::FONT_SHAPE LyXFont::shape() const
 {
-       bits = x.bits;
-       lang = x.lang;
-       return *this;
+       return bits.shape;
 }
 
 
@@ -476,13 +395,6 @@ LyXFont::FONT_SERIES LyXFont::series() const
 }
 
 
-inline
-LyXFont::FONT_SHAPE LyXFont::shape() const
-{
-       return bits.shape;
-}
-
-
 inline
 LyXFont::FONT_SIZE LyXFont::size() const
 {
@@ -497,13 +409,6 @@ LyXFont::FONT_MISC_STATE LyXFont::emph() const
 }
 
 
-inline
-LyXFont::FONT_MISC_STATE LyXFont::underbar() const
-{
-       return bits.underbar;
-}
-
-
 inline
 LyXFont::FONT_MISC_STATE LyXFont::noun() const
 {
@@ -512,116 +417,36 @@ LyXFont::FONT_MISC_STATE LyXFont::noun() const
 
 
 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)
+bool LyXFont::isSymbolFont() const
 {
-       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;
+       switch (family()) {
+       case LyXFont::SYMBOL_FAMILY:
+       case LyXFont::CMSY_FAMILY:
+       case LyXFont::CMM_FAMILY:
+       case LyXFont::CMEX_FAMILY:
+       case LyXFont::MSA_FAMILY:
+       case LyXFont::MSB_FAMILY:
+               return true;
+       default:
+               return false;
+       }
 }
 
+///
+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