Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Hybrid/vtkPointWidget.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkPointWidget.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00080 #ifndef __vtkPointWidget_h 00081 #define __vtkPointWidget_h 00082 00083 #include "vtk3DWidget.h" 00084 #include "vtkCursor3D.h" // Needed for faster access to the Cursor3D 00085 00086 class vtkActor; 00087 class vtkPolyDataMapper; 00088 class vtkCellPicker; 00089 class vtkPolyData; 00090 class vtkProperty; 00091 00092 class VTK_HYBRID_EXPORT vtkPointWidget : public vtk3DWidget 00093 { 00094 public: 00096 static vtkPointWidget *New(); 00097 00098 vtkTypeRevisionMacro(vtkPointWidget,vtk3DWidget); 00099 void PrintSelf(ostream& os, vtkIndent indent); 00100 00102 00103 virtual void SetEnabled(int); 00104 virtual void PlaceWidget(float bounds[6]); 00105 void PlaceWidget() 00106 {this->Superclass::PlaceWidget();} 00107 void PlaceWidget(float xmin, float xmax, float ymin, float ymax, 00108 float zmin, float zmax) 00109 {this->Superclass::PlaceWidget(xmin,xmax,ymin,ymax,zmin,zmax);} 00111 00114 void GetPolyData(vtkPolyData *pd); 00115 00117 00120 void SetPosition(float x, float y, float z) 00121 {this->Cursor3D->SetFocalPoint(x,y,z);} 00122 void SetPosition(float x[3]) 00123 {this->SetPosition(x[0],x[1],x[2]);} 00124 float* GetPosition() 00125 {return this->Cursor3D->GetFocalPoint();} 00126 void GetPosition(float xyz[3]) 00127 {this->Cursor3D->GetFocalPoint(xyz);} 00129 00131 00132 void SetOutline(int o) 00133 {this->Cursor3D->SetOutline(o);} 00134 int GetOutline() 00135 {return this->Cursor3D->GetOutline();} 00136 void OutlineOn() 00137 {this->Cursor3D->OutlineOn();} 00138 void OutlineOff() 00139 {this->Cursor3D->OutlineOff();} 00141 00143 00144 void SetXShadows(int o) 00145 {this->Cursor3D->SetXShadows(o);} 00146 int GetXShadows() 00147 {return this->Cursor3D->GetXShadows();} 00148 void XShadowsOn() 00149 {this->Cursor3D->XShadowsOn();} 00150 void XShadowsOff() 00151 {this->Cursor3D->XShadowsOff();} 00153 00155 00156 void SetYShadows(int o) 00157 {this->Cursor3D->SetYShadows(o);} 00158 int GetYShadows() 00159 {return this->Cursor3D->GetYShadows();} 00160 void YShadowsOn() 00161 {this->Cursor3D->YShadowsOn();} 00162 void YShadowsOff() 00163 {this->Cursor3D->YShadowsOff();} 00165 00167 00168 void SetZShadows(int o) 00169 {this->Cursor3D->SetZShadows(o);} 00170 int GetZShadows() 00171 {return this->Cursor3D->GetZShadows();} 00172 void ZShadowsOn() 00173 {this->Cursor3D->ZShadowsOn();} 00174 void ZShadowsOff() 00175 {this->Cursor3D->ZShadowsOff();} 00177 00179 00182 void SetTranslationMode(int mode) 00183 { this->Cursor3D->SetTranslationMode(mode); this->Cursor3D->Update(); } 00184 int GetTranslationMode() 00185 { return this->Cursor3D->GetTranslationMode(); } 00186 void TranslationModeOn() 00187 { this->SetTranslationMode(1); } 00188 void TranslationModeOff() 00189 { this->SetTranslationMode(0); } 00191 00193 00194 void AllOn() 00195 { 00196 this->OutlineOn(); 00197 this->XShadowsOn(); 00198 this->YShadowsOn(); 00199 this->ZShadowsOn(); 00200 } 00201 void AllOff() 00202 { 00203 this->OutlineOff(); 00204 this->XShadowsOff(); 00205 this->YShadowsOff(); 00206 this->ZShadowsOff(); 00207 } 00209 00211 00213 vtkGetObjectMacro(Property,vtkProperty); 00214 vtkGetObjectMacro(SelectedProperty,vtkProperty); 00216 00218 00222 vtkSetClampMacro(HotSpotSize,float,0.0,1.0); 00223 vtkGetMacro(HotSpotSize,float); 00225 00226 protected: 00227 vtkPointWidget(); 00228 ~vtkPointWidget(); 00229 00230 //BTX - manage the state of the widget 00231 friend class vtkLineWidget; 00232 00233 int State; 00234 enum WidgetState 00235 { 00236 Start=0, 00237 Moving, 00238 Scaling, 00239 Translating, 00240 Outside 00241 }; 00242 //ETX 00243 00244 // Handles the events 00245 static void ProcessEvents(vtkObject* object, 00246 unsigned long event, 00247 void* clientdata, 00248 void* calldata); 00249 00250 // ProcessEvents() dispatches to these methods. 00251 void OnMouseMove(); 00252 void OnLeftButtonDown(); 00253 void OnLeftButtonUp(); 00254 void OnMiddleButtonDown(); 00255 void OnMiddleButtonUp(); 00256 void OnRightButtonDown(); 00257 void OnRightButtonUp(); 00258 00259 // the cursor3D 00260 vtkActor *Actor; 00261 vtkPolyDataMapper *Mapper; 00262 vtkCursor3D *Cursor3D; 00263 void Highlight(int highlight); 00264 00265 // Do the picking 00266 vtkCellPicker *CursorPicker; 00267 00268 // Methods to manipulate the cursor 00269 int ConstraintAxis; 00270 void Translate(double *p1, double *p2); 00271 void Scale(double *p1, double *p2, int X, int Y); 00272 void MoveFocus(double *p1, double *p2); 00273 int TranslationMode; 00274 00275 // Properties used to control the appearance of selected objects and 00276 // the manipulator in general. 00277 vtkProperty *Property; 00278 vtkProperty *SelectedProperty; 00279 void CreateDefaultProperties(); 00280 00281 // The size of the hot spot. 00282 float HotSpotSize; 00283 int DetermineConstraintAxis(int constraint, double *x); 00284 int WaitingForMotion; 00285 int WaitCount; 00286 00287 private: 00288 vtkPointWidget(const vtkPointWidget&); //Not implemented 00289 void operator=(const vtkPointWidget&); //Not implemented 00290 }; 00291 00292 #endif