00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00062 #ifndef __vtkWindowToImageFilter_h
00063 #define __vtkWindowToImageFilter_h
00064 
00065 #include "vtkAlgorithm.h"
00066 #include "vtkImageData.h" 
00067 
00068 
00069 #define VTK_ZBUFFER 5
00070 
00071 class vtkWindow;
00072 
00073 class vtkWTI2DHelperClass;
00074 class VTK_RENDERING_EXPORT vtkWindowToImageFilter : public vtkAlgorithm
00075 {
00076 public:
00077   static vtkWindowToImageFilter *New();
00078 
00079   vtkTypeMacro(vtkWindowToImageFilter,vtkAlgorithm);
00080   void PrintSelf(ostream& os, vtkIndent indent);   
00081 
00084   void SetInput(vtkWindow *input);
00085 
00087 
00089   vtkGetObjectMacro(Input,vtkWindow);
00091 
00093 
00094   vtkSetClampMacro(Magnification,int,1,2048);
00095   vtkGetMacro(Magnification,int);
00097 
00099 
00102   vtkSetMacro(FixBoundary, bool);
00103   vtkGetMacro(FixBoundary, bool);
00104   vtkBooleanMacro(FixBoundary, bool);
00106 
00108 
00110   vtkBooleanMacro(ReadFrontBuffer, int);
00111   vtkGetMacro(ReadFrontBuffer, int);
00112   vtkSetMacro(ReadFrontBuffer, int);
00114   
00116 
00118   vtkBooleanMacro(ShouldRerender, int);
00119   vtkSetMacro(ShouldRerender, int);
00120   vtkGetMacro(ShouldRerender, int);
00122   
00124 
00126   vtkSetVector4Macro(Viewport,double);
00127   vtkGetVectorMacro(Viewport,double,4);
00129 
00131 
00135   vtkSetMacro(InputBufferType, int);
00136   vtkGetMacro(InputBufferType, int);
00137   void SetInputBufferTypeToRGB() {this->SetInputBufferType(VTK_RGB);};
00138   void SetInputBufferTypeToRGBA() {this->SetInputBufferType(VTK_RGBA);};
00139   void SetInputBufferTypeToZBuffer() {this->SetInputBufferType(VTK_ZBUFFER);};
00141 
00142 
00144   vtkImageData* GetOutput();
00145 
00147 
00148   virtual int ProcessRequest(vtkInformation*,
00149                              vtkInformationVector**,
00150                              vtkInformationVector*);
00152 
00153 protected:
00154   vtkWindowToImageFilter();
00155   ~vtkWindowToImageFilter();
00156 
00157   
00158   vtkWindow *Input;
00159   int Magnification;
00160   int ReadFrontBuffer;
00161   int ShouldRerender;
00162   double Viewport[4];
00163   int InputBufferType;
00164   bool FixBoundary;
00165 
00166   void RequestData(vtkInformation *, 
00167                    vtkInformationVector **, vtkInformationVector *);
00168 
00169   virtual void RequestInformation (vtkInformation*,
00170                                   vtkInformationVector**,
00171                                   vtkInformationVector*);
00172 
00173   
00174   virtual int FillOutputPortInformation(int port, vtkInformation* info);
00175 
00176   
00177   void Rescale2DActors();
00178   void Shift2DActors(int x, int y);
00179   void Restore2DActors();
00180   vtkWTI2DHelperClass *StoredData;
00181 
00182 private:
00183   vtkWindowToImageFilter(const vtkWindowToImageFilter&);  
00184   void operator=(const vtkWindowToImageFilter&);  
00185 };
00186 
00187 #endif