/****************************************************************************** * Qwt Widget Library * Copyright (C) 1997 Josef Wilgen * Copyright (C) 2002 Uwe Rathmann * * This library is free software; you can redistribute it and/or * modify it under the terms of the Qwt License, Version 1.0 *****************************************************************************/ #ifndef QWT_MATRIX_RASTER_DATA_H #define QWT_MATRIX_RASTER_DATA_H #include "qwt_global.h" #include "qwt_raster_data.h" #if QT_VERSION < 0x060000 template< typename T > class QVector; #endif /*! \brief A class representing a matrix of values as raster data QwtMatrixRasterData implements an interface for a matrix of equidistant values, that can be used by a QwtPlotRasterItem. It implements a couple of resampling algorithms, to provide values for positions, that or not on the value matrix. */ class QWT_EXPORT QwtMatrixRasterData : public QwtRasterData { public: /*! \brief Resampling algorithm The default setting is NearestNeighbour; */ enum ResampleMode { /*! Return the value from the matrix, that is nearest to the the requested position. */ NearestNeighbour, /*! Interpolate the value from the distances and values of the 4 surrounding values in the matrix, */ BilinearInterpolation, /*! Interpolate the value from the 16 surrounding values in the matrix using hermite bicubic interpolation */ BicubicInterpolation }; QwtMatrixRasterData(); virtual ~QwtMatrixRasterData(); void setResampleMode(ResampleMode mode); ResampleMode resampleMode() const; void setInterval( Qt::Axis, const QwtInterval& ); virtual QwtInterval interval( Qt::Axis axis) const QWT_OVERRIDE QWT_FINAL; void setValueMatrix( const QVector< double >& values, int numColumns ); const QVector< double > valueMatrix() const; void setValue( int row, int col, double value ); int numColumns() const; int numRows() const; virtual QRectF pixelHint( const QRectF& ) const QWT_OVERRIDE; virtual double value( double x, double y ) const QWT_OVERRIDE; private: void update(); class PrivateData; PrivateData* m_data; }; #endif