Branch data Line data Source code
1 : : /***************************************************************************
2 : : qgsrasterfilewritertask.cpp
3 : : ---------------------------
4 : : begin : Apr 2017
5 : : copyright : (C) 2017 by Nyall Dawson
6 : : email : nyall dot dawson at gmail dot com
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 : : #include "qgsrasterfilewritertask.h"
19 : : #include "qgsrasterinterface.h"
20 : : #include "qgsrasterdataprovider.h"
21 : :
22 : : // Deprecated!
23 : 0 : QgsRasterFileWriterTask::QgsRasterFileWriterTask( const QgsRasterFileWriter &writer, QgsRasterPipe *pipe, int columns, int rows,
24 : : const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &crs )
25 : 0 : : QgsRasterFileWriterTask( writer, pipe, columns, rows, outputExtent, crs,
26 : 0 : ( pipe && pipe->provider() ) ? pipe->provider()->transformContext() : QgsCoordinateTransformContext() )
27 : : {
28 : 0 : }
29 : :
30 : 0 : QgsRasterFileWriterTask::QgsRasterFileWriterTask( const QgsRasterFileWriter &writer, QgsRasterPipe *pipe, int columns, int rows,
31 : : const QgsRectangle &outputExtent,
32 : : const QgsCoordinateReferenceSystem &crs,
33 : : const QgsCoordinateTransformContext &transformContext )
34 : 0 : : QgsTask( tr( "Saving %1" ).arg( writer.outputUrl() ), QgsTask::CanCancel )
35 : 0 : , mWriter( writer )
36 : 0 : , mRows( rows )
37 : 0 : , mColumns( columns )
38 : 0 : , mExtent( outputExtent )
39 : 0 : , mCrs( crs )
40 : 0 : , mPipe( pipe )
41 : 0 : , mFeedback( new QgsRasterBlockFeedback() )
42 : 0 : , mTransformContext( transformContext )
43 : 0 : {
44 : 0 : }
45 : :
46 : 0 : void QgsRasterFileWriterTask::cancel()
47 : : {
48 : 0 : mFeedback->cancel();
49 : 0 : QgsTask::cancel();
50 : 0 : }
51 : :
52 : 0 : bool QgsRasterFileWriterTask::run()
53 : : {
54 : 0 : if ( !mPipe )
55 : 0 : return false;
56 : :
57 : 0 : connect( mFeedback.get(), &QgsRasterBlockFeedback::progressChanged, this, &QgsRasterFileWriterTask::setProgress );
58 : :
59 : 0 : mError = mWriter.writeRaster( mPipe.get(), mColumns, mRows, mExtent, mCrs, mTransformContext, mFeedback.get() );
60 : :
61 : 0 : return mError == QgsRasterFileWriter::NoError;
62 : 0 : }
63 : :
64 : 0 : void QgsRasterFileWriterTask::finished( bool result )
65 : : {
66 : 0 : if ( result )
67 : 0 : emit writeComplete( mWriter.outputUrl() );
68 : : else
69 : : {
70 : 0 : emit errorOccurred( mError );
71 : 0 : QString errorMsg;
72 : 0 : if ( !mFeedback->errors().isEmpty() )
73 : 0 : errorMsg = mFeedback->errors().front();
74 : 0 : emit errorOccurred( mError, errorMsg );
75 : 0 : }
76 : 0 : }
77 : :
78 : :
|