00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef QWT_TEXT_ENGINE_H
00013 #define QWT_TEXT_ENGINE_H 1
00014
00015 #include <qsize.h>
00016 #include "qwt_global.h"
00017
00018 class QFont;
00019 class QRect;
00020 class QString;
00021 class QPainter;
00022
00043 class QWT_EXPORT QwtTextEngine
00044 {
00045 public:
00046 virtual ~QwtTextEngine();
00047
00058 virtual int heightForWidth(const QFont &font, int flags,
00059 const QString &text, int width) const = 0;
00060
00070 virtual QSize textSize(const QFont &font, int flags,
00071 const QString &text) const = 0;
00072
00079 virtual bool mightRender(const QString &text) const = 0;
00080
00096 virtual void textMargins(const QFont &font, const QString &text,
00097 int &left, int &right, int &top, int &bottom) const = 0;
00098
00107 virtual void draw(QPainter *painter, const QRect &rect,
00108 int flags, const QString &text) const = 0;
00109
00110 protected:
00111 QwtTextEngine();
00112 };
00113
00114
00121 class QWT_EXPORT QwtPlainTextEngine: public QwtTextEngine
00122 {
00123 public:
00124 QwtPlainTextEngine();
00125 virtual ~QwtPlainTextEngine();
00126
00127 virtual int heightForWidth(const QFont &font, int flags,
00128 const QString &text, int width) const;
00129
00130 virtual QSize textSize(const QFont &font, int flags,
00131 const QString &text) const;
00132
00133 virtual void draw(QPainter *painter, const QRect &rect,
00134 int flags, const QString &text) const;
00135
00136 virtual bool mightRender(const QString &) const;
00137
00138 virtual void textMargins(const QFont &, const QString &,
00139 int &left, int &right, int &top, int &bottom) const;
00140
00141 private:
00142 class PrivateData;
00143 PrivateData *d_data;
00144 };
00145
00146
00147 #ifndef QT_NO_RICHTEXT
00148
00155 class QWT_EXPORT QwtRichTextEngine: public QwtTextEngine
00156 {
00157 public:
00158 QwtRichTextEngine();
00159
00160 virtual int heightForWidth(const QFont &font, int flags,
00161 const QString &text, int width) const;
00162
00163 virtual QSize textSize(const QFont &font, int flags,
00164 const QString &text) const;
00165
00166 virtual void draw(QPainter *painter, const QRect &rect,
00167 int flags, const QString &text) const;
00168
00169 virtual bool mightRender(const QString &) const;
00170
00171 virtual void textMargins(const QFont &, const QString &,
00172 int &left, int &right, int &top, int &bottom) const;
00173 private:
00174 QString taggedText(const QString &, int flags) const;
00175 };
00176
00177 #endif // !QT_NO_RICHTEXT
00178
00179 #endif