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

vtkInputPort.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkInputPort.h,v $
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 =========================================================================*/
00047 #ifndef __vtkInputPort_h
00048 #define __vtkInputPort_h
00049 
00050 #include "vtkSource.h"
00051 
00052 class vtkPolyData;
00053 class vtkUnstructuredGrid;
00054 class vtkStructuredGrid;
00055 class vtkRectilinearGrid;
00056 class vtkStructuredPoints;
00057 class vtkImageData;
00058 class vtkMultiProcessController;
00059 
00060 class VTK_PARALLEL_EXPORT vtkInputPort : public vtkSource
00061 {
00062 public:
00063   static vtkInputPort *New();
00064   vtkTypeRevisionMacro(vtkInputPort,vtkSource);
00065   void PrintSelf(ostream& os, vtkIndent indent);
00066 
00068 
00072   vtkPolyData *GetPolyDataOutput();
00073   vtkUnstructuredGrid *GetUnstructuredGridOutput();
00074   vtkStructuredGrid *GetStructuredGridOutput();
00075   vtkRectilinearGrid *GetRectilinearGridOutput();
00076   vtkStructuredPoints *GetStructuredPointsOutput();
00077   vtkImageData *GetImageDataOutput();
00079   
00081 
00084   vtkSetMacro(RemoteProcessId, int);
00085   vtkGetMacro(RemoteProcessId, int);
00086   vtkSetMacro(Tag, int);
00087   vtkGetMacro(Tag, int);
00089 
00091   unsigned long GetMTime();
00092 
00094 
00096   vtkMultiProcessController *GetController() {return this->Controller;}
00097   virtual void SetController(vtkMultiProcessController*);
00099   
00101 
00106   vtkSetMacro(DoUpdateInformation, int);
00107   vtkGetMacro(DoUpdateInformation, int);
00109   
00110 //BTX
00111 
00112 // Arbitrary tags used by the ports for communication.
00113   enum Tags {
00114     DOWN_DATA_TIME_TAG = 98970,
00115     UPDATE_EXTENT_TAG = 98971,
00116     TRANSFER_NEEDED_TAG = 98972,
00117     INFORMATION_TRANSFER_TAG = 98973,
00118     DATA_TRANSFER_TAG = 98974,
00119     NEW_DATA_TIME_TAG = 98975
00120   };
00121 
00122 //ETX
00123 
00124 protected:
00125   vtkInputPort();
00126   ~vtkInputPort();  
00127   
00128   vtkMultiProcessController *Controller;
00129   int RemoteProcessId;
00130   int Tag;
00131 
00132   unsigned long DataTime;
00133   unsigned long UpStreamMTime;
00134   int TransferNeeded;
00135   int DoUpdateInformation;
00136 
00137   int LastUpdatePiece;
00138   int LastUpdateNumberOfPieces;
00139   int LastUpdateGhostLevel;
00140 
00141   vtkSetVector6Macro(LastUpdateExtent, int);
00142   int LastUpdateExtent[6];
00143 
00144   int UpdateExtentIsOutsideOfTheExtent(vtkDataObject *output);
00145 
00146   void ExecuteInformation();
00147   void ExecuteData(vtkDataObject *output);
00148 
00149   // see the vtkAlgorithm for what these methods do
00150   virtual int FillOutputPortInformation(int port, vtkInformation* info);
00151 
00152 private:
00153   vtkInputPort(const vtkInputPort&);  // Not implemented.
00154   void operator=(const vtkInputPort&);  // Not implemented.
00155 };
00156 
00157 #endif
00158 
00159