You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
4.5 KiB
122 lines
4.5 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: vtkWindowLevelLookupTable.h,v $
|
|
|
|
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.
|
|
|
|
=========================================================================*/
|
|
// .NAME vtkWindowLevelLookupTable - map scalar values into colors or colors to scalars; generate color table
|
|
// .SECTION Description
|
|
// 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.
|
|
|
|
// .SECTION Caveats
|
|
// 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).
|
|
|
|
// .SECTION See Also
|
|
// vtkLogLookupTable
|
|
|
|
#ifndef __vtkWindowLevelLookupTable_h
|
|
#define __vtkWindowLevelLookupTable_h
|
|
|
|
#include "vtkLookupTable.h"
|
|
|
|
class VTK_COMMON_EXPORT vtkWindowLevelLookupTable : public vtkLookupTable
|
|
{
|
|
public:
|
|
static vtkWindowLevelLookupTable *New();
|
|
vtkTypeRevisionMacro(vtkWindowLevelLookupTable,vtkLookupTable);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// Generate lookup table as a linear ramp between MinimumTableValue
|
|
// and MaximumTableValue.
|
|
void Build();
|
|
|
|
// Description:
|
|
// 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);
|
|
|
|
// Description:
|
|
// 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);
|
|
|
|
// Description:
|
|
// Set inverse video on or off. You can achieve the same effect by
|
|
// switching the MinimumTableValue and the MaximumTableValue.
|
|
void SetInverseVideo(int iv);
|
|
vtkGetMacro(InverseVideo,int);
|
|
vtkBooleanMacro(InverseVideo,int);
|
|
|
|
// Description:
|
|
// 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);
|
|
|
|
// Description:
|
|
// 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);
|
|
|
|
// Description:
|
|
// @deprecated For backwards compatibility: specify the color using
|
|
// integers in the range [0,255].
|
|
VTK_LEGACY(void SetMinimumColor(int r, int g, int b, int a));
|
|
VTK_LEGACY(void SetMinimumColor(const unsigned char rgba[4]));
|
|
VTK_LEGACY(void GetMinimumColor(unsigned char rgba[4]));
|
|
VTK_LEGACY(unsigned char *GetMinimumColor());
|
|
|
|
// Description:
|
|
// @deprecated For backwards compatibility: specify the color using
|
|
// integers in the range [0,255].
|
|
VTK_LEGACY(void SetMaximumColor(int r, int g, int b, int a));
|
|
VTK_LEGACY(void SetMaximumColor(const unsigned char rgba[4]));
|
|
VTK_LEGACY(void GetMaximumColor(unsigned char rgba[4]));
|
|
VTK_LEGACY(unsigned char *GetMaximumColor());
|
|
|
|
protected:
|
|
vtkWindowLevelLookupTable(int sze=256, int ext=256);
|
|
~vtkWindowLevelLookupTable() {};
|
|
|
|
double Window;
|
|
double Level;
|
|
int InverseVideo;
|
|
double MaximumTableValue[4];
|
|
double MinimumTableValue[4];
|
|
private:
|
|
vtkWindowLevelLookupTable(const vtkWindowLevelLookupTable&); // Not implemented.
|
|
void operator=(const vtkWindowLevelLookupTable&); // Not implemented.
|
|
};
|
|
|
|
#endif
|
|
|
|
|
|
|