VTK
dox/Interaction/Widgets/vtkImageActorPointPlacer.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkImageActorPointPlacer.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 =========================================================================*/
00028 #ifndef __vtkImageActorPointPlacer_h
00029 #define __vtkImageActorPointPlacer_h
00030 
00031 #include "vtkInteractionWidgetsModule.h" // For export macro
00032 #include "vtkPointPlacer.h"
00033 
00034 class vtkBoundedPlanePointPlacer;
00035 class vtkImageActor;
00036 class vtkRenderer;
00037 
00038 class VTKINTERACTIONWIDGETS_EXPORT vtkImageActorPointPlacer : public vtkPointPlacer
00039 {
00040 public:
00042   static vtkImageActorPointPlacer *New();
00043 
00045 
00046   vtkTypeMacro(vtkImageActorPointPlacer,vtkPointPlacer);
00047   void PrintSelf(ostream& os, vtkIndent indent);
00049 
00051 
00057   int ComputeWorldPosition( vtkRenderer *ren,
00058                             double displayPos[2],
00059                             double worldPos[3],
00060                             double worldOrient[9] );
00062 
00064 
00066   int ComputeWorldPosition( vtkRenderer *ren,
00067                             double displayPos[2],
00068                             double refWorldPos[2],
00069                             double worldPos[3],
00070                             double worldOrient[9] );
00072 
00076   int ValidateWorldPosition( double worldPos[3] );
00077 
00079 
00081   int ValidateWorldPosition( double worldPos[3],
00082                              double worldOrient[9]);
00084 
00085 
00087 
00090   int UpdateWorldPosition( vtkRenderer *ren,
00091                            double worldPos[3],
00092                            double worldOrient[9]);
00094 
00100   int UpdateInternalState();
00101 
00103 
00107   void SetImageActor( vtkImageActor * );
00108   vtkGetObjectMacro( ImageActor, vtkImageActor );
00110 
00112 
00117   vtkSetVector6Macro( Bounds, double );
00118   vtkGetVector6Macro( Bounds, double );
00120 
00123   virtual void SetWorldTolerance( double s );
00124 
00125 protected:
00126   vtkImageActorPointPlacer();
00127   ~vtkImageActorPointPlacer();
00128 
00129 
00130   // The reference image actor. Must be configured before this placer
00131   // is used.
00132   vtkImageActor *ImageActor;
00133 
00134   // The internal placer.
00135   vtkBoundedPlanePointPlacer *Placer;
00136 
00137   // Used to keep track of whether the bounds of the
00138   // input image have changed
00139   double SavedBounds[6];
00140 
00141   // See the SetBounds method
00142   double Bounds[6];
00143 
00144 private:
00145   vtkImageActorPointPlacer(const vtkImageActorPointPlacer&);  //Not implemented
00146   void operator=(const vtkImageActorPointPlacer&);  //Not implemented
00147 };
00148 
00149 #endif