diff --git a/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationControls.ui b/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationControls.ui
index 43aeb08f85..d96c7cb2bf 100644
--- a/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationControls.ui
+++ b/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationControls.ui
@@ -1,350 +1,332 @@
QmitkHistogramVisualizationControls
0
0
540
460
540
460
Form
false
0
0
530
450
400
450
false
-
false
255
0
0
255
0
0
255
0
0
255
0
0
255
0
0
255
0
0
120
120
120
120
120
120
120
120
120
-
false
0
0
0
0
16777215
16777215
Plot
-
Show Subchart
true
-
Use default #bins
true
-
QFrame::NoFrame
QFrame::Raised
0
0
0
0
0
-
60
0
100
16777215
# bins:
-
false
Press enter to recalculate statistics with new bin size.
1
10000
100
-
-
-
-
- 0
- 0
-
-
-
- 0
-
-
-
-
- 0
- 0
-
-
-
-
+
-
-
0
0
0
0
0
-
0
0
Copy to Clipboard
-
Qt::Horizontal
40
20
QmitkChartWidget
QWidget
diff --git a/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationWidget.cpp b/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationWidget.cpp
index b744d26976..ec3d8612a6 100644
--- a/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationWidget.cpp
+++ b/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationWidget.cpp
@@ -1,125 +1,127 @@
/*===================================================================
The Medical Imaging Interaction Toolkit (MITK)
Copyright (c) German Cancer Research Center,
Division of Medical and Biological Informatics.
All rights reserved.
This software is distributed WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE.
See LICENSE.txt or http://www.mitk.org for details.
===================================================================*/
#include "QmitkHistogramVisualizationWidget.h"
#include
HistogramVisualizationWidget::HistogramVisualizationWidget(QWidget* parent) : QWidget(parent)
{
m_Controls.setupUi(this);
CreateConnections();
}
void HistogramVisualizationWidget::setHistogram(itk::Statistics::Histogram::ConstPointer histogram, std::string dataLabel)
{
if (histogram == nullptr)
return;
m_Histogram = histogram;
m_Controls.chartWidget->AddData2D(ConvertHistogramToMap(m_Histogram), dataLabel);
m_Controls.chartWidget->SetChartType(dataLabel, QmitkChartWidget::ChartType::bar);
m_Controls.chartWidget->SetXAxisLabel("Gray value");
m_Controls.chartWidget->SetYAxisLabel("Frequency");
m_Controls.chartWidget->Show(m_Controls.checkBoxShowSubchart->isChecked());
SetGUIElementsEnabled(true);
}
void HistogramVisualizationWidget::Reset()
{
m_Controls.chartWidget->Clear();
SetGUIElementsEnabled(false);
}
void HistogramVisualizationWidget::CreateConnections()
{
connect(m_Controls.buttonCopyHistogramToClipboard, &QPushButton::clicked, this, &HistogramVisualizationWidget::OnClipboardButtonClicked);
connect(m_Controls.checkBoxUseDefaultNBins, &QCheckBox::clicked, this, &HistogramVisualizationWidget::OnDefaultNBinsCheckBoxChanged);
connect(m_Controls.spinBoxNBins, &QSpinBox::editingFinished, this, &HistogramVisualizationWidget::OnNBinsSpinBoxValueChanged);
connect(m_Controls.checkBoxShowSubchart, &QCheckBox::clicked, this, &HistogramVisualizationWidget::OnShowSubchartCheckBoxChanged);
}
void HistogramVisualizationWidget::SetGUIElementsEnabled(bool enabled)
{
this->setEnabled(enabled);
m_Controls.groupBoxHistogram->setEnabled(enabled);
m_Controls.groupBoxPlot->setEnabled(enabled);
m_Controls.checkBoxShowSubchart->setEnabled(enabled);
m_Controls.checkBoxUseDefaultNBins->setEnabled(enabled);
m_Controls.spinBoxNBins->setEnabled(!m_Controls.checkBoxUseDefaultNBins->isChecked());
m_Controls.buttonCopyHistogramToClipboard->setEnabled(enabled);
}
std::map HistogramVisualizationWidget::ConvertHistogramToMap(itk::Statistics::Histogram::ConstPointer histogram) const
{
std::map histogramMap;
if (histogram)
{
auto endIt = histogram->End();
auto it = histogram->Begin();
// generating Lists of measurement and frequencies
for (; it != endIt; ++it)
{
double frequency = it.GetFrequency();
double measurement = it.GetMeasurementVector()[0];
histogramMap.emplace(measurement, frequency);
}
}
return histogramMap;
}
void HistogramVisualizationWidget::OnClipboardButtonClicked()
{
if (m_Histogram)
{
QApplication::clipboard()->clear();
QString clipboard("Measurement \t Frequency\n");
- for (auto it = m_Histogram->Begin(); it != m_Histogram->End(); ++it)
+ auto iter = m_Histogram->Begin();
+ auto iterEnd = m_Histogram->End();
+ for (; iter != iterEnd; ++iter)
{
clipboard = clipboard.append("%L1 \t %L2\n")
- .arg(it.GetMeasurementVector()[0], 0, 'f', 2)
- .arg(it.GetFrequency());
+ .arg(iter.GetMeasurementVector()[0], 0, 'f', 2)
+ .arg(iter.GetFrequency());
}
QApplication::clipboard()->setText(clipboard, QClipboard::Clipboard);
}
}
void HistogramVisualizationWidget::OnDefaultNBinsCheckBoxChanged()
{
if (m_Controls.checkBoxUseDefaultNBins->isChecked())
{
m_Controls.spinBoxNBins->setEnabled(false);
m_Controls.spinBoxNBins->setValue(100);
}
else
{
m_Controls.spinBoxNBins->setEnabled(true);
}
}
void HistogramVisualizationWidget::OnNBinsSpinBoxValueChanged()
{
emit RequestHistogramUpdate(m_Controls.spinBoxNBins->value());
}
void HistogramVisualizationWidget::OnShowSubchartCheckBoxChanged()
{
m_Controls.chartWidget->Show(m_Controls.checkBoxShowSubchart->isChecked());
}
\ No newline at end of file
diff --git a/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationWidget.h b/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationWidget.h
index ada433f974..8afedb4309 100644
--- a/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationWidget.h
+++ b/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationWidget.h
@@ -1,65 +1,66 @@
/*===================================================================
The Medical Imaging Interaction Toolkit (MITK)
Copyright (c) German Cancer Research Center,
Division of Medical and Biological Informatics.
All rights reserved.
This software is distributed WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE.
See LICENSE.txt or http://www.mitk.org for details.
===================================================================*/
#pragma once
//Qt
#include
#include
#include
+//itk
#include
class MITKIMAGESTATISTICSUI_EXPORT HistogramVisualizationWidget : public QWidget
{
Q_OBJECT
public:
HistogramVisualizationWidget(QWidget* parent = nullptr);
/** \brief Draws the histogram and enables the GUI elements */
void setHistogram(itk::Statistics::Histogram::ConstPointer histogram, std::string dataLabel);
/** \brief Clears the histogram and disables all GUI elements */
void Reset();
signals:
/**
* \brief Signal to be emitted when the number of bins is changed by the user. The HistogramCalculator should connect to this signal and recalculate the data accordingly.
*/
void RequestHistogramUpdate(unsigned int nBins);
private:
void CreateConnections();
void SetGUIElementsEnabled(bool enabled);
std::map ConvertHistogramToMap(itk::Statistics::Histogram::ConstPointer histogram) const;
//slots
/** \brief Saves the histogram to the clipboard */
void OnClipboardButtonClicked();
/** \brief Toogle GUI elements if histogram default bin size checkbox value changed. */
void OnDefaultNBinsCheckBoxChanged();
void OnNBinsSpinBoxValueChanged();
void OnShowSubchartCheckBoxChanged();
private:
Ui::QmitkHistogramVisualizationControls m_Controls;
itk::Statistics::Histogram::ConstPointer m_Histogram;
};
\ No newline at end of file