Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsrasterfilewritertask.h 3 : : ------------------------- 4 : : begin : April 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 : : #ifndef QGSRASTERFILEWRITERTASK_H 19 : : #define QGSRASTERFILEWRITERTASK_H 20 : : 21 : : #include "qgis_core.h" 22 : : #include "qgstaskmanager.h" 23 : : #include "qgsrasterfilewriter.h" 24 : : #include "qgscoordinatetransformcontext.h" 25 : : #include "qgsrasterinterface.h" 26 : : #include "qgsrasterpipe.h" 27 : : 28 : : /** 29 : : * \class QgsRasterFileWriterTask 30 : : * \ingroup core 31 : : * \brief QgsTask task which performs a QgsRasterFileWriter layer saving operation as a background 32 : : * task. This can be used to save a raster layer out to a file without blocking the 33 : : * QGIS interface. 34 : : * \see QgsVectorFileWriterTask 35 : : * \see QgsVectorFileExporterTask 36 : : * \since QGIS 3.0 37 : : */ 38 : : class CORE_EXPORT QgsRasterFileWriterTask : public QgsTask 39 : : { 40 : 0 : Q_OBJECT 41 : : 42 : : public: 43 : : 44 : : /** 45 : : * Constructor for QgsRasterFileWriterTask. Takes a source \a writer, 46 : : * \a columns, \a rows, \a outputExtent and destination \a crs. 47 : : * Ownership of the \a pipe is transferred to the writer task, and will 48 : : * be deleted when the task completes. 49 : : * \deprecated since QGIS 3.8, use version with transformContext instead 50 : : */ 51 : : Q_DECL_DEPRECATED QgsRasterFileWriterTask( const QgsRasterFileWriter &writer, QgsRasterPipe *pipe SIP_TRANSFER, 52 : : int columns, int rows, 53 : : const QgsRectangle &outputExtent, 54 : : const QgsCoordinateReferenceSystem &crs ) SIP_DEPRECATED; 55 : : 56 : : 57 : : /** 58 : : * Constructor for QgsRasterFileWriterTask. Takes a source \a writer, 59 : : * \a columns, \a rows, \a outputExtent, destination \a crs and 60 : : * coordinate \a transformContext . 61 : : * Ownership of the \a pipe is transferred to the writer task, and will 62 : : * be deleted when the task completes. 63 : : */ 64 : : QgsRasterFileWriterTask( const QgsRasterFileWriter &writer, QgsRasterPipe *pipe SIP_TRANSFER, 65 : : int columns, int rows, 66 : : const QgsRectangle &outputExtent, 67 : : const QgsCoordinateReferenceSystem &crs, 68 : : const QgsCoordinateTransformContext &transformContext 69 : : ); 70 : : 71 : : void cancel() override; 72 : : 73 : : signals: 74 : : 75 : : /** 76 : : * Emitted when writing the layer is successfully completed. The \a outputUrl 77 : : * parameter indicates the file path for the written file(s). 78 : : */ 79 : : void writeComplete( const QString &outputUrl ); 80 : : 81 : : /** 82 : : * Emitted when an error occurs which prevented the file being written (or if 83 : : * the task is canceled). The writing \a error will be reported. 84 : : * \deprecated since QGIS 3.10. Use errorOccurred(int, const QString&) 85 : : */ 86 : : void errorOccurred( int error ); 87 : : 88 : : /** 89 : : * Emitted when an error occurs which prevented the file being written (or if 90 : : * the task is canceled). The writing \a error will be reported and a 91 : : * \a errorMessage will be potentially set. 92 : : * \since QGIS 3.10 93 : : */ 94 : : void errorOccurred( int error, const QString &errorMessage ); 95 : : 96 : : protected: 97 : : 98 : : bool run() override; 99 : : void finished( bool result ) override; 100 : : 101 : : private: 102 : : 103 : : QgsRasterFileWriter mWriter; 104 : : int mRows = 0; 105 : : int mColumns = 0; 106 : : QgsRectangle mExtent; 107 : : QgsCoordinateReferenceSystem mCrs; 108 : : std::unique_ptr< QgsRasterPipe > mPipe; 109 : : 110 : : QString mDestFileName; 111 : : 112 : : std::unique_ptr< QgsRasterBlockFeedback > mFeedback; 113 : : 114 : : QgsRasterFileWriter::WriterError mError = QgsRasterFileWriter::NoError; 115 : : 116 : : QgsCoordinateTransformContext mTransformContext; 117 : : }; 118 : : 119 : : #endif //QGSRASTERFILEWRITERTASK_H