Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsrasterresampler.h 3 : : -------------------- 4 : : begin : December 2011 5 : : copyright : (C) 2011 by Marco Hugentobler 6 : : email : marco at sourcepole dot ch 7 : : ***************************************************************************/ 8 : : 9 : : /*************************************************************************** 10 : : * * 11 : : * This program is free software; you can redistribute it and/or modify * 12 : : * it under the terms of the GNU General Public License as published by * 13 : : * the Free Software Foundation; either version 2 of the License, or * 14 : : * (at your option) any later version. * 15 : : * * 16 : : ***************************************************************************/ 17 : : 18 : : #ifndef QGSRASTERRESAMPLER_H 19 : : #define QGSRASTERRESAMPLER_H 20 : : 21 : : #include <QString> 22 : : #include "qgis_core.h" 23 : : #include "qgis_sip.h" 24 : : 25 : : class QString; 26 : : class QImage; 27 : : class QSize; 28 : : 29 : : /** 30 : : * \ingroup core 31 : : * \brief Interface for resampling rasters (e.g. to have a smoother appearance) 32 : : */ 33 : 0 : class CORE_EXPORT QgsRasterResampler 34 : : { 35 : : #ifdef SIP_RUN 36 : : #include "qgsbilinearrasterresampler.h" 37 : : #include "qgscubicrasterresampler.h" 38 : : #endif 39 : : 40 : : 41 : : #ifdef SIP_RUN 42 : : SIP_CONVERT_TO_SUBCLASS_CODE 43 : : if ( dynamic_cast<QgsBilinearRasterResampler *>( sipCpp ) != NULL ) 44 : : sipType = sipType_QgsBilinearRasterResampler; 45 : : else if ( dynamic_cast<QgsCubicRasterResampler *>( sipCpp ) != NULL ) 46 : : sipType = sipType_QgsCubicRasterResampler; 47 : : else 48 : : sipType = 0; 49 : : SIP_END 50 : : #endif 51 : : 52 : : public: 53 : 0 : virtual ~QgsRasterResampler() = default; 54 : : 55 : : /** 56 : : * Resamples a source image to a destination image. 57 : : * 58 : : * The size of the passed destination image should be respected during the resampling 59 : : * process. 60 : : * 61 : : * \deprecated since QGIS 3.10.1, use the more efficient QgsRasterResamplerV2 interface instead. 62 : : */ 63 : : Q_DECL_DEPRECATED virtual void resample( const QImage &srcImage, QImage &dstImage ) = 0 SIP_DEPRECATED; 64 : : 65 : : /** 66 : : * Gets a descriptive type identifier for this raster resampler. 67 : : * Needs to be implemented by subclasses. 68 : : */ 69 : : virtual QString type() const = 0; 70 : : 71 : : /** 72 : : * Gets a deep copy of this object. 73 : : * Needs to be reimplemented by subclasses. 74 : : * Ownership is transferred to the caller. 75 : : */ 76 : : virtual QgsRasterResampler *clone() const = 0 SIP_FACTORY; 77 : : 78 : : /** 79 : : * Returns the optional tile buffer size in pixels. This represents 80 : : * the size to buffer individual resampled tile requests prior to resampling, 81 : : * in order to avoid rendering artifacts at the edges of raster tile boundaries. 82 : : * 83 : : * \since QGIS 3.10.1 84 : : */ 85 : 0 : virtual int tileBufferPixels() const { return 0; } 86 : : }; 87 : : 88 : : 89 : : /** 90 : : * \ingroup core 91 : : * \brief Interface for resampling rasters (V2) (e.g. to have a smoother appearance), 92 : : * which provides a more efficient interface vs QgsRasterResampler. 93 : : * 94 : : * \since QGIS 3.10.1 95 : : */ 96 : 0 : class CORE_EXPORT QgsRasterResamplerV2 : public QgsRasterResampler 97 : : { 98 : : public: 99 : : 100 : : /** 101 : : * Resamples a \a source image to the specified \a size. 102 : : * 103 : : * Returns the resampled image, or a null QImage if the resampling fails. 104 : : */ 105 : : virtual QImage resampleV2( const QImage &source, const QSize &size ) = 0; 106 : : 107 : : }; 108 : : 109 : : #endif // QGSRASTERRESAMPLER_H