// -*- C++ -*-
/**
- * \file lyxfont.h
+ * \file src/lyxfont.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
#ifndef LYXFONT_H
#define LYXFONT_H
-#include "support/std_string.h"
+#include "LColor.h"
+
#include <iosfwd>
+#include <string>
-class LColor_color;
class LyXLex;
class BufferParams;
class Language;
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();
/// 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;
void setLanguage(Language const * l);
/// Set family after LyX text format
- LyXFont & setLyXFamily(string const &);
+ LyXFont & setLyXFamily(std::string const &);
/// Set series after LyX text format
- LyXFont & setLyXSeries(string const &);
+ LyXFont & setLyXSeries(std::string const &);
/// Set shape after LyX text format
- LyXFont & setLyXShape(string const &);
+ LyXFont & setLyXShape(std::string const &);
/// Set size after LyX text format
- LyXFont & setLyXSize(string const &);
+ LyXFont & setLyXSize(std::string const &);
/// Returns misc flag after LyX text format
- LyXFont::FONT_MISC_STATE setLyXMisc(string const &);
+ LyXFont::FONT_MISC_STATE setLyXMisc(std::string const &);
/// Sets color after LyX text format
- LyXFont & setLyXColor(string const &);
+ LyXFont & setLyXColor(std::string const &);
/// Returns size of font in LaTeX text notation
- string const latexSize() const;
+ std::string const latexSize() const;
/** Updates font settings according to request.
If an attribute is IGNORE, the attribute is left as it is.
int latexWriteStartChanges(std::ostream &, LyXFont const & base,
LyXFont const & prev) const;
- /** Writes tha tail of the LaTeX needed to chagne to this font.
+ /** Writes the tail of the LaTeX needed to change to this font.
Returns number of chars written. Base is the font state we want
to achieve.
*/
LyXFont const & next) const;
/// Build GUI description of font state
- string const stateText(BufferParams * params) const;
+ std::string const stateText(BufferParams * params) const;
///
LColor_color realColor() const;
///
friend
bool operator==(LyXFont const & font1, LyXFont const & font2);
+ ///
+ friend
+ 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;
-
///
Language const * lang;
-
/// Sane font
static FontBits sane;
-
/// All inherit font
static FontBits inherit;
-
/// All ignore font
static FontBits ignore;
-
/// Updates a misc setting according to request
LyXFont::FONT_MISC_STATE setMisc(LyXFont::FONT_MISC_STATE newfont,
LyXFont::FONT_MISC_STATE org);
* having to expose lyxfont.h.
*/
class LyXFont_size {
- LyXFont::FONT_SIZE val_;
public:
+ ///
LyXFont_size(LyXFont::FONT_SIZE val) : val_(val) {}
- operator LyXFont::FONT_SIZE() const{ return val_; }
+ ///
+ operator LyXFont::FONT_SIZE() const { return val_; }
+private:
+ ///
+ LyXFont::FONT_SIZE val_;
};
-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
{
inline
bool operator==(LyXFont const & font1, LyXFont const & font2)
{
- return font1.bits == font2.bits &&
- font1.lang == font2.lang;
+ return font1.bits == font2.bits && font1.lang == font2.lang;
}
///