// -*- C++ -*-
/* This file is part of
* ======================================================
- *
+ *
* LyX, The Document Processor
- *
+ *
* Copyright 1995 Matthias Ettrich
- * Copyright 1995-2001 The LyX Team.
+ * Copyright 1995-2001 The LyX Team.
*
* ====================================================== */
#ifndef LYXFONT_H
#define LYXFONT_H
-#ifdef __GNUG__
-#pragma interface
-#endif
-
#include <iosfwd>
#include "LString.h"
#include "LColor.h"
-#include "language.h"
class LyXLex;
class BufferParams;
+class Language;
///
///
MSB_FAMILY,
///
+ EUFRAK_FAMILY,
+ ///
+ WASY_FAMILY,
+ ///
INHERIT_FAMILY,
///
IGNORE_FAMILY,
///
IGNORE_SIZE
};
-
+
/// Used for emph, underbar, noun and latex toggles
enum FONT_MISC_STATE {
///
/// Decreases font size by one
LyXFont & decSize();
-
+
/// Increases font size by one
LyXFont & incSize();
-
+
///
FONT_FAMILY family() const;
-
+
///
FONT_SERIES series() const;
-
+
///
FONT_SHAPE shape() const;
-
+
///
FONT_SIZE size() const;
-
+
///
FONT_MISC_STATE emph() const;
-
+
///
FONT_MISC_STATE underbar() const;
-
+
///
FONT_MISC_STATE noun() const;
///
LColor::color color() const;
- ///
+ ///
Language const * language() const;
///
///
bool isSymbolFont() const;
-
+
///
LyXFont & setFamily(LyXFont::FONT_FAMILY f);
///
LyXFont & setNumber(LyXFont::FONT_MISC_STATE n);
///
LyXFont & setColor(LColor::color c);
- ///
+ ///
LyXFont & setLanguage(Language const * l);
/// Set family after LyX text format
LyXFont & setLyXFamily(string const &);
-
+
/// Set series after LyX text format
LyXFont & setLyXSeries(string const &);
-
+
/// Set shape after LyX text format
LyXFont & setLyXShape(string const &);
-
+
/// Set size after LyX text format
LyXFont & setLyXSize(string const &);
-
+
/// Returns misc flag after LyX text format
LyXFont::FONT_MISC_STATE setLyXMisc(string const &);
/// Returns size of font in LaTeX text notation
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
void update(LyXFont const & newfont,
Language const * default_lang,
bool toggleall = false);
-
+
/** Reduce font to fall back to template where possible.
Equal fields are reduced to INHERIT */
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;
-
+
/// Read a font specification from LyXLex. Used for layout files.
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
/// Converts logical attributes to concrete shape attribute
LyXFont::FONT_SHAPE realShape() const;
-private:
- ///
+
+ /** Compaq cxx 6.5 requires that the definition be public so that
+ it can compile operator==()
+ */
struct FontBits {
- ///
- bool operator==(FontBits const & fb1) const;
- ///
- bool operator!=(FontBits const & fb1) const;
///
FONT_FAMILY family;
///
///
FONT_MISC_STATE number;
};
+private:
///
FontBits bits;
-
+
///
Language const * lang;
-
+
/// Sane font
static FontBits sane;
-
+
/// All inherit font
static FontBits inherit;
-
+
/// All ignore font
static FontBits ignore;
inline
-LyXFont::LyXFont()
- : bits(sane), lang(default_language)
-{}
-
-
-inline
-LyXFont::FONT_FAMILY LyXFont::family() const
+LyXFont::FONT_FAMILY LyXFont::family() const
{
return bits.family;
}
inline
bool LyXFont::isSymbolFont() const
{
- switch(family()) {
+ 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:
+ case LyXFont::WASY_FAMILY:
return true;
default:
return false;
///
std::ostream & operator<<(std::ostream &, LyXFont::FONT_MISC_STATE);
+bool operator==(LyXFont::FontBits const & lhs, LyXFont::FontBits const & rhs);
+
+inline
+bool operator!=(LyXFont::FontBits const & lhs, LyXFont::FontBits const & rhs)
+{
+ return !(lhs == rhs);
+}
+
///
inline
bool operator==(LyXFont const & font1, LyXFont const & font2)
{
return !(font1 == font2);
}
+
#endif