27 #include "../../../color/ColorBar.h" 28 #include "../../../common/STLUtils.h" 29 #include "../../../dataaccess/dataset/DataSet.h" 30 #include "../../../dataaccess/dataset/DataSetType.h" 31 #include "../../../dataaccess/utils/Utils.h" 32 #include "../../../datatype.h" 33 #include "../../../maptools/DataSetLayer.h" 34 #include "../../../maptools/GroupingAlgorithms.h" 35 #include "../../../maptools/RasterLayer.h" 36 #include "../../../fe/Literal.h" 37 #include "../../../fe/Utils.h" 38 #include "../../../raster.h" 39 #include "../../../raster/RasterSummary.h" 40 #include "../../../raster/RasterSummaryManager.h" 41 #include "../../../se/ColorMap.h" 42 #include "../../../se/Categorize.h" 43 #include "../../../se/MapItem.h" 44 #include "../../../se/ParameterValue.h" 45 #include "../../../se/RasterSymbolizer.h" 46 #include "../../../se/Rule.h" 47 #include "../../../se/Utils.h" 48 #include "../../widgets/colorbar/ColorBar.h" 49 #include "../../widgets/colorbar/ColorCatalogWidget.h" 51 #include "ui_SlicingColorMapForm.h" 54 #include <QColorDialog> 55 #include <QMessageBox> 57 #include <QTableWidget> 65 m_ui(new
Ui::SlicingColorMapForm),
72 QGridLayout* l =
new QGridLayout(
m_ui->m_colorBarWidget);
73 l->setContentsMargins(0, 0, 0, 0);
77 m_ui->m_minValueLineEdit->setValidator(
new QDoubleValidator(
this));
78 m_ui->m_maxValueLineEdit->setValidator(
new QDoubleValidator(
this));
123 for (
int i = 0; i <
m_ui->m_tableWidget->rowCount(); ++i)
125 QColor color = QColor::fromRgb(
m_ui->m_tableWidget->item(i, 0)->icon().pixmap(24, 24).toImage().pixel(1, 1));
127 std::string rangeStr =
m_ui->m_tableWidget->item(i, 1)->text().toUtf8().data();
129 rangeStr +=
m_ui->m_tableWidget->item(i, 2)->text().toUtf8().data();
130 std::string colorStr = color.name().toUtf8().data();
153 m_ui->m_tableWidget->setRowCount(0);
167 m_ui->m_slicesSpinBox->setValue(static_cast<int>(tV.size() - 2));
169 m_ui->m_tableWidget->setRowCount(static_cast<int>(tV.size() - 2));
179 for (
size_t i = 1; i < tV.size() - 1; ++i)
182 std::string lowerLimit;
183 std::string upperLimit;
191 else if (i == tV.size() - 1)
206 if (count != 0 && count != static_cast<int>(tV.size()) - 2)
208 double pos = (1. / (tV.size() - 2)) * count;
222 p.fillRect(0, 0, 24, 24, color);
223 p.setBrush(Qt::transparent);
225 p.drawRect(0, 0, 23, 23);
229 QTableWidgetItem* item =
new QTableWidgetItem(pix,
"");
230 item->setFlags(Qt::ItemIsEnabled);
231 m_ui->m_tableWidget->setItem(static_cast<int>(i - 1), 0, item);
234 std::string rangeLower = lowerLimit;
235 QTableWidgetItem* itemRangeLower =
new QTableWidgetItem();
236 itemRangeLower->setText(rangeLower.c_str());
237 itemRangeLower->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
238 m_ui->m_tableWidget->setItem(static_cast<int>(i - 1), 1, itemRangeLower);
241 std::string rangeUpper = upperLimit;
242 QTableWidgetItem* itemRangeUpper =
new QTableWidgetItem();
243 itemRangeUpper->setText(rangeUpper.c_str());
244 itemRangeUpper->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
245 m_ui->m_tableWidget->setItem(static_cast<int>(i - 1), 2, itemRangeUpper);
259 m_ui->m_tableWidget->resizeColumnsToContents();
260 #if (QT_VERSION >= 0x050000) 261 m_ui->m_tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
263 m_ui->m_tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
271 const std::complex<double>* cmin = rsMin->at(band).m_minVal;
272 const std::complex<double>* cmax = rsMax->at(band).m_maxVal;
273 double min = cmin->real();
274 double max = cmax->real();
278 m_ui->m_minValueLineEdit->setText(strMin);
282 m_ui->m_maxValueLineEdit->setText(strMax);
293 int sliceValue =
m_ui->m_slicesSpinBox->value();
295 std::vector<te::color::RGBAColor> colorVec;
299 std::vector<te::se::Rule*> legVec;
301 std::vector<double> vec;
302 vec.push_back(
m_ui->m_minValueLineEdit->text().toDouble());
303 vec.push_back(
m_ui->m_maxValueLineEdit->text().toDouble());
307 m_ui->m_tableWidget->setRowCount(static_cast<int>(legVec.size()));
310 for (std::size_t t = 0; t < legVec.size(); ++t)
313 QColor color(colorVec[t].getRed(), colorVec[t].getGreen(), colorVec[t].getBlue(), colorVec[t].getAlpha());
318 p.fillRect(0, 0, 24, 24, color);
319 p.setBrush(Qt::transparent);
321 p.drawRect(0, 0, 23, 23);
325 QTableWidgetItem* item =
new QTableWidgetItem(icon,
"");
326 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
327 m_ui->m_tableWidget->setItem(static_cast<int>(t), 0, item);
329 std::string rangeStrLower;
330 std::string rangeStrUpper;
335 QTableWidgetItem* itemRangeLower =
new QTableWidgetItem();
336 itemRangeLower->setText(rangeStrLower.c_str());
337 itemRangeLower->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
338 m_ui->m_tableWidget->setItem(static_cast<int>(t), 1, itemRangeLower);
341 QTableWidgetItem* itemRangeUpper =
new QTableWidgetItem();
342 itemRangeUpper->setText(rangeStrUpper.c_str());
343 itemRangeUpper->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable);
344 m_ui->m_tableWidget->setItem(static_cast<int>(t), 2, itemRangeUpper);
347 m_ui->m_tableWidget->resizeColumnsToContents();
349 #if (QT_VERSION >= 0x050000) 350 m_ui->m_tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
352 m_ui->m_tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
360 int curCol =
m_ui->m_tableWidget->currentColumn();
364 QColor bgColor = QColor::fromRgb(item->icon().pixmap(24, 24).toImage().pixel(1, 1));
366 QColor newBgColor = QColorDialog::getColor(bgColor,
m_ui->m_tableWidget);
368 if (newBgColor.isValid())
369 bgColor = newBgColor;
The transformation of continuous values to distinct values (Categorize function). ...
void setLookupValue(ParameterValue *v)
void setCategorize(Categorize *c)
void GroupingByEqualSteps(std::string attrName, iterator begin, iterator end, int nSteps, std::vector< te::se::Rule * > &rules, int precision=0)
It groups the values defined by a range of iterators using the equal steps algorithm.
The "ParameterValueType" uses WFS-Filter expressions to give values for SE graphic parameters...
const std::vector< ParameterValue * > & getThresholds() const
TEFEEXPORT void GetFilterStepValues(const te::fe::Filter *filter, std::string &valueMin, std::string &valueMax)
static RasterSummaryManager & getInstance()
It returns a reference to the singleton instance.
An abstract class for raster data strucutures.
virtual std::size_t getNumberOfBands() const =0
Returns the number of bands (dimension of cells attribute values) in the raster.
boost::ptr_vector< BandSummary > RasterSummary
RasterSummary is just a typedef of a boost::ptr_vector.
void setRecode(Recode *i)
const std::vector< te::color::RGBAColor > & getSlices(const int &n)
It generates color bar.
void addColor(const RGBAColor &color, const double &pos)
It adds a color in the color bar.
A helper class for 32-bit RGBA (Red-Green-Blue-Alpha channel) color.
Categorize * getCategorize() const
It models the concept of color bar.
void setInterpolate(Interpolate *i)
void addThreshold(ParameterValue *v)
TESEEXPORT std::string GetString(const te::se::ParameterValue *param)
It gets the parameter value as a string.
A ColorMap defines either the colors of a pallette-type raster source or the mapping of numeric pixel...
void addValue(ParameterValue *v)
const std::vector< ParameterValue * > & getThresholdValues() const
void setFallbackValue(const std::string &v)