00001
00002
00003 #ifndef _ssMultibeamLWWindow_h
00004 #define _ssMultibeamLWWindow_h
00005
00010 #include "ssMultibeamLWApplication.h"
00011
00012 #include <vtkKWWindow.h>
00013 #include <vtkKWObject.h>
00014
00015 class vtkKWApplication;
00016 class vtkRenderWindow;
00017 class vtkRenderer;
00018 class vtkPolyData;
00019 class vtkAlgorithmOutput;
00020 class vtkPolyDataMapper;
00021 class vtkActor;
00022 class vtkAxesActor;
00023 class vtkTexture;
00024 class vtkKWRenderWidget;
00025 class vtkKWFrame;
00026 class vtkKWFrameWithLabel;
00027 class vtkKWSplitFrame;
00028 class ssMultibeamProcess;
00029 class vtkKWSurfaceMaterialPropertyWidget;
00030 class vtkKWRadioButtonSet;
00031 class vtkKWRadioButton;
00032 class vtkKWCheckButton;
00033 class vtkKWCheckButtonSet;
00034 class vtkKWThumbWheel;
00035 class vtkKWPushButton;
00036
00037 typedef vtkKWObject superclass;
00038
00039 class VTK_EXPORT ssMultibeamLWWindow : public vtkKWObject
00040 {
00041
00042 public:
00043
00049 static ssMultibeamLWWindow *New();
00050
00054 vtkTypeMacro(ssMultibeamLWWindow, vtkKWObject);
00055
00061 void PrintSelf(ostream& os, vtkIndent indent);
00062
00066 void Create();
00067
00072 void SetDTMInput(vtkAlgorithmOutput *in);
00073
00078 void SetSwathInput(vtkAlgorithmOutput *in);
00079
00084 void SetRollInput(vtkAlgorithmOutput *in);
00085
00090 void SetPitchInput(vtkAlgorithmOutput *in);
00091
00096 void SetDTMTextureInput(vtkTexture *in);
00097
00101 void Update();
00102
00107 vtkKWWindow *Window() const;
00108
00109 vtkKWWindow *operator->();
00110 vtkKWWindow *operator()();
00111
00112
00113 protected:
00114
00118 ssMultibeamLWWindow();
00119
00123 ~ssMultibeamLWWindow();
00124
00128 void CompleteCreation();
00129
00136 virtual void ProcessCallbackCommandEvents(vtkObject *caller,
00137 unsigned long event,
00138 void *calldata);
00139
00140
00141 friend void ssMultibeamLWApplication::GUIProcess();
00142
00143
00144
00145 private:
00146
00150 ssMultibeamLWWindow(const ssMultibeamLWWindow& rhs);
00151 ssMultibeamLWWindow& operator=(const ssMultibeamLWWindow& rhs);
00152
00156
00157 enum ipOption
00158 {
00159 IPSELECTIONBATHYMETRY = 1,
00160 IPSELECTIONATTITUDE = 2,
00161 IPSELECTIONNONE = 0
00162 };
00163
00164
00169 void InitializeMenus(ssMultibeamLWApplication *vtkNotUsed(app));
00170
00178 vtkKWFrameWithLabel *PutLabeledFrame(const char *label,
00179 vtkKWWidget *parent,
00180 const char *pack);
00181
00192 vtkKWRenderWidget *PutRenderWidget(vtkKWWidget *parent,
00193 const char *pack,
00194 int xsize = 0,
00195 int ysize = 0);
00196
00200 void PutBathymetryOptions();
00201
00205 void PutAttitudeOptions();
00206
00210 void UnputOptionsDisplay();
00211
00212 ipOption currentOption;
00213 bool showDTM;
00214 bool showSwathData;
00215 bool instrumentCentered;
00216 bool headUp;
00217 vtkKWWindow *window;
00218 vtkPolyDataMapper *DTMMapper;
00219 vtkPolyDataMapper *swathMapper;
00220 vtkPolyDataMapper *rollMapper;
00221 vtkPolyDataMapper *pitchMapper;
00222 vtkActor *DTMActor;
00223 vtkActor *swathActor;
00224 vtkActor *rollActor;
00225 vtkActor *pitchActor;
00226 vtkAxesActor *axesActor;
00227 vtkTexture *DTMTexture;
00228 vtkKWRenderWidget *displayWidget;
00229 vtkKWSurfaceMaterialPropertyWidget *mpWidget;
00230 vtkKWFrameWithLabel *ipSelectorFrame;
00231 vtkKWRadioButtonSet *ipSelectorControl;
00232 vtkKWFrameWithLabel *ipBathymetryOptionFrame;
00233 vtkKWFrameWithLabel *ipAttitudeOptionFrame;
00234 vtkKWCheckButtonSet *ipBathymetryCheckOptions;
00235 vtkKWThumbWheel *ipDTMTransparency;
00236 vtkKWPushButton *ipCameraReset;
00237 };
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00332 #endif