/
qgsrasterlayerproperties.h
179 lines (146 loc) · 7.19 KB
/
qgsrasterlayerproperties.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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
/** \brief The qgsrasterlayerproperties class is used to set up how raster layers are displayed.
*/
/* **************************************************************************
qgsrasterlayerproperties.h - description
-------------------
begin : Sun Aug 11 2002
copyright : (C) 2002 by Tim Sutton
email : tim@linfiniti.com
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef QGSRASTERLAYERPROPERTIES_H
#define QGSRASTERLAYERPROPERTIES_H
#include "ui_qgsrasterlayerpropertiesbase.h"
#include "qgisgui.h"
#include "qgsmaptool.h"
#include "qgscolorrampshader.h"
#include "qgscontexthelp.h"
class QgsMapLayer;
class QgsMapCanvas;
class QgsRasterLayer;
class QgsMapToolEmitPoint;
class QgsRasterRenderer;
class QgsRasterRendererWidget;
class QgsRasterHistogramWidget;
/**Property sheet for a raster map layer
*@author Tim Sutton
*/
class QgsRasterLayerProperties : public QDialog, private Ui::QgsRasterLayerPropertiesBase
{
Q_OBJECT
public:
/** \brief Constructor
* @param ml Map layer for which properties will be displayed
*/
QgsRasterLayerProperties( QgsMapLayer *lyr, QgsMapCanvas* theCanvas, QWidget *parent = 0, Qt::WFlags = QgisGui::ModalDialogFlags );
/** \brief Destructor */
~QgsRasterLayerProperties();
/** synchronize state with associated raster layer */
void sync();
public slots:
//TODO: Verify that these all need to be public
/** \brief Applies the settings made in the dialog without closing the box */
void apply();
/** \brief this slot asks the rasterlayer to construct pyramids */
void on_buttonBuildPyramids_clicked();
/** \brief slot executed when user presses "Add Values From Display" button on the transparency page */
void on_pbnAddValuesFromDisplay_clicked();
/** \brief slot executed when user presses "Add Values Manually" button on the transparency page */
void on_pbnAddValuesManually_clicked();
/** Override the CRS specified when the layer was loaded */
void on_pbnChangeSpatialRefSys_clicked();
/** \brief slot executed when user wishes to reset noNoDataValue and transparencyTable to default value */
void on_pbnDefaultValues_clicked();
/** \brief slot executed when user wishes to export transparency values */
void on_pbnExportTransparentPixelValues_clicked();
/** \brief auto slot executed when the active page in the main widget stack is changed */
void on_tabBar_currentChanged( int theTab );
/** \brief slow executed when user wishes to import transparency values */
void on_pbnImportTransparentPixelValues_clicked();
/** \brief slot executed when user presses "Remove Selected Row" button on the transparency page */
void on_pbnRemoveSelectedRow_clicked();
/** \brief slot executed when the single band radio button is pressed. */
/** \brief slot executed when the reset null value to file default icon is selected */
//void on_btnResetNull_clicked( );
void pixelSelected( const QgsPoint& );
/** \brief slot executed when the transparency level changes. */
void sliderTransparency_valueChanged( int );
private slots:
void on_mRenderTypeComboBox_currentIndexChanged( int index );
/** Load the default style when appropriate button is pressed. */
void on_pbnLoadDefaultStyle_clicked();
/** Save the default style when appropriate button is pressed. */
void on_pbnSaveDefaultStyle_clicked();
/** Load a saved style when appropriate button is pressed. */
void on_pbnLoadStyle_clicked();
/** Save a style when appriate button is pressed. */
void on_pbnSaveStyleAs_clicked();
/** Help button */
void on_buttonBox_helpRequested() { QgsContextHelp::run( metaObject()->className() ); }
/**Enable or disable Build pyramids button depending on selection in pyramids list*/
void toggleBuildPyramidsButton();
/** Update items in pipe list */
void pipeItemClicked( QTreeWidgetItem * item, int column );
/** Transparency cell changed */
void transparencyCellTextEdited( const QString & text );
signals:
/** emitted when changes to layer were saved to update legend */
void refreshLegend( QString layerID, bool expandItem );
private:
/** \brief A constant that signals property not used */
const QString TRSTRING_NOT_SET;
/** \brief Default contrast enhancement algorithm */
QString mDefaultContrastEnhancementAlgorithm;
/** \brief default standard deviation */
double mDefaultStandardDeviation;
/** \brief Default band combination */
int mDefaultRedBand;
int mDefaultGreenBand;
int mDefaultBlueBand;
/** \brief Flag to indicate if Gray minimum maximum values are actual minimum maximum values */
bool mGrayMinimumMaximumEstimated;
/** \brief Flag to indicate if RGB minimum maximum values are actual minimum maximum values */
bool mRGBMinimumMaximumEstimated;
/** \brief Pointer to the raster layer that this property dilog changes the behaviour of. */
QgsRasterLayer * mRasterLayer;
/** \brief If the underlying raster layer doesn't have a provider
This variable is used to determine if various parts of the Properties UI are
included or not
*/
//bool mRasterLayerIsInternal;
QgsRasterRendererWidget* mRendererWidget;
void setupTransparencyTable( int nBands );
/** \brief Clear the current transparency table and populate the table with the correct types for current drawing mode and data type*/
void populateTransparencyTable( QgsRasterRenderer* renderer );
void setTransparencyCell( int row, int column, double value );
void setTransparencyCellValue( int row, int column, double value );
double transparencyCellValue( int row, int column );
void setTransparencyToEdited( int row );
void adjustTransparencyCellWidth( int row, int column );
void setRendererWidget( const QString& rendererName );
//@TODO we should move these gradient generators somewhere more generic
//so they can be used generically throughut the app
QLinearGradient greenGradient();
QLinearGradient redGradient();
QLinearGradient blueGradient();
QLinearGradient grayGradient();
QLinearGradient highlightGradient();
qreal mGradientHeight;
qreal mGradientWidth;
/** Update pipe tab - interfaces list */
void updatePipeList();
/** Update items in pipe list */
void updatePipeItems();
QgsMapCanvas* mMapCanvas;
QgsMapToolEmitPoint* mPixelSelectorTool;
QgsRasterHistogramWidget* mHistogramWidget;
QVector<bool> mTransparencyToEdited;
};
#endif