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.
126 lines
3.6 KiB
C++
126 lines
3.6 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkOpenGLVolumeLookupTable.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.
|
|
|
|
=========================================================================*/
|
|
/*=============================================================================
|
|
Copyright and License information
|
|
=============================================================================*/
|
|
/**
|
|
* @class vtkOpenGLVolumeLookupTable
|
|
* @brief Base class for OpenGL texture management of scalar color,
|
|
* opacity and gradient opacity lookup tables.
|
|
*/
|
|
|
|
#ifndef vtkOpenGLVolumeLookupTable_h
|
|
#define vtkOpenGLVolumeLookupTable_h
|
|
#ifndef __VTK_WRAP__
|
|
|
|
#include "vtkObject.h"
|
|
|
|
// Forward declarations
|
|
class vtkOpenGLRenderWindow;
|
|
class vtkTextureObject;
|
|
class vtkWindow;
|
|
|
|
class vtkOpenGLVolumeLookupTable : public vtkObject
|
|
{
|
|
public:
|
|
vtkTypeMacro(vtkOpenGLVolumeLookupTable, vtkObject);
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
|
|
// static vtkOpenGLVolumeLookupTable* New();
|
|
|
|
/**
|
|
* Get the texture unit associated with the managed texture object
|
|
*/
|
|
int GetTextureUnit();
|
|
|
|
/**
|
|
* Activate / deactivate the internal texture object
|
|
*/
|
|
//@{
|
|
void Activate();
|
|
void Deactivate();
|
|
//@}
|
|
|
|
/**
|
|
* Get the maximum supported texture width for the target OpenGL environment.
|
|
*/
|
|
int GetMaximumSupportedTextureWidth(vtkOpenGLRenderWindow* renWin, int idealWidth);
|
|
|
|
/**
|
|
* Release graphics resources
|
|
*/
|
|
void ReleaseGraphicsResources(vtkWindow* window);
|
|
|
|
/**
|
|
* Update the internal texture object using the transfer function provided.
|
|
*/
|
|
virtual void Update(vtkObject* func, double scalarRange[2], int blendMode, double sampleDistance,
|
|
double unitDistance, int filterValue, vtkOpenGLRenderWindow* renWin);
|
|
|
|
/**
|
|
* Get access to the texture height used by this object
|
|
*/
|
|
vtkGetMacro(TextureHeight, int);
|
|
|
|
/**
|
|
* Get access to the texture width used by this object
|
|
*/
|
|
vtkGetMacro(TextureWidth, int);
|
|
|
|
protected:
|
|
vtkOpenGLVolumeLookupTable() = default;
|
|
virtual ~vtkOpenGLVolumeLookupTable() override;
|
|
|
|
double LastRange[2] = { 0.0, 0.0 };
|
|
float* Table = nullptr;
|
|
int LastInterpolation = -1;
|
|
int NumberOfColorComponents = 1;
|
|
int TextureWidth = 1024;
|
|
int TextureHeight = 1;
|
|
vtkTextureObject* TextureObject = nullptr;
|
|
vtkTimeStamp BuildTime;
|
|
|
|
/**
|
|
* Test whether the internal function needs to be updated.
|
|
*/
|
|
virtual bool NeedsUpdate(
|
|
vtkObject* func, double scalarRange[2], int blendMode, double sampleDistance);
|
|
|
|
/**
|
|
* Internal method to actually update the texture object
|
|
*/
|
|
virtual void InternalUpdate(
|
|
vtkObject* func, int blendMode, double sampleDistance, double unitDistance, int filterValue);
|
|
|
|
/**
|
|
* Compute ideal width and height for the texture based on function provided
|
|
*/
|
|
virtual void ComputeIdealTextureSize(
|
|
vtkObject* func, int& width, int& height, vtkOpenGLRenderWindow* renWin);
|
|
|
|
/**
|
|
* Allocate internal data table
|
|
*/
|
|
virtual void AllocateTable();
|
|
|
|
private:
|
|
vtkOpenGLVolumeLookupTable(const vtkOpenGLVolumeLookupTable&) = delete;
|
|
void operator=(const vtkOpenGLVolumeLookupTable&) = delete;
|
|
};
|
|
|
|
#endif //__VTK_WRAP__
|
|
#endif // vtkOpenGLVolumeLookupTable_h
|
|
// VTK-HeaderTest-Exclude: vtkOpenGLVolumeLookupTable.h
|