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 <QPolygonF>
00015
00016 class QPainter;
00017 class QRect;
00018 class QSize;
00019 class QBrush;
00020 class QPen;
00021 class QColor;
00022 class QPointF;
00023
00025 class QWT_EXPORT QwtSymbol
00026 {
00027 public:
00032 enum Style
00033 {
00035 NoSymbol = -1,
00036
00038 Ellipse,
00039
00041 Rect,
00042
00044 Diamond,
00045
00047 Triangle,
00048
00050 DTriangle,
00051
00053 UTriangle,
00054
00056 LTriangle,
00057
00059 RTriangle,
00060
00062 Cross,
00063
00065 XCross,
00066
00068 HLine,
00069
00071 VLine,
00072
00074 Star1,
00075
00077 Star2,
00078
00080 Hexagon,
00081
00087 UserStyle = 1000
00088 };
00089
00090 public:
00091 QwtSymbol( Style = NoSymbol );
00092 QwtSymbol( Style, const QBrush &, const QPen &, const QSize & );
00093 QwtSymbol( const QwtSymbol & );
00094 virtual ~QwtSymbol();
00095
00096 QwtSymbol &operator=( const QwtSymbol & );
00097 bool operator==( const QwtSymbol & ) const;
00098 bool operator!=( const QwtSymbol & ) const;
00099
00100 void setSize( const QSize & );
00101 void setSize( int width, int height = -1 );
00102 const QSize& size() const;
00103
00104 virtual void setColor( const QColor & );
00105
00106 void setBrush( const QBrush& b );
00107 const QBrush& brush() const;
00108
00109 void setPen( const QPen & );
00110 const QPen& pen() const;
00111
00112 void setStyle( Style );
00113 Style style() const;
00114
00115 void drawSymbol( QPainter *, const QPointF & ) const;
00116 void drawSymbols( QPainter *, const QPolygonF & ) const;
00117
00118 virtual QSize boundingSize() const;
00119
00120 protected:
00121 virtual void drawSymbols( QPainter *,
00122 const QPointF *, int numPoints ) const;
00123
00124 private:
00125 class PrivateData;
00126 PrivateData *d_data;
00127 };
00128
00135 inline void QwtSymbol::drawSymbol(
00136 QPainter *painter, const QPointF &pos ) const
00137 {
00138 drawSymbols( painter, &pos, 1 );
00139 }
00140
00148 inline void QwtSymbol::drawSymbols(
00149 QPainter *painter, const QPolygonF &points ) const
00150 {
00151 drawSymbols( painter, points.data(), points.size() );
00152 }
00153
00154 #endif