00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef ESSTIXFONTSTYLE_H
00021 #define ESSTIXFONTSTYLE_H
00022
00023 #include "fontstyle.h"
00024
00025 KFORMULA_NAMESPACE_BEGIN
00026
00027
00028 class EsstixAlphaTable : public AlphaTable {
00029 public:
00030
00031 EsstixAlphaTable();
00032
00033 virtual AlphaTableEntry entry( short pos, CharFamily family, CharStyle style ) const;
00034
00035 private:
00036
00037 QFont script_font;
00038 QFont fraktur_font;
00039 QFont double_struck_font;
00040 };
00041
00042
00043 class EsstixFontStyle : public FontStyle {
00044 public:
00045
00050 virtual bool init( ContextStyle* context, bool install = true );
00051
00053 virtual const AlphaTable* alphaTable() const;
00054
00055 virtual Artwork* createArtwork( SymbolType type = EmptyBracket ) const;
00056
00057 static QStringList missingFonts();
00058
00059 private:
00060
00061 EsstixAlphaTable m_alphaTable;
00062 };
00063
00064
00065 class EsstixArtwork : public Artwork {
00066 public:
00067 EsstixArtwork( SymbolType t );
00068
00069 virtual void calcSizes( const ContextStyle& style,
00070 ContextStyle::TextStyle tstyle,
00071 luPt parentSize );
00072
00073 virtual void draw( QPainter& painter, const LuPixelRect& r,
00074 const ContextStyle& style,
00075 ContextStyle::TextStyle tstyle,
00076 luPt parentSize, const LuPixelPoint& origin );
00077
00078 virtual bool isNormalChar() const;
00079
00080 private:
00081
00082 bool calcEsstixDelimiterSize( const ContextStyle& context, char c, luPt fontSize, luPt parentSize );
00083 void drawEsstixDelimiter( QPainter& painter, const ContextStyle& style, luPixel x, luPixel y, luPt height );
00084
00085 char esstixChar;
00086 char fontSizeFactor;
00087 };
00088
00089 KFORMULA_NAMESPACE_END
00090
00091 #endif