ContrastDialogForm.h
Go to the documentation of this file.
1 /* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20 /*!
21  \file terralib/qt/widgets/rp/ContrastDialogForm.h
22 
23  \brief This file defines a class for a Contrast dialog.
24 */
25 
26 #ifndef __TERRALIB_QT_WIDGETS_RP_INTERNAL_CONTRASTDIALOGFORM_H
27 #define __TERRALIB_QT_WIDGETS_RP_INTERNAL_CONTRASTDIALOGFORM_H
28 
29 // TerraLib
30 #ifndef Q_MOC_RUN
31 #include "../../../maptools/AbstractLayer.h"
32 #include "../../../qt/widgets/rp/RpToolsWidget.h"
33 #endif
34 #include "../../../rp/Contrast.h"
35 #include "../../../se/ChannelSelection.h"
36 #include "../../../qt/widgets/canvas/MapDisplay.h"
37 #include "../Config.h"
38 #include "InputLayerWidget.h"
39 #include "OutputRasterWidget.h"
40 
41 // STL
42 #include <memory>
43 
44 // Qt
45 #include <qcombobox.h>
46 #include <QDialog>
47 #include <QActionGroup>
48 
49 // Forward declaration
50 namespace Ui { class ContrastDialogForm; }
51 
52 namespace te
53 {
54  namespace qt
55  {
56  namespace af
57  {
58  namespace evt
59  {
60  struct Event;
61  }
62  }
63 
64  namespace widgets
65  {
66  class RasterHistogramWidget;
67 
68  /*!
69  \class ContrastDialogForm
70 
71  \brief This class is GUI used to define the contrast parameters for the RP constast operation.
72  */
73  class TEQTWIDGETSEXPORT ContrastDialogForm : public QDialog
74  {
75  Q_OBJECT
76 
77  public:
78 
79  ContrastDialogForm(QWidget* parent = 0);
80 
82 
83  public:
84 
85  void resetWindow(te::map::AbstractLayerPtr layer);
86 
87  /*!
88  \brief This method is used to set the selected layer for contrast operation
89 
90  \param layer The layer ptr
91 
92  \note This layer MUST HAVE a valid raster object.
93  */
94  void setList(std::list<te::map::AbstractLayerPtr>& layerList);
95 
96  void setConfigurations();
97 
98  void setMapDisplay(te::qt::widgets::MapDisplay* mapDisplay);
99 
100  void setActionGroup(QActionGroup* actionGroup);
101 
103 
104  te::rp::Contrast::InputParameters getInputParams();
105 
106  te::map::AbstractLayerPtr getOutputLayer();
107 
108  void onMapDisplayExtentChanged();
109 
110  protected:
111 
112  void fillContrastTypes();
113 
114  void listBands();
115 
116  void applyPreview();
117 
118  void drawPreview(te::rst::Raster* raster);
119 
120  void drawGeom();
121 
122  void setDefaultValues(int contrastType);
123 
124  void drawHistogram();
125 
126  void getRasterFromROI();
127 
128  bool execute();
129 
130  void setDisableInterface(bool enabled);
131 
132  void clearCanvas();
133 
134  te::se::ChannelSelection* getChannelSelection();
135 
136  void closeEvent(QCloseEvent*);
137 
138  protected slots:
139 
140  void onAllImageRadioButtonToggled(bool isChecked);
141 
142  void onContrastTypeComboBoxActivated(int index);
143 
144  void onCellClicked(int row, int column);
145 
146  void onCellDoubleClicked(int row, int column);
147 
148  void onCellChanged(int row, int column);
149 
150  void onMinValueSelected(int value, int band);
151 
152  void onMinValueSelected(double value, int band);
153 
154  void onMaxValueSelected(int value, int band);
155 
156  void onMaxValueSelected(double value, int band);
157 
158  void onOkPushButtonClicked();
159 
160  void layerChanged();
161 
162  void onApplyPreviewClicked();
163 
164  void onDrawHistogramClicked();
165 
166  void onRoiRadioButtonToggled(bool isChecked);
167 
168  void onVisibleAreaRadioButtonToggled(bool isChecked);
169 
170  void onApplicationTriggered(te::qt::af::evt::Event* e);
171 
172  void onEnvelopeAcquired(te::gm::Envelope env);
173 
174  void onBandChecked();
175 
176  void onResetValuesToolButtonClicked();
177 
178  signals:
179 
180  void addLayer(te::map::AbstractLayerPtr layer);
181 
182  void closeTool();
183 
184  private:
185 
186  std::unique_ptr<Ui::ContrastDialogForm> m_ui;
187  std::unique_ptr<te::qt::widgets::RpToolsWidget> m_navigator;
188  std::unique_ptr<te::qt::widgets::RasterHistogramWidget> m_histogramWidget;
189 
195 
196  std::unique_ptr<te::rst::Raster> m_raster;
197  std::unique_ptr<te::gm::Geometry> m_geom;
198 
199  std::vector<double> m_minValue;
200  std::vector<double> m_maxValue;
201  std::string m_lastText;
202 
205  };
206 
207  } // end namespace widgets
208  } // end namespace qt
209 } // end namespace te
210 
211 #endif // __TERRALIB_QT_WIDGETS_RP_INTERNAL_CONTRASTDIALOGFORM_H
#define slots
te::qt::widgets::MapDisplay * m_mapDisplay
te::qt::widgets::OutputRasterWidget * m_outputWidget
te::map::AbstractLayerPtr m_outputLayer
std::unique_ptr< te::gm::Geometry > m_geom
A base class for application events.
Definition: Event.h:59
A widget to control the display of a set of layers.
Definition: MapDisplay.h:71
Contrast input parameters.
Definition: Contrast.h:65
This file has the OutputRasterWidget class.
An Envelope defines a 2D rectangular region.
Definition: Envelope.h:51
This file has the InputLayerWidget class.
An abstract class for raster data strucutures.
Definition: Raster.h:71
std::unique_ptr< te::rst::Raster > m_raster
TerraLib.
This class is used to set output layer.
This class is used to set input layer.
This class is GUI used to define the contrast parameters for the RP constast operation.
std::unique_ptr< te::qt::widgets::RasterHistogramWidget > m_histogramWidget
#define TEQTWIDGETSEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:63
te::qt::widgets::InputLayerWidget * m_inputWidget
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
std::unique_ptr< te::qt::widgets::RpToolsWidget > m_navigator
std::unique_ptr< Ui::ContrastDialogForm > m_ui
ChannelSelection specifies the false-color channel selection for a multi-spectral raster source (such...