23#ifndef vtkUnstructuredGridVolumeZSweepMapper_h 
   24#define vtkUnstructuredGridVolumeZSweepMapper_h 
   26#include "vtkRenderingVolumeModule.h"  
   29VTK_ABI_NAMESPACE_BEGIN
 
   48VTK_ABI_NAMESPACE_BEGIN
 
   51class vtkPixelListFrame;
 
   54class vtkSimpleScreenEdge;
 
   55class vtkDoubleScreenEdge;
 
   57class vtkPixelListEntryMemory;
 
   61VTK_ABI_NAMESPACE_BEGIN
 
   80  vtkSetClampMacro(ImageSampleDistance, 
float, 0.1f, 100.0f);
 
   81  vtkGetMacro(ImageSampleDistance, 
float);
 
   89  vtkSetClampMacro(MinimumImageSampleDistance, 
float, 0.1f, 100.0f);
 
   90  vtkGetMacro(MinimumImageSampleDistance, 
float);
 
   98  vtkSetClampMacro(MaximumImageSampleDistance, 
float, 0.1f, 100.0f);
 
   99  vtkGetMacro(MaximumImageSampleDistance, 
float);
 
  119  vtkSetClampMacro(IntermixIntersectingGeometry, 
vtkTypeBool, 0, 1);
 
  155  vtkGetVectorMacro(ImageInUseSize, 
int, 2);
 
  156  vtkGetVectorMacro(ImageOrigin, 
int, 2);
 
  157  vtkGetVectorMacro(ImageViewportSize, 
int, 2);
 
  215    vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry* ve1,
 
  216    vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry* ve2, 
bool externalFace);
 
  224  void RasterizeSpan(
int y, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkScreenEdge* left,
 
  225    vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkScreenEdge* right, 
bool exitFace);
 
  233  void RasterizeLine(vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry* v0,
 
  234    vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry* v1, 
bool exitFace);
 
  274  int ImageViewportSize[2];
 
  280  int ImageMemorySize[2];
 
  286  int ImageInUseSize[2];
 
  308  int ZBufferOrigin[2];
 
  316  double FaceScalars[2];
 
  319  vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkSpan* 
Span;
 
  320  vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkPixelListFrame* 
PixelListFrame;
 
  325  vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkUseSet* 
UseSet;
 
  328  vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertices* 
Vertices;
 
  338  vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkSimpleScreenEdge* 
SimpleEdge;
 
  339  vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkDoubleScreenEdge* 
DoubleEdge;
 
  354  vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkPixelListEntryMemory* 
MemoryManager;
 
abstract class to specify cell behavior
 
abstract superclass for arrays of numeric data
 
dynamic, self-adjusting array of double
 
provides thread-safe access to cells
 
list of point or cell ids
 
a simple class to control print indentation
 
represent and manipulate 4x4 transformation matrices
 
a list of ids arranged in priority order
 
helper class that draws the image to the screen
 
create a window for renderers to draw into
 
abstract specification for renderers
 
record modification and/or execution time
 
Abstract class for an unstructured grid volume mapper.
 
a superclass for volume ray integration functions
 
Unstructured grid volume mapper based the ZSweep Algorithm.
 
vtkVolume ** RenderVolumeTable
 
void AllocateUseSet(vtkIdType size)
Allocate an array of usesets of size ‘size’ only if the current one is not large enough.
 
void RasterizeTriangle(vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *ve0, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *ve1, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *ve2, bool externalFace)
Perform scan conversion of a triangle defined by its vertices.
 
vtkRenderer ** RenderRendererTable
 
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkSimpleScreenEdge * SimpleEdge
 
vtkIdType MaxRecordedPixelListSize
 
~vtkUnstructuredGridVolumeZSweepMapper() override
 
vtkTransform * PerspectiveTransform
 
int ReorderTriangle(vtkIdType v[3], vtkIdType w[3])
Reorder vertices ‘v’ in increasing order in ‘w’.
 
vtkUnstructuredGridVolumeRayIntegrator * RealRayIntegrator
 
vtkDoubleArray * FarIntersections
 
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkPixelListFrame * PixelListFrame
 
float RetrieveRenderTime(vtkRenderer *ren, vtkVolume *vol)
 
virtual void SetRayIntegrator(vtkUnstructuredGridVolumeRayIntegrator *ri)
Set/Get the helper class for integrating rays.
 
void RasterizeLine(vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *v0, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *v1, bool exitFace)
Scan conversion of a straight line defined by endpoints v0 and v1.
 
void MainLoop(vtkRenderWindow *renWin)
MainLoop of the Zsweep algorithm.
 
unsigned char ColorComponentRealToByte(float color)
Convert and clamp a float color component into a unsigned char.
 
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkSpan * Span
 
vtkRayCastImageDisplayHelper * ImageDisplayHelper
 
void CreateAndCleanPixelList()
Create an empty "pixel list" for each pixel of the screen.
 
vtkTypeBool AutoAdjustSampleDistances
 
float MaximumImageSampleDistance
 
void CompositeFunction(double zTarget)
Do delayed compositing from back to front, stopping at zTarget for each pixel inside the bounding box...
 
void RasterizeFace(vtkIdType faceIds[3], int externalSide)
Perform scan conversion of a triangle face.
 
double GetZBufferValue(int x, int y)
Return the value of the z-buffer at screen coordinates (x,y).
 
void RasterizeSpan(int y, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkScreenEdge *left, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkScreenEdge *right, bool exitFace)
Perform scan conversion of an horizontal span from left ro right at line y.
 
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkPixelListEntryMemory * MemoryManager
 
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkUseSet * UseSet
 
void AllocateVertices(vtkIdType size)
Allocate a vertex array of size ‘size’ only if the current one is not large enough.
 
void Render(vtkRenderer *ren, vtkVolume *vol) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
 
vtkTimeStamp SavedTriangleListMTime
 
double GetMinimumBoundsDepth(vtkRenderer *ren, vtkVolume *vol)
 
vtkDoubleArray * NearIntersections
 
void SetMaxPixelListSize(int size)
Change the maximum size allowed for a pixel list.
 
vtkDoubleArray * IntersectionLengths
 
float MinimumImageSampleDistance
 
vtkPriorityQueue * EventList
 
void ProjectAndSortVertices(vtkRenderer *ren, vtkVolume *vol)
Project and sort the vertices by z-coordinates in view space in the "event list" (an heap).
 
void StoreRenderTime(vtkRenderer *ren, vtkVolume *vol, float t)
 
int MaxPixelListSizeReached
 
void BuildUseSets()
For each vertex, find the list of incident faces.
 
vtkUnstructuredGridVolumeRayIntegrator * RayIntegrator
 
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertices * Vertices
 
vtkTypeBool IntermixIntersectingGeometry
 
static vtkUnstructuredGridVolumeZSweepMapper * New()
Set MaxPixelListSize to 32.
 
void SavePixelListFrame()
For debugging purpose, save the pixel list frame as a dataset.
 
vtkMatrix4x4 * PerspectiveMatrix
 
vtkUnstructuredGridVolumeZSweepMapper()
 
int GetMaxPixelListSize()
Maximum size allowed for a pixel list.
 
float ImageSampleDistance
 
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
 
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkDoubleScreenEdge * DoubleEdge
 
represents the common properties for rendering a volume.
 
represents a volume (data & properties) in a rendered scene