You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
3.9 KiB
C++
131 lines
3.9 KiB
C++
/*=========================================================================
|
|
|
|
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
|
|
|
|
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 Build() 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 {}
|
|
|
|
double Window;
|
|
double Level;
|
|
vtkTypeBool InverseVideo;
|
|
double MaximumTableValue[4];
|
|
double MinimumTableValue[4];
|
|
|
|
private:
|
|
vtkWindowLevelLookupTable(const vtkWindowLevelLookupTable&) = delete;
|
|
void operator=(const vtkWindowLevelLookupTable&) = delete;
|
|
};
|
|
|
|
#endif
|