File: vtkWindowLevelLookupTable.h

package info (click to toggle)
paraview 5.11.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 497,236 kB
  • sloc: cpp: 3,171,290; ansic: 1,315,072; python: 134,290; xml: 103,324; sql: 65,887; sh: 5,286; javascript: 4,901; yacc: 4,383; java: 3,977; perl: 2,363; lex: 1,909; f90: 1,255; objc: 143; makefile: 119; tcl: 59; pascal: 50; fortran: 29
file content (132 lines) | stat: -rw-r--r-- 4,072 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
/*=========================================================================

  Program:   Visualization Toolkit
  Module:    vtkWindowLevelLookupTable.h

  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
  All rights reserved.
  See Copyright.txt or http://www.kitware.com/Copyright.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.

=========================================================================*/
/**
 * @class   vtkWindowLevelLookupTable
 * @brief   map scalar values into colors or colors to scalars; generate color table
 *
 * vtkWindowLevelLookupTable is an object that is used by mapper objects
 * to map scalar values into rgba (red-green-blue-alpha transparency)
 * color specification, or rgba into scalar values. The color table can
 * be created by direct insertion of color values, or by specifying a
 * window and level. Window / Level is used in medical imaging to specify
 * a linear greyscale ramp. The Level is the center of the ramp.  The
 * Window is the width of the ramp.
 *
 * @warning
 * vtkWindowLevelLookupTable is a reference counted object. Therefore, you
 * should always use operator "new" to construct new objects. This procedure
 * will avoid memory problems (see text).
 *
 * @sa
 * vtkLogLookupTable
 */

#ifndef vtkWindowLevelLookupTable_h
#define vtkWindowLevelLookupTable_h

#include "vtkLookupTable.h"
#include "vtkRenderingCoreModule.h" // For export macro

VTK_ABI_NAMESPACE_BEGIN
class VTKRENDERINGCORE_EXPORT vtkWindowLevelLookupTable : public vtkLookupTable
{
public:
  static vtkWindowLevelLookupTable* New();
  vtkTypeMacro(vtkWindowLevelLookupTable, vtkLookupTable);
  void PrintSelf(ostream& os, vtkIndent indent) override;

  /**
   * Generate lookup table as a linear ramp between MinimumTableValue
   * and MaximumTableValue.
   */
  void ForceBuild() override;

  ///@{
  /**
   * Set the window for the lookup table.  The window is the difference
   * between TableRange[0] and TableRange[1].
   */
  void SetWindow(double window)
  {
    if (window < 1e-5)
    {
      window = 1e-5;
    }
    this->Window = window;
    this->SetTableRange(this->Level - this->Window / 2.0, this->Level + this->Window / 2.0);
  }
  vtkGetMacro(Window, double);
  ///@}

  ///@{
  /**
   * Set the Level for the lookup table.  The level is the average of
   * TableRange[0] and TableRange[1].
   */
  void SetLevel(double level)
  {
    this->Level = level;
    this->SetTableRange(this->Level - this->Window / 2.0, this->Level + this->Window / 2.0);
  }
  vtkGetMacro(Level, double);
  ///@}

  ///@{
  /**
   * Set inverse video on or off.  You can achieve the same effect by
   * switching the MinimumTableValue and the MaximumTableValue.
   */
  void SetInverseVideo(vtkTypeBool iv);
  vtkGetMacro(InverseVideo, vtkTypeBool);
  vtkBooleanMacro(InverseVideo, vtkTypeBool);
  ///@}

  ///@{
  /**
   * Set the minimum table value.  All lookup table entries below the
   * start of the ramp will be set to this color.  After you change
   * this value, you must re-build the lookup table.
   */
  vtkSetVector4Macro(MinimumTableValue, double);
  vtkGetVector4Macro(MinimumTableValue, double);
  ///@}

  ///@{
  /**
   * Set the maximum table value. All lookup table entries above the
   * end of the ramp will be set to this color.  After you change
   * this value, you must re-build the lookup table.
   */
  vtkSetVector4Macro(MaximumTableValue, double);
  vtkGetVector4Macro(MaximumTableValue, double);
  ///@}

protected:
  vtkWindowLevelLookupTable(int sze = 256, int ext = 256);
  ~vtkWindowLevelLookupTable() override = default;

  double Window;
  double Level;
  vtkTypeBool InverseVideo;
  double MaximumTableValue[4];
  double MinimumTableValue[4];

private:
  vtkWindowLevelLookupTable(const vtkWindowLevelLookupTable&) = delete;
  void operator=(const vtkWindowLevelLookupTable&) = delete;
};

VTK_ABI_NAMESPACE_END
#endif