27 #include "../../../dataaccess/dataset/DataSet.h" 
   28 #include "../../../dataaccess/utils/Utils.h" 
   29 #include "../../../raster/Band.h" 
   30 #include "../../../raster/Raster.h" 
   31 #include "../../../raster/Utils.h" 
   32 #include "../charts/ChartDisplay.h" 
   33 #include "../charts/ChartStyle.h" 
   34 #include "../charts/Histogram.h" 
   35 #include "../charts/HistogramChart.h" 
   36 #include "../charts/HistogramStyle.h" 
   38 #include "ui_RasterHistogramWidgetForm.h" 
   41 #include <QGridLayout> 
   44 #include <qwt_legend.h> 
   51     m_ui(new Ui::RasterHistogramWidgetForm)
 
   55   m_ui->m_applyToolButton->setIcon(QIcon::fromTheme(
"chart-bar"));
 
   68   QGridLayout* layout = 
new QGridLayout(
m_ui->m_widget);
 
   77   layout->setContentsMargins(0,0,0,0);
 
   94   m_chartDisplay->insertLegend(
new QwtLegend(), QwtPlot::RightLegend);
 
  102   m_ui->m_frame->setVisible(
false);
 
  116   m_inputRaster.reset(raster);
 
  119   m_ui->m_bandComboBox->clear();
 
  121   for(
unsigned int i = 0; i < m_inputRaster->getNumberOfBands(); ++i)
 
  126     m_ui->m_bandComboBox->addItem(strBand);
 
  132   m_outputRaster.reset(raster);
 
  137   QString toFind = QString::number(band);
 
  138   int idx = m_ui->m_bandComboBox->findText(toFind);
 
  139   m_ui->m_bandComboBox->setCurrentIndex(idx);
 
  141   if(m_inputRaster.get())
 
  143     m_histogramInput->setValues(std::map<te::dt::AbstractData*, unsigned int>());
 
  145     std::map<double, unsigned int> values =  m_inputRaster->getBand(band)->getHistogramR();
 
  147     for(std::map<double, unsigned int>::iterator it = values.begin(); it != values.end(); ++it)
 
  149       m_histogramInput->insert(std::make_pair(
new te::dt::Double(it->first), it->second));
 
  152     m_histogramInput->setMinValue(m_inputRaster->getBand(band)->getMinValue().real());
 
  154     m_histogramChartInput->setData();
 
  157   if(m_outputRaster.get())
 
  159     m_histogramOutput->setValues(std::map<te::dt::AbstractData*, unsigned int>());
 
  163     std::map<double, unsigned int> values =  m_outputRaster->getBand(band)->getHistogramR();
 
  165     for(std::map<double, unsigned int>::iterator it = values.begin(); it != values.end(); ++it)
 
  167       m_histogramOutput->insert(std::make_pair(
new te::dt::Double(it->first), it->second));
 
  173     m_histogramOutput->setMinValue(m_outputRaster->getBand(band)->getMinValue().real());
 
  175     m_histogramChartOutput->setData();
 
  178   m_chartDisplay->updateLayout();
 
  180   m_chartDisplay->replot();
 
  188       m_minValueLine->attach(m_chartDisplay);
 
  190       m_minValueLine->detach();
 
  198     m_minValueLine = 
new QwtPlotMarker();
 
  199     m_minValueLine->setLabel(QString::fromLatin1(
"Minimum"));
 
  200     m_minValueLine->setLabelAlignment(Qt::AlignLeft | Qt::AlignVCenter);
 
  201     m_minValueLine->setLabelOrientation(Qt::Vertical);
 
  202     m_minValueLine->setLineStyle(QwtPlotMarker::VLine);
 
  204     m_minValueLine->attach(m_chartDisplay);
 
  207   m_minValueLine->setXValue(value);
 
  211     m_chartDisplay->updateLayout();
 
  213     m_chartDisplay->replot();
 
  220     m_minValueLine->setLabel(value);
 
  228       m_maxValueLine->attach(m_chartDisplay);
 
  230       m_maxValueLine->detach();
 
  238     m_maxValueLine = 
new QwtPlotMarker();
 
  239     m_maxValueLine->setLabel(QString::fromLatin1(
"Maximum"));
 
  240     m_maxValueLine->setLabelAlignment(Qt::AlignLeft | Qt::AlignVCenter);
 
  241     m_maxValueLine->setLabelOrientation(Qt::Vertical);
 
  242     m_maxValueLine->setLineStyle(QwtPlotMarker::VLine);
 
  244     m_maxValueLine->attach(m_chartDisplay);
 
  247   m_maxValueLine->setXValue(value);
 
  251     m_chartDisplay->updateLayout();
 
  253     m_chartDisplay->replot();
 
  260     m_maxValueLine->setLabel(value);
 
  265   int index = m_ui->m_bandComboBox->currentIndex();
 
  267   drawHistogram(index);
 
  272   int xMin = (int)point.x();
 
  274   emit minValueSelected(xMin, m_ui->m_bandComboBox->currentIndex());
 
  279   int xMax = (int)point.x();
 
  281   emit maxValueSelected(xMax, m_ui->m_bandComboBox->currentIndex());
 
An abstract class for raster data strucutures. 
 
A template for atomic data types (integers, floats, strings and others).