00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef QWT_TEXT_H
00013 #define QWT_TEXT_H
00014
00015 #include <qfont.h>
00016 #include <qfontmetrics.h>
00017 #include <qnamespace.h>
00018 #include <qpen.h>
00019 #include <qbrush.h>
00020 #include <qstring.h>
00021
00022 #include "qwt_global.h"
00023
00024 #if QT_VERSION < 0x040000
00025 class QSimpleRichText;
00026 #else
00027 class QTextDocument;
00028 #endif
00029
00037 class QWT_EXPORT QwtText
00038 {
00039 public:
00040 virtual ~QwtText();
00041
00042 static QwtText *makeText(const QString &, Qt::TextFormat,
00043 int flags, const QFont &, const QColor &color = QColor(),
00044 const QPen &pen = QPen(Qt::NoPen),
00045 const QBrush &brush = QBrush(Qt::NoBrush));
00046
00047 static QwtText *makeText(const QString &,
00048 int flags, const QFont &, const QColor &color = QColor(),
00049 const QPen &pen = QPen(Qt::NoPen),
00050 const QBrush &brush = QBrush(Qt::NoBrush));
00051
00052 static void setDefaultFormat(Qt::TextFormat);
00053 static Qt::TextFormat defaultFormat();
00054
00055 virtual void setText(const QString &);
00056 QString text() const;
00057
00058 inline bool isNull() const { return text().isNull(); }
00059 inline bool isEmpty() const { return text().isEmpty(); }
00060
00061 virtual void setFont(const QFont &);
00062 QFont font() const;
00063 QFontMetrics fontMetrics() const;
00064
00065 virtual void setFlags(int flags);
00066 int flags() const;
00067
00068 virtual void setColor(const QColor &);
00069 QColor color() const;
00070
00071 virtual void setRectPen(const QPen &);
00072 QPen rectPen() const;
00073
00074 virtual void setRectBrush(const QBrush &);
00075 QBrush rectBrush() const;
00076
00082 virtual int heightForWidth(int width) const = 0;
00083
00097 virtual QRect boundingRect(QPainter *painter = 0) const = 0;
00098
00104 virtual void draw(QPainter *painter, const QRect &rect) const = 0;
00105
00109 virtual QwtText *clone() const = 0;
00110
00111 protected:
00112 QwtText(const QString &text, const QFont &, int flags, const QColor &,
00113 const QPen &pen = QPen(Qt::NoPen),
00114 const QBrush &brush = QBrush(Qt::NoBrush));
00115
00116 private:
00117 class PrivateData;
00118 PrivateData *d_data;
00119
00120 static Qt::TextFormat d_defaultFormat;
00121 };
00122
00123
00127 class QWT_EXPORT QwtPlainText: public QwtText
00128 {
00129 public:
00130 QwtPlainText(const QString &text, const QFont &,
00131 int flags =
00132 #if QT_VERSION < 0x040000
00133 Qt::AlignCenter | Qt::ExpandTabs | Qt::WordBreak,
00134 #else
00135 Qt::AlignCenter | Qt::TextExpandTabs | Qt::TextWordWrap,
00136 #endif
00137 const QColor &color = QColor(), const QPen &pen = QPen(Qt::NoPen),
00138 const QBrush &brush = QBrush(Qt::NoBrush));
00139
00140 QwtPlainText(const QString &text, const QFont &font,
00141 const QColor &color);
00142
00143 virtual QwtText *clone() const;
00144
00145 virtual int heightForWidth(int width) const;
00146 virtual QRect boundingRect(QPainter *painter = 0) const;
00147
00148 virtual void draw(QPainter *painter, const QRect &rect) const;
00149 };
00150
00151
00152 #ifndef QT_NO_RICHTEXT
00153
00157 class QWT_EXPORT QwtRichText: public QwtText
00158 {
00159 public:
00160 QwtRichText(const QString &text, const QFont &font,
00161 int flags =
00162 #if QT_VERSION < 0x040000
00163 Qt::AlignCenter | Qt::ExpandTabs | Qt::WordBreak,
00164 #else
00165 Qt::AlignCenter | Qt::TextExpandTabs | Qt::TextWordWrap,
00166 #endif
00167 const QColor &color = QColor(),
00168 const QPen &pen = QPen(Qt::NoPen),
00169 const QBrush &brush = QBrush(Qt::NoBrush));
00170
00171 QwtRichText(const QString &, const QFont &, const QColor &);
00172
00173 virtual ~QwtRichText();
00174
00175 virtual QwtText *clone() const;
00176
00177 virtual void setText(const QString &text);
00178 virtual void setFont(const QFont &font);
00179 virtual void setFlags(int flags);
00180
00181 virtual int heightForWidth(int width) const;
00182 virtual QRect boundingRect(QPainter *painter = 0) const;
00183
00184 virtual void draw(QPainter *painter, const QRect &rect) const;
00185
00186 private:
00187 QString taggedText(const QString &text, int flags) const;
00188
00189 class PrivateData;
00190 PrivateData *d_data;
00191 };
00192
00193 #endif
00194
00195 #endif