Qwt User's Guide svn
qwt_symbol.h
00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
00002  * Qwt Widget Library
00003  * Copyright (C) 1997   Josef Wilgen
00004  * Copyright (C) 2002   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_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
qmi style