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
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 #ifdef SOQT
00051 # include <Inventor/Qt/viewers/SoQtFullViewer.h>
00052 #elif defined(SOWX)
00053 # include <Inventor/Wx/viewers/SoWxFullViewer.h>
00054 #elif defined _WIN32
00055 # include <Inventor/Win/viewers/SoWinFullViewer.h>
00056 #else // _WIN32
00057
00058 #ifndef _SO_XT_FULL_VIEWER_
00059 #define _SO_XT_FULL_VIEWER_
00060
00061 #include <Xm/Xm.h>
00062 #include <Inventor/Xt/viewers/SoXtViewer.h>
00063 #include <Inventor/SbPList.h>
00064 #include <Inventor/components/stereo/SoStereoDialog.h>
00065 #include <Inventor/Gui/viewers/SoGuiFullViewer.h>
00066
00067
00068 class SoXtResource;
00069 class SoXtBitmapButton;
00070 class SoRecordDialog;
00071
00073
00074
00075
00076
00077
00078
00079
00080
00082
00177 class SoXtFullViewer : public SoXtViewer
00178 {
00179 public:
00181 enum BuildFlag
00182 {
00186 BUILD_NONE = 0x00,
00190 BUILD_DECORATION = 0x01,
00194 BUILD_POPUP = 0x02,
00198 BUILD_ALL = 0xff
00199 };
00200
00208 void setDecoration( SbBool onOrOff );
00209
00213 SbBool isDecoration() { return m_guiFullViewer->isDecoration(); }
00214
00245 void setPopupMenuEnabled( SbBool trueOrFalse );
00246
00250 SbBool isPopupMenuEnabled() { return m_guiFullViewer->isPopupMenuEnabled(); }
00251
00257 SoWidget getAppPushButtonParent() const { return appButtonForm; }
00258
00266 void addAppPushButton( SoWidget newButton );
00267
00276 void insertAppPushButton( SoWidget newButton, int index );
00277
00281 void removeAppPushButton( SoWidget oldButton );
00282
00286 int findAppPushButton( SoWidget oldButton ) { return appButtonList->find(oldButton); }
00287
00291 int lengthAppPushButton() { return appButtonList->getLength(); }
00292
00296 SoWidget getRenderAreaWidget() { return raWidget; }
00297
00298
00299 virtual void setViewing( SbBool onOrOff );
00300 virtual void setHeadlight( SbBool onOrOff );
00301 virtual void setDrawStyle( SoXtViewer::DrawType type, SoXtViewer::DrawStyle style );
00302 virtual void setBufferingType( SoXtViewer::BufferType type );
00303 virtual void setCamera( SoCamera* cam );
00304 virtual void hide();
00305
00306
00307 SoStereoDialog* getStereoDialog() { return m_stereoDialogBox; }
00308 void setStereoDialog( SoStereoDialog *newDialog ) { m_stereoDialogBox = newDialog; }
00309
00313 SoStereoDialog* m_stereoDialogBox;
00314
00315 private:
00316 virtual ~SoXtFullViewer();
00317
00318 SoGuiFullViewer* getGuiFullViewer() const;
00319
00320
00321 float rightWheelVal, leftWheelVal, bottomWheelVal;
00322 SbBool popupEnabled;
00323
00324
00325 SoXtFullViewer( SoWidget parent,
00326 const char* name,
00327 SbBool buildInsideParent,
00328 SoXtFullViewer::BuildFlag flag,
00329 SoXtViewer::Type type,
00330 SbBool buildNow,
00331 SbBool sync = TRUE );
00332 private:
00333
00334 SoXtFullViewer( SoWidget parent,
00335 const char* name,
00336 SbBool buildInsideParent,
00337 SoXtFullViewer::BuildFlag flag,
00338 SoXtViewer::Type type,
00339 SbBool buildNow,
00340 SbBool sync,
00341 SoGuiFullViewer* guiFullViewer );
00342
00343
00344 SoWidget mgrWidget;
00345 SoWidget raWidget;
00346 SoWidget leftTrimForm, bottomTrimForm, rightTrimForm;
00347
00348
00349 SoWidget rightWheel, bottomWheel, leftWheel;
00350 char* rightWheelStr, *bottomWheelStr, *leftWheelStr;
00351 SoWidget rightWheelLabel, bottomWheelLabel, leftWheelLabel;
00352
00353
00354 SbPList* viewerButtonWidgets;
00355
00356
00357
00358 SoWidget getButtonWidget() const { return appButtonForm; }
00359
00360
00361 SoWidget popupWidget, *popupToggleWidgets;
00362 SoWidget* drawStyleWidgets, *bufferStyleWidgets;
00363 char* popupTitle;
00364
00365
00366
00367
00368 SoWidget buildWidget( SoWidget parent );
00369 void buildLeftWheel( SoWidget parent );
00370
00371 virtual void buildDecoration( SoWidget parent );
00372 virtual SoWidget buildLeftTrim( SoWidget parent );
00373 virtual SoWidget buildBottomTrim( SoWidget parent );
00374 virtual SoWidget buildRightTrim( SoWidget parent );
00375 SoWidget buildAppButtons( SoWidget parent );
00376 SoWidget buildViewerButtons( SoWidget parent );
00377 virtual void createViewerButtons( SoWidget parent );
00378
00379
00380
00381
00382 virtual void buildPopupMenu();
00383 virtual void destroyPopupMenu();
00384 void setPopupMenuString( const char* name );
00385 SoWidget buildFunctionsSubmenu( SoWidget popup );
00386 SoWidget buildDrawStyleSubmenu( SoWidget popup );
00387
00388
00389
00390
00391 void setPrefSheetString( const char* name );
00392 virtual void createPrefSheet();
00393 void createPrefSheetShellAndForm( SoWidget& shell, SoWidget& form );
00394 void createDefaultPrefSheetParts( SoWidget widgetList[], int& num, SoWidget form );
00395 void layoutPartsAndMapPrefSheet( SoWidget widgetList[], int num, SoWidget form, SoWidget shell );
00396 SoWidget createSeekPrefSheetGuts( SoWidget parent );
00397 SoWidget createSeekDistPrefSheetGuts( SoWidget parent );
00398 SoWidget createZoomPrefSheetGuts( SoWidget parent );
00399 SoWidget createClippingPrefSheetGuts( SoWidget parent );
00400 SoWidget createStereoPrefSheetGuts( SoWidget parent );
00401 SoWidget createFsaaPrefSheetGuts( SoWidget parent );
00402 SoWidget createRecordPrefSheetGuts( SoWidget parent );
00403 SoWidget createDirectVizPrefSheetGuts( SoWidget parent );
00404 SoWidget createSpeedPrefSheetGuts( SoWidget parent );
00405
00406
00407
00408
00409 virtual void rightWheelMotion( float newVal );
00410 virtual void bottomWheelMotion( float newVal );
00411 virtual void leftWheelMotion( float newVal );
00412
00413
00414
00415
00416 virtual void rightWheelStart();
00417 virtual void bottomWheelStart();
00418 virtual void leftWheelStart();
00419 virtual void rightWheelFinish();
00420 virtual void bottomWheelFinish();
00421 virtual void leftWheelFinish();
00422
00423
00424
00425
00426 void setBottomWheelString( const char* name );
00427 void setLeftWheelString( const char* name );
00428 void setRightWheelString( const char* name );
00429
00430
00431
00432
00433
00434 virtual void openViewerHelpCard();
00435
00436
00437 static void popMenuCallback( SoWidget w, SoXtFullViewer* v, XEvent* event, Boolean* b );
00438 static void drawStyleMenuPick( SoWidget w, int id, void* data );
00439 static void bufferStyleMenuPick( SoWidget w, int id, void* data );
00440 static void menuPick( SoWidget w, int id, XmAnyCallbackStruct* s );
00441
00442 virtual void setSeekButton( SbBool onOff );
00443
00444 private:
00445
00446 void constructorCommon( SoXtFullViewer::BuildFlag buildFlag, SbBool buildNow );
00447
00448 SoGuiFullViewer* m_guiFullViewer;
00449
00450 SbBool firstBuild;
00451
00452
00453 SoWidget appButtonForm;
00454 SbPList* appButtonList;
00455
00456 void doAppButtonLayout( int start );
00457
00458
00459 void getResources( SoXtResource* xr );
00460
00461
00462 SoXtBitmapButton* buttonList[10];
00463 static void pushButtonCB( SoWidget w, int id, void* data );
00464
00465
00466 SoWidget prefSheetShellWidget;
00467 char* prefSheetStr;
00468 static void prefSheetDestroyCB( SoWidget w, SoXtFullViewer* v, void* data );
00469 static void stereoSheetDestroyCB( SoWidget w, SoXtFullViewer* v, void* data );
00470
00471
00472 static void seekPrefSheetFieldCB( SoWidget field, SoXtFullViewer* v, void* data );
00473 static void seekPrefSheetToggle1CB( SoWidget tog1, SoWidget tog2, void* data );
00474 static void seekPrefSheetToggle2CB( SoWidget tog1, SoWidget tog2, void* data );
00475
00476
00477 SoWidget* zoomWidgets;
00478 SbVec2f zoomSldRange;
00479 void setCameraZoom( float zoom );
00480 float getCameraZoom();
00481 void setZoomSliderPosition( float zoom );
00482 void setZoomFieldString( float zoom );
00483 static void zoomSliderCB( SoWidget w, SoXtFullViewer* v, XtPointer* d );
00484 static void zoomFieldCB( SoWidget field, SoXtFullViewer* v, XtPointer* d );
00485 static void zoomPrefSheetMinFieldCB( SoWidget field, SoXtFullViewer* v, void* data );
00486 static void zoomPrefSheetMaxFieldCB( SoWidget field, SoXtFullViewer* v, void* data );
00487
00488
00489 int seekDistWheelVal;
00490 SoWidget seekDistField;
00491 static void seekDistWheelCB( SoWidget w, SoXtFullViewer* v, XtPointer* d );
00492 static void seekDistFieldCB( SoWidget field, SoXtFullViewer* v, void* data );
00493 static void seekDistPercPrefSheetToggleCB( SoWidget tog1, SoWidget tog2, void* data );
00494 static void seekDistAbsPrefSheetToggleCB( SoWidget tog1, SoWidget tog2, void* data );
00495
00496
00497 SoWidget clipWheelForm;
00498 int clipNearWheelVal, clipFarWheelVal;
00499 SoWidget clipNearField, clipFarField;
00500 static void clipPrefSheetToggleCB( SoWidget toggle, SoWidget parent, void* data );
00501 static void clipNearWheelCB( SoWidget w, SoXtFullViewer* v, XtPointer* d );
00502 static void clipFarWheelCB( SoWidget w, SoXtFullViewer* v, XtPointer* d );
00503 static void clipFieldCB( SoWidget field, SoXtFullViewer* v, void* data );
00504
00505
00506 SoWidget stereoWheelForm, stereoField, stereoLabel;
00507 int stereoWheelVal;
00508 static void stereoPrefSheetToggleCB( SoWidget toggle, SoWidget parent, void* data );
00509 static void stereoWheelCB( SoWidget w, SoXtFullViewer* v, XtPointer* d );
00510 static void stereoFieldCB( SoWidget field, SoXtFullViewer *v, void* data );
00511
00512
00513 SoWidget recordingLabel;
00514 static void recordingPrefSheetToggleCB( SoWidget toggle, SoWidget parent, void* data );
00515
00516
00517 SoWidget fsaaLabel;
00518 static void fsaaPrefSheetToggleCB( SoWidget toggle, SoWidget parent, void* data );
00519
00520
00521 static void speedIncPrefSheetButtonCB( SoWidget w, SoXtFullViewer *p, void* v );
00522 static void speedDecPrefSheetButtonCB( SoWidget w, SoXtFullViewer *p, void* v );
00523
00524
00525 static void rightWheelCB( SoWidget w, SoXtFullViewer* v, XtPointer* d );
00526 static void bottomWheelCB( SoWidget w, SoXtFullViewer* v, XtPointer* d );
00527 static void leftWheelCB( SoWidget w, SoXtFullViewer* v, XtPointer* d );
00528
00529 SbBool seekDistAsPercentage;
00530 };
00531
00532 #endif
00533
00534 #endif // _WIN32
00535
00536
00537