qwt_text_engine.h

00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
00002  * Qwt Widget Library
00003  * Copyright (C) 1997   Josef Wilgen
00004  * Copyright (C) 2003   Uwe Rathmann
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the Qwt License, Version 1.0
00008  *****************************************************************************/
00009 
00010 // vim: expandtab
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

Generated on Mon Nov 6 20:32:57 2006 for Qwt User's Guide by  doxygen 1.4.6