# qwt_text.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 #ifndef QWT_TEXT_H
    00011 #define QWT_TEXT_H
    00012
    00013 #include "qwt_global.h"
    00014 #include <qstring.h>
    00015 #include <qsize.h>
    00016 #include <qfont.h>
    00017
    00018 class QColor;
    00019 class QPen;
    00020 class QBrush;
    00021 class QRectF;
    00022 class QPainter;
    00023 class QwtTextEngine;
    00024
    00049 class QWT_EXPORT QwtText
    00050 {
    00051 public:
    00052
    00062     enum TextFormat
    00063     {
    00070         AutoText = 0,
    00071
    00073         PlainText,
    00074
    00076         RichText,
    00077
    00086         MathMLText,
    00087
    00092         TeXText,
    00093
    00098         OtherFormat = 100
    00099     };
    00100
    00107     enum PaintAttribute
    00108     {
    00110         PaintUsingTextFont = 0x01,
    00111
    00113         PaintUsingTextColor = 0x02,
    00114
    00116         PaintBackground = 0x04
    00117     };
    00118
    00120     typedef QFlags<PaintAttribute> PaintAttributes;
    00121
    00126     enum LayoutAttribute
    00127     {
    00134         MinimumLayout = 0x01
    00135     };
    00136
    00138     typedef QFlags<LayoutAttribute> LayoutAttributes;
    00139
    00140     QwtText( const QString & = QString::null,
    00141              TextFormat textFormat = AutoText );
    00142     QwtText( const QwtText & );
    00143     ~QwtText();
    00144
    00145     QwtText &operator=( const QwtText & );
    00146
    00147     bool operator==( const QwtText & ) const;
    00148     bool operator!=( const QwtText & ) const;
    00149
    00150     void setText( const QString &,
    00151         QwtText::TextFormat textFormat = AutoText );
    00152     QString text() const;
    00153
    00154     bool isNull() const;
    00155     bool isEmpty() const;
    00156
    00157     void setFont( const QFont & );
    00158     QFont font() const;
    00159
    00160     QFont usedFont( const QFont & ) const;
    00161
    00162     void setRenderFlags( int flags );
    00163     int renderFlags() const;
    00164
    00165     void setColor( const QColor & );
    00166     QColor color() const;
    00167
    00168     QColor usedColor( const QColor & ) const;
    00169
    00170     void setBackgroundPen( const QPen & );
    00171     QPen backgroundPen() const;
    00172
    00173     void setBackgroundBrush( const QBrush & );
    00174     QBrush backgroundBrush() const;
    00175
    00176     void setPaintAttribute( PaintAttribute, bool on = true );
    00177     bool testPaintAttribute( PaintAttribute ) const;
    00178
    00179     void setLayoutAttribute( LayoutAttribute, bool on = true );
    00180     bool testLayoutAttribute( LayoutAttribute ) const;
    00181
    00182     double heightForWidth( double width, const QFont & = QFont() ) const;
    00183     QSizeF textSize( const QFont & = QFont() ) const;
    00184
    00185     void draw( QPainter *painter, const QRectF &rect ) const;
    00186
    00187     static const QwtTextEngine *textEngine(
    00188         const QString &text, QwtText::TextFormat = AutoText );
    00189
    00190     static const QwtTextEngine *textEngine( QwtText::TextFormat );
    00191     static void setTextEngine( QwtText::TextFormat, QwtTextEngine * );
    00192
    00193 private:
    00194     class PrivateData;
    00195     PrivateData *d_data;
    00196
    00197     class LayoutCache;
    00198     LayoutCache *d_layoutCache;
    00199 };
    00200
    00202 inline bool QwtText::isNull() const
    00203 {
    00204     return text().isNull();
    00205 }
    00206
    00208 inline bool QwtText::isEmpty() const
    00209 {
    00210     return text().isEmpty();
    00211 }
    00212
    00213 Q_DECLARE_OPERATORS_FOR_FLAGS( QwtText::PaintAttributes )
    00214 Q_DECLARE_OPERATORS_FOR_FLAGS( QwtText::LayoutAttributes )
    00215
    00216 #endif