Kate
katefont.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __kate_font_h__
00023 #define __kate_font_h__
00024
00025 #include <qfont.h>
00026 #include <qfontmetrics.h>
00027
00028
00029
00030
00031
00032 class KateFontMetrics : public QFontMetrics
00033 {
00034 public:
00035 KateFontMetrics(const QFont& f);
00036 ~KateFontMetrics();
00037
00038 int width(QChar c);
00039
00040 int width(QString s) { return QFontMetrics::width(s); }
00041
00042 private:
00043 short *createRow (short *wa, uchar row);
00044
00045 private:
00046 short *warray[256];
00047 };
00048
00049
00050
00051
00052
00053 class KateFontStruct
00054 {
00055 public:
00056 KateFontStruct();
00057 ~KateFontStruct();
00058
00059 void setFont(const QFont & font);
00060
00061 private:
00062 void updateFontData ();
00063
00064 public:
00065 inline int width (const QString& text, int col, bool bold, bool italic, int tabWidth)
00066 {
00067 if (text[col] == QChar('\t'))
00068 return tabWidth * myFontMetrics.width(' ');
00069
00070 return (bold) ?
00071 ( (italic) ?
00072 myFontMetricsBI.charWidth(text, col) :
00073 myFontMetricsBold.charWidth(text, col) ) :
00074 ( (italic) ?
00075 myFontMetricsItalic.charWidth(text, col) :
00076 myFontMetrics.charWidth(text, col) );
00077 }
00078
00079 inline int width (const QChar& c, bool bold, bool italic, int tabWidth)
00080 {
00081 if (c == QChar('\t'))
00082 return tabWidth * myFontMetrics.width(' ');
00083
00084 return (bold) ?
00085 ( (italic) ?
00086 myFontMetricsBI.width(c) :
00087 myFontMetricsBold.width(c) ) :
00088 ( (italic) ?
00089 myFontMetricsItalic.width(c) :
00090 myFontMetrics.width(c) );
00091 }
00092
00093 inline const QFont& font(bool bold, bool italic) const
00094 {
00095 return (bold) ?
00096 ( (italic) ? myFontBI : myFontBold ) :
00097 ( (italic) ? myFontItalic : myFont );
00098 }
00099
00100 inline bool fixedPitch() const { return m_fixedPitch; }
00101
00102 public:
00103 QFont myFont, myFontBold, myFontItalic, myFontBI;
00104
00105 KateFontMetrics myFontMetrics, myFontMetricsBold, myFontMetricsItalic, myFontMetricsBI;
00106
00107 int fontHeight;
00108 int fontAscent;
00109
00110 private:
00111 bool m_fixedPitch;
00112 };
00113
00114 #endif