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