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