00001 /* $Id: MultibeamInstrument.h,v 1.17 2008/06/21 00:43:47 pfb Exp $ */ 00002 00003 #ifndef _MultibeamInstrument_h 00004 #define _MultibeamInstrument_h 00005 00010 #include "../../../../Common/Utility/Misc/GoNogo.h" 00011 #include <vtkPolyData.h> 00012 #include <vtkSource.h> 00013 #include <vtkObjectFactory.h> 00014 #include <ss.h> 00015 00016 class vtkDataObject; 00017 class vtkMultiProcessController; 00018 00055 class MultibeamInstrument : public GoNogo, public vtkSource 00056 { 00057 //**************************************************************************** 00058 public: 00059 00060 enum OutputIndex 00061 { 00062 BATHYMETRY, 00063 ATTITUDE, 00064 NAVIGATION, 00065 TIDE, 00066 VELOCIMETER, 00067 TEMPERATURE 00068 }; 00069 00074 static MultibeamInstrument *New(); 00075 00076 vtkTypeMacro(MultibeamInstrument, vtkSource); 00077 00083 void PrintSelf(ostream& os, vtkIndent indent); 00084 00089 virtual void SetFileName(const char *path); 00090 00095 void Process(SMARTP(vtkMultiProcessController) controller); 00096 00101 SMARTP(vtkMultiProcessController) Process() const; 00102 00106 void Initialize(); 00107 00112 SMARTP(vtkPolyData) GetOutput(); 00113 00119 SMARTP(vtkPolyData) GetOutput(OutputIndex level); 00120 00127 SMARTP(vtkPolyData) BathymetryOutput(); 00128 00135 SMARTP(vtkPolyData) AttitudeOutput(); 00136 00142 SMARTP(vtkPolyData) NavigationOutput(); 00143 00149 SMARTP(vtkPolyData) TideOutput(); 00150 00156 SMARTP(vtkPolyData) VelocimeterOutput(); 00157 00163 SMARTP(vtkPolyData) TemperatureOutput(); 00164 00170 virtual void Update(); 00171 00176 virtual void Tickle(); 00177 00182 virtual bool PopRecord(); 00183 00184 00185 //**************************************************************************** 00186 protected: 00187 00191 MultibeamInstrument(); 00192 00196 ~MultibeamInstrument(); 00197 00201 virtual void Execute(); 00202 00207 virtual void ReadInputRecord(); 00208 00213 void ComputeInputUpdateExtents(vtkDataObject *data); 00214 00215 int ExecutePiece; 00216 int ExecuteNumberOfPieces; 00217 int ExecuteGhostLevel; 00218 00222 vtkMultiProcessController *controller; 00223 00224 //**************************************************************************** 00225 private: 00226 00230 MultibeamInstrument(const MultibeamInstrument& ); 00231 MultibeamInstrument& operator=(const MultibeamInstrument& ); 00232 00233 void InitializeOutput(int idx); 00234 00235 }; 00236 00237 /* 00238 * $Log: MultibeamInstrument.h,v $ 00239 * Revision 1.17 2008/06/21 00:43:47 pfb 00240 * Updated to Smart Pointer. 00241 * 00242 * Revision 1.16 2005/06/30 11:20:16 pfb 00243 * Changed Process to now take a vtkMultiProcessController. 00244 * 00245 * Revision 1.15 2005/05/11 11:40:11 pfb 00246 * Added module info. 00247 * 00248 * Revision 1.14 2005/03/04 10:45:37 pfb 00249 * Added Initialize(). 00250 * 00251 * Revision 1.13 2005/02/28 04:45:19 pfb 00252 * Corrected include statement. 00253 * 00254 * Revision 1.12 2005/01/10 12:37:00 pfb 00255 * Added Process(). 00256 * 00257 * Revision 1.11 2004/11/09 03:53:17 pfb 00258 * Documenation change. 00259 * 00260 * Revision 1.10 2004/08/09 13:57:54 pfb 00261 * Added Process() and Tickle(). 00262 * 00263 * Revision 1.9 2004/08/08 11:45:00 pfb 00264 * Added SetFileName(). This is a bit of a kludge and should be replaced 00265 * with a more genereic method ASAP. 00266 * 00267 * Revision 1.8 2004/08/05 13:07:25 pfb 00268 * Added PopRecord(). 00269 * 00270 * Revision 1.7 2004/06/29 06:06:22 pfb 00271 * Updated to coding standards. 00272 * 00273 * Revision 1.6 2003/07/28 10:42:18 pfb 00274 * Added Update(). 00275 * 00276 * Revision 1.5 2003/07/20 08:57:44 pfb 00277 * Initialize all defined outputs. 00278 * 00279 * Revision 1.4 2003/07/14 10:25:26 pfb 00280 * Added ComputeInputUpdateExtents(). 00281 * 00282 * Revision 1.3 2003/07/12 16:25:18 pfb 00283 * Added the various outputs. 00284 * 00285 * Revision 1.2 2003/07/11 02:37:30 pfb 00286 * Added some basic output functions. 00287 * 00288 * Revision 1.1 2003/05/14 04:14:44 pfb 00289 * Initial rev. 00290 * 00291 * 00292 */ 00293 00297 #endif