1#ifndef SOGUIFULLVIEWERP_H
2#define SOGUIFULLVIEWERP_H
3
4// @configure_input@
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#ifndef SO@GUI@_INTERNAL
39#error this is a private header file
40#endif /* !SO@GUI@_INTERNAL */
41
42#include <Inventor/SbString.h>
43#include <Inventor/@Gui@/viewers/So@Gui@Viewer.h>
44
45class So@Gui@FullViewer;
46
47// ************************************************************************
48
49// This class contains private data and methods used within the
50// SoGuiFullViewer class.
51
52class SoGuiFullViewerP
53{
54public:
55  ~SoGuiFullViewerP();
56
57  enum So@Gui@FullViewerPopupMenuItem {
58    // FIXME: there's code in (some of) the popupmenu widgets which
59    // assumes the root id is equal to 0.  Yup, lousy design. :-/
60    // Anyway, don't change it until those cases are fixed.
61    // 20010810 mortene.
62    ROOT_MENU = 0,
63      ROOT_MENU_TITLE,
64
65      FUNCTIONS_MENU,
66      HOME_ITEM,
67      SET_HOME_ITEM,
68      VIEW_ALL_ITEM,
69      SEEK_ITEM,
70
71      DRAWSTYLES_MENU,
72      DRAWSTYLES_STILL_MENU,
73      AS_IS_ITEM,
74      HIDDEN_LINE_ITEM,
75      WIREFRAME_OVERLAY_ITEM,
76      NO_TEXTURE_ITEM,
77      LOW_RESOLUTION_ITEM,
78      WIREFRAME_ITEM,
79      POINTS_ITEM,
80      BOUNDING_BOX_ITEM,
81
82      DRAWSTYLES_ANIMATING_MENU,
83      MOVE_SAME_AS_STILL_ITEM,
84      MOVE_NO_TEXTURE_ITEM,
85      MOVE_LOW_RES_ITEM,
86      MOVE_WIREFRAME_ITEM,
87      MOVE_LOW_RES_WIREFRAME_ITEM,
88      MOVE_POINTS_ITEM,
89      MOVE_LOW_RES_POINTS_ITEM,
90      MOVE_BOUNDING_BOX_ITEM,
91
92      TRANSPARENCY_TYPE_MENU,
93      SCREEN_DOOR_TRANSPARENCY_ITEM,
94      ADD_TRANSPARENCY_ITEM,
95      DELAYED_ADD_TRANSPARENCY_ITEM,
96      SORTED_OBJECT_ADD_TRANSPARENCY_ITEM,
97      BLEND_TRANSPARENCY_ITEM,
98      DELAYED_BLEND_TRANSPARENCY_ITEM,
99      SORTED_OBJECT_BLEND_TRANSPARENCY_ITEM,
100      // These are Coin extensions.
101      SORTED_OBJECT_SORTED_TRIANGLE_ADD_TRANSPARENCY_ITEM,
102      SORTED_OBJECT_SORTED_TRIANGLE_BLEND_TRANSPARENCY_ITEM,
103      SORTED_LAYERS_BLEND_ITEM,
104      NONE_TRANSPARENCY_ITEM,
105
106      RENDER_BUFFER_TYPE_MENU,
107      SINGLE_BUFFER_ITEM,
108      DOUBLE_BUFFER_ITEM,
109      INTERACTIVE_BUFFER_ITEM,
110
111      EXAMINING_ITEM,
112      DECORATION_ITEM,
113      HEADLIGHT_ITEM,
114      FULLSCREEN_ITEM,
115
116      STEREO_MENU,
117        STEREO_OFF_ITEM,
118        STEREO_ANAGLYPH_ITEM,
119        STEREO_QUADBUFFER_ITEM,
120        STEREO_INTERLEAVED_ROWS_ITEM,
121        STEREO_INTERLEAVED_COLUMNS_ITEM
122      };
123
124  enum So@Gui@ViewerPopupMenuRadioGroup {
125    STILL_GROUP = 1,
126      MOVE_GROUP,
127      TRANSPARENCY_GROUP,
128      BUFFER_GROUP,
129      STEREO_GROUP
130      };
131
132  class So@Gui@PopupMenu * setupStandardPopupMenu(void);
133  void prepareMenu(class So@Gui@PopupMenu * menu);
134  void menuSelection(int menuitemid);
135  static void menuSelectionCallback(int menuitemid, void * userdata);
136  SbString popupmenutitle;
137
138  void setDrawStyleMenuActivation(So@Gui@Viewer::DrawType type,
139                                  So@Gui@Viewer::DrawStyle value);
140  void drawstyleActivated(int menuitemid);
141
142  static void pan(SoCamera * cam,
143                  float aspectratio, const SbPlane & panplane,
144                  const SbVec2f & currpos, const SbVec2f & prevpos);
145  static void zoom(SoCamera * cam, const float diffvalue);
146
147protected:
148  SoGuiFullViewerP(So@Gui@FullViewer * publ);
149  So@Gui@FullViewer * pub;
150};
151
152// ************************************************************************
153
154#endif // ! SOGUIFULLVIEWERP_H
155