00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkPushPipeline.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00046 #ifndef __vtkPushPipeline_h 00047 #define __vtkPushPipeline_h 00048 00049 #include "vtkObject.h" 00050 #define VTK_PP_MAX_INPUTS 128 00051 00052 class vtkProcessObject; 00053 class vtkDataObject; 00054 class vtkSource; 00055 class vtkPushPipelineConsumeCommand; 00056 class vtkRenderWindow; 00057 class vtkRenderer; 00058 class vtkPushPipelineProcessInfo; 00059 class vtkPushPipelineDataInfo; 00060 00061 class vtkPushPipelineWindowsType; 00062 class vtkPushPipelineProcessMapType; 00063 class vtkPushPipelineDataMapType; 00064 00065 class VTK_HYBRID_EXPORT vtkPushPipeline : public vtkObject 00066 { 00067 public: 00068 static vtkPushPipeline *New(); 00069 vtkTypeRevisionMacro(vtkPushPipeline,vtkObject); 00070 void PrintSelf(ostream& os, vtkIndent indent); 00071 00073 void AddPusher(vtkProcessObject* pusher); 00074 00076 00077 void SetInputToExecutionRatio(vtkProcessObject *po, int inNum, int ratio); 00078 void SetExecutionToOutputRatio(vtkProcessObject *po, int ratio); 00080 00082 void Push(vtkSource *pusher); 00083 00085 void Run(vtkSource *pusher); 00086 00088 00090 vtkSetMacro(RunState,int); 00091 vtkGetMacro(RunState,int); 00093 00097 void AddWindow(vtkRenderWindow *win); 00098 00099 protected: 00100 vtkPushPipeline(); 00101 ~vtkPushPipeline(); 00102 00103 //BTX 00104 friend class vtkPushPipelineProcessInfo; 00105 friend class vtkPushPipelineDataInfo; 00106 friend class vtkPushPipelineConsumeCommand; 00107 //ETX 00108 00109 vtkPushPipelineWindowsType* Windows; 00110 vtkPushPipelineProcessMapType* ProcessMap; 00111 vtkPushPipelineDataMapType* DataMap; 00112 00113 vtkPushPipelineDataInfo *GetPushDataInfo(vtkDataObject *); 00114 vtkPushPipelineProcessInfo *GetPushProcessInfo(vtkProcessObject *); 00115 int RunState; 00116 00117 void AddData(vtkDataObject *); 00118 void AddProcess(vtkProcessObject *); 00119 void Trace(vtkDataObject *); 00120 void Trace(vtkProcessObject *); 00121 void ClearTraceMarkers(); 00122 int IsRendererReady(vtkRenderer *); 00123 int IsRenderWindowReady(vtkRenderWindow *); 00124 void ConsumeRenderWindowInputs(vtkRenderWindow *); 00125 void ConsumeRendererInputs(vtkRenderer *); 00126 void RenderWindows(); 00127 void SetupWindows(); 00128 void SetupRenderWindow(vtkRenderWindow *); 00129 void SetupRenderer(vtkRenderer *); 00130 00131 private: 00132 vtkPushPipeline(const vtkPushPipeline&); // Not implemented. 00133 void operator=(const vtkPushPipeline&); // Not implemented. 00134 }; 00135 00136 #endif 00137