Medical Imaging Interaction Toolkit  2024.12.00
Medical Imaging Interaction Toolkit
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
QmitkPiecewiseFunctionCanvas.h
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 
13 #ifndef QmitkPiecewiseFunctionCanvas_h
14 #define QmitkPiecewiseFunctionCanvas_h
15 
18 
19 #include <vtkPiecewiseFunction.h>
20 
22 {
23  Q_OBJECT
24 
25 public:
26  QmitkPiecewiseFunctionCanvas(QWidget *parent = nullptr, Qt::WindowFlags f = {});
27  void paintEvent(QPaintEvent *e) override;
28  void SetTitle(const QString &title);
29  int GetNearHandle(int x, int y, unsigned int maxSquaredDistance = 100) override;
30 
31  void SetPiecewiseFunction(vtkPiecewiseFunction *piecewiseFunction)
32  {
33  this->m_PiecewiseFunction = piecewiseFunction;
34  this->SetMin(m_PiecewiseFunction->GetRange()[0]);
35  this->SetMax(m_PiecewiseFunction->GetRange()[1]);
36  setEnabled(true);
37 
38  update();
39  }
40 
41  int AddFunctionPoint(double x, double val) override { return m_PiecewiseFunction->AddPoint(x, val); }
42  void RemoveFunctionPoint(double x) override
43  {
44  int old_size = GetFunctionSize();
45  m_PiecewiseFunction->RemovePoint(x);
46  if (GetFunctionSize() + 1 != old_size)
47  {
48  std::cout << "old/new size" << old_size << "/" << GetFunctionSize() << std::endl;
49  std::cout << "called with x=" << x << std::endl;
50  }
51  }
52 
53  double GetFunctionX(int index) override { return m_PiecewiseFunction->GetDataPointer()[index * 2]; }
54  double GetFunctionY(int index) override
55  {
56  return m_PiecewiseFunction->GetValue(m_PiecewiseFunction->GetDataPointer()[index * 2]);
57  }
58 
59  int GetFunctionSize() override { return m_PiecewiseFunction->GetSize(); }
60  void DoubleClickOnHandle(int) override {}
61  void MoveFunctionPoint(int index, std::pair<double, double> pos) override;
62 
63  double GetFunctionMax() { return m_PiecewiseFunction->GetRange()[1]; }
64  double GetFunctionMin() { return m_PiecewiseFunction->GetRange()[0]; }
66  {
67  double range;
68  if ((m_PiecewiseFunction->GetRange()[0]) < 0)
69  {
70  range = (m_PiecewiseFunction->GetRange()[1]) - (m_PiecewiseFunction->GetRange()[0]);
71  return range;
72  }
73  else
74  {
75  range = m_PiecewiseFunction->GetRange()[1];
76  return range;
77  }
78  }
79 
81  {
82  m_PiecewiseFunction->AddSegment(this->GetFunctionMin(), 0, this->GetFunctionMax(), 1);
83  m_PiecewiseFunction->AddPoint(0.0, 0.0);
84  }
85 
86  void ResetGO()
87  { // Gradient Opacity
88  m_PiecewiseFunction->AddSegment(this->GetFunctionMin(), 0, 0, 1);
89  m_PiecewiseFunction->AddSegment(0, 1, ((this->GetFunctionRange()) * 0.125), 1);
90  m_PiecewiseFunction->AddSegment(((this->GetFunctionRange()) * 0.125), 1, ((this->GetFunctionRange()) * 0.2), 1);
91  m_PiecewiseFunction->AddSegment(((this->GetFunctionRange()) * 0.2), 1, ((this->GetFunctionRange()) * 0.25), 1);
92  }
93 
94 protected:
95  vtkPiecewiseFunction *m_PiecewiseFunction;
96  QString m_Title;
97 };
98 
99 #endif
QmitkPiecewiseFunctionCanvas::SetPiecewiseFunction
void SetPiecewiseFunction(vtkPiecewiseFunction *piecewiseFunction)
Definition: QmitkPiecewiseFunctionCanvas.h:31
QmitkTransferFunctionCanvas::MoveFunctionPoint
virtual void MoveFunctionPoint(int index, std::pair< double, double > pos)=0
MITKQTWIDGETSEXT_EXPORT
#define MITKQTWIDGETSEXT_EXPORT
Definition: MitkQtWidgetsExtExports.h:15
QmitkPiecewiseFunctionCanvas::RemoveFunctionPoint
void RemoveFunctionPoint(double x) override
Definition: QmitkPiecewiseFunctionCanvas.h:42
QmitkTransferFunctionCanvas
Definition: QmitkTransferFunctionCanvas.h:24
QmitkTransferFunctionCanvas::GetFunctionSize
virtual int GetFunctionSize()=0
QmitkPiecewiseFunctionCanvas::GetFunctionSize
int GetFunctionSize() override
Definition: QmitkPiecewiseFunctionCanvas.h:59
QmitkPiecewiseFunctionCanvas::m_PiecewiseFunction
vtkPiecewiseFunction * m_PiecewiseFunction
Definition: QmitkPiecewiseFunctionCanvas.h:95
QmitkPiecewiseFunctionCanvas::AddFunctionPoint
int AddFunctionPoint(double x, double val) override
Definition: QmitkPiecewiseFunctionCanvas.h:41
QmitkTransferFunctionCanvas::paintEvent
void paintEvent(QPaintEvent *e) override
QmitkPiecewiseFunctionCanvas::GetFunctionMax
double GetFunctionMax()
Definition: QmitkPiecewiseFunctionCanvas.h:63
QmitkPiecewiseFunctionCanvas::m_Title
QString m_Title
Definition: QmitkPiecewiseFunctionCanvas.h:96
QmitkTransferFunctionCanvas::GetNearHandle
virtual int GetNearHandle(int x, int y, unsigned int maxSquaredDistance=100)=0
QmitkTransferFunctionCanvas.h
QmitkPiecewiseFunctionCanvas::DoubleClickOnHandle
void DoubleClickOnHandle(int) override
Definition: QmitkPiecewiseFunctionCanvas.h:60
QmitkPiecewiseFunctionCanvas::GetFunctionY
double GetFunctionY(int index) override
Definition: QmitkPiecewiseFunctionCanvas.h:54
QmitkPiecewiseFunctionCanvas::GetFunctionX
double GetFunctionX(int index) override
Definition: QmitkPiecewiseFunctionCanvas.h:53
QmitkPiecewiseFunctionCanvas::GetFunctionRange
double GetFunctionRange()
Definition: QmitkPiecewiseFunctionCanvas.h:65
QmitkTransferFunctionCanvas::SetMax
void SetMax(double max)
Definition: QmitkTransferFunctionCanvas.h:41
MitkQtWidgetsExtExports.h
QmitkTransferFunctionCanvas::SetMin
void SetMin(double min)
Definition: QmitkTransferFunctionCanvas.h:34
QmitkPiecewiseFunctionCanvas
Definition: QmitkPiecewiseFunctionCanvas.h:21
QmitkPiecewiseFunctionCanvas::GetFunctionMin
double GetFunctionMin()
Definition: QmitkPiecewiseFunctionCanvas.h:64
QmitkPiecewiseFunctionCanvas::ResetGO
void ResetGO()
Definition: QmitkPiecewiseFunctionCanvas.h:86
QmitkPiecewiseFunctionCanvas::RemoveAllFunctionPoints
void RemoveAllFunctionPoints()
Definition: QmitkPiecewiseFunctionCanvas.h:80