28 #include "../../../color/ColorBar.h" 
   29 #include "../../../common/STLUtils.h" 
   30 #include "../../../datatype.h" 
   31 #include "../../../maptools/GroupingAlgorithms.h" 
   32 #include "../../../maptools/Utils.h" 
   33 #include "../../../raster.h" 
   34 #include "../../../raster/RasterSummary.h" 
   35 #include "../../../raster/RasterSummaryManager.h" 
   36 #include "../../../se/ColorMap.h" 
   37 #include "../../../se/Categorize.h" 
   38 #include "../../../se/Enums.h" 
   39 #include "../../../se/Interpolate.h" 
   40 #include "../../../se/InterpolationPoint.h" 
   41 #include "../../../se/ParameterValue.h" 
   42 #include "../../widgets/colorbar/ColorBar.h" 
   44 #include "ui_ColorMapWidgetForm.h" 
   47 #include <QtGui/QPainter> 
   48 #include <QtGui/QValidator> 
   56     m_ui(new Ui::ColorMapWidgetForm),
 
   62   QGridLayout* l = 
new QGridLayout(
m_ui->m_colorBarWidget);
 
   63   l->setContentsMargins(0,0,0,0);
 
   67   m_ui->m_minValueLineEdit->setValidator(
new QDoubleValidator(
this));
 
   68   m_ui->m_maxValueLineEdit->setValidator(
new QDoubleValidator(
this));
 
   74   connect(
m_ui->m_bandComboBox, SIGNAL(activated(QString)), 
this, SLOT(
onBandSelected(QString)));
 
   93   m_ui->m_bandComboBox->clear();
 
   95   for(
int i = 0; i < nBands; ++i)
 
  100     m_ui->m_bandComboBox->addItem(strBand);
 
  104     onBandSelected(m_ui->m_bandComboBox->itemText(0));
 
  118   return m_cm->
clone();
 
  123   if(m_ui->m_bandComboBox->count() != 0)
 
  125     return m_ui->m_bandComboBox->currentText().toStdString();
 
  135   m_cbWidget->setHeight(20);
 
  136   m_cbWidget->setColorBar(m_cb);
 
  137   m_cbWidget->setScaleVisible(
false);
 
  139   m_ui->m_transformComboBox->clear();
 
  148   m_ui->m_tableWidget->setRowCount(0);
 
  155   if(m_cm->getCategorize())
 
  157     for(
int i = 0; i < m_ui->m_transformComboBox->count(); ++i)
 
  160         m_ui->m_transformComboBox->setCurrentIndex(i);
 
  163     std::vector<te::se::ParameterValue*> t = m_cm->getCategorize()->getThresholds();
 
  164     std::vector<te::se::ParameterValue*> tV = m_cm->getCategorize()->getThresholdValues();
 
  166     m_ui->m_slicesSpinBox->setValue(tV.size() - 2);
 
  168     m_ui->m_tableWidget->setRowCount(tV.size() - 2);
 
  170     for(
size_t i = 1; i < tV.size() - 1; ++i)
 
  173       std::string lowerLimit = 
"";
 
  174       std::string upperLimit = 
"";
 
  182       else if(i == tV.size() - 1)
 
  196       QTableWidgetItem* item = 
new QTableWidgetItem();
 
  197       item->setBackgroundColor(color);
 
  198       item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
 
  199       m_ui->m_tableWidget->setItem(i - 1, 1, item);
 
  202       std::string range = lowerLimit + 
" - " + upperLimit;
 
  203       QTableWidgetItem* itemRange = 
new QTableWidgetItem();
 
  204       itemRange->setText(range.c_str());
 
  205       itemRange->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
 
  206       m_ui->m_tableWidget->setItem(i - 1, 0, itemRange);
 
  209       std::string rangeStr = lowerLimit + 
" to " + upperLimit;
 
  210       QTableWidgetItem* itemRangeStr = 
new QTableWidgetItem();
 
  211       itemRangeStr->setText(rangeStr.c_str());
 
  212       itemRangeStr->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
 
  213       m_ui->m_tableWidget->setItem(i - 1, 2, itemRangeStr);
 
  216   else if(m_cm->getInterpolate())
 
  218     for(
int i = 0; i < m_ui->m_transformComboBox->count(); ++i)
 
  221         m_ui->m_transformComboBox->setCurrentIndex(i);
 
  224     std::vector<te::se::InterpolationPoint*> ip = m_cm->getInterpolate()->getInterpolationPoints();
 
  226     m_ui->m_slicesSpinBox->setValue(ip.size() - 1);
 
  228     m_ui->m_tableWidget->setRowCount(ip.size() - 1);
 
  230     for(
size_t i = 0; i < ip.size() - 1; ++i)
 
  240       valStrBegin.setNum(ipItem->
getData());
 
  241       valStrEnd.setNum(ip[i+1]->getData());
 
  244       valStr.append(valStrBegin);
 
  245       valStr.append(
" - ");
 
  246       valStr.append(valStrEnd);
 
  249       QTableWidgetItem* item = 
new QTableWidgetItem();
 
  250       item->setBackgroundColor(color);
 
  251       item->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
 
  252       m_ui->m_tableWidget->setItem(i, 1, item);
 
  255       QTableWidgetItem* itemRange = 
new QTableWidgetItem();
 
  256       itemRange->setText(valStr);
 
  257       itemRange->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
 
  258       m_ui->m_tableWidget->setItem(i, 0, itemRange);
 
  261       QTableWidgetItem* itemRangeStr = 
new QTableWidgetItem();
 
  262       itemRangeStr->setText(valStr);
 
  263       itemRangeStr->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
 
  264       m_ui->m_tableWidget->setItem(i, 2, itemRangeStr);
 
  268   m_ui->m_tableWidget->resizeColumnToContents(0);
 
  269   m_ui->m_tableWidget->resizeColumnToContents(1);
 
  274   int sliceValue = m_ui->m_slicesSpinBox->value();
 
  276   std::vector<te::color::RGBAColor> colorVec = m_cb->getSlices(sliceValue);
 
  278   std::vector<te::map::GroupingItem*> legVec;
 
  280   std::vector<double> vec;
 
  281   vec.push_back(m_ui->m_minValueLineEdit->text().toDouble());
 
  282   vec.push_back(m_ui->m_maxValueLineEdit->text().toDouble());
 
  288   c->setFallbackValue(
"#000000");
 
  291   QColor cWhite(Qt::white);
 
  292   std::string colorWhiteStr = cWhite.name().toLatin1().data();
 
  297   for(
size_t i = 0; i < colorVec.size(); ++i)
 
  299     QColor color(colorVec[i].getRed(), colorVec[i].getGreen(), colorVec[i].getBlue(), colorVec[i].getAlpha());
 
  301     std::string rangeStr = legVec[i]->getLowerLimit();
 
  302     std::string colorStr = color.name().toStdString();
 
  307     if(i == colorVec.size() - 1)
 
  309       rangeStr = legVec[i]->getUpperLimit();
 
  321     m_cm->setCategorize(c);
 
  322     m_cm->setInterpolate(0);
 
  328   int sliceValue = m_ui->m_slicesSpinBox->value();
 
  330   std::vector<te::color::RGBAColor> colorVec = m_cb->getSlices(sliceValue + 1);
 
  332   std::vector<te::map::GroupingItem*> legVec;
 
  334   std::vector<double> vec;
 
  335   vec.push_back(m_ui->m_minValueLineEdit->text().toDouble());
 
  336   vec.push_back(m_ui->m_maxValueLineEdit->text().toDouble());
 
  343   interpolate->setFallbackValue(
"#000000");
 
  348   for(
size_t i = 0; i < colorVec.size(); ++i)
 
  350     QColor color(colorVec[i].getRed(), colorVec[i].getGreen(), colorVec[i].getBlue(), colorVec[i].getAlpha());
 
  352     if(i == colorVec.size() - 1)
 
  354       QString rangeStr = legVec[i - 1]->getUpperLimit().c_str();
 
  355       std::string colorStr = color.name().toLatin1().data();
 
  359       ip->
setData(rangeStr.toDouble());
 
  362       interpolate->add(ip);
 
  366       QString rangeStr = legVec[i]->getLowerLimit().c_str();
 
  367       std::string colorStr = color.name().toLatin1().data();
 
  371       ip->
setData(rangeStr.toDouble());
 
  374       interpolate->add(ip);
 
  380     m_cm->setInterpolate(interpolate);
 
  381     m_cm->setCategorize(0);
 
  393   int index = m_ui->m_transformComboBox->currentIndex();
 
  395   int type = m_ui->m_transformComboBox->itemData(index).toInt();
 
  399     buildCategorizationMap();
 
  403     buildInterpolationMap();
 
  410   emit applyPushButtonClicked();
 
  424   const std::complex<double>* cmin = rsMin->at(0).m_minVal;
 
  425   const std::complex<double>* cmax = rsMax->at(0).m_maxVal;
 
  426   double min = cmin->real();
 
  427   double max = cmax->real();
 
  431   m_ui->m_minValueLineEdit->setText(strMin);
 
  435   m_ui->m_maxValueLineEdit->setText(strMax);
 
boost::ptr_vector< BandSummary > RasterSummary
RasterSummary is just a typedef of a boost::ptr_vector. 
 
void buildCategorizationMap()
 
It models the concept of color bar. 
 
void setData(const double &d)
 
te::se::ColorMap * getColorMap()
 
They are used to define a graph of points. 
 
void setColorMap(te::se::ColorMap *cm)
 
ColorMapWidget(QWidget *parent=0, Qt::WindowFlags f=0)
Constructs a ShadedReliefWidget dialog which is a child of parent, with widget flags set to f...
 
The transformation of continuous values to distinct values (Categorize function). ...
 
It QWidget implementation of color bar. 
 
virtual std::size_t getNumberOfBands() const =0
Returns the number of bands (dimension of cells attribute values) in the raster. 
 
void setRaster(te::rst::Raster *r)
 
The transformation of continuous values to a number of values (Interpolate function). 
 
void setValue(ParameterValue *v)
 
te::qt::widgets::colorbar::ColorBar * m_cbWidget
QWT widget for color bar. 
 
A ColorMap defines either the colors of a pallette-type raster source or the mapping of numeric pixel...
 
std::auto_ptr< Ui::ColorMapWidgetForm > m_ui
Dialog form. 
 
void GroupingByEqualSteps(iterator begin, iterator end, int nSteps, std::vector< te::map::GroupingItem * > &legend, int precision=0, bool countElements=true)
It groups the values defined by a range of iterators using the equal steps algorithm. 
 
void onBandSelected(QString value)
 
void updateUi()
Updates the widget form based on internal fill element. 
 
A helper class for 32-bit RGBA (Red-Green-Blue-Alpha channel) color. 
 
std::string getCurrentBand()
 
void onApplyPushButtonClicked()
 
TEMAPEXPORT std::string GetString(const te::se::ParameterValue *param)
Gets the parameter value as string. 
 
ParameterValue * getValue() const 
 
#define TE_OPAQUE
For an RGBA color this is the value of the alpha-channel for totally opaque. 
 
void buildInterpolationMap()
 
An abstract class for raster data strucutures. 
 
void initialize()
Internal method to initialize the widget (e.g.: color, combos, icons, etc.) 
 
static RasterSummaryManager & getInstance()
It returns a reference to the singleton instance. 
 
The "ParameterValueType" uses WFS-Filter expressions to give values for SE graphic parameters...
 
~ColorMapWidget()
Destructor.