00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #if defined(_WIN32)
00027 # include <Inventor/MP/Win/viewers/SoWinMPFullViewer.h>
00028 #else // _WIN32
00029
00030 #ifndef _SO_XT_MP_FULL_VIEWER_
00031 #define _SO_XT_MP_FULL_VIEWER_
00032
00033 #include <Xm/Xm.h>
00034 #include <Inventor/MP/Xt/viewers/SoXtMPViewer.h>
00035 #include <Inventor/SbPList.h>
00036 #include <Inventor/components/stereo/SoStereoDialog.h>
00037
00038
00039 class SoXtResource;
00040 class SoXtBitmapButton;
00041
00043
00044
00045
00046
00047
00048
00049
00050
00052
00149 class SoXtMPFullViewer : public SoXtMPViewer
00150 {
00151 public:
00153 enum BuildFlag {
00157 BUILD_NONE = 0x00,
00161 BUILD_DECORATION = 0x01,
00165 BUILD_POPUP = 0x02,
00169 BUILD_ALL = 0xff
00170 };
00171
00176 void setDecoration(SbBool onOrOff);
00180 SbBool isDecoration() { return decorationFlag; }
00181
00212 void setPopupMenuEnabled(SbBool trueOrFalse);
00216 SbBool isPopupMenuEnabled() { return popupEnabled; }
00217
00223 SoWidget getAppPushButtonParent() const { return appButtonForm; }
00231 void addAppPushButton(SoWidget newButton);
00240 void insertAppPushButton(SoWidget newButton, int index);
00244 void removeAppPushButton(SoWidget oldButton);
00248 int findAppPushButton(SoWidget oldButton)
00249 { return appButtonList->find(oldButton); }
00253 int lengthAppPushButton()
00254 { return appButtonList->getLength(); }
00255
00259 SoWidget getRenderAreaWidget() { return raWidget; }
00260
00261
00262 virtual void setViewing(SbBool onOrOff);
00263 virtual void setHeadlight(SbBool onOrOff);
00264 virtual void setDrawStyle(SoXtMPViewer::DrawType type,
00265 SoXtMPViewer::DrawStyle style);
00266 virtual void setBufferingType(SoXtMPViewer::BufferType type);
00267 virtual void setCamera(SoCamera *cam);
00268 virtual void hide();
00269
00273 SoStereoDialog* m_stereoDialogBox;
00274
00275 private:
00276 virtual ~SoXtMPFullViewer();
00277
00278 private:
00279
00280 SoXtMPFullViewer(SoWidget parent,
00281 const char *name,
00282 SbBool buildInsideParent,
00283 BuildFlag flag,
00284 SoXtMPViewer::Type type,
00285 SbBool buildNow);
00286
00287
00288 SbBool decorationFlag;
00289 SoWidget mgrWidget;
00290 SoWidget raWidget;
00291 SoWidget leftTrimForm, bottomTrimForm, rightTrimForm;
00292
00293
00294 SoWidget rightWheel, bottomWheel, leftWheel;
00295 char *rightWheelStr, *bottomWheelStr, *leftWheelStr;
00296 float rightWheelVal, bottomWheelVal, leftWheelVal;
00297 SoWidget rightWheelLabel, bottomWheelLabel, leftWheelLabel;
00298
00299
00300 SbPList *viewerButtonWidgets;
00301
00302
00303
00304 SoWidget getButtonWidget() const { return appButtonForm; }
00305
00306
00307 SbBool popupEnabled;
00308 SoWidget popupWidget, *popupToggleWidgets;
00309 SoWidget *drawStyleWidgets, *bufferStyleWidgets;
00310 char *popupTitle;
00311
00312
00313
00314
00315 SoWidget buildWidget(SoWidget parent);
00316 void buildLeftWheel(SoWidget parent);
00317
00318 virtual void buildDecoration(SoWidget parent);
00319 virtual SoWidget buildLeftTrim(SoWidget parent);
00320 virtual SoWidget buildBottomTrim(SoWidget parent);
00321 virtual SoWidget buildRightTrim(SoWidget parent);
00322 SoWidget buildAppButtons(SoWidget parent);
00323 SoWidget buildViewerButtons(SoWidget parent);
00324 virtual void createViewerButtons(SoWidget parent);
00325
00326
00327
00328
00329 virtual void buildPopupMenu();
00330 virtual void buildMPPopupMenu(SbPipe *);
00331
00332 virtual void destroyPopupMenu();
00333 void setPopupMenuString(const char *name);
00334 SoWidget buildFunctionsSubmenu(SoWidget popup);
00335 SoWidget buildDrawStyleSubmenu(SoWidget popup);
00336
00337
00338
00339
00340 void setPrefSheetString(const char *name);
00341 virtual void createPrefSheet();
00342 void createPrefSheetShellAndForm(SoWidget &shell, SoWidget &form);
00343 void createDefaultPrefSheetParts(SoWidget widgetList[],
00344 int &num, SoWidget form);
00345 void layoutPartsAndMapPrefSheet(SoWidget widgetList[],
00346 int num, SoWidget form, SoWidget shell);
00347 SoWidget createSeekPrefSheetGuts(SoWidget parent);
00348 SoWidget createSeekDistPrefSheetGuts(SoWidget parent);
00349 SoWidget createZoomPrefSheetGuts(SoWidget parent);
00350 SoWidget createClippingPrefSheetGuts(SoWidget parent);
00351 SoWidget createStereoPrefSheetGuts(SoWidget parent);
00352 SoWidget createSpeedPrefSheetGuts(SoWidget parent);
00353
00354
00355
00356
00357 virtual void rightWheelMotion(float);
00358 virtual void bottomWheelMotion(float);
00359 virtual void leftWheelMotion(float);
00360
00361
00362
00363
00364 virtual void rightWheelStart();
00365 virtual void bottomWheelStart();
00366 virtual void leftWheelStart();
00367 virtual void rightWheelFinish();
00368 virtual void bottomWheelFinish();
00369 virtual void leftWheelFinish();
00370
00371
00372
00373
00374 void setBottomWheelString(const char *name);
00375 void setLeftWheelString(const char *name);
00376 void setRightWheelString(const char *name);
00377
00378
00379
00380
00381
00382 virtual void openViewerHelpCard();
00383
00384 virtual void setSeekButton(SbBool onOff);
00385
00386 private:
00387 SbBool firstBuild;
00388
00389
00390 SoWidget appButtonForm;
00391 SbPList *appButtonList;
00392
00393 void doAppButtonLayout(int start);
00394
00395
00396 void getResources(SoXtResource *xr);
00397
00398
00399 static void popMenuCallback(SoWidget, SoXtMPFullViewer *, XEvent *, Boolean *);
00400 static void drawStyleMenuPick(SoWidget, int id, void *);
00401 static void bufferStyleMenuPick(SoWidget, int id, void *);
00402 static void menuPick(SoWidget, int id, XmAnyCallbackStruct *);
00403
00404
00405 SoXtBitmapButton *buttonList[10];
00406 static void pushButtonCB(SoWidget, int id, void *);
00407
00408
00409 SoWidget prefSheetShellWidget;
00410 char *prefSheetStr;
00411 static void prefSheetDestroyCB(SoWidget, SoXtMPFullViewer *, void *);
00412 static void stereoSheetDestroyCB(SoWidget, SoXtMPFullViewer *, void *);
00413
00414
00415 static void seekPrefSheetFieldCB(SoWidget, SoXtMPFullViewer *, void *);
00416 static void seekPrefSheetToggle1CB(SoWidget, SoWidget, void *);
00417 static void seekPrefSheetToggle2CB(SoWidget, SoWidget, void *);
00418
00419
00420 SoWidget *zoomWidgets;
00421 SbVec2f zoomSldRange;
00422 void setCameraZoom(float zoom);
00423 float getCameraZoom();
00424 void setZoomSliderPosition(float zoom);
00425 void setZoomFieldString(float zoom);
00426 static void zoomSliderCB(SoWidget, SoXtMPFullViewer *, XtPointer *);
00427 static void zoomFieldCB(SoWidget, SoXtMPFullViewer *, XtPointer *);
00428 static void zoomPrefSheetMinFieldCB(SoWidget, SoXtMPFullViewer *, void *);
00429 static void zoomPrefSheetMaxFieldCB(SoWidget, SoXtMPFullViewer *, void *);
00430
00431
00432 int seekDistWheelVal;
00433 SoWidget seekDistField;
00434 static void seekDistWheelCB(SoWidget, SoXtMPFullViewer *v, XtPointer *d);
00435 static void seekDistFieldCB(SoWidget, SoXtMPFullViewer *, void *);
00436 static void seekDistPercPrefSheetToggleCB(SoWidget, SoWidget, void *);
00437 static void seekDistAbsPrefSheetToggleCB(SoWidget, SoWidget, void *);
00438
00439
00440 SoWidget clipWheelForm;
00441 int clipNearWheelVal, clipFarWheelVal;
00442 SoWidget clipNearField, clipFarField;
00443 static void clipPrefSheetToggleCB(SoWidget, SoWidget, void *);
00444 static void clipNearWheelCB(SoWidget, SoXtMPFullViewer *v, XtPointer *d);
00445 static void clipFarWheelCB(SoWidget, SoXtMPFullViewer *v, XtPointer *d);
00446 static void clipFieldCB(SoWidget, SoXtMPFullViewer *, void *);
00447
00448
00449 SoWidget stereoWheelForm, stereoField, stereoLabel;
00450 int stereoWheelVal;
00451 static void stereoPrefSheetToggleCB(SoWidget, SoWidget, void *);
00452 static void stereoWheelCB(SoWidget, SoXtMPFullViewer *, XtPointer *);
00453 static void stereoFieldCB(SoWidget, SoXtMPFullViewer *, void *);
00454
00455
00456 static void speedIncPrefSheetButtonCB(SoWidget, SoXtMPFullViewer *, void *);
00457 static void speedDecPrefSheetButtonCB(SoWidget, SoXtMPFullViewer *, void *);
00458
00459
00460 static void rightWheelCB(SoWidget, SoXtMPFullViewer *v, XtPointer *d);
00461 static void bottomWheelCB(SoWidget, SoXtMPFullViewer *v, XtPointer *d);
00462 static void leftWheelCB(SoWidget, SoXtMPFullViewer *v, XtPointer *d);
00463
00464 };
00465
00466 #endif
00467
00468 #endif // _WIN32
00469
00470
00471