00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_TEXT_ENGINE_H
00011 #define QWT_TEXT_ENGINE_H 1
00012
00013 #include "qwt_global.h"
00014 #include <qsize.h>
00015
00016 class QFont;
00017 class QRectF;
00018 class QString;
00019 class QPainter;
00020
00036 class QWT_EXPORT QwtTextEngine
00037 {
00038 public:
00039 virtual ~QwtTextEngine();
00040
00051 virtual int heightForWidth(const QFont &font, int flags,
00052 const QString &text, int width) const = 0;
00053
00063 virtual QSize textSize(const QFont &font, int flags,
00064 const QString &text) const = 0;
00065
00072 virtual bool mightRender(const QString &text) const = 0;
00073
00089 virtual void textMargins(const QFont &font, const QString &text,
00090 int &left, int &right, int &top, int &bottom) const = 0;
00091
00100 virtual void draw(QPainter *painter, const QRectF &rect,
00101 int flags, const QString &text) const = 0;
00102
00103 protected:
00104 QwtTextEngine();
00105 };
00106
00107
00114 class QWT_EXPORT QwtPlainTextEngine: public QwtTextEngine
00115 {
00116 public:
00117 QwtPlainTextEngine();
00118 virtual ~QwtPlainTextEngine();
00119
00120 virtual int heightForWidth(const QFont &font, int flags,
00121 const QString &text, int width) const;
00122
00123 virtual QSize textSize(const QFont &font, int flags,
00124 const QString &text) const;
00125
00126 virtual void draw(QPainter *painter, const QRectF &rect,
00127 int flags, const QString &text) const;
00128
00129 virtual bool mightRender(const QString &) const;
00130
00131 virtual void textMargins(const QFont &, const QString &,
00132 int &left, int &right, int &top, int &bottom) const;
00133
00134 private:
00135 class PrivateData;
00136 PrivateData *d_data;
00137 };
00138
00139
00140 #ifndef QT_NO_RICHTEXT
00141
00148 class QWT_EXPORT QwtRichTextEngine: public QwtTextEngine
00149 {
00150 public:
00151 QwtRichTextEngine();
00152
00153 virtual int heightForWidth(const QFont &font, int flags,
00154 const QString &text, int width) const;
00155
00156 virtual QSize textSize(const QFont &font, int flags,
00157 const QString &text) const;
00158
00159 virtual void draw(QPainter *painter, const QRectF &rect,
00160 int flags, const QString &text) const;
00161
00162 virtual bool mightRender(const QString &) const;
00163
00164 virtual void textMargins(const QFont &, const QString &,
00165 int &left, int &right, int &top, int &bottom) const;
00166 private:
00167 QString taggedText(const QString &, int flags) const;
00168 };
00169
00170 #endif // !QT_NO_RICHTEXT
00171
00172 #endif