00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkAbstractPropPicker.h,v $ 00005 Language: C++ 00006 00007 00008 Copyright (c) 1993-2001 Ken Martin, Will Schroeder, Bill Lorensen. 00009 00010 This software is copyrighted by Ken Martin, Will Schroeder and Bill Lorensen. 00011 The following terms apply to all files associated with the software unless 00012 explicitly disclaimed in individual files. This copyright specifically does 00013 not apply to the related textbook "The Visualization Toolkit" ISBN 00014 013199837-4 published by Prentice Hall which is covered by its own copyright. 00015 00016 The authors hereby grant permission to use, copy, and distribute this 00017 software and its documentation for any purpose, provided that existing 00018 copyright notices are retained in all copies and that this notice is included 00019 verbatim in any distributions. Additionally, the authors grant permission to 00020 modify this software and its documentation for any purpose, provided that 00021 such modifications are not distributed without the explicit consent of the 00022 authors and that existing copyright notices are retained in all copies. Some 00023 of the algorithms implemented by this software are patented, observe all 00024 applicable patent law. 00025 00026 IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR 00027 DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT 00028 OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, 00029 EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00030 00031 THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING, 00032 BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 00033 PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN 00034 "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE 00035 MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 00036 00037 00038 =========================================================================*/ 00090 #ifndef __vtkAbstractPropPicker_h 00091 #define __vtkAbstractPropPicker_h 00092 00093 #include "vtkAbstractPicker.h" 00094 00095 class vtkProp; 00096 class vtkPropAssembly; 00097 class vtkAssembly; 00098 class vtkActor; 00099 class vtkVolume; 00100 class vtkProp3D; 00101 00102 class VTK_RENDERING_EXPORT vtkAbstractPropPicker : public vtkAbstractPicker 00103 { 00104 public: 00105 vtkTypeMacro(vtkAbstractPropPicker,vtkAbstractPicker); 00106 void PrintSelf(ostream& os, vtkIndent indent); 00107 00109 00116 vtkSetObjectMacro(Path,vtkAssemblyPath); 00117 vtkGetObjectMacro(Path,vtkAssemblyPath); 00119 00120 // The following are convenience methods to maintain API with older 00121 // versions of VTK, and to allow query for the return type of a pick. Note: 00122 // the functionality of these methods can also be obtained by using the 00123 // returned vtkAssemblyPath and using the IsA() to determine type. 00124 00127 virtual vtkProp *GetProp(); 00128 00131 virtual vtkProp3D *GetProp3D(); 00132 00135 virtual vtkActor *GetActor(); 00136 00139 virtual vtkActor2D *GetActor2D(); 00140 00143 virtual vtkVolume *GetVolume(); 00144 00150 virtual vtkAssembly *GetAssembly(); 00151 00157 virtual vtkPropAssembly *GetPropAssembly(); 00158 00159 protected: 00160 vtkAbstractPropPicker(); 00161 ~vtkAbstractPropPicker(); 00162 00163 void Initialize(); 00164 00165 vtkAssemblyPath *Path; //this is what is picked, and includes the prop 00166 private: 00167 vtkAbstractPropPicker(const vtkAbstractPropPicker&); // Not implemented. 00168 void operator=(const vtkAbstractPropPicker&); // Not implemented. 00169 }; 00170 00171 #endif