Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef QWT_PIXEL_MATRIX_H
00011 #define QWT_PIXEL_MATRIX_H
00012
00013 #include "qwt_global.h"
00014 #include <qbitarray.h>
00015 #include <qrect.h>
00016
00023 class QWT_EXPORT QwtPixelMatrix: public QBitArray
00024 {
00025 public:
00026 explicit QwtPixelMatrix( const QRect& rect );
00027 ~QwtPixelMatrix();
00028
00029 void setRect( const QRect& rect );
00030 QRect rect() const;
00031
00032 bool testPixel( int x, int y ) const;
00033 bool testAndSetPixel( int x, int y, bool on );
00034
00035 int index( int x, int y ) const;
00036
00037 private:
00038 QRect d_rect;
00039 };
00040
00050 inline bool QwtPixelMatrix::testPixel( int x, int y ) const
00051 {
00052 const int idx = index( x, y );
00053 return ( idx >= 0 ) ? testBit( idx ) : true;
00054 }
00055
00066 inline bool QwtPixelMatrix::testAndSetPixel( int x, int y, bool on )
00067 {
00068 const int idx = index( x, y );
00069 if ( idx < 0 )
00070 return true;
00071
00072 const bool onBefore = testBit( idx );
00073 setBit( idx, on );
00074
00075 return onBefore;
00076 }
00077
00085 inline int QwtPixelMatrix::index( int x, int y ) const
00086 {
00087 const int dx = x - d_rect.x();
00088 if ( dx < 0 || dx >= d_rect.width() )
00089 return -1;
00090
00091 const int dy = y - d_rect.y();
00092 if ( dy < 0 || dy >= d_rect.height() )
00093 return -1;
00094
00095 return dy * d_rect.width() + dx;
00096 }
00097
00098 #endif