16 #ifndef vtkVolumeMask_h
17 #define vtkVolumeMask_h
29 VTK_ABI_NAMESPACE_BEGIN
67 int scalarMode,
int arrayAccessMode,
int arrayId,
const char* arrayName,
70 bool needUpdate =
false;
71 bool modified =
false;
93 while (!obsolete && i < 6)
95 obsolete = obsolete || this->
LoadedExtent[i] > textureExtent[i];
97 obsolete = obsolete || this->
LoadedExtent[i] < textureExtent[i];
109 input, scalarMode, arrayAccessMode, arrayId, arrayName, this->
LoadedCellFlag);
116 cout <<
"Mask should be VTK_UNSIGNED_CHAR." << endl;
120 cout <<
"Mask should be a one-component scalar field." << endl;
123 GLint internalFormat = GL_R8;
124 GLenum format = GL_RED;
132 textureSize[i] = textureExtent[2 * i + 1] - textureExtent[2 * i] + 1;
137 glGetIntegerv(GL_MAX_3D_TEXTURE_SIZE, &width);
138 this->
Loaded = textureSize[0] <= width && textureSize[1] <= width && textureSize[2] <= width;
142 this->
Loaded = textureSize[0] * textureSize[1] * textureSize[2] *
147 ostate->vtkglPixelStorei(GL_UNPACK_ALIGNMENT, 1);
149 if (!(textureExtent[1] - textureExtent[0] + cellFlag == dim[0]))
151 ostate->vtkglPixelStorei(GL_UNPACK_ROW_LENGTH, dim[0] - cellFlag);
153 if (!(textureExtent[3] - textureExtent[2] + cellFlag == dim[1]))
155 ostate->vtkglPixelStorei(GL_UNPACK_IMAGE_HEIGHT, dim[1] - cellFlag);
158 ((textureExtent[4] * (dim[1] - cellFlag) + textureExtent[2]) * (dim[0] - cellFlag) +
166 textureSize[0], textureSize[1], textureSize[2], 1, scalarType, dataPtr);
175 ostate->vtkglPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
176 ostate->vtkglPixelStorei(GL_UNPACK_IMAGE_HEIGHT, 0);
191 swapBounds[0] = (
spacing[0] < 0);
192 swapBounds[1] = (
spacing[1] < 0);
193 swapBounds[2] = (
spacing[2] < 0);
212 this->LoadedBounds[4] =
214 this->LoadedBounds[1] =
216 this->LoadedBounds[3] =
218 this->LoadedBounds[5] =
223 int wholeTextureExtent[6];
228 wholeTextureExtent[i]--;
235 if (this->
LoadedExtent[2 * i] == wholeTextureExtent[2 * i])
245 if (this->
LoadedExtent[2 * i + 1] == wholeTextureExtent[2 * i + 1])
247 this->
LoadedBounds[2 * i + 1 - swapBounds[i]] = origin[i] +
252 this->
LoadedBounds[2 * i + 1 - swapBounds[i]] = origin[i] +
318 std::map<vtkImageData*, vtkVolumeMask*>
Map;
326 VTK_ABI_NAMESPACE_END
int GetNumberOfComponents() const
Set/Get the dimension (n) of the components.
virtual int GetDataTypeSize() const =0
Return the size of the underlying data type.
virtual int GetDataType() const =0
Return the underlying data type.
virtual void * GetVoidPointer(vtkIdType valueIdx)=0
Return a void pointer.
static vtkDataArray * GetScalars(vtkDataSet *input, int scalarMode, int arrayAccessMode, int arrayId, const char *arrayName, int &cellFlag)
Internal helper function for getting the active scalars.
abstract superclass for arrays of numeric data
vtkMTimeType GetMTime() override
Datasets are composite objects and need to check each part for MTime THIS METHOD IS THREAD SAFE.
topologically and geometrically regular array of data
virtual double * GetOrigin()
Set/Get the origin of the dataset.
virtual int * GetDimensions()
Get dimensions of this structured points dataset.
virtual int * GetExtent()
Set/Get the extent.
virtual double * GetSpacing()
Set the spacing (width,height,length) of the cubical cells that compose the data set.
std::map< vtkImageData *, vtkVolumeMask * > Map
vtkMapMaskTextureId()=default
virtual void Delete()
Delete a VTK object.
virtual vtkOpenGLState * GetState()
static vtkOpenGLRenderWindow * SafeDownCast(vtkObjectBase *o)
abstract specification for renderers
vtkRenderWindow * GetRenderWindow()
Specify the rendering window in which to draw.
abstracts an OpenGL texture object.
void SetContext(vtkOpenGLRenderWindow *)
Get/Set the context.
virtual void SetWrapT(int)
Wrap mode for the first texture coordinate "t" Valid values are:
void SetInternalFormat(unsigned int glInternalFormat)
Get/Set internal format (OpenGL internal format) that should be used.
virtual void Activate()
Activate and Bind the texture.
virtual void SetMagnificationFilter(int)
Magnification filter mode.
virtual unsigned int GetHandle()
Returns the OpenGL handle.
int GetTextureUnit()
Return the texture unit used for this texture.
static vtkTextureObject * New()
virtual void SetBorderColor(float, float, float, float)
Border Color (RGBA).
virtual void ReleaseGraphicsResources(vtkWindow *win)
Deactivate and UnBind the texture.
void SetDataType(unsigned int glType)
Get the data type for the texture as GLenum type.
void Deactivate()
Deactivate and UnBind the texture.
virtual void SetWrapR(int)
Wrap mode for the first texture coordinate "r" Valid values are:
void SetFormat(unsigned int glFormat)
Get/Set format (OpenGL internal format) that should be used.
bool Create3DFromRaw(unsigned int width, unsigned int height, unsigned int depth, int numComps, int dataType, void *data)
Create a 3D texture from client memory numComps must be in [1-4].
virtual void SetMinificationFilter(int)
Minification filter mode.
virtual void SetWrapS(int)
Wrap mode for the first texture coordinate "s" Valid values are:
record modification and/or execution time
void Modified()
Set this objects time to the current time.
void Update(vtkRenderer *ren, vtkImageData *input, int cellFlag, int textureExtent[6], int scalarMode, int arrayAccessMode, int arrayId, const char *arrayName, vtkIdType maxMemoryInBytes)
vtkTextureObject * Texture
vtkIdType LoadedExtent[6]
vtkTimeStamp GetBuildTime()
void ReleaseGraphicsResources(vtkWindow *window)
vtkIdType * GetLoadedExtent()
double * GetLoadedBounds()
window superclass for vtkRenderWindow
#define VTK_UNSIGNED_CHAR