SoWin  1.6.2
Coin3D GUI toolkit binding
Loading...
Searching...
No Matches
SoWinViewer.h
1#ifndef SOWIN_VIEWER_H
2#define SOWIN_VIEWER_H
3
4//
5
6/**************************************************************************\
7 * Copyright (c) Kongsberg Oil & Gas Technologies AS
8 * All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions are
12 * met:
13 *
14 * Redistributions of source code must retain the above copyright notice,
15 * this list of conditions and the following disclaimer.
16 *
17 * Redistributions in binary form must reproduce the above copyright
18 * notice, this list of conditions and the following disclaimer in the
19 * documentation and/or other materials provided with the distribution.
20 *
21 * Neither the name of the copyright holder nor the names of its
22 * contributors may be used to endorse or promote products derived from
23 * this software without specific prior written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36\**************************************************************************/
37
38/**************************************************************************\
39 *
40 * A WORD OF ADVICE
41 *
42 * It is fruitless to modify the contents of the SoWinViewer.h file
43 * because it is autogenerated by configure from the SoAnyViewer.h.in
44 * file which you will find in the src/Inventor/Win/common/ directory.
45 * Do your modifications to that file instead.
46 *
47\**************************************************************************/
48
49// Include this first, as a workaround for building on top of SGI and
50// TGS Inventor on some Linux distributions. (The bug is in SGI/TGS
51// Inventor.)
52#include <cmath>
53
54#include <Inventor/SbTime.h>
55#include <Inventor/SoType.h>
56#include <Inventor/SbLinear.h>
57
58#include <Inventor/Win/SoWinRenderArea.h>
59
60#ifndef SOWIN_INTERNAL
61#include <Inventor/events/SoKeyboardEvent.h>
62#endif // SOWIN_INTERNAL
63
64class SoCallbackList;
65class SoBaseColor;
66class SoCamera;
67class SoComplexity;
68class SoDirectionalLight;
69class SoDrawStyle;
70class SoGetBoundingBoxAction;
71class SoGroup;
72class SoLightModel;
73class SoMaterialBinding;
74class SoNode;
75class SoPolygonOffset;
76class SoSensor;
77class SoSeparator;
78class SoSwitch;
79class SoTimerSensor;
80
81class SoWinViewer;
82
83typedef void SoWinViewerCB(void * data, SoWinViewer * viewer);
84typedef void SoWinViewerFPSCB(float fps, void * data, SoWinViewer * viewer);
85
86typedef SbVec2f SoWinAutoClippingCB(void * data, const SbVec2f & nearfar);
87
88// *************************************************************************
89
90class SOWIN_DLL_API SoWinViewer : public SoWinRenderArea {
91 SOWIN_OBJECT_ABSTRACT_HEADER(SoWinViewer, SoWinRenderArea);
92
93public:
94 enum Type {
96 EDITOR
97 };
98
112
113 enum DrawType {
114 STILL = 0,
115 INTERACTIVE
116 };
117
121 BUFFER_INTERACTIVE
122 };
123
126 CONSTANT_NEAR_PLANE
127 };
128
129 virtual void setCamera(SoCamera * camera);
130 SoCamera * getCamera(void) const;
131
132 virtual void setCameraType(SoType type);
133 SoType getCameraType(void) const;
134
135 virtual void toggleCameraType(void);
136
137 virtual void viewAll(void);
138
139 virtual void saveHomePosition(void);
140 virtual void resetToHomePosition(void);
141
142 virtual void setHeadlight(SbBool enable);
143 SbBool isHeadlight(void) const;
144 SoDirectionalLight * getHeadlight(void) const;
145
146 virtual void setDrawStyle(SoWinViewer::DrawType type, SoWinViewer::DrawStyle style);
147 SoWinViewer::DrawStyle getDrawStyle(const SoWinViewer::DrawType type) const;
148
149 virtual void setBufferingType(SoWinViewer::BufferType type);
150 SoWinViewer::BufferType getBufferingType(void) const;
151
152 virtual void setViewing(SbBool enable);
153 SbBool isViewing(void) const;
154
155 virtual void setCursorEnabled(SbBool enable);
156 SbBool isCursorEnabled(void) const;
157
158 void setAutoClipping(SbBool enable);
159 SbBool isAutoClipping(void) const;
160
161 void setAutoClippingStrategy(const AutoClippingStrategy strategy,
162 const float value = 0.6f,
163 SoWinAutoClippingCB * cb = NULL,
164 void * cbuserdata = NULL);
165
166 virtual void setStereoViewing(SbBool enable);
167 SbBool isStereoViewing(void) const;
168
169 virtual void setStereoOffset(const float dist);
170 float getStereoOffset(void) const;
171
173 STEREO_NONE, STEREO_ANAGLYPH, STEREO_QUADBUFFER,
174 STEREO_INTERLEAVED_ROWS, STEREO_INTERLEAVED_COLUMNS
175 };
176
177 SbBool setStereoType(SoWinViewer::StereoType s);
178 SoWinViewer::StereoType getStereoType(void) const;
179
180 void setAnaglyphStereoColorMasks(const SbBool left[3], const SbBool right[3]);
181 void getAnaglyphStereoColorMasks(SbBool left[3], SbBool right[3]);
182
183 void setDetailSeek(const SbBool enable);
184 SbBool isDetailSeek(void) const;
185
186 void setSeekTime(const float seconds);
187 float getSeekTime(void) const;
188
189 void addStartCallback(SoWinViewerCB * func, void * data = NULL);
190 void addFinishCallback(SoWinViewerCB * func, void * data = NULL);
191 void removeStartCallback(SoWinViewerCB * func, void * data = NULL);
192 void removeFinishCallback(SoWinViewerCB * func, void * data = NULL);
193
194 void setWireframeOverlayColor(const SbColor & color);
195 const SbColor & getWireframeOverlayColor(void) const;
196
197 virtual void setDoubleBuffer(const SbBool enable);
198
199 virtual void setSceneGraph(SoNode * root);
200 virtual SoNode * getSceneGraph(void);
201
202protected:
203 SoWinViewer(HWND parent,
204 const char * name,
205 SbBool embed,
206 Type type,
207 SbBool build);
208 ~SoWinViewer();
209
210 virtual void sizeChanged(const SbVec2s & size);
211 virtual void setSeekMode(SbBool enable);
212 SbBool isSeekMode(void) const;
213 SbBool seekToPoint(const SbVec2s screenpos);
214 void seekToPoint(const SbVec3f & scenepos);
215 virtual void computeSeekFinalOrientation(void);
216
217 virtual void actualRedraw(void);
218 virtual SbBool processSoEvent(const SoEvent * const event);
219
220 void interactiveCountInc(void);
221 void interactiveCountDec(void);
222 int getInteractiveCount(void) const;
223
224 void setSeekDistance(const float distance);
225 float getSeekDistance(void) const;
226 void setSeekValueAsPercentage(const SbBool on);
227 SbBool isSeekValuePercentage(void) const;
228
229 virtual void changeCameraValues(SoCamera * camera);
230
231 void addSuperimposition(SoNode * scene);
232 void removeSuperimposition(SoNode * scene);
233 void setSuperimpositionEnabled(SoNode * scene, const SbBool enable);
234 SbBool getSuperimpositionEnabled(SoNode * scene) const;
235
236private:
237 class SoWinViewerP * pimpl;
238 friend class SoWinViewerP;
239 friend class SoWinPlaneViewer;
240};
241
242// *************************************************************************
243
244#endif // ! SOWIN_VIEWER_H
virtual void setDoubleBuffer(const SbBool enable)
Definition SoWinGLWidget.cpp:158
The SoWinPlaneViewer class is for examining 3D models by moving the camera in orthogonal planes.
Definition SoWinPlaneViewer.h:42
The SoWinRenderArea class adds scene graph handling and event management.
Definition SoWinRenderArea.h:62
virtual SoNode * getSceneGraph(void)
Definition SoWinRenderArea.cpp:1015
virtual void actualRedraw(void)
Definition SoWinRenderArea.cpp:1901
virtual SbBool processSoEvent(const SoEvent *const event)
Definition SoWinRenderArea.cpp:2153
virtual void setSceneGraph(SoNode *scene)
Definition SoWinRenderArea.cpp:1003
virtual void sizeChanged(const SbVec2s &size)
Definition SoWinRenderArea.cpp:1983
The SoWinViewer class is the top level base viewer class.
Definition SoWinViewer.h:90
DrawStyle
Definition SoWinViewer.h:99
@ VIEW_BBOX
Definition SoWinViewer.h:106
@ VIEW_LOW_RES_POINT
Definition SoWinViewer.h:108
@ VIEW_LOW_RES_LINE
Definition SoWinViewer.h:107
@ VIEW_LOW_COMPLEXITY
Definition SoWinViewer.h:103
@ VIEW_LINE
Definition SoWinViewer.h:104
@ VIEW_HIDDEN_LINE
Definition SoWinViewer.h:101
@ VIEW_SAME_AS_STILL
Definition SoWinViewer.h:109
@ VIEW_POINT
Definition SoWinViewer.h:105
@ VIEW_AS_IS
Definition SoWinViewer.h:100
@ VIEW_NO_TEXTURE
Definition SoWinViewer.h:102
StereoType
Definition SoWinViewer.h:172
@ STEREO_ANAGLYPH
Definition SoWinViewer.h:173
@ STEREO_INTERLEAVED_ROWS
Definition SoWinViewer.h:174
BufferType
Definition SoWinViewer.h:118
@ BUFFER_SINGLE
Definition SoWinViewer.h:119
@ BUFFER_DOUBLE
Definition SoWinViewer.h:120
Type
Definition SoWinViewer.h:94
@ BROWSER
Definition SoWinViewer.h:95
DrawType
Definition SoWinViewer.h:113
AutoClippingStrategy
Definition SoWinViewer.h:124
@ VARIABLE_NEAR_PLANE
Definition SoWinViewer.h:125