Skip to content

Commit 90d233a

Browse files
authoredJan 18, 2017
Remove draw() method from QgsRasterDataProvider interface (#4017)
It was redundant in the API - one always wants to use block() to get data
1 parent df3fdf5 commit 90d233a

13 files changed

+10
-127
lines changed
 

‎doc/api_break.dox

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1495,6 +1495,7 @@ QgsRasterDataProvider {#qgis_api_break_3_0_QgsRasterDataProvider}
14951495
- useSrcNoDataValue() has been renamed to useSourceNoDataValue()
14961496
- setUseSrcNoDataValue() has been renamed to setUseSourceNoDataValue()
14971497
- srcNoDataValue() has been renamed to sourceNoDataValue()
1498+
- draw() has been removed from the interface as it was not used anywhere.
14981499

14991500

15001501
QgsRasterInterface {#qgis_api_break_3_0_QgsRasterInterface}

‎python/core/raster/qgsrasterdataprovider.sip

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,6 @@ class QgsRasterDataProvider : QgsDataProvider, QgsRasterInterface
5252
/* It makes no sense to set input on provider */
5353
bool setInput( QgsRasterInterface* input );
5454

55-
/** \brief Renders the layer as an image
56-
* \note When render caching (/qgis/enable_render_caching) is on the wms
57-
* provider doesn't wait for the reply of the getmap request or all
58-
* tiles replies and can return incomplete images.
59-
* Temporarily disable render caching if you require the complete
60-
* wms image in the first call.
61-
*/
62-
virtual QImage* draw( const QgsRectangle & viewExtent, int pixelWidth, int pixelHeight ) = 0;
63-
6455
/** Get the extent of the data source.
6556
* @return QgsRectangle containing the extent of the layer
6657
*/

‎src/core/raster/qgsrasterdataprovider.h

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,6 @@ class CORE_EXPORT QgsRasterDataProvider : public QgsDataProvider, public QgsRast
9191
/* It makes no sense to set input on provider */
9292
bool setInput( QgsRasterInterface* input ) override { Q_UNUSED( input ); return false; }
9393

94-
/** \brief Renders the layer as an image
95-
* \note When render caching (/qgis/enable_render_caching) is on the wms
96-
* provider doesn't wait for the reply of the getmap request or all
97-
* tiles replies and can return incomplete images.
98-
* Temporarily disable render caching if you require the complete
99-
* wms image in the first call.
100-
*/
101-
virtual QImage* draw( const QgsRectangle & viewExtent, int pixelWidth, int pixelHeight ) = 0;
102-
10394
virtual QgsRectangle extent() const override = 0;
10495

10596
//! Returns data type for the band specified by number

‎src/providers/arcgisrest/qgsamsprovider.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -238,11 +238,11 @@ QString QgsAmsProvider::metadata()
238238
return dumpVariantMap( mServiceInfo, tr( "Service Info" ) ) + dumpVariantMap( mLayerInfo, tr( "Layer Info" ) );
239239
}
240240

241-
QImage* QgsAmsProvider::draw( const QgsRectangle & viewExtent, int pixelWidth, int pixelHeight )
241+
void QgsAmsProvider::draw( const QgsRectangle & viewExtent, int pixelWidth, int pixelHeight )
242242
{
243243
if ( !mCachedImage.isNull() && mCachedImageExtent == viewExtent )
244244
{
245-
return &mCachedImage;
245+
return;
246246
}
247247
QgsDataSourceUri dataSource( dataSourceUri() );
248248

@@ -269,7 +269,7 @@ QImage* QgsAmsProvider::draw( const QgsRectangle & viewExtent, int pixelWidth, i
269269
{
270270
mCachedImage = QImage();
271271
mCachedImage.fill( Qt::transparent );
272-
return &mCachedImage;
272+
return;
273273
}
274274
int level = 0;
275275
double resolution = lodEntries.front().toMap()[QStringLiteral( "resolution" )].toDouble();
@@ -343,7 +343,7 @@ QImage* QgsAmsProvider::draw( const QgsRectangle & viewExtent, int pixelWidth, i
343343
mCachedImage = mCachedImage.convertToFormat( QImage::Format_ARGB32 );
344344
}
345345
}
346-
return &mCachedImage;
346+
return;
347347
}
348348

349349
QImage QgsAmsProvider::getLegendGraphic( double /*scale*/, bool forceRefresh, const QgsRectangle * /*visibleExtent*/ )
@@ -442,12 +442,11 @@ void QgsAmsProvider::readBlock( int /*bandNo*/, const QgsRectangle & viewExtent,
442442
Q_UNUSED( feedback ); // TODO: make use of the feedback object
443443

444444
// TODO: optimize to avoid writing to QImage
445-
// returned image is actually mCachedImage, no need to delete
446-
QImage *image = draw( viewExtent, width, height );
447-
if ( image->width() != width || image->height() != height )
445+
draw( viewExtent, width, height );
446+
if ( mCachedImage.width() != width || mCachedImage.height() != height )
448447
{
449448
QgsDebugMsg( "Unexpected image size for block" );
450449
return;
451450
}
452-
std::memcpy( data, image->bits(), image->bytesPerLine() * image->height() );
451+
std::memcpy( data, mCachedImage.constBits(), mCachedImage.bytesPerLine() * mCachedImage.height() );
453452
}

‎src/providers/arcgisrest/qgsamsprovider.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ class QgsAmsProvider : public QgsRasterDataProvider
8080
Qgis::DataType sourceDataType( int /*bandNo*/ ) const override { return Qgis::ARGB32; }
8181
QgsRasterInterface* clone() const override;
8282
QString metadata() override;
83-
QImage* draw( const QgsRectangle & viewExtent, int pixelWidth, int pixelHeight ) override;
8483
bool supportsLegendGraphic() const override { return true; }
8584
QImage getLegendGraphic( double scale = 0, bool forceRefresh = false, const QgsRectangle * visibleExtent = 0 ) override;
8685
QgsImageFetcher* getLegendGraphicFetcher( const QgsMapSettings* mapSettings ) override;
@@ -89,6 +88,8 @@ class QgsAmsProvider : public QgsRasterDataProvider
8988
protected:
9089
void readBlock( int bandNo, const QgsRectangle & viewExtent, int width, int height, void *data, QgsRasterBlockFeedback* feedback = nullptr ) override;
9190

91+
void draw( const QgsRectangle & viewExtent, int pixelWidth, int pixelHeight );
92+
9293
private:
9394
bool mValid;
9495
QgsAmsLegendFetcher* mLegendFetcher;

‎src/providers/gdal/qgsgdalprovider.cpp

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -373,20 +373,6 @@ QString QgsGdalProvider::metadata()
373373
}
374374

375375

376-
// Not supported by GDAL
377-
QImage* QgsGdalProvider::draw( QgsRectangle const & viewExtent, int pixelWidth, int pixelHeight )
378-
{
379-
Q_UNUSED( viewExtent );
380-
QgsDebugMsg( "pixelWidth = " + QString::number( pixelWidth ) );
381-
QgsDebugMsg( "pixelHeight = " + QString::number( pixelHeight ) );
382-
QgsDebugMsg( "viewExtent: " + viewExtent.toString() );
383-
384-
QImage *image = new QImage( pixelWidth, pixelHeight, QImage::Format_ARGB32 );
385-
image->fill( QColor( Qt::gray ).rgb() );
386-
387-
return image;
388-
}
389-
390376
QgsRasterBlock* QgsGdalProvider::block( int theBandNo, const QgsRectangle &theExtent, int theWidth, int theHeight, QgsRasterBlockFeedback* feedback )
391377
{
392378
QgsRasterBlock *block = new QgsRasterBlock( dataType( theBandNo ), theWidth, theHeight );

‎src/providers/gdal/qgsgdalprovider.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ class QgsGdalProvider : public QgsRasterDataProvider, QgsGdalProviderBase
7676

7777
QgsGdalProvider * clone() const override;
7878

79-
QImage* draw( QgsRectangle const & viewExtent, int pixelWidth, int pixelHeight ) override;
8079
QString name() const override;
8180
QString description() const override;
8281
virtual QgsCoordinateReferenceSystem crs() const override;

‎src/providers/grass/qgsgrassrasterprovider.cpp

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -178,50 +178,6 @@ QgsRasterInterface * QgsGrassRasterProvider::clone() const
178178
return provider;
179179
}
180180

181-
QImage* QgsGrassRasterProvider::draw( QgsRectangle const & viewExtent, int pixelWidth, int pixelHeight )
182-
{
183-
QgsDebugMsg( "pixelWidth = " + QString::number( pixelWidth ) );
184-
QgsDebugMsg( "pixelHeight = " + QString::number( pixelHeight ) );
185-
QgsDebugMsg( "viewExtent: " + viewExtent.toString() );
186-
clearLastError();
187-
188-
QImage *image = new QImage( pixelWidth, pixelHeight, QImage::Format_ARGB32 );
189-
image->fill( QColor( Qt::gray ).rgb() );
190-
191-
QStringList arguments;
192-
arguments.append( "map=" + mMapName + "@" + mMapset );
193-
194-
arguments.append(( QStringLiteral( "window=%1,%2,%3,%4,%5,%6" )
195-
.arg( QgsRasterBlock::printValue( viewExtent.xMinimum() ),
196-
QgsRasterBlock::printValue( viewExtent.yMinimum() ),
197-
QgsRasterBlock::printValue( viewExtent.xMaximum() ),
198-
QgsRasterBlock::printValue( viewExtent.yMaximum() ) )
199-
.arg( pixelWidth ).arg( pixelHeight ) ) );
200-
QString cmd = QgsApplication::libexecPath() + "grass/modules/qgis.d.rast";
201-
QByteArray data;
202-
try
203-
{
204-
data = QgsGrass::runModule( mGisdbase, mLocation, mMapset, cmd, arguments );
205-
}
206-
catch ( QgsGrass::Exception &e )
207-
{
208-
QString error = tr( "Cannot draw raster" ) + " : " + e.what();
209-
QgsDebugMsg( error );
210-
appendError( error );
211-
// We don't set mValid to false, because the raster can be recreated and work next time
212-
return image;
213-
}
214-
QgsDebugMsg( QString( "%1 bytes read from modules stdout" ).arg( data.size() ) );
215-
uchar * ptr = image->bits();
216-
// byteCount() in Qt >= 4.6
217-
//int size = image->byteCount() < data.size() ? image->byteCount() : data.size();
218-
int size = pixelWidth * pixelHeight * 4 < data.size() ? pixelWidth * pixelHeight * 4 : data.size();
219-
memcpy( ptr, data.data(), size );
220-
221-
return image;
222-
}
223-
224-
225181
void QgsGrassRasterProvider::readBlock( int bandNo, int xBlock, int yBlock, void *block )
226182
{
227183
Q_UNUSED( xBlock );

‎src/providers/grass/qgsgrassrasterprovider.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,6 @@ class GRASS_LIB_EXPORT QgsGrassRasterProvider : public QgsRasterDataProvider
106106

107107
QgsRasterInterface * clone() const override;
108108

109-
/** \brief Renders the layer as an image
110-
*/
111-
QImage* draw( QgsRectangle const & viewExtent, int pixelWidth, int pixelHeight ) override;
112-
113109
/** Return a provider name
114110
*
115111
* Essentially just returns the provider key. Should be used to build file

‎src/providers/wcs/qgswcsprovider.cpp

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1598,21 +1598,6 @@ QMap<QString, QString> QgsWcsProvider::supportedMimes()
15981598
return mimes;
15991599
}
16001600

1601-
// Not supported by WCS
1602-
// TODO: remove from QgsRasterDataProvider?
1603-
QImage* QgsWcsProvider::draw( QgsRectangle const & viewExtent, int pixelWidth, int pixelHeight )
1604-
{
1605-
Q_UNUSED( viewExtent );
1606-
QgsDebugMsg( "pixelWidth = " + QString::number( pixelWidth ) );
1607-
QgsDebugMsg( "pixelHeight = " + QString::number( pixelHeight ) );
1608-
QgsDebugMsg( "viewExtent: " + viewExtent.toString() );
1609-
1610-
QImage *image = new QImage( pixelWidth, pixelHeight, QImage::Format_ARGB32 );
1611-
image->fill( QColor( Qt::gray ).rgb() );
1612-
1613-
return image;
1614-
}
1615-
16161601
QGISEXTERN QgsWcsProvider * classFactory( const QString *uri )
16171602
{
16181603
return new QgsWcsProvider( *uri );

‎src/providers/wcs/qgswcsprovider.h

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -142,21 +142,6 @@ class QgsWcsProvider : public QgsRasterDataProvider, QgsGdalProviderBase
142142

143143
// TODO: Document this better.
144144

145-
/** \brief Renders the layer as an image
146-
*
147-
* \return A QImage - if the attempt to retrieve data for the draw was unsuccessful, returns 0
148-
* and more information can be found in lastError() and lastErrorTitle()
149-
*
150-
* \todo Add pixel depth parameter (intended to match the display or printer device)
151-
*
152-
* \note Ownership of the returned QImage remains with this provider and its lifetime
153-
* is guaranteed only until the next call to draw() or destruction of this provider.
154-
*
155-
* \warning A pointer to an QImage is used, as a plain QImage seems to have difficulty being
156-
* shared across library boundaries
157-
*/
158-
QImage *draw( QgsRectangle const & viewExtent, int pixelWidth, int pixelHeight ) override;
159-
160145
void readBlock( int bandNo, QgsRectangle const & viewExtent, int width, int height, void *data, QgsRasterBlockFeedback* feedback = nullptr ) override;
161146

162147
void readBlock( int theBandNo, int xBlock, int yBlock, void *block ) override;

‎src/providers/wms/qgswmsprovider.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -497,11 +497,6 @@ void QgsWmsProvider::setFormatQueryItem( QUrl &url )
497497
setQueryItem( url, QStringLiteral( "FORMAT" ), mSettings.mImageMimeType );
498498
}
499499

500-
QImage *QgsWmsProvider::draw( QgsRectangle const &viewExtent, int pixelWidth, int pixelHeight )
501-
{
502-
return draw( viewExtent, pixelWidth, pixelHeight, nullptr );
503-
}
504-
505500

506501
static bool _fuzzyContainsRect( const QRectF& r1, const QRectF& r2 )
507502
{

‎src/providers/wms/qgswmsprovider.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,6 @@ class QgsWmsProvider : public QgsRasterDataProvider
145145
*/
146146
void setConnectionName( QString const & connName );
147147

148-
QImage *draw( QgsRectangle const & viewExtent, int pixelWidth, int pixelHeight ) override;
149-
150148
void readBlock( int bandNo, QgsRectangle const & viewExtent, int width, int height, void *data, QgsRasterBlockFeedback* feedback = nullptr ) override;
151149
//void readBlock( int bandNo, QgsRectangle const & viewExtent, int width, int height, QgsCoordinateReferenceSystem theSrcCRS, QgsCoordinateReferenceSystem theDestCRS, void *data );
152150

0 commit comments

Comments
 (0)
Please sign in to comment.