VTK
vtkFixedPointVolumeRayCastMapper.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkFixedPointVolumeRayCastMapper.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 =========================================================================*/
62 #ifndef vtkFixedPointVolumeRayCastMapper_h
63 #define vtkFixedPointVolumeRayCastMapper_h
64 
65 #include "vtkRenderingVolumeModule.h" // For export macro
66 #include "vtkVolumeMapper.h"
67 
68 #define VTKKW_FP_SHIFT 15
69 #define VTKKW_FPMM_SHIFT 17
70 #define VTKKW_FP_MASK 0x7fff
71 #define VTKKW_FP_SCALE 32767.0
72 
73 class vtkMatrix4x4;
74 class vtkMultiThreader;
75 class vtkPlaneCollection;
76 class vtkRenderer;
77 class vtkTimerLog;
78 class vtkVolume;
79 class vtkTransform;
80 class vtkRenderWindow;
94 class vtkDataArray;
95 
96 // Forward declaration needed for use by friend declaration below.
99 
100 class VTKRENDERINGVOLUME_EXPORT vtkFixedPointVolumeRayCastMapper : public vtkVolumeMapper
101 {
102 public:
105  void PrintSelf( ostream& os, vtkIndent indent ) override;
106 
108 
113  vtkSetMacro( SampleDistance, float );
114  vtkGetMacro( SampleDistance, float );
116 
118 
125  vtkSetMacro( InteractiveSampleDistance, float );
126  vtkGetMacro( InteractiveSampleDistance, float );
128 
130 
137  vtkSetClampMacro( ImageSampleDistance, float, 0.1f, 100.0f );
138  vtkGetMacro( ImageSampleDistance, float );
140 
142 
146  vtkSetClampMacro( MinimumImageSampleDistance, float, 0.1f, 100.0f );
147  vtkGetMacro( MinimumImageSampleDistance, float );
149 
151 
155  vtkSetClampMacro( MaximumImageSampleDistance, float, 0.1f, 100.0f );
156  vtkGetMacro( MaximumImageSampleDistance, float );
158 
160 
169  vtkSetClampMacro( AutoAdjustSampleDistances, vtkTypeBool, 0, 1 );
170  vtkGetMacro( AutoAdjustSampleDistances, vtkTypeBool );
171  vtkBooleanMacro( AutoAdjustSampleDistances, vtkTypeBool );
173 
175 
183  vtkSetClampMacro( LockSampleDistanceToInputSpacing, vtkTypeBool, 0, 1 );
184  vtkGetMacro( LockSampleDistanceToInputSpacing, vtkTypeBool );
185  vtkBooleanMacro( LockSampleDistanceToInputSpacing, vtkTypeBool );
187 
189 
194  void SetNumberOfThreads( int num );
195  int GetNumberOfThreads();
197 
199 
203  vtkSetClampMacro( IntermixIntersectingGeometry, vtkTypeBool, 0, 1 );
204  vtkGetMacro( IntermixIntersectingGeometry, vtkTypeBool );
205  vtkBooleanMacro( IntermixIntersectingGeometry, vtkTypeBool );
207 
209 
216  float ComputeRequiredImageSampleDistance( float desiredTime,
217  vtkRenderer *ren );
218  float ComputeRequiredImageSampleDistance( float desiredTime,
219  vtkRenderer *ren,
220  vtkVolume *vol );
222 
227  void Render( vtkRenderer *, vtkVolume * ) override;
228 
229  unsigned int ToFixedPointPosition( float val );
230  void ToFixedPointPosition( float in[3], unsigned int out[3] );
231  unsigned int ToFixedPointDirection( float dir );
232  void ToFixedPointDirection( float in[3], unsigned int out[3] );
233  void FixedPointIncrement( unsigned int position[3], unsigned int increment[3] );
234  void GetFloatTripleFromPointer( float v[3], float *ptr );
235  void GetUIntTripleFromPointer( unsigned int v[3], unsigned int *ptr );
236  void ShiftVectorDown( unsigned int in[3], unsigned int out[3] );
237  int CheckMinMaxVolumeFlag( unsigned int pos[3], int c );
238  int CheckMIPMinMaxVolumeFlag( unsigned int pos[3], int c, unsigned short maxIdx, int flip );
239 
240  void LookupColorUC( unsigned short *colorTable,
241  unsigned short *scalarOpacityTable,
242  unsigned short index,
243  unsigned char color[4] );
244  void LookupDependentColorUC( unsigned short *colorTable,
245  unsigned short *scalarOpacityTable,
246  unsigned short index[4],
247  int components,
248  unsigned char color[4] );
249  void LookupAndCombineIndependentColorsUC(
250  unsigned short *colorTable[4],
251  unsigned short *scalarOpacityTable[4],
252  unsigned short index[4],
253  float weights[4],
254  int components,
255  unsigned char color[4] );
256  int CheckIfCropped( unsigned int pos[3] );
257 
258  vtkGetObjectMacro( RenderWindow, vtkRenderWindow );
259  vtkGetObjectMacro( MIPHelper, vtkFixedPointVolumeRayCastMIPHelper );
260  vtkGetObjectMacro( CompositeHelper, vtkFixedPointVolumeRayCastCompositeHelper );
261  vtkGetObjectMacro( CompositeGOHelper, vtkFixedPointVolumeRayCastCompositeGOHelper );
262  vtkGetObjectMacro( CompositeGOShadeHelper, vtkFixedPointVolumeRayCastCompositeGOShadeHelper );
263  vtkGetObjectMacro( CompositeShadeHelper, vtkFixedPointVolumeRayCastCompositeShadeHelper );
264  vtkGetVectorMacro( TableShift, float, 4 );
265  vtkGetVectorMacro( TableScale, float, 4 );
266  vtkGetMacro( ShadingRequired, int );
267  vtkGetMacro( GradientOpacityRequired, int );
268 
269  vtkGetObjectMacro( CurrentScalars, vtkDataArray );
270  vtkGetObjectMacro( PreviousScalars, vtkDataArray );
271 
272 
273  int *GetRowBounds() {return this->RowBounds;}
274  unsigned short *GetColorTable(int c) {return this->ColorTable[c];}
275  unsigned short *GetScalarOpacityTable(int c) {return this->ScalarOpacityTable[c];}
276  unsigned short *GetGradientOpacityTable(int c) {return this->GradientOpacityTable[c];}
277  vtkVolume *GetVolume() {return this->Volume;}
278  unsigned short **GetGradientNormal() {return this->GradientNormal;}
279  unsigned char **GetGradientMagnitude() {return this->GradientMagnitude;}
280  unsigned short *GetDiffuseShadingTable(int c) {return this->DiffuseShadingTable[c];}
281  unsigned short *GetSpecularShadingTable(int c) {return this->SpecularShadingTable[c];}
282 
283  void ComputeRayInfo( int x, int y,
284  unsigned int pos[3],
285  unsigned int dir[3],
286  unsigned int *numSteps );
287 
288  void InitializeRayInfo( vtkVolume *vol );
289 
290  int ShouldUseNearestNeighborInterpolation( vtkVolume *vol );
291 
293 
298  void SetRayCastImage( vtkFixedPointRayCastImage * );
299  vtkGetObjectMacro( RayCastImage, vtkFixedPointRayCastImage );
301 
302  int PerImageInitialization( vtkRenderer *, vtkVolume *, int,
303  double *, double *, int * );
304  void PerVolumeInitialization( vtkRenderer *, vtkVolume * );
305  void PerSubVolumeInitialization( vtkRenderer *, vtkVolume *, int );
306  void RenderSubVolume();
307  void DisplayRenderedImage( vtkRenderer *, vtkVolume * );
308  void AbortRender();
309 
310  void CreateCanonicalView( vtkVolume *volume,
312  int blend_mode,
313  double viewDirection[3],
314  double viewUp[3] );
315 
323  vtkVolume *vol )
324  { return this->RetrieveRenderTime( ren, vol ); }
326  { return this->RetrieveRenderTime( ren ); }
327 
328 
330 
343  vtkSetMacro( FinalColorWindow, float );
344  vtkGetMacro( FinalColorWindow, float );
345  vtkSetMacro( FinalColorLevel, float );
346  vtkGetMacro( FinalColorLevel, float );
348 
349 
350  // Here to be used by the mapper to tell the helper
351  // to flip the MIP comparison in order to support
352  // minimum intensity blending
353  vtkGetMacro( FlipMIPComparison, int );
354 
361  void ReleaseGraphicsResources(vtkWindow *) override;
362 
363 protected:
366 
367  // The helper class that displays the image
369 
370  // The distance between sample points along the ray
373 
374  // The distance between rays in the image
380 
381  // Saved values used to restore
384 
385  // Internal method for computing matrices needed during
386  // ray casting
387  void ComputeMatrices( double volumeOrigin[3],
388  double volumeSpacing[3],
389  int volumeExtent[6],
390  vtkRenderer *ren,
391  vtkVolume *vol );
392 
393  int ComputeRowBounds( vtkRenderer *ren,
394  int imageFlag, int rowBoundsFlag,
395  int volumeExtent[6]);
396 
397  void CaptureZBuffer( vtkRenderer *ren );
398 
401 
403 
410 
412 
416 
417  // This object encapsulated the image and all related information
419 
420  int *RowBounds;
422 
428 
429  void StoreRenderTime( vtkRenderer *ren, vtkVolume *vol, float t );
430  float RetrieveRenderTime( vtkRenderer *ren, vtkVolume *vol );
431  float RetrieveRenderTime( vtkRenderer *ren );
432 
434 
436 
437  vtkColorTransferFunction *SavedRGBFunction[4];
438  vtkPiecewiseFunction *SavedGrayFunction[4];
439  vtkPiecewiseFunction *SavedScalarOpacityFunction[4];
440  vtkPiecewiseFunction *SavedGradientOpacityFunction[4];
441  int SavedColorChannels[4];
442  float SavedScalarOpacityDistance[4];
446 
449 
451 
452 
453  unsigned short ColorTable[4][32768*3];
454  unsigned short ScalarOpacityTable[4][32768];
455  unsigned short GradientOpacityTable[4][256];
456  int TableSize[4];
457  float TableScale[4];
458  float TableShift[4];
459 
460  float GradientMagnitudeScale[4];
461  float GradientMagnitudeShift[4];
462 
463  unsigned short **GradientNormal;
464  unsigned char **GradientMagnitude;
465  unsigned short *ContiguousGradientNormal;
467 
469 
471 
473 
475 
476  unsigned short DiffuseShadingTable [4][65536*3];
477  unsigned short SpecularShadingTable[4][65536*3];
478 
481 
484 
487 
488  int ClipRayAgainstVolume( float rayStart[3],
489  float rayEnd[3],
490  float rayDirection[3],
491  double bounds[6] );
492 
493  int UpdateColorTable( vtkVolume *vol );
494  int UpdateGradients( vtkVolume *vol );
495  int UpdateShadingTable( vtkRenderer *ren,
496  vtkVolume *vol );
497  void UpdateCroppingRegions();
498 
499  void ComputeGradients( vtkVolume *vol );
500 
501  int ClipRayAgainstClippingPlanes( float rayStart[3],
502  float rayEnd[3],
503  int numClippingPlanes,
504  float *clippingPlanes );
505 
506  unsigned int FixedPointCroppingRegionPlanes[6];
507  unsigned int CroppingRegionMask[27];
508 
509  // Get the ZBuffer value corresponding to location (x,y) where (x,y)
510  // are indexing into the ImageInUse image. This must be converted to
511  // the zbuffer image coordinates. Nearest neighbor value is returned.
512  float GetZBufferValue( int x, int y );
513 
519 
520  // Some variables used for ray computation
521  float ViewToVoxelsArray[16];
522  float WorldToVoxelsArray[16];
523  float VoxelsToWorldArray[16];
524 
525  double CroppingBounds[6];
526 
529 
530  double SavedSpacing[3];
531 
532 
533  // Min Max structure used to do space leaping
534  unsigned short *MinMaxVolume;
535  int MinMaxVolumeSize[4];
539 
540  void UpdateMinMaxVolume( vtkVolume *vol );
541  void FillInMaxGradientMagnitudes( int fullDim[3],
542  int smallDim[3] );
543 
546 
548 
549  void ApplyFinalColorWindowLevel();
550 
551 private:
553  void operator=(const vtkFixedPointVolumeRayCastMapper&) = delete;
554 
555  bool ThreadWarning;
556 };
557 
558 
560 {
561  return static_cast<unsigned int>(val * VTKKW_FP_SCALE + 0.5);
562 }
563 
564 inline void vtkFixedPointVolumeRayCastMapper::ToFixedPointPosition( float in[3], unsigned int out[3] )
565 {
566  out[0] = static_cast<unsigned int>(in[0] * VTKKW_FP_SCALE + 0.5);
567  out[1] = static_cast<unsigned int>(in[1] * VTKKW_FP_SCALE + 0.5);
568  out[2] = static_cast<unsigned int>(in[2] * VTKKW_FP_SCALE + 0.5);
569 }
570 
572 {
573  return ((dir<0.0)?
574  (static_cast<unsigned int>(-dir * VTKKW_FP_SCALE + 0.5)):
575  (0x80000000+static_cast<unsigned int>(dir*VTKKW_FP_SCALE + 0.5)));
576 }
577 
578 inline void vtkFixedPointVolumeRayCastMapper::ToFixedPointDirection( float in[3], unsigned int out[3] )
579 {
580  out[0] = ((in[0]<0.0)?
581  (static_cast<unsigned int>(-in[0] * VTKKW_FP_SCALE + 0.5)):
582  (0x80000000+
583  static_cast<unsigned int>(in[0]*VTKKW_FP_SCALE + 0.5)));
584  out[1] = ((in[1]<0.0)?
585  (static_cast<unsigned int>(-in[1] * VTKKW_FP_SCALE + 0.5)):
586  (0x80000000+
587  static_cast<unsigned int>(in[1]*VTKKW_FP_SCALE + 0.5)));
588  out[2] = ((in[2]<0.0)?
589  (static_cast<unsigned int>(-in[2] * VTKKW_FP_SCALE + 0.5)):
590  (0x80000000+
591  static_cast<unsigned int>(in[2]*VTKKW_FP_SCALE + 0.5)));
592 }
593 
594 inline void vtkFixedPointVolumeRayCastMapper::FixedPointIncrement( unsigned int position[3], unsigned int increment[3] )
595 {
596  if ( increment[0]&0x80000000 )
597  {
598  position[0] += (increment[0]&0x7fffffff);
599  }
600  else
601  {
602  position[0] -= increment[0];
603  }
604  if ( increment[1]&0x80000000 )
605  {
606  position[1] += (increment[1]&0x7fffffff);
607  }
608  else
609  {
610  position[1] -= increment[1];
611  }
612  if ( increment[2]&0x80000000 )
613  {
614  position[2] += (increment[2]&0x7fffffff);
615  }
616  else
617  {
618  position[2] -= increment[2];
619  }
620 }
621 
622 
624 {
625  v[0] = *(ptr);
626  v[1] = *(ptr+1);
627  v[2] = *(ptr+2);
628 }
629 
630 inline void vtkFixedPointVolumeRayCastMapper::GetUIntTripleFromPointer( unsigned int v[3], unsigned int *ptr )
631 {
632  v[0] = *(ptr);
633  v[1] = *(ptr+1);
634  v[2] = *(ptr+2);
635 }
636 
638  unsigned int out[3] )
639 {
640  out[0] = in[0] >> VTKKW_FP_SHIFT;
641  out[1] = in[1] >> VTKKW_FP_SHIFT;
642  out[2] = in[2] >> VTKKW_FP_SHIFT;
643 }
644 
645 inline int vtkFixedPointVolumeRayCastMapper::CheckMinMaxVolumeFlag( unsigned int mmpos[3], int c )
646 {
647  vtkIdType offset =
648  static_cast<vtkIdType>(this->MinMaxVolumeSize[3]) *
649  ( mmpos[2]*static_cast<vtkIdType>(
650  this->MinMaxVolumeSize[0]*this->MinMaxVolumeSize[1]) +
651  mmpos[1]*static_cast<vtkIdType>(this->MinMaxVolumeSize[0]) +
652  mmpos[0] ) + static_cast<vtkIdType>(c);
653 
654  return ((*(this->MinMaxVolume + 3*offset + 2))&0x00ff);
655 }
656 
657 inline int vtkFixedPointVolumeRayCastMapper::CheckMIPMinMaxVolumeFlag( unsigned int mmpos[3], int c,
658  unsigned short maxIdx, int flip )
659 {
660  vtkIdType offset =
661  static_cast<vtkIdType>(this->MinMaxVolumeSize[3]) *
662  ( mmpos[2]*static_cast<vtkIdType>(
663  this->MinMaxVolumeSize[0]*this->MinMaxVolumeSize[1]) +
664  mmpos[1]*static_cast<vtkIdType>(this->MinMaxVolumeSize[0]) +
665  mmpos[0] ) + static_cast<vtkIdType>(c);
666 
667  if ( (*(this->MinMaxVolume + 3*offset + 2)&0x00ff) )
668  {
669  if (flip)
670  {
671  return ( *(this->MinMaxVolume + 3*offset) < maxIdx );
672  }
673  else
674  {
675  return ( *(this->MinMaxVolume + 3*offset + 1) > maxIdx );
676  }
677  }
678  else
679  {
680  return 0;
681  }
682 }
683 
684 inline void vtkFixedPointVolumeRayCastMapper::LookupColorUC( unsigned short *colorTable,
685  unsigned short *scalarOpacityTable,
686  unsigned short index,
687  unsigned char color[4] )
688 {
689  unsigned short alpha = scalarOpacityTable[index];
690  color[0] = static_cast<unsigned char>
691  ((colorTable[3*index ]*alpha + 0x7fff)>>(2*VTKKW_FP_SHIFT - 8));
692  color[1] = static_cast<unsigned char>
693  ((colorTable[3*index+1]*alpha + 0x7fff)>>(2*VTKKW_FP_SHIFT - 8));
694  color[2] = static_cast<unsigned char>
695  ((colorTable[3*index+2]*alpha + 0x7fff)>>(2*VTKKW_FP_SHIFT - 8));
696  color[3] = static_cast<unsigned char>(alpha>>(VTKKW_FP_SHIFT - 8));
697 }
698 
699 inline void vtkFixedPointVolumeRayCastMapper::LookupDependentColorUC( unsigned short *colorTable,
700  unsigned short *scalarOpacityTable,
701  unsigned short index[4],
702  int components,
703  unsigned char color[4] )
704 {
705  unsigned short alpha;
706  switch ( components )
707  {
708  case 2:
709  alpha = scalarOpacityTable[index[1]];
710  color[0] = static_cast<unsigned char>
711  ((colorTable[3*index[0] ]*alpha + 0x7fff)>>(2*VTKKW_FP_SHIFT - 8));
712  color[1] = static_cast<unsigned char>
713  ((colorTable[3*index[0]+1]*alpha + 0x7fff)>>(2*VTKKW_FP_SHIFT - 8));
714  color[2] = static_cast<unsigned char>
715  ((colorTable[3*index[0]+2]*alpha + 0x7fff)>>(2*VTKKW_FP_SHIFT - 8));
716  color[3] = static_cast<unsigned char>(alpha>>(VTKKW_FP_SHIFT - 8));
717  break;
718  case 4:
719  alpha = scalarOpacityTable[index[3]];
720  color[0] = static_cast<unsigned char>((index[0]*alpha + 0x7fff)>>VTKKW_FP_SHIFT );
721  color[1] = static_cast<unsigned char>((index[1]*alpha + 0x7fff)>>VTKKW_FP_SHIFT );
722  color[2] = static_cast<unsigned char>((index[2]*alpha + 0x7fff)>>VTKKW_FP_SHIFT );
723  color[3] = static_cast<unsigned char>(alpha>>(VTKKW_FP_SHIFT - 8));
724  break;
725  }
726 }
727 
728 
730  unsigned short *scalarOpacityTable[4],
731  unsigned short index[4],
732  float weights[4],
733  int components,
734  unsigned char color[4] )
735 {
736  unsigned int tmp[4] = {0,0,0,0};
737 
738  for ( int i = 0; i < components; i++ )
739  {
740  unsigned short alpha = static_cast<unsigned short>(static_cast<float>(scalarOpacityTable[i][index[i]])*weights[i]);
741  tmp[0] += static_cast<unsigned char>(((colorTable[i][3*index[i] ])*alpha + 0x7fff)>>(2*VTKKW_FP_SHIFT - 8));
742  tmp[1] += static_cast<unsigned char>(((colorTable[i][3*index[i]+1])*alpha + 0x7fff)>>(2*VTKKW_FP_SHIFT - 8));
743  tmp[2] += static_cast<unsigned char>(((colorTable[i][3*index[i]+2])*alpha + 0x7fff)>>(2*VTKKW_FP_SHIFT - 8));
744  tmp[3] += static_cast<unsigned char>(alpha>>(VTKKW_FP_SHIFT - 8));
745  }
746 
747  color[0] = static_cast<unsigned char>((tmp[0]>255)?(255):(tmp[0]));
748  color[1] = static_cast<unsigned char>((tmp[1]>255)?(255):(tmp[1]));
749  color[2] = static_cast<unsigned char>((tmp[2]>255)?(255):(tmp[2]));
750  color[3] = static_cast<unsigned char>((tmp[3]>255)?(255):(tmp[3]));
751 
752 }
753 
754 inline int vtkFixedPointVolumeRayCastMapper::CheckIfCropped( unsigned int pos[3] )
755 {
756  int idx;
757 
758  if ( pos[2] < this->FixedPointCroppingRegionPlanes[4] )
759  {
760  idx = 0;
761  }
762  else if ( pos[2] > this->FixedPointCroppingRegionPlanes[5] )
763  {
764  idx = 18;
765  }
766  else
767  {
768  idx = 9;
769  }
770 
771  if ( pos[1] >= this->FixedPointCroppingRegionPlanes[2] )
772  {
773  if ( pos[1] > this->FixedPointCroppingRegionPlanes[3] )
774  {
775  idx += 6;
776  }
777  else
778  {
779  idx += 3;
780  }
781  }
782 
783  if ( pos[0] >= this->FixedPointCroppingRegionPlanes[0] )
784  {
785  if ( pos[0] > this->FixedPointCroppingRegionPlanes[1] )
786  {
787  idx += 2;
788  }
789  else
790  {
791  idx += 1;
792  }
793  }
794 
795  return !(static_cast<unsigned int>(this->CroppingRegionFlags)
796  &this->CroppingRegionMask[idx]);
797 }
798 
799 #endif
int CroppingRegionFlags
Cropping variables, and a method for converting the world coordinate cropping region planes to voxel ...
void ShiftVectorDown(unsigned int in[3], unsigned int out[3])
vtkFixedPointVolumeRayCastMIPHelper * MIPHelper
represents a volume (data & properties) in a rendered scene
Definition: vtkVolume.h:50
vtkFixedPointVolumeRayCastCompositeShadeHelper * CompositeShadeHelper
vtkVolumeRayCastSpaceLeapingImageFilter * SpaceLeapFilter
Abstract class for a volume mapper.
encode a direction into a one or two byte value
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:41
A helper that generates composite images for the volume ray cast mapper.
void FixedPointIncrement(unsigned int position[3], unsigned int increment[3])
Use finite differences to estimate gradient.
Defines a 1D piecewise function.
VTK_THREAD_RETURN_TYPE vtkFPVRCMSwitchOnDataType(void *arg)
A class for performing multithreaded execution.
record modification and/or execution time
Definition: vtkTimeStamp.h:35
maintain a list of planes
VTK_THREAD_RETURN_TYPE FixedPointVolumeRayCastMapper_CastRays(void *arg)
abstract specification for renderers
Definition: vtkRenderer.h:63
void GetUIntTripleFromPointer(unsigned int v[3], unsigned int *ptr)
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:60
int vtkIdType
Definition: vtkType.h:347
A helper that generates MIP images for the volume ray cast mapper.
helper class that draws the image to the screen
void Render(vtkRenderer *ren, vtkVolume *vol) override=0
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
#define VTKKW_FP_SCALE
int vtkTypeBool
Definition: vtkABI.h:69
Timer support and logging.
Definition: vtkTimerLog.h:91
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
vtkFixedPointVolumeRayCastCompositeGOHelper * CompositeGOHelper
a simple class to control print indentation
Definition: vtkIndent.h:39
float GetEstimatedRenderTime(vtkRenderer *ren, vtkVolume *vol)
Get an estimate of the rendering time for a given volume / renderer.
topologically and geometrically regular array of data
Definition: vtkImageData.h:45
void LookupDependentColorUC(unsigned short *colorTable, unsigned short *scalarOpacityTable, unsigned short index[4], int components, unsigned char color[4])
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:54
Compute shading tables for encoded normals.
int CheckMIPMinMaxVolumeFlag(unsigned int pos[3], int c, unsigned short maxIdx, int flip)
A helper that generates composite images for the volume ray cast mapper.
void ReleaseGraphicsResources(vtkWindow *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
A helper that generates composite images for the volume ray cast mapper.
Defines a transfer function for mapping a property to an RGB color value.
create a window for renderers to draw into
vtkFixedPointVolumeRayCastCompositeHelper * CompositeHelper
A helper that generates composite images for the volume ray cast mapper.
#define VTK_THREAD_RETURN_TYPE
void LookupAndCombineIndependentColorsUC(unsigned short *colorTable[4], unsigned short *scalarOpacityTable[4], unsigned short index[4], float weights[4], int components, unsigned char color[4])
int CheckMinMaxVolumeFlag(unsigned int pos[3], int c)
void LookupColorUC(unsigned short *colorTable, unsigned short *scalarOpacityTable, unsigned short index, unsigned char color[4])
vtkFixedPointVolumeRayCastCompositeGOShadeHelper * CompositeGOShadeHelper
static vtkAlgorithm * New()
vtkRayCastImageDisplayHelper * ImageDisplayHelper
#define VTKKW_FP_SHIFT
vtkFiniteDifferenceGradientEstimator * GradientEstimator
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void GetFloatTripleFromPointer(float v[3], float *ptr)
helper class for a ray cast image