VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkPolyDataSilhouette.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 =========================================================================*/ 00040 #ifndef vtkPolyDataSilhouette_h 00041 #define vtkPolyDataSilhouette_h 00042 00043 #include "vtkFiltersHybridModule.h" // For export macro 00044 #include "vtkPolyDataAlgorithm.h" 00045 00046 #define VTK_DIRECTION_SPECIFIED_VECTOR 0 00047 #define VTK_DIRECTION_SPECIFIED_ORIGIN 1 00048 #define VTK_DIRECTION_CAMERA_ORIGIN 2 00049 #define VTK_DIRECTION_CAMERA_VECTOR 3 00050 00051 class vtkCamera; 00052 class vtkProp3D; 00053 class vtkTransform; 00054 class vtkPolyDataEdges; 00055 00056 class VTKFILTERSHYBRID_EXPORT vtkPolyDataSilhouette : public vtkPolyDataAlgorithm 00057 { 00058 public: 00060 static vtkPolyDataSilhouette *New(); 00061 00062 vtkTypeMacro(vtkPolyDataSilhouette,vtkPolyDataAlgorithm); 00063 void PrintSelf(ostream& os, vtkIndent indent); 00064 00066 00067 vtkSetMacro(EnableFeatureAngle,int); 00068 vtkGetMacro(EnableFeatureAngle,int); 00070 00072 00073 vtkSetMacro(FeatureAngle,double); 00074 vtkGetMacro(FeatureAngle,double); 00076 00078 00080 vtkSetMacro(BorderEdges,int); 00081 vtkGetMacro(BorderEdges,int); 00082 vtkBooleanMacro(BorderEdges,int); 00084 00086 00088 vtkSetMacro(PieceInvariant,int); 00089 vtkGetMacro(PieceInvariant,int); 00090 vtkBooleanMacro(PieceInvariant,int); 00092 00094 00096 vtkSetMacro(Direction,int); 00097 vtkGetMacro(Direction,int); 00098 void SetDirectionToSpecifiedVector() 00099 {this->SetDirection( VTK_DIRECTION_SPECIFIED_VECTOR ); } 00100 void SetDirectionToSpecifiedOrigin() 00101 {this->SetDirection( VTK_DIRECTION_SPECIFIED_ORIGIN ); } 00102 void SetDirectionToCameraVector() 00103 {this->SetDirection( VTK_DIRECTION_CAMERA_VECTOR ); } 00104 void SetDirectionToCameraOrigin() 00105 {this->SetDirection( VTK_DIRECTION_CAMERA_ORIGIN ); } 00107 00109 00113 virtual void SetCamera(vtkCamera VTK_WRAP_EXTERN*); 00114 vtkGetObjectMacro(Camera,vtkCamera VTK_WRAP_EXTERN); 00116 00118 00123 void SetProp3D(vtkProp3D VTK_WRAP_EXTERN*); 00124 vtkProp3D VTK_WRAP_EXTERN*GetProp3D(); 00126 00128 00131 vtkSetVector3Macro(Vector,double); 00132 vtkGetVectorMacro(Vector,double,3); 00134 00136 00140 vtkSetVector3Macro(Origin,double); 00141 vtkGetVectorMacro(Origin,double,3); 00143 00146 unsigned long GetMTime(); 00147 00148 protected: 00149 vtkPolyDataSilhouette(); 00150 ~vtkPolyDataSilhouette(); 00151 00152 int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00153 void ComputeProjectionVector(double vector[3], double origin[3]); 00154 00155 int Direction; 00156 vtkCamera *Camera; 00157 vtkProp3D *Prop3D; 00158 vtkTransform *Transform; 00159 double Vector[3]; 00160 double Origin[3]; 00161 00162 int EnableFeatureAngle; 00163 double FeatureAngle; 00164 00165 int BorderEdges; 00166 int PieceInvariant; 00167 00168 vtkPolyDataEdges* PreComp; // precomputed data for a given point of view 00169 00170 private: 00171 vtkPolyDataSilhouette(const vtkPolyDataSilhouette&); // Not implemented. 00172 void operator=(const vtkPolyDataSilhouette&); // Not implemented. 00173 }; 00174 00175 #endif