4 #ifndef vtkVolumeMask_h
5 #define vtkVolumeMask_h
17 VTK_ABI_NAMESPACE_BEGIN
55 int scalarMode,
int arrayAccessMode,
int arrayId,
const char* arrayName,
58 bool needUpdate =
false;
59 bool modified =
false;
81 while (!obsolete && i < 6)
83 obsolete = obsolete || this->
LoadedExtent[i] > textureExtent[i];
85 obsolete = obsolete || this->
LoadedExtent[i] < textureExtent[i];
97 input, scalarMode, arrayAccessMode, arrayId, arrayName, this->
LoadedCellFlag);
104 cout <<
"Mask should be VTK_UNSIGNED_CHAR." << endl;
108 cout <<
"Mask should be a one-component scalar field." << endl;
111 GLint internalFormat = GL_R8;
112 GLenum format = GL_RED;
120 textureSize[i] = textureExtent[2 * i + 1] - textureExtent[2 * i] + 1;
125 glGetIntegerv(GL_MAX_3D_TEXTURE_SIZE, &width);
126 this->
Loaded = textureSize[0] <= width && textureSize[1] <= width && textureSize[2] <= width;
130 this->
Loaded = textureSize[0] * textureSize[1] * textureSize[2] *
135 ostate->vtkglPixelStorei(GL_UNPACK_ALIGNMENT, 1);
137 if (!(textureExtent[1] - textureExtent[0] + cellFlag == dim[0]))
139 ostate->vtkglPixelStorei(GL_UNPACK_ROW_LENGTH, dim[0] - cellFlag);
141 if (!(textureExtent[3] - textureExtent[2] + cellFlag == dim[1]))
143 ostate->vtkglPixelStorei(GL_UNPACK_IMAGE_HEIGHT, dim[1] - cellFlag);
146 ((textureExtent[4] * (dim[1] - cellFlag) + textureExtent[2]) * (dim[0] - cellFlag) +
154 textureSize[0], textureSize[1], textureSize[2], 1, scalarType, dataPtr);
163 ostate->vtkglPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
164 ostate->vtkglPixelStorei(GL_UNPACK_IMAGE_HEIGHT, 0);
179 swapBounds[0] = (spacing[0] < 0);
180 swapBounds[1] = (spacing[1] < 0);
181 swapBounds[2] = (spacing[2] < 0);
197 origin[0] +
static_cast<double>(this->
LoadedExtent[0 + swapBounds[0]]) * spacing[0];
199 origin[1] +
static_cast<double>(this->
LoadedExtent[2 + swapBounds[1]]) * spacing[1];
200 this->LoadedBounds[4] =
201 origin[2] +
static_cast<double>(this->
LoadedExtent[4 + swapBounds[2]]) * spacing[2];
202 this->LoadedBounds[1] =
203 origin[0] +
static_cast<double>(this->
LoadedExtent[1 - swapBounds[0]]) * spacing[0];
204 this->LoadedBounds[3] =
205 origin[1] +
static_cast<double>(this->
LoadedExtent[3 - swapBounds[1]]) * spacing[1];
206 this->LoadedBounds[5] =
207 origin[2] +
static_cast<double>(this->
LoadedExtent[5 - swapBounds[2]]) * spacing[2];
211 int wholeTextureExtent[6];
216 wholeTextureExtent[i]--;
223 if (this->
LoadedExtent[2 * i] == wholeTextureExtent[2 * i])
230 origin[i] + (
static_cast<double>(this->
LoadedExtent[2 * i]) + 0.5) * spacing[i];
233 if (this->
LoadedExtent[2 * i + 1] == wholeTextureExtent[2 * i + 1])
235 this->
LoadedBounds[2 * i + 1 - swapBounds[i]] = origin[i] +
236 (
static_cast<double>(this->
LoadedExtent[2 * i + 1]) + 1.0) * spacing[i];
240 this->
LoadedBounds[2 * i + 1 - swapBounds[i]] = origin[i] +
241 (
static_cast<double>(this->
LoadedExtent[2 * i + 1]) + 0.5) * spacing[i];
306 std::map<vtkImageData*, vtkVolumeMask*>
Map;
314 VTK_ABI_NAMESPACE_END
315 #endif // vtkVolumeMask_h
vtkIdType * GetLoadedExtent()
virtual void ReleaseGraphicsResources(vtkWindow *win)
Deactivate and UnBind the texture.
virtual void * GetVoidPointer(vtkIdType valueIdx)=0
Return a void pointer.
vtkTimeStamp GetBuildTime()
int GetNumberOfComponents() const
Set/Get the dimension (n) of the components.
static vtkOpenGLRenderWindow * SafeDownCast(vtkObjectBase *o)
vtkIdType LoadedExtent[6]
record modification and/or execution time
static vtkDataArray * GetScalars(vtkDataSet *input, int scalarMode, int arrayAccessMode, int arrayId, const char *arrayName, int &cellFlag)
Internal helper function for getting the active scalars.
virtual int GetDataType() const =0
Return the underlying data type.
void Modified()
Set this objects time to the current time.
abstract specification for renderers
virtual void SetWrapR(int)
Wrap mode for the first texture coordinate "r" Valid values are:
void SetDataType(unsigned int glType)
Get the data type for the texture as GLenum type.
virtual void SetBorderColor(float, float, float, float)
Border Color (RGBA).
double * GetLoadedBounds()
vtkTextureObject * Texture
void ReleaseGraphicsResources(vtkWindow *window)
vtkMapMaskTextureId()=default
window superclass for vtkRenderWindow
virtual int GetDataTypeSize() const =0
Return the size of the underlying data type.
virtual int * GetDimensions()
Get dimensions of this structured points dataset.
virtual double * GetOrigin()
Set/Get the origin of the dataset.
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].
topologically and geometrically regular array of data
virtual void SetMinificationFilter(int)
Minification filter mode.
abstract superclass for arrays of numeric data
virtual double * GetSpacing()
Set the spacing (width,height,length) of the cubical cells that compose the data set.
vtkMTimeType GetMTime() override
Datasets are composite objects and need to check each part for MTime THIS METHOD IS THREAD SAFE...
virtual unsigned int GetHandle()
Returns the OpenGL handle.
void SetInternalFormat(unsigned int glInternalFormat)
Get/Set internal format (OpenGL internal format) that should be used.
virtual int * GetExtent()
Set/Get the extent.
void Update(vtkRenderer *ren, vtkImageData *input, int cellFlag, int textureExtent[6], int scalarMode, int arrayAccessMode, int arrayId, const char *arrayName, vtkIdType maxMemoryInBytes)
abstracts an OpenGL texture object.
#define VTK_UNSIGNED_CHAR
void Deactivate()
Deactivate and UnBind the texture.
static vtkTextureObject * New()
virtual void SetWrapS(int)
Wrap mode for the first texture coordinate "s" Valid values are:
vtkRenderWindow * GetRenderWindow()
Specify the rendering window in which to draw.
virtual vtkOpenGLState * GetState()
int GetTextureUnit()
Return the texture unit used for this texture.
virtual void Activate()
Activate and Bind the texture.
virtual void SetWrapT(int)
Wrap mode for the first texture coordinate "t" Valid values are:
std::map< vtkImageData *, vtkVolumeMask * > Map
void SetFormat(unsigned int glFormat)
Get/Set format (OpenGL internal format) that should be used.
virtual void Delete()
Delete a VTK object.
void SetContext(vtkOpenGLRenderWindow *)
Get/Set the context.
virtual void SetMagnificationFilter(int)
Magnification filter mode.