27 #include "../../../common/StringUtils.h" 
   28 #include "../../../dataaccess/dataset/DataSet.h" 
   29 #include "../../../dataaccess/utils/Utils.h" 
   30 #include "../../../raster/Raster.h" 
   31 #include "../../../rp/Functions.h" 
   33 #include "ui_ComposeBandsWizardPageForm.h" 
   36 #include <QMessageBox> 
   41   : QWizardPage(parent),
 
   42     m_ui(new Ui::ComposeBandsWizardPageForm)
 
   47   m_ui->m_addToolButton->setIcon(QIcon::fromTheme(
"list-add"));
 
   48   m_ui->m_removeToolButton->setIcon(QIcon::fromTheme(
"list-remove"));
 
   58   this->setTitle(tr(
"Compose / Decompose Bands"));
 
   59   this->setSubTitle(tr(
"Select the operation (Compose / Decompose) and set their specific parameters."));
 
   74   m_layerList = layerList;
 
   76   m_ui->m_composeTableWidget->setRowCount(0);
 
   77   m_ui->m_decomposeTableWidget->setRowCount(0);
 
   79   std::list<te::map::AbstractLayerPtr>::iterator it;
 
   82   for(it = m_layerList.begin(); it!= m_layerList.end(); ++it)
 
   87     std::auto_ptr<te::da::DataSet> ds = l->getData();
 
   93       std::auto_ptr<te::rst::Raster> inputRst = ds->getRaster(rpos);
 
   97         int newrow = m_ui->m_composeTableWidget->rowCount();
 
   98         m_ui->m_composeTableWidget->insertRow(newrow);
 
  101         QComboBox* layerCmbBox = 
new QComboBox(
this);
 
  103         connect(layerCmbBox, SIGNAL(activated(
int)), 
this, SLOT(onLayerCmbActivated(
int)));
 
  105         std::list<te::map::AbstractLayerPtr>::iterator itLayer;
 
  110         for(itLayer = m_layerList.begin(); itLayer!= m_layerList.end(); ++itLayer)
 
  114           layerCmbBox->addItem(lItem->getTitle().c_str(), QVariant::fromValue(lItem));
 
  124         layerCmbBox->setCurrentIndex(curItem);
 
  126         m_ui->m_composeTableWidget->setCellWidget(newrow, 1, layerCmbBox);
 
  128         m_cmbMap.insert(std::map<QComboBox*, int>::value_type(layerCmbBox, newrow));
 
  131         QComboBox* cmbBox = 
new QComboBox(
this);
 
  133         for(
unsigned int i = 0; i < inputRst->getNumberOfBands(); ++i)
 
  135           cmbBox->addItem(QString::number(i));
 
  138         m_ui->m_composeTableWidget->setCellWidget(newrow, 0, cmbBox);
 
  144   if(!m_layerList.empty())
 
  149     std::auto_ptr<te::da::DataSet> ds = l->getData();
 
  151     m_ui->m_rasterLineEdit->setText(l->getTitle().c_str());
 
  157       std::auto_ptr<te::rst::Raster> inputRst = ds->getRaster(rpos);
 
  161         for(
unsigned int i = 0; i < inputRst->getNumberOfBands(); ++i)
 
  163           int newrow = m_ui->m_decomposeTableWidget->rowCount();
 
  164           m_ui->m_decomposeTableWidget->insertRow(newrow);
 
  167           QString bName(tr(
"Band "));
 
  168           bName.append(QString::number(i));
 
  170           QTableWidgetItem* itemBand = 
new QTableWidgetItem(bName);
 
  171           itemBand->setFlags(Qt::ItemIsEnabled | Qt::ItemIsUserCheckable);
 
  172           itemBand->setCheckState(Qt::Checked);
 
  173           m_ui->m_decomposeTableWidget->setItem(newrow, 0, itemBand);
 
  182   if(m_ui->m_tabWidget->currentIndex() == 0)
 
  190   if(m_ui->m_tabWidget->currentIndex() == 1)
 
  198   int rowCount = m_ui->m_composeTableWidget->rowCount();
 
  200   for(
int i = 0; i < rowCount; ++i)
 
  202     QComboBox* layerCmb = (QComboBox*)m_ui->m_composeTableWidget->cellWidget(i, 1);
 
  204     int curIdx = layerCmb->currentIndex();
 
  205     QVariant varLayer = layerCmb->itemData(curIdx, Qt::UserRole);
 
  209     std::auto_ptr<te::da::DataSet> ds = layer->getData();
 
  216     rasters.push_back(ds->getRaster(rpos).release());
 
  219     QComboBox* bandCmb = (QComboBox*)m_ui->m_composeTableWidget->cellWidget(i, 0);
 
  221     bands.push_back((
unsigned int)bandCmb->currentText().toInt());
 
  225   int idx = m_ui->m_interpolatorComboBox->currentIndex();
 
  234   std::auto_ptr<te::da::DataSet> ds = l->getData();
 
  241   raster = ds->getRaster(rpos).release();
 
  244   for(
int r = 0; r <  m_ui->m_decomposeTableWidget->rowCount(); ++r)
 
  246     if(m_ui->m_decomposeTableWidget->item(r, 0)->checkState() == Qt::Checked)
 
  248       bands.push_back((
unsigned int)r);
 
  255   int newrow = m_ui->m_composeTableWidget->rowCount();
 
  256   m_ui->m_composeTableWidget->insertRow(newrow);
 
  259   QComboBox* layerCmbBox = 
new QComboBox(
this);
 
  261   connect(layerCmbBox, SIGNAL(activated(
int)), 
this, SLOT(onLayerCmbActivated(
int)));
 
  263   std::list<te::map::AbstractLayerPtr>::iterator itLayer;
 
  265   for(itLayer = m_layerList.begin(); itLayer!= m_layerList.end(); ++itLayer)
 
  269     layerCmbBox->addItem(lItem->getTitle().c_str(), QVariant::fromValue(lItem));
 
  272   m_ui->m_composeTableWidget->setCellWidget(newrow, 1, layerCmbBox);
 
  274   m_cmbMap.insert(std::map<QComboBox*, int>::value_type(layerCmbBox, newrow));
 
  278   QComboBox* cmbBox = 
new QComboBox(
this);
 
  280   m_ui->m_composeTableWidget->setCellWidget(newrow, 0, cmbBox);
 
  286      std::auto_ptr<te::da::DataSet> ds = lFirst->getData();
 
  292       std::auto_ptr<te::rst::Raster> inputRst = ds->getRaster(rpos);
 
  296         for(
unsigned int i = 0; i < inputRst->getNumberOfBands(); ++i)
 
  298           cmbBox->addItem(QString::number(i));
 
  307   int currow = m_ui->m_composeTableWidget->currentRow();
 
  308   m_ui->m_composeTableWidget->removeRow(currow);
 
  313   QComboBox* cmb = 
dynamic_cast<QComboBox*
>(sender());
 
  315   QVariant varLayer = cmb->itemData(index, Qt::UserRole);
 
  318   int row = m_cmbMap[cmb];
 
  320   QComboBox* bandCmb = (QComboBox*)m_ui->m_composeTableWidget->cellWidget(row, 0);
 
  325   std::auto_ptr<te::da::DataSet> ds = layer->getData();
 
  331     std::auto_ptr<te::rst::Raster> inputRst = ds->getRaster(rpos);
 
  335       for(
unsigned int i = 0; i < inputRst->getNumberOfBands(); ++i)
 
  337         bandCmb->addItem(QString::number(i));
 
  345   m_ui->m_interpolatorComboBox->clear();
 
Near neighborhood interpolation method. 
 
std::auto_ptr< Ui::ComposeBandsWizardPageForm > m_ui
 
ComposeBandsWizardPage(QWidget *parent=0)
 
void onAddToolButtonClicked()
 
InterpolationMethod
Allowed interpolation methods. 
 
InterpolationMethod Method
Allowed interpolation methods. 
 
void setList(std::list< te::map::AbstractLayerPtr > &layerList)
 
Q_DECLARE_METATYPE(te::map::AbstractLayerPtr)
 
An abstract class for raster data strucutures. 
 
void onLayerCmbActivated(int index)
 
void getComposeParameters(std::vector< const te::rst::Raster * > &rasters, std::vector< unsigned int > &bands, te::rst::Interpolator::Method &interpMethod)
 
Bicubic interpolation method. 
 
void getDecomposeParameters(te::rst::Raster *&raster, std::vector< unsigned int > &bands)
 
Bilinear interpolation method. 
 
void onRemoveToolButtonClicked()
 
This file defines a class for a Compose / Decompose Bands Wizard page. 
 
TEDATAACCESSEXPORT std::size_t GetFirstPropertyPos(const te::da::DataSet *dataset, int datatype)
 
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
 
void fillInterpolatorTypes()
 
~ComposeBandsWizardPage()