X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Flyxfont.h;h=28611e542959c8c43975f61d828896d3244615a3;hb=7ea7dabed1b72cc25dcbdc482ac006f2b61dacfd;hp=62e5da13f22ad8c3c589acdfa23533cc17cd60f0;hpb=2889b5fd3e8987d0c265ff4726a7fb6c6cb6c034;p=lyx.git diff --git a/src/lyxfont.h b/src/lyxfont.h index 62e5da13f2..28611e5429 100644 --- a/src/lyxfont.h +++ b/src/lyxfont.h @@ -5,7 +5,7 @@ * LyX, The Document Processor * * Copyright 1995 Matthias Ettrich - * Copyright 1995-2000 The LyX Team. + * Copyright 1995-2001 The LyX Team. * * ====================================================== */ @@ -19,24 +19,12 @@ #include #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,24 +258,20 @@ 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. - */ - void update(LyXFont const & newfont, + /** 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); @@ -283,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; @@ -292,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 @@ -310,26 +315,14 @@ 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; /// friend - 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) { - return !(font1 == font2); - } - - /// compares two fonts, ignoring the setting of the Latex part. - bool equalExceptLatex(LyXFont const &) const; + bool operator==(LyXFont const & font1, LyXFont const & font2); /// Converts logical attributes to concrete shape attribute LyXFont::FONT_SHAPE realShape() const; @@ -357,10 +350,12 @@ private: /// FONT_MISC_STATE noun; /// - FONT_MISC_STATE latex; + FONT_MISC_STATE number; }; + /// FontBits bits; + /// Language const * lang; @@ -379,77 +374,10 @@ private: }; -std::ostream & operator<<(std::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) +LyXFont::FONT_SHAPE LyXFont::shape() const { - bits = x.bits; - lang = x.lang; - return *this; + return bits.shape; } @@ -467,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 { @@ -488,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 { @@ -503,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) -{ - 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) +bool LyXFont::isSymbolFont() const { - 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