00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_SYMBOL_H
00011 #define QWT_SYMBOL_H
00012
00013 #include "qwt_global.h"
00014 #include <qpolygon.h>
00015
00016 class QPainter;
00017 class QRect;
00018 class QSize;
00019 class QBrush;
00020 class QPen;
00021 class QColor;
00022 class QPointF;
00023 class QPolygonF;
00024 class QPainterPath;
00025 class QPixmap;
00026 class QByteArray;
00027 class QwtGraphic;
00028
00030 class QWT_EXPORT QwtSymbol
00031 {
00032 public:
00037 enum Style
00038 {
00040 NoSymbol = -1,
00041
00043 Ellipse,
00044
00046 Rect,
00047
00049 Diamond,
00050
00052 Triangle,
00053
00055 DTriangle,
00056
00058 UTriangle,
00059
00061 LTriangle,
00062
00064 RTriangle,
00065
00067 Cross,
00068
00070 XCross,
00071
00073 HLine,
00074
00076 VLine,
00077
00079 Star1,
00080
00082 Star2,
00083
00085 Hexagon,
00086
00094 Path,
00095
00102 Pixmap,
00103
00110 Graphic,
00111
00118 SvgDocument,
00119
00125 UserStyle = 1000
00126 };
00127
00149 enum CachePolicy
00150 {
00152 NoCache,
00153
00155 Cache,
00156
00163 AutoCache
00164 };
00165
00166 public:
00167 explicit QwtSymbol( Style = NoSymbol );
00168 QwtSymbol( Style, const QBrush &, const QPen &, const QSize & );
00169 QwtSymbol( const QPainterPath &, const QBrush &, const QPen & );
00170
00171 virtual ~QwtSymbol();
00172
00173 void setCachePolicy( CachePolicy );
00174 CachePolicy cachePolicy() const;
00175
00176 void setSize( const QSize & );
00177 void setSize( int width, int height = -1 );
00178 const QSize& size() const;
00179
00180 void setPinPoint( const QPointF &pos, bool enable = true );
00181 QPointF pinPoint() const;
00182
00183 void setPinPointEnabled( bool );
00184 bool isPinPointEnabled() const;
00185
00186 virtual void setColor( const QColor & );
00187
00188 void setBrush( const QBrush& b );
00189 const QBrush& brush() const;
00190
00191 void setPen( const QColor &, qreal width = 0.0, Qt::PenStyle = Qt::SolidLine );
00192 void setPen( const QPen & );
00193 const QPen& pen() const;
00194
00195 void setStyle( Style );
00196 Style style() const;
00197
00198 void setPath( const QPainterPath & );
00199 const QPainterPath &path() const;
00200
00201 void setPixmap( const QPixmap & );
00202 const QPixmap &pixmap() const;
00203
00204 void setGraphic( const QwtGraphic & );
00205 const QwtGraphic &graphic() const;
00206
00207 #ifndef QWT_NO_SVG
00208 void setSvgDocument( const QByteArray & );
00209 #endif
00210
00211 void drawSymbol( QPainter *, const QRectF & ) const;
00212 void drawSymbol( QPainter *, const QPointF & ) const;
00213 void drawSymbols( QPainter *, const QPolygonF & ) const;
00214 void drawSymbols( QPainter *,
00215 const QPointF *, int numPoints ) const;
00216
00217 virtual QRect boundingRect() const;
00218 void invalidateCache();
00219
00220 protected:
00221 virtual void renderSymbols( QPainter *,
00222 const QPointF *, int numPoints ) const;
00223
00224 private:
00225 Q_DISABLE_COPY(QwtSymbol)
00226
00227 class PrivateData;
00228 PrivateData *d_data;
00229 };
00230
00237 inline void QwtSymbol::drawSymbol(
00238 QPainter *painter, const QPointF &pos ) const
00239 {
00240 drawSymbols( painter, &pos, 1 );
00241 }
00242
00250 inline void QwtSymbol::drawSymbols(
00251 QPainter *painter, const QPolygonF &points ) const
00252 {
00253 drawSymbols( painter, points.data(), points.size() );
00254 }
00255
00256 #endif