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 SO_GUI_EXAMINER_VIEWER
00025 #define SO_GUI_EXAMINER_VIEWER
00026
00028
00029
00030
00031
00032
00033
00035
00036 #include <Inventor/Gui/viewers/SoGuiAlgoViewers.h>
00037
00038
00039 class SbSphereSheetProjector;
00040 class SoSeparator;
00041 class SoSwitch;
00042 class SoTranslation;
00043 class SoScale;
00044
00045 class SbTime;
00046
00047
00048 class SoGuiExaminerViewer : public SoGuiAlgoViewers
00049 {
00050 #ifndef HIDDEN_FROM_DOC
00051 SO_FIELDCONTAINER_HEADER( SoGuiExaminerViewer );
00052 #endif
00053
00054 private:
00055
00056
00057 #define KEY_PRESS_CHECK_VALID_MACRO \
00058 if ( m_mode != IDLE_MODE && m_mode != SPIN_MODE && \
00059 m_mode != TRANS_MODE && m_mode != DOLLY_MODE ) \
00060 break;
00061
00062
00063 #define ROT_BUFF_SIZE 3
00064
00068 enum ViewingMode
00069 {
00073 VIEWING_MODE_SPIN,
00074
00083 VIEWING_MODE_SPIN_CONSTRAINED,
00084
00088 VIEWING_MODE_PAN,
00089
00094 VIEWING_MODE_ZOOM
00095 };
00096
00097 enum ViewerModes
00098 {
00099 PICK_MODE,
00100 VIEW_MODE,
00101 SPIN_MODE = VIEW_MODE,
00102 SPIN_MODE_ACTIVE,
00103 SPINX_MODE_ACTIVE,
00104 SPINY_MODE_ACTIVE,
00105 SPINZ_MODE_ACTIVE,
00106 PAN_MODE,
00107 PAN_MODE_ACTIVE,
00108 DOLLY_MODE,
00109 DOLLY_MODE_ACTIVE,
00110 SEEK_MODE,
00111 SPINX_VIEWER_MODE_ACTIVE,
00112 SPINY_VIEWER_MODE_ACTIVE,
00113 SPINZ_VIEWER_MODE_ACTIVE,
00114 REVERSE_DOLLY_MODE_ACTIVE,
00115 ROLL_MODE,
00116 ROLL_MODE_ACTIVE,
00117 EMPTY_MODE = -1
00118 };
00119
00120
00121 enum
00122 {
00123 CAM_PUSH = 0,
00124 PUSH_NUM
00125 };
00126
00127
00128 enum ViewingSpinType
00129 {
00130 VIEWING_SPIN_FREE,
00131 VIEWING_SPIN_X_OR_Y,
00132 VIEWING_SPIN_X,
00133 VIEWING_SPIN_Y,
00134 VIEWING_SPIN_Z
00135 };
00136
00140 SoGuiExaminerViewer();
00141
00147 void setViewingMode( ViewingMode viewingMode );
00148
00152 ViewingMode getViewingMode() const;
00153
00158 void setFeedbackVisibility( SbBool insertFlag );
00159
00160 void setFeedbackFlag( SbBool flag );
00161
00165 SbBool isFeedbackVisible() const;
00166
00170 void setFeedbackSize( int newSize );
00171
00175 int getFeedbackSize() const;
00176
00184 void setAnimationEnabled( SbBool flag );
00185
00189 SbBool isAnimationEnabled();
00190
00191 void setAnimatingFlag( SbBool flag );
00192
00196 SbBool isAnimating();
00197
00198
00199 SoSwitch* getFeedbackSwitch() const;
00200
00201
00202
00203
00204 virtual void actualRedraw();
00205
00206 virtual void setCursorEnabled( SbBool onOrOff );
00207 virtual void setSeekMode( SbBool onOrOff );
00208
00209 private:
00210
00214 virtual ~SoGuiExaminerViewer();
00215
00216
00217 private:
00218
00219 void createFeedbackNodes();
00220
00221
00222 ViewingMode m_viewingMode;
00223 int m_viewerMode;
00224
00225
00226 SbBool m_feedbackFlag;
00227 SoSeparator* m_feedbackRoot;
00228 SoSwitch* m_feedbackSwitch;
00229 SoTranslation* m_feedbackTransNode;
00230 SoScale* m_feedbackScaleNode;
00231 float m_feedbackSize;
00232 static char* m_geometryBuffer;
00233
00234
00235 SbBool m_animationEnabled, m_animatingFlag;
00236 };
00237
00238 #endif // SO_GUI_EXAMINER_VIEWER
00239
00240
00241