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 <qsimplerichtext.h>
00021 #include <qstring.h>
00022
00023 #include "qwt_global.h"
00024
00035 class QWT_EXPORT QwtText
00036 {
00037 public:
00038 virtual ~QwtText();
00039
00040 static QwtText *makeText(const QString &, Qt::TextFormat,
00041 int align, const QFont &, const QColor &color = QColor(),
00042 const QPen &pen = QPen(Qt::NoPen),
00043 const QBrush &brush = QBrush(Qt::NoBrush));
00044
00045 static QwtText *makeText(const QString &,
00046 int align, const QFont &, const QColor &color = QColor(),
00047 const QPen &pen = QPen(Qt::NoPen),
00048 const QBrush &brush = QBrush(Qt::NoBrush));
00049
00050 static void setDefaultFormat(Qt::TextFormat);
00051 static Qt::TextFormat defaultFormat();
00052
00053 virtual void setText(const QString &);
00054 QString text() const;
00055
00056 inline bool isNull() const { return text().isNull(); }
00057 inline bool isEmpty() const { return text().isEmpty(); }
00058
00059 virtual void setFont(const QFont &);
00060 QFont font() const;
00061 QFontMetrics fontMetrics() const;
00062
00063 virtual void setAlignment(int align);
00064 int alignment() const;
00065
00066 virtual void setColor(const QColor &);
00067 QColor color() const;
00068
00069 virtual void setRectPen(const QPen &);
00070 QPen rectPen() const;
00071
00072 virtual void setRectBrush(const QBrush &);
00073 QBrush rectBrush() const;
00074
00080 virtual int heightForWidth(int width) const = 0;
00081
00095 virtual QRect boundingRect(QPainter *painter = 0) const = 0;
00096
00102 virtual void draw(QPainter *painter, const QRect &rect) const = 0;
00103
00107 virtual QwtText *clone() const = 0;
00108
00109 protected:
00110 QwtText(const QString &text, const QFont &, int align, const QColor &,
00111 const QPen &pen = QPen(Qt::NoPen),
00112 const QBrush &brush = QBrush(Qt::NoBrush));
00113
00114 private:
00115 int d_align;
00116 QString d_text;
00117 QFont d_font;
00118 QColor d_color;
00119 QFontMetrics d_fm;
00120 QPen d_rectPen;
00121 QBrush d_rectBrush;
00122
00123 static Qt::TextFormat d_defaultFormat;
00124 };
00125
00126
00130 class QWT_EXPORT QwtPlainText: public QwtText
00131 {
00132 public:
00133 QwtPlainText(const QString &text, const QFont &,
00134 int align = Qt::AlignCenter | Qt::WordBreak | Qt::ExpandTabs,
00135 const QColor &color = QColor(), const QPen &pen = QPen(Qt::NoPen),
00136 const QBrush &brush = QBrush(Qt::NoBrush));
00137
00138 QwtPlainText(const QString &text, const QFont &font,
00139 const QColor &color);
00140
00141 virtual QwtText *clone() const;
00142
00143 virtual int heightForWidth(int width) const;
00144 virtual QRect boundingRect(QPainter *painter = 0) const;
00145
00146 virtual void draw(QPainter *painter, const QRect &rect) const;
00147 };
00148
00149
00150 #ifndef QT_NO_RICHTEXT
00151
00155 class QWT_EXPORT QwtRichText: public QwtText
00156 {
00157 public:
00158 QwtRichText(const QString &text, const QFont &font,
00159 int align = Qt::AlignCenter | Qt::WordBreak | Qt::ExpandTabs,
00160 const QColor &color = QColor(),
00161 const QPen &pen = QPen(Qt::NoPen),
00162 const QBrush &brush = QBrush(Qt::NoBrush));
00163
00164 QwtRichText(const QString &, const QFont &, const QColor &);
00165
00166 virtual ~QwtRichText();
00167
00168 virtual QwtText *clone() const;
00169
00170 virtual void setText(const QString &text);
00171 virtual void setFont(const QFont &font);
00172 virtual void setAlignment(int align);
00173
00174 virtual int heightForWidth(int width) const;
00175 virtual QRect boundingRect(QPainter *painter = 0) const;
00176
00177 virtual void draw(QPainter *painter, const QRect &rect) const;
00178
00179 private:
00180 QString taggedText(const QString &text, int alignment) const;
00181
00182 QSimpleRichText *d_doc;
00183 };
00184
00185 #endif
00186
00187 #endif
00188
00189
00190
00191
00192