VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkVisibilitySort.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00015 00016 /* 00017 * Copyright 2003 Sandia Corporation. 00018 * Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00019 * license for use of this work by or on behalf of the 00020 * U.S. Government. Redistribution and use in source and binary forms, with 00021 * or without modification, are permitted provided that this Notice and any 00022 * statement of authorship are reproduced on all copies. 00023 */ 00024 00045 #ifndef __vtkVisibilitySort_h 00046 #define __vtkVisibilitySort_h 00047 00048 #include "vtkObject.h" 00049 00050 class vtkIdTypeArray; 00051 class vtkDataSet; 00052 class vtkMatrix4x4; 00053 class vtkCamera; 00054 00055 class VTK_RENDERING_EXPORT vtkVisibilitySort : public vtkObject 00056 { 00057 public: 00058 vtkTypeMacro(vtkVisibilitySort, vtkObject); 00059 virtual void PrintSelf(ostream &os, vtkIndent indent); 00060 00062 00071 virtual void InitTraversal() = 0; 00072 virtual vtkIdTypeArray *GetNextCells() = 0; 00074 00076 00078 vtkSetClampMacro(MaxCellsReturned, int, 1, VTK_LARGE_INTEGER); 00079 vtkGetMacro(MaxCellsReturned, int); 00081 00083 00086 virtual void SetModelTransform(vtkMatrix4x4 *mat); 00087 vtkGetObjectMacro(ModelTransform, vtkMatrix4x4); 00089 00090 vtkGetObjectMacro(InverseModelTransform, vtkMatrix4x4); 00091 00093 00094 virtual void SetCamera(vtkCamera *camera); 00095 vtkGetObjectMacro(Camera, vtkCamera); 00097 00099 00100 virtual void SetInput(vtkDataSet *data); 00101 vtkGetObjectMacro(Input, vtkDataSet); 00103 00105 00107 vtkGetMacro(Direction, int); 00108 vtkSetMacro(Direction, int); 00109 void SetDirectionToBackToFront() { this->SetDirection(BACK_TO_FRONT); } 00110 void SetDirectionToFrontToBack() { this->SetDirection(FRONT_TO_BACK); } 00112 00113 //BTX 00114 enum { BACK_TO_FRONT, FRONT_TO_BACK }; 00115 //ETX 00116 00118 00119 virtual void Register(vtkObjectBase *o); 00120 virtual void UnRegister(vtkObjectBase *o); 00122 00123 protected: 00124 vtkVisibilitySort(); 00125 virtual ~vtkVisibilitySort(); 00126 00127 vtkTimeStamp LastSortTime; 00128 00129 vtkMatrix4x4 *ModelTransform; 00130 vtkMatrix4x4 *InverseModelTransform; 00131 vtkCamera *Camera; 00132 vtkDataSet *Input; 00133 00134 int MaxCellsReturned; 00135 00136 int Direction; 00137 00138 virtual void ReportReferences(vtkGarbageCollector *collector); 00139 00140 private: 00141 vtkVisibilitySort(const vtkVisibilitySort &); // Not implemented. 00142 void operator=(const vtkVisibilitySort &); // Not implemented. 00143 }; 00144 00145 #endif //__vtkVisibilitySort_h 00146