VTK  9.2.6
vtkOpenGLVolumeLookupTable.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkOpenGLVolumeLookupTable.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 /*=============================================================================
16 Copyright and License information
17 =============================================================================*/
24 #ifndef vtkOpenGLVolumeLookupTable_h
25 #define vtkOpenGLVolumeLookupTable_h
26 
27 #include "vtkObject.h"
28 #include "vtkRenderingVolumeOpenGL2Module.h" // For export macro
29 
30 // Forward declarations
32 class vtkTextureObject;
33 class vtkWindow;
34 
35 class VTKRENDERINGVOLUMEOPENGL2_EXPORT vtkOpenGLVolumeLookupTable : public vtkObject
36 {
37 public:
39  void PrintSelf(ostream& os, vtkIndent indent) override;
40 
41  // static vtkOpenGLVolumeLookupTable* New();
42 
46  int GetTextureUnit();
47 
51  void Activate();
53  void Deactivate();
55 
59  int GetMaximumSupportedTextureWidth(vtkOpenGLRenderWindow* renWin, int idealWidth);
60 
64  void ReleaseGraphicsResources(vtkWindow* window);
65 
69  virtual void Update(vtkObject* func, double scalarRange[2], int blendMode, double sampleDistance,
70  double unitDistance, int filterValue, vtkOpenGLRenderWindow* renWin);
71 
75  vtkGetMacro(TextureHeight, int);
76 
80  vtkGetMacro(TextureWidth, int);
81 
82 protected:
83  vtkOpenGLVolumeLookupTable() = default;
84  ~vtkOpenGLVolumeLookupTable() override;
85 
86  double LastRange[2] = { 0.0, 0.0 };
87  float* Table = nullptr;
88  int LastInterpolation = -1;
89  int NumberOfColorComponents = 1;
90  int TextureWidth = 1024;
91  int TextureHeight = 1;
92  vtkTextureObject* TextureObject = nullptr;
94 
98  virtual bool NeedsUpdate(
99  vtkObject* func, double scalarRange[2], int blendMode, double sampleDistance);
100 
104  virtual void InternalUpdate(
105  vtkObject* func, int blendMode, double sampleDistance, double unitDistance, int filterValue);
106 
110  virtual void ComputeIdealTextureSize(
111  vtkObject* func, int& width, int& height, vtkOpenGLRenderWindow* renWin);
112 
116  virtual void AllocateTable();
117 
118 private:
120  void operator=(const vtkOpenGLVolumeLookupTable&) = delete;
121 };
122 
123 #endif // vtkOpenGLVolumeLookupTable_h
OpenGL rendering window.
abstract base class for most VTK objects
Definition: vtkObject.h:62
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
Base class for OpenGL texture management of scalar color, opacity and gradient opacity lookup tables...
record modification and/or execution time
Definition: vtkTimeStamp.h:35
window superclass for vtkRenderWindow
Definition: vtkWindow.h:38
a simple class to control print indentation
Definition: vtkIndent.h:39
abstracts an OpenGL texture object.