Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkIntensityProfileVisualizationWidget.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
14 
15 #include <QClipboard>
16 
18 {
19  m_Controls.setupUi(this);
20  m_Controls.checkBoxShowSubchart->setChecked(false);
21  CreateConnections();
22 }
23 
24 
25 
26 void QmitkIntensityProfileVisualizationWidget::SetIntensityProfile(mitk::IntensityProfile::ConstPointer intensityProfile, const std::string& dataLabel)
27 {
28  if (intensityProfile == nullptr)
29  return;
30 
31  m_IntensityProfileList = mitk::CreateVectorFromIntensityProfile(intensityProfile);
32  if (m_IntensityProfileList.empty())
33  return;
34 
35  m_Controls.chartWidget->AddData1D(m_IntensityProfileList, dataLabel);
36  m_Controls.chartWidget->SetChartType(dataLabel, QmitkChartWidget::ChartType::line);
37  m_Controls.chartWidget->SetXAxisLabel("Distance");
38  m_Controls.chartWidget->SetYAxisLabel("Intensity");
39  m_Controls.chartWidget->SetShowLegend(false);
40  m_Controls.chartWidget->Show(m_Controls.checkBoxShowSubchart->isChecked());
41  SetGUIElementsEnabled(true);
42 }
43 
45 {
46  m_Controls.chartWidget->Clear();
47  SetGUIElementsEnabled(false);
48  m_IntensityProfileList.clear();
49 }
50 
52 {
53  m_ChartStyle = style;
54 }
55 
56 void QmitkIntensityProfileVisualizationWidget::CreateConnections()
57 {
58  connect(m_Controls.checkBoxShowSubchart, &QCheckBox::clicked, this, &QmitkIntensityProfileVisualizationWidget::OnShowSubchartCheckBoxChanged);
59  connect(m_Controls.buttonCopyToClipboard, &QPushButton::clicked, this, &QmitkIntensityProfileVisualizationWidget::OnClipboardButtonClicked);
60  connect(m_Controls.chartWidget, &QmitkChartWidget::PageSuccessfullyLoaded, this, &QmitkIntensityProfileVisualizationWidget::OnPageSuccessfullyLoaded);
61 }
62 
63 void QmitkIntensityProfileVisualizationWidget::SetGUIElementsEnabled(bool enabled)
64 {
65  this->setEnabled(enabled);
66  m_Controls.groupBoxIntensityProfile->setEnabled(enabled);
67  m_Controls.groupBoxPlot->setEnabled(enabled);
68  m_Controls.buttonCopyToClipboard->setEnabled(enabled);
69  m_Controls.checkBoxShowSubchart->setEnabled(enabled);
70  m_Controls.chartWidget->setEnabled(enabled);
71 }
72 
73 std::vector<double> QmitkIntensityProfileVisualizationWidget::ConvertIntensityProfileToVector(mitk::IntensityProfile::ConstPointer intensityProfile) const
74 {
75  std::vector<double> intensityProfileList;
76  if (intensityProfile != nullptr)
77  {
78  auto end = intensityProfile->End();
79 
80  for (auto it = intensityProfile->Begin(); it != end; ++it)
81  {
82  intensityProfileList.push_back(it.GetMeasurementVector()[0]);
83  }
84  }
85  return intensityProfileList;
86 }
87 
88 void QmitkIntensityProfileVisualizationWidget::OnClipboardButtonClicked()
89 {
90  if (m_IntensityProfileList.empty())
91  return;
92 
93  QApplication::clipboard()->clear();
94 
95  QString clipboard("Pixel \t Intensity\n");
96  for (unsigned int i = 0; i < m_IntensityProfileList.size(); i++)
97  {
98  clipboard = clipboard.append("%L1 \t %L2\n")
99  .arg(QString::number(i))
100  .arg(QString::number(m_IntensityProfileList.at(i)));
101  }
102  QApplication::clipboard()->setText(clipboard, QClipboard::Clipboard);
103 }
104 
105 void QmitkIntensityProfileVisualizationWidget::OnShowSubchartCheckBoxChanged()
106 {
107  m_Controls.chartWidget->Show(m_Controls.checkBoxShowSubchart->isChecked());
108 }
109 
110 void QmitkIntensityProfileVisualizationWidget::OnPageSuccessfullyLoaded()
111 {
112  m_Controls.chartWidget->SetTheme(m_ChartStyle);
113 }
void SetIntensityProfile(mitk::IntensityProfile::ConstPointer intensityProfile, const std::string &dataLabel)
ColorTheme
enum of chart style (modifies background and line color).
MITKIMAGESTATISTICS_EXPORT std::vector< IntensityProfile::MeasurementType > CreateVectorFromIntensityProfile(IntensityProfile::ConstPointer intensityProfile)
Convert an intensity profile to a standard library vector.
void Reset()
Clears the intensity profile and disables all GUI elements.
void PageSuccessfullyLoaded()