123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
- * Qwt Widget Library
- * Copyright (C) 1997 Josef Wilgen
- * Copyright (C) 2002 Uwe Rathmann
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the Qwt License, Version 1.0
- *****************************************************************************/
- #ifndef QWT_TEXT_ENGINE_H
- #define QWT_TEXT_ENGINE_H 1
- #include "qwt_global.h"
- #include <qsize.h>
- class QFont;
- class QRectF;
- class QString;
- class QPainter;
- /*!
- \brief Abstract base class for rendering text strings
- A text engine is responsible for rendering texts for a
- specific text format. They are used by QwtText to render a text.
- QwtPlainTextEngine and QwtRichTextEngine are part of the Qwt library.
- The implementation of QwtMathMLTextEngine uses code from the
- Qt solution package. Because of license implications it is built into
- a separate library.
- \sa QwtText::setTextEngine()
- */
- class QWT_EXPORT QwtTextEngine
- {
- public:
- virtual ~QwtTextEngine();
- /*!
- Find the height for a given width
- \param font Font of the text
- \param flags Bitwise OR of the flags used like in QPainter::drawText
- \param text Text to be rendered
- \param width Width
- \return Calculated height
- */
- virtual double heightForWidth( const QFont &font, int flags,
- const QString &text, double width ) const = 0;
- /*!
- Returns the size, that is needed to render text
- \param font Font of the text
- \param flags Bitwise OR of the flags like in for QPainter::drawText
- \param text Text to be rendered
- \return Calculated size
- */
- virtual QSizeF textSize( const QFont &font, int flags,
- const QString &text ) const = 0;
- /*!
- Test if a string can be rendered by this text engine
- \param text Text to be tested
- \return true, if it can be rendered
- */
- virtual bool mightRender( const QString &text ) const = 0;
- /*!
- Return margins around the texts
- The textSize might include margins around the
- text, like QFontMetrics::descent(). In situations
- where texts need to be aligned in detail, knowing
- these margins might improve the layout calculations.
- \param font Font of the text
- \param text Text to be rendered
- \param left Return value for the left margin
- \param right Return value for the right margin
- \param top Return value for the top margin
- \param bottom Return value for the bottom margin
- */
- virtual void textMargins( const QFont &font, const QString &text,
- double &left, double &right, double &top, double &bottom ) const = 0;
- /*!
- Draw the text in a clipping rectangle
- \param painter Painter
- \param rect Clipping rectangle
- \param flags Bitwise OR of the flags like in for QPainter::drawText()
- \param text Text to be rendered
- */
- virtual void draw( QPainter *painter, const QRectF &rect,
- int flags, const QString &text ) const = 0;
- protected:
- QwtTextEngine();
- };
- /*!
- \brief A text engine for plain texts
- QwtPlainTextEngine renders texts using the basic Qt classes
- QPainter and QFontMetrics.
- */
- class QWT_EXPORT QwtPlainTextEngine: public QwtTextEngine
- {
- public:
- QwtPlainTextEngine();
- virtual ~QwtPlainTextEngine();
- virtual double heightForWidth( const QFont &font, int flags,
- const QString &text, double width ) const;
- virtual QSizeF textSize( const QFont &font, int flags,
- const QString &text ) const;
- virtual void draw( QPainter *painter, const QRectF &rect,
- int flags, const QString &text ) const;
- virtual bool mightRender( const QString & ) const;
- virtual void textMargins( const QFont &, const QString &,
- double &left, double &right, double &top, double &bottom ) const;
- private:
- class PrivateData;
- PrivateData *d_data;
- };
- #ifndef QT_NO_RICHTEXT
- /*!
- \brief A text engine for Qt rich texts
- QwtRichTextEngine renders Qt rich texts using the classes
- of the Scribe framework of Qt.
- */
- class QWT_EXPORT QwtRichTextEngine: public QwtTextEngine
- {
- public:
- QwtRichTextEngine();
- virtual double heightForWidth( const QFont &font, int flags,
- const QString &text, double width ) const;
- virtual QSizeF textSize( const QFont &font, int flags,
- const QString &text ) const;
- virtual void draw( QPainter *painter, const QRectF &rect,
- int flags, const QString &text ) const;
- virtual bool mightRender( const QString & ) const;
- virtual void textMargins( const QFont &, const QString &,
- double &left, double &right, double &top, double &bottom ) const;
- private:
- QString taggedText( const QString &, int flags ) const;
- };
- #endif // !QT_NO_RICHTEXT
- #endif
|