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

vtkStreamingDemandDrivenPipeline.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkStreamingDemandDrivenPipeline.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 =========================================================================*/
00031 #ifndef __vtkStreamingDemandDrivenPipeline_h
00032 #define __vtkStreamingDemandDrivenPipeline_h
00033 
00034 #include "vtkDemandDrivenPipeline.h"
00035 
00036 class vtkExtentTranslator;
00037 class vtkInformationDoubleVectorKey;
00038 class vtkInformationIntegerKey;
00039 class vtkInformationIntegerVectorKey;
00040 class vtkInformationObjectBaseKey;
00041 
00042 class VTK_FILTERING_EXPORT vtkStreamingDemandDrivenPipeline : public vtkDemandDrivenPipeline
00043 {
00044 public:
00045   static vtkStreamingDemandDrivenPipeline* New();
00046   vtkTypeRevisionMacro(vtkStreamingDemandDrivenPipeline,vtkDemandDrivenPipeline);
00047   void PrintSelf(ostream& os, vtkIndent indent);
00048 
00050 
00052   virtual int ProcessRequest(vtkInformation* request,
00053                              vtkInformationVector** inInfo,
00054                              vtkInformationVector* outInfo);
00056 
00058 
00059   virtual int Update();
00060   virtual int Update(int port);
00061   virtual int UpdateWholeExtent();
00063 
00066   int PropagateUpdateExtent(int outputPort);
00067 
00069 
00073   int SetMaximumNumberOfPieces(vtkInformation *, int n);
00074   int GetMaximumNumberOfPieces(vtkInformation *);
00076 
00078 
00081   int SetWholeExtent(vtkInformation *, int extent[6]);
00082   void GetWholeExtent(vtkInformation *, int extent[6]);
00083   int* GetWholeExtent(vtkInformation *);
00085 
00090   int SetUpdateExtentToWholeExtent(vtkInformation *);
00091   
00093 
00094   int SetUpdateExtent(vtkInformation *, int extent[6]);
00095   void GetUpdateExtent(vtkInformation *, int extent[6]);
00096   int* GetUpdateExtent(vtkInformation *);
00098 
00100 
00102   int SetUpdateExtent(vtkInformation *, 
00103                       int piece, int numPieces, int ghostLevel);
00104   int SetUpdatePiece(vtkInformation *, int piece);
00105   int GetUpdatePiece(vtkInformation *);
00106   int SetUpdateNumberOfPieces(vtkInformation *, int n);
00107   int GetUpdateNumberOfPieces(vtkInformation *);
00108   int SetUpdateGhostLevel(vtkInformation *, int n);
00109   int GetUpdateGhostLevel(vtkInformation *);
00111 
00113 
00119   int SetRequestExactExtent(int port, int flag);
00120   int GetRequestExactExtent(int port);
00122 
00124 
00126   int SetExtentTranslator(vtkInformation *, vtkExtentTranslator* translator);
00127   vtkExtentTranslator* GetExtentTranslator(vtkInformation *info);
00129 
00131 
00134   int SetWholeBoundingBox(int port, double bb[6]);
00135   void GetWholeBoundingBox(int port, double bb[6]);
00136   double* GetWholeBoundingBox(int port);
00138 
00140   static vtkInformationRequestKey* REQUEST_UPDATE_EXTENT();
00141 
00144   static vtkInformationIntegerKey* CONTINUE_EXECUTING();
00145 
00147   static vtkInformationObjectBaseKey* EXTENT_TRANSLATOR();
00148 
00150 
00151   static vtkInformationIntegerKey* UPDATE_EXTENT_INITIALIZED();
00152   static vtkInformationIntegerVectorKey* UPDATE_EXTENT();
00153   static vtkInformationIntegerKey* UPDATE_PIECE_NUMBER();
00154   static vtkInformationIntegerKey* UPDATE_NUMBER_OF_PIECES();
00155   static vtkInformationIntegerKey* UPDATE_NUMBER_OF_GHOST_LEVELS();
00157 
00159   static vtkInformationIntegerVectorKey* WHOLE_EXTENT();
00160 
00163   static vtkInformationIntegerKey* MAXIMUM_NUMBER_OF_PIECES();
00164 
00167   static vtkInformationDoubleVectorKey* WHOLE_BOUNDING_BOX();
00168 
00170   static vtkInformationIntegerKey* EXACT_EXTENT();
00171 
00173   static vtkInformationDoubleVectorKey* TIME_STEPS();
00174 
00176   static vtkInformationIntegerKey* UPDATE_TIME_INDEX();
00177 
00178 protected:
00179   vtkStreamingDemandDrivenPipeline();
00180   ~vtkStreamingDemandDrivenPipeline();
00181 
00182   // Setup default information on the output after the algorithm
00183   // executes information.
00184   virtual int ExecuteInformation(vtkInformation* request,
00185                                  vtkInformationVector** inInfoVec,
00186                                  vtkInformationVector* outInfoVec);
00187 
00188   // Copy information for the given request.
00189   virtual void CopyDefaultInformation(vtkInformation* request, int direction,
00190                                       vtkInformationVector** inInfoVec,
00191                                       vtkInformationVector* outInfoVec);
00192 
00193   // Helper to check output information before propagating it to inputs.
00194   virtual int VerifyOutputInformation(int outputPort,
00195                                       vtkInformationVector** inInfoVec,
00196                                       vtkInformationVector* outInfoVec);
00197 
00198 
00199   // Override this check to account for update extent.
00200   virtual int NeedToExecuteData(int outputPort,
00201                                 vtkInformationVector** inInfoVec,
00202                                 vtkInformationVector* outInfoVec);
00203 
00204   // Override these to handle the continue-executing option.
00205   virtual void ExecuteDataStart(vtkInformation* request,
00206                                 vtkInformationVector** inInfoVec,
00207                                 vtkInformationVector* outInfoVec);
00208   virtual void ExecuteDataEnd(vtkInformation* request,
00209                               vtkInformationVector** inInfoVec,
00210                               vtkInformationVector* outInfoVec);
00211 
00212   // Override this to handle cropping and ghost levels.
00213   virtual void MarkOutputsGenerated(vtkInformation* request,
00214                                     vtkInformationVector** inInfoVec,
00215                                     vtkInformationVector* outInfoVec);
00216 
00217 
00218   // Remove update/whole extent when resetting pipeline information.
00219   virtual void ResetPipelineInformation(int port, vtkInformation*);
00220 
00221   // Flag for when an algorithm returns with CONTINUE_EXECUTING in the
00222   // request.
00223   int ContinueExecuting;
00224 
00225   vtkInformation *UpdateExtentRequest;
00226 
00227   // did the most recent PUE do anything ?
00228   int LastPropogateUpdateExtentShortCircuited;
00229   
00230 private:
00231   vtkStreamingDemandDrivenPipeline(const vtkStreamingDemandDrivenPipeline&);  // Not implemented.
00232   void operator=(const vtkStreamingDemandDrivenPipeline&);  // Not implemented.
00233 };
00234 
00235 #endif

Generated on Mon Jan 21 23:07:21 2008 for VTK by  doxygen 1.4.3-20050530