File: vtkVVLesionSizingInterface.h

package info (click to toggle)
volview 3.4-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 25,204 kB
  • sloc: cpp: 132,585; ansic: 11,612; tcl: 236; sh: 64; makefile: 25; xml: 8
file content (134 lines) | stat: -rw-r--r-- 4,541 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*=========================================================================

  Copyright (c) Kitware, Inc.
  All rights reserved.
  See Copyright.txt or http://www.kitware.com/VolViewCopyright.htm for details.

     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.  See the above copyright notice for more information.

=========================================================================*/
// .NAME vtkVVLesionSizingInterface - Measurement user interface panel customized for lesion sizing
// .SECTION Description
// .SECTION See Also

#ifndef __vtkVVLesionSizingInterface_h
#define __vtkVVLesionSizingInterface_h

#include "vtkVVUserInterfacePanel.h"

class vtkKWSeparator;
class vtkKWFrame;
class vtkKWLabel;
class vtkKWMessage;
class vtkKWMessageWithLabel;
class vtkKWLabelWithLabel;
class vtkKWLabelWithLabelSet;
class vtkKWMenuButtonWithLabel;
class vtkKWFrameWithLabel;
class vtkKWMultiColumnListWithScrollbars;
class vtkKWEntryWithLabel;
class vtkKWMenuButtonWithSpinButtons;
class vtkKWPushButton;
class vtkKWRadioButtonSet;
class vtkVVContourSelector;
class vtkVVDataItemVolume;
class vtkImageData;
class vtkActor;
class vtkCutter;
class vtkITKLesionSegmentationImageFilterBase;
class vtkVVDataItemVolumeContour;
class vtkVVDataItem;

class VTK_EXPORT vtkVVLesionSizingInterface : public vtkVVUserInterfacePanel
{
public:
  static vtkVVLesionSizingInterface* New();
  vtkTypeRevisionMacro(vtkVVLesionSizingInterface,vtkVVUserInterfacePanel);
  void PrintSelf(ostream& os, vtkIndent indent);

  // Description:
  // Create the interface objects.
  virtual void Create();

  // Description:
  // Refresh the interface given the current value of the Window and its
  // views/composites/widgets.
  virtual void Update();

  // Description:
  // Update the "enable" state of the object and its internal parts.
  // Depending on different Ivars (this->Enabled, the application's 
  // Limited Edition Mode, etc.), the "enable" state of the object is updated
  // and propagated to its internal parts/subwidgets. This will, for example,
  // enable/disable parts of the widget UI, enable/disable the visibility
  // of 3D widgets, etc.
  virtual void UpdateEnableState();

  // Description:
  // Callbacks
  void StartCallback();
  void NextCallback();
  void CancelCallback();

protected:
  vtkVVLesionSizingInterface();
  ~vtkVVLesionSizingInterface();

  virtual void UpdateInternal();
  
  // Description:
  virtual void Segment();
  virtual vtkVVDataItemVolumeContour * Segment( vtkVVDataItemVolume * );

  virtual int DisplayErrorMessage( const char *text );

  // Description:
  // Processes the events that are passed through CallbackCommand (or others).
  // Subclasses can oberride this method to process their own events, but
  // should call the superclass too.
  virtual void ProcessCallbackCommandEvents(
    vtkObject *caller, unsigned long event, void *calldata);

  // Description:
  virtual void SetInstructionsText( const char * string );
  virtual void SetInstructionsIconToPredefinedIcon(int icon_index);
  virtual void PopulateOptions();

  // Description:
  virtual void CreateNewLesionSegmentationStrategy( bool partsolid );

  // Description:
  // Sanity checks to ensure that the dataset is 3D etc should be placed here
  int IsSupported( vtkVVDataItem* data );

  vtkKWFrame                     * ButtonFrame;
  vtkKWPushButton                * StartButton;
  vtkKWPushButton                * NextButton;
  vtkKWPushButton                * CancelButton;
  vtkKWFrameWithLabel            * LesionSizingFrame;
  vtkKWFrameWithLabel            * ContourListFrame;
  vtkKWFrame                     * InstructionsFrame;
  vtkKWLabelWithLabel            * InstructionsMessage;
  vtkKWFrame                     * OptionsFrame;
  vtkKWFrameWithLabel            * AdvancedOptionsFrame;
  vtkKWSeparator                 * Sep1;
  vtkKWRadioButtonSet            * OptionsRadioButtonSet;
  vtkKWRadioButtonSet            * SegmentationAlgorithmRadioButtonSet;
  vtkVVContourSelector           * ContourSelector;
  int                              State;  

  //BTX
  enum { Start = 0, DefiningBoundingBox, DefiningSeeds, Segmenting, Segmented, Cancelling };
  //ETX

private:
  vtkVVLesionSizingInterface(const vtkVVLesionSizingInterface&); // Not implemented
  void operator=(const vtkVVLesionSizingInterface&); // Not Implemented

  vtkITKLesionSegmentationImageFilterBase * LesionSegmentationFilter;
};

#endif