/
qgsrasterlayersaveasdialog.h
143 lines (123 loc) · 5.25 KB
/
qgsrasterlayersaveasdialog.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#ifndef QGSRASTERLAYERSAVEASDIALOG_H
#define QGSRASTERLAYERSAVEASDIALOG_H
#include "ui_qgsrasterlayersaveasdialogbase.h"
#include "qgsrectangle.h"
#include "qgscoordinatereferencesystem.h"
#include "qgsrasternuller.h"
class QgsRasterLayer;
class QgsRasterDataProvider;
class QgsRasterFormatOptionsWidget;
class GUI_EXPORT QgsRasterLayerSaveAsDialog: public QDialog, private Ui::QgsRasterLayerSaveAsDialogBase
{
Q_OBJECT
public:
enum Mode
{
RawDataMode,
RenderedImageMode
};
enum CrsState
{
OriginalCrs,
CurrentCrs,
UserCrs
};
enum ExtentState
{
OriginalExtent,
CurrentExtent,
UserExtent,
};
enum ResolutionState
{
OriginalResolution,
UserResolution
};
QgsRasterLayerSaveAsDialog( QgsRasterLayer* rasterLayer,
QgsRasterDataProvider* sourceProvider, const QgsRectangle& currentExtent,
const QgsCoordinateReferenceSystem& layerCrs, const QgsCoordinateReferenceSystem& currentCrs,
QWidget* parent = 0, Qt::WindowFlags f = 0 );
~QgsRasterLayerSaveAsDialog();
Mode mode() const;
int nColumns() const;
int nRows() const;
double xResolution() const;
double yResolution() const;
int maximumTileSizeX() const;
int maximumTileSizeY() const;
bool tileMode() const;
QString outputFileName() const;
QString outputFormat() const;
QgsCoordinateReferenceSystem outputCrs();
QStringList createOptions() const;
QgsRectangle outputRectangle() const;
QList<QgsRasterNuller::NoData> noData() const;
QList< int > overviewList() const;
QgsRasterDataProvider::RasterBuildPyramids buildPyramidsFlag() const;
QString pyramidsResampling() const { return mPyramidsOptionsWidget->resamplingMethod(); }
QgsRasterDataProvider::RasterPyramidsFormat pyramidsFormat() const
{ return mPyramidsOptionsWidget->pyramidsFormat(); }
void hideFormat();
void hideOutput();
public slots:
virtual void accept() { if ( validate() ) return QDialog::accept(); }
private slots:
void on_mRawModeRadioButton_toggled( bool );
void on_mBrowseButton_clicked();
void on_mSaveAsLineEdit_textChanged( const QString& text );
void on_mCurrentExtentButton_clicked();
void on_mOriginalExtentButton_clicked();
void on_mFormatComboBox_currentIndexChanged( const QString& text );
void on_mResolutionRadioButton_toggled( bool ) { toggleResolutionSize(); }
void on_mOriginalResolutionPushButton_clicked() { setOriginalResolution(); }
void on_mXResolutionLineEdit_textEdited( const QString & ) { mResolutionState = UserResolution; recalcSize(); }
void on_mYResolutionLineEdit_textEdited( const QString & ) { mResolutionState = UserResolution; recalcSize(); }
void on_mOriginalSizePushButton_clicked() { setOriginalSize(); }
void on_mColumnsLineEdit_textEdited( const QString & ) { mResolutionState = UserResolution; recalcResolution(); }
void on_mRowsLineEdit_textEdited( const QString & ) { mResolutionState = UserResolution; recalcResolution(); }
void on_mXMinLineEdit_textEdited( const QString & ) { mExtentState = UserExtent; extentChanged(); }
void on_mXMaxLineEdit_textEdited( const QString & ) { mExtentState = UserExtent; extentChanged(); }
void on_mYMinLineEdit_textEdited( const QString & ) { mExtentState = UserExtent; extentChanged(); }
void on_mYMaxLineEdit_textEdited( const QString & ) { mExtentState = UserExtent; extentChanged(); }
void on_mChangeCrsPushButton_clicked();
void on_mCrsComboBox_currentIndexChanged( int ) { crsChanged(); }
void on_mAddNoDataManuallyToolButton_clicked();
void on_mLoadTransparentNoDataToolButton_clicked();
void on_mRemoveSelectedNoDataToolButton_clicked();
void on_mRemoveAllNoDataToolButton_clicked();
void noDataCellTextEdited( const QString & text );
void on_mTileModeCheckBox_toggled( bool toggled );
void on_mPyramidsGroupBox_toggled( bool toggled );
void populatePyramidsLevels();
private:
QgsRasterLayer* mRasterLayer;
QgsRasterDataProvider* mDataProvider;
QgsRectangle mCurrentExtent;
QgsCoordinateReferenceSystem mLayerCrs; // may differ from provider CRS
QgsCoordinateReferenceSystem mCurrentCrs;
QgsCoordinateReferenceSystem mUserCrs;
QgsCoordinateReferenceSystem mPreviousCrs;
ExtentState mExtentState;
ResolutionState mResolutionState;
QVector<bool> mNoDataToEdited;
void setValidators();
void setOutputExtent( const QgsRectangle& r, const QgsCoordinateReferenceSystem& srcCrs, ExtentState state );
void extentChanged();
void updateExtentStateMsg();
void toggleResolutionSize();
void setResolution( double xRes, double yRes, const QgsCoordinateReferenceSystem& srcCrs );
void setOriginalResolution();
void setOriginalSize();
void recalcSize();
void recalcResolution();
void updateResolutionStateMsg();
void recalcResolutionSize();
void crsChanged();
void updateCrsGroup();
void addNoDataRow( double min, double max );
void setNoDataToEdited( int row );
double noDataCellValue( int row, int column ) const;
void adjustNoDataCellWidth( int row, int column );
bool validate() const;
};
#endif // QGSRASTERLAYERSAVEASDIALOG_H