VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkRenderLargeImage.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 =========================================================================*/ 00027 #ifndef __vtkRenderLargeImage_h 00028 #define __vtkRenderLargeImage_h 00029 00030 #include "vtkAlgorithm.h" 00031 #include "vtkImageData.h" // makes things a bit easier 00032 00033 class vtkRenderer; 00034 class vtkActor2DCollection; 00035 class vtkCollection; 00036 class vtkRenderLargeImage2DHelperClass; 00037 00038 class VTK_HYBRID_EXPORT vtkRenderLargeImage : public vtkAlgorithm 00039 { 00040 public: 00041 static vtkRenderLargeImage *New(); 00042 vtkTypeMacro(vtkRenderLargeImage,vtkAlgorithm); 00043 void PrintSelf(ostream& os, vtkIndent indent); 00044 00046 00047 vtkSetMacro(Magnification,int); 00048 vtkGetMacro(Magnification,int); 00050 00052 virtual void SetInput(vtkRenderer*); 00053 00055 00057 vtkGetObjectMacro(Input,vtkRenderer); 00059 00061 vtkImageData* GetOutput(); 00062 00064 00065 virtual int ProcessRequest(vtkInformation*, 00066 vtkInformationVector**, 00067 vtkInformationVector*); 00069 00070 protected: 00071 vtkRenderLargeImage(); 00072 ~vtkRenderLargeImage(); 00073 00074 int Magnification; 00075 vtkRenderer *Input; 00076 void RequestData(vtkInformation *, 00077 vtkInformationVector **, vtkInformationVector *); 00078 void RequestInformation (vtkInformation *, 00079 vtkInformationVector **, vtkInformationVector *); 00080 00081 // see algorithm for more info 00082 virtual int FillOutputPortInformation(int port, vtkInformation* info); 00083 00084 // Adjust the coordinates of all 2D actors to fit new window size 00085 void Rescale2DActors(); 00086 // Shift each actor according to the tile we are rendering 00087 void Shift2DActors(int x, int y); 00088 // put them all back to their previous state when finished. 00089 void Restore2DActors(); 00090 // 2D Actors need to be rescaled and shifted about for each tile 00091 // use this helper class to make life easier. 00092 vtkRenderLargeImage2DHelperClass *StoredData; 00093 00094 private: 00095 vtkRenderLargeImage(const vtkRenderLargeImage&); // Not implemented. 00096 void operator=(const vtkRenderLargeImage&); // Not implemented. 00097 }; 00098 00099 #endif