Qwt Polar User's Guide 1.0.0

qwt_polar_spectrogram.h

00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
00002  * QwtPolar Widget Library
00003  * Copyright (C) 2008   Uwe Rathmann
00004  *
00005  * This library is free software; you can redistribute it and/or
00006  * modify it under the terms of the Qwt License, Version 1.0
00007  *****************************************************************************/
00008 
00009 #ifndef QWT_POLAR_SPECTROGRAM_H
00010 #define QWT_POLAR_SPECTROGRAM_H
00011 
00012 #include "qwt_polar_global.h"
00013 #include "qwt_polar_item.h"
00014 #include <qimage.h>
00015 
00016 class QwtRasterData;
00017 class QwtColorMap;
00018 
00028 class QWT_POLAR_EXPORT QwtPolarSpectrogram: public QwtPolarItem
00029 {
00030 public:
00037     enum PaintAttribute
00038     {
00044         ApproximatedAtan = 0x01
00045     };
00046 
00048     typedef QFlags<PaintAttribute> PaintAttributes;
00049 
00050     explicit QwtPolarSpectrogram();
00051     virtual ~QwtPolarSpectrogram();
00052 
00053     void setData( QwtRasterData *data );
00054     const QwtRasterData *data() const;
00055 
00056     void setColorMap( QwtColorMap * );
00057     const QwtColorMap *colorMap() const;
00058 
00059     void setPaintAttribute( PaintAttribute, bool on = true );
00060     bool testPaintAttribute( PaintAttribute ) const;
00061 
00062     void setRenderThreadCount( uint numThreads );
00063     uint renderThreadCount() const;
00064 
00065     virtual int rtti() const;
00066 
00067     virtual void draw( QPainter *painter,
00068         const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap,
00069         const QPointF &pole, double radius,
00070         const QRectF &canvasRect ) const;
00071 
00072     virtual QwtInterval boundingInterval( int scaleId ) const;
00073 
00074 protected:
00075     virtual QImage renderImage(
00076         const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap,
00077         const QPointF &pole, const QRect &rect ) const;
00078 
00079     virtual void renderTile(
00080         const QwtScaleMap &azimuthMap, const QwtScaleMap &radialMap,
00081         const QPointF &pole, const QPoint &imagePos,
00082         const QRect &tile, QImage *image ) const;
00083 
00084 private:
00085     class TileInfo;
00086     void renderTile( const QwtScaleMap &, const QwtScaleMap &,
00087         const QPointF &pole, TileInfo * ) const;
00088 
00089     class PrivateData;
00090     PrivateData *d_data;
00091 };
00092 
00093 Q_DECLARE_OPERATORS_FOR_FLAGS( QwtPolarSpectrogram::PaintAttributes )
00094 
00095 #endif