00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _SOWIN_STEREO_DIALOG_
00025 #define _SOWIN_STEREO_DIALOG_
00026
00027 #ifdef SOQT
00028 #include <Inventor/components/stereo/SoQtStereoDialog.h>
00029 #else // SOQT
00030
00031 #include <Inventor/sys/port.h>
00032 #ifdef _WIN32
00033 # include <Inventor/Win/SoWinBeginStrict.h>
00034 #else
00035 # include <Xm/Xm.h>
00036 # include <Inventor/Xt/SoXtMaterialEditor.h>
00037 #endif
00038
00039 #include <Inventor/components/stereo/SoWinXt2Stereo.h>
00040 #include <Inventor/Xt/SoXtComponent.h>
00041
00042 class SoStereoViewer;
00043 class SoBaseStereo;
00044 class SoWinSlider;
00045
00065 class SoStereoDialog : public SoXtComponent {
00066 public:
00067
00071 SoStereoDialog(SoWidget parent = NULL, SoStereoViewer * viewer = NULL,
00072 const char *name = NULL, SbBool buildInsideParent = TRUE);
00076 ~SoStereoDialog();
00077
00081 virtual void update();
00082
00083 private:
00084
00085
00086
00087
00088
00089 SoEXTENDER SoStereoDialog(SoWidget parent, SoStereoViewer * viewer,
00090 const char *name, SbBool buildInsideParent, SbBool buildNow);
00091
00092
00093 virtual SbString getDefaultWidgetName() const;
00094 virtual SbString getDefaultTitle() const;
00095 virtual SbString getDefaultIconTitle() const;
00096
00097
00098
00099 private:
00100 static void onParallaxToggleCB(SoWidget widget, XtPointer clientData, void *state );
00101 static void onCameraToggleCB(SoWidget widget, XtPointer clientData, void *state );
00102 static void onButtonCB( SoWidget widget, XtPointer clientData, void* cbs );
00103 static void onStereoToggleCB(SoWidget widget, XtPointer clientData, void *state );
00104 static void scaleParallaxCB( SoWidget w, XtPointer clientData, void* callData );
00105 static void scaleCameraCB( SoWidget w, XtPointer clientData, void* callData );
00106
00107 #ifndef _WIN32
00108 virtual void widgetDestroyed();
00109 #endif
00110
00111 SoWidget m_stereoItem[12], m_rawStereoItem;
00112 SoWidget m_stereoPopup;
00113 SoWidget m_stereoToggle;
00114 SoWidget m_adjustStereoToggle;
00115 SoWidget m_scaleParallax;
00116 SoWidget m_scaleCamOffset;
00117 SoWidget m_cameraToggle;
00118 SoWidget m_parallaxToggle;
00119 SoBaseStereo* m_viewType;
00120
00121 SbBool m_destroyFlag;
00122 SbBool m_cameraFlag, m_parallaxFlag;
00123
00124 #ifdef _WIN32
00125 static WBOOL CALLBACK mgrDlgProc(Hwnd hdlg, UINT message, WPARAM wParam, LPARAM lParam);
00126 static void onCommand(Hwnd hdlg, int id, Hwnd hCtrl, UINT codeNotify ) ;
00127 #endif
00128
00129 static void sliderCallback(void * userData, float value) ;
00130
00131 static SoBaseStereo * getStereoViewType(int stereoTypeListIndex=0) ;
00132
00133
00134 SoWidget mgrWidget;
00135
00136
00137 SoStereoViewer *stereoViewer;
00138 SoWinSlider * sliders[2];
00139
00140 struct SliderData
00141 {
00142 SoStereoDialog *dialog;
00143 SoWinSlider *slider;
00144 long sliderId;
00145
00146 SliderData()
00147 : dialog(NULL)
00148 , slider(NULL)
00149 , sliderId(0)
00150 {
00151 }
00152
00153 ~SliderData()
00154 {
00155 }
00156 };
00157
00158 SliderData m_firstSlider;
00159 SliderData m_secondSlider;
00160
00161
00162 #ifndef _WIN32
00163 static void menuPick(SoWidget, int, XmAnyCallbackStruct *);
00164 static void menuDisplay(SoWidget, SoXtMaterialEditor *, XtPointer);
00165 static void radioButtonPick(SoWidget, int, XtPointer);
00166 static void diamondButtonPick(SoWidget, int, XtPointer);
00167 #endif
00168
00169
00170 SoWidget buildWidget(SoWidget parent);
00171 SoWidget buildControls(SoWidget parent);
00172 SoWidget buildSliders(SoWidget parent);
00173 void updateSliders();
00174
00175
00176
00177 void constructorCommon(SoStereoViewer * viewer, SbBool buildNow);
00178 int m_lastStereoMode;
00179 bool m_isStereoActive;
00180 bool m_lastStereoReversed;
00181 };
00182 #ifdef _WIN32
00183 #include <Inventor/Win/SoWinEndStrict.h>
00184 #endif
00185
00186 #endif // SOQT
00187
00188 #endif // _SOWIN_STEREO_DIALOG_
00189
00190