Coin Logo Coin3D is Free Software,
published under the BSD 3-clause license.
https://coin3d.github.io
https://www.kongsberg.com/en/kogt/
SoQtRenderArea.h
1#ifndef SOQT_RENDERAREA_H
2#define SOQT_RENDERAREA_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#include <Inventor/SbColor.h>
39#include <Inventor/SbViewportRegion.h>
40#include <Inventor/actions/SoGLRenderAction.h>
41#include <Inventor/SoSceneManager.h>
42
43#include <Inventor/Qt/SoQtGLWidget.h>
44
45class SbColor;
46class SoNode;
47class SoSelection;
48
49class SoQtDevice;
50// SoQtRenderAreaP is only used in the "friend class" statement in
51// the class definition, so this shouldn't really be necessary. But
52// the OSF1/cxx compiler complains if it's left out.
53class SoQtRenderAreaP;
54
55typedef SbBool SoQtRenderAreaEventCB(void * closure, QEvent * event);
56
57// *************************************************************************
58
59class SOQT_DLL_API SoQtRenderArea : public SoQtGLWidget {
60 SOQT_OBJECT_HEADER(SoQtRenderArea, SoQtGLWidget);
61
62public:
63 SoQtRenderArea(QWidget * parent = NULL,
64 const char * name = NULL,
65 SbBool embed = TRUE,
66 SbBool mouseInput = TRUE,
67 SbBool keyboardInput = TRUE);
69
70 virtual void setSceneGraph(SoNode * scene);
71 virtual SoNode * getSceneGraph(void);
72 void setOverlaySceneGraph(SoNode * scene);
73 SoNode * getOverlaySceneGraph(void);
74
75 void setBackgroundColor(const SbColor & color);
76 const SbColor & getBackgroundColor(void) const;
77 void setBackgroundIndex(int idx);
78 int getBackgroundIndex(void) const;
79 void setOverlayBackgroundIndex(int idx);
80 int getOverlayBackgroundIndex(void) const;
81 void setColorMap(int start, int num, const SbColor * colors);
82 void setOverlayColorMap(int start, int num, const SbColor * colors);
83 void setViewportRegion(const SbViewportRegion & newRegion);
84 const SbViewportRegion & getViewportRegion(void) const;
85 void setTransparencyType(SoGLRenderAction::TransparencyType type);
86 SoGLRenderAction::TransparencyType getTransparencyType(void) const;
87 void setAntialiasing(SbBool smoothing, int numPasses);
88 void getAntialiasing(SbBool & smoothing, int & numPasses) const;
89 void setClearBeforeRender(SbBool enable, SbBool zbEnable = TRUE);
90 SbBool isClearBeforeRender(void) const;
91 SbBool isClearZBufferBeforeRender(void) const;
92 void setClearBeforeOverlayRender(SbBool enable);
93 SbBool isClearBeforeOverlayRender(void) const;
94 void setAutoRedraw(SbBool enable);
95 SbBool isAutoRedraw(void) const;
96 void setRedrawPriority(uint32_t priority);
97 uint32_t getRedrawPriority(void) const;
98 static uint32_t getDefaultRedrawPriority(void);
99 void render(void);
100 void renderOverlay(void);
101 void scheduleRedraw(void);
102 void scheduleOverlayRedraw(void);
103 void redrawOnSelectionChange(SoSelection * selection);
104 void redrawOverlayOnSelectionChange(SoSelection * selection);
105 void setEventCallback(SoQtRenderAreaEventCB * func, void * user = NULL);
106 void setSceneManager(SoSceneManager * manager);
107 SoSceneManager * getSceneManager(void) const;
108 void setOverlaySceneManager(SoSceneManager * manager);
109 SoSceneManager * getOverlaySceneManager(void) const;
110 void setGLRenderAction(SoGLRenderAction * action);
111 SoGLRenderAction * getGLRenderAction(void) const;
112 void setOverlayGLRenderAction(SoGLRenderAction * action);
113 SoGLRenderAction * getOverlayGLRenderAction(void) const;
114
115 SbBool sendSoEvent(const SoEvent * event);
116
117 void registerDevice(SoQtDevice * device);
118 void unregisterDevice(SoQtDevice * device);
119
120
121protected:
122 SoQtRenderArea(QWidget * parent,
123 const char * name,
124 SbBool embed,
125 SbBool mouseInput,
126 SbBool keyboardInput,
127 SbBool build);
128
129 virtual void redraw(void);
130 virtual void actualRedraw(void);
131 virtual void redrawOverlay(void);
132 virtual void actualOverlayRedraw(void);
133
134 virtual SbBool processSoEvent(const SoEvent * const event);
135 virtual void processEvent(QEvent * event);
136 virtual void initGraphic(void);
137 virtual void initOverlayGraphic(void);
138 virtual void sizeChanged(const SbVec2s & size);
139 virtual void widgetChanged(QWidget * widget);
140 virtual void afterRealizeHook(void);
141
142 QWidget * buildWidget(QWidget * parent);
143
144 virtual const char * getDefaultWidgetName(void) const;
145 virtual const char * getDefaultTitle(void) const;
146 virtual const char * getDefaultIconTitle(void) const;
147
148 virtual SbBool glScheduleRedraw(void);
149
150private:
151 class SoQtRenderAreaP * pimpl;
152 friend class SoQtRenderAreaP;
153};
154
155// *************************************************************************
156
157#endif // ! SOQT_RENDERAREA_H
virtual const char * getDefaultTitle(void) const
Definition SoQtComponentCommon.cpp:312
virtual const char * getDefaultWidgetName(void) const
Definition SoQtComponentCommon.cpp:299
virtual const char * getDefaultIconTitle(void) const
Definition SoQtComponentCommon.cpp:324
virtual void afterRealizeHook(void)
Definition SoQtComponent.cpp:897
The SoQtDevice class is the base class for the translation devices.
Definition SoQtDevice.h:73
The SoQtGLWidget class manages OpenGL contexts.
Definition SoQtGLWidget.h:93
QWidget * buildWidget(QWidget *parent)
Definition SoQtGLWidget.cpp:248
virtual void redraw(void)=0
virtual void processEvent(QEvent *event)
Definition SoQtGLWidget.cpp:588
virtual SbBool glScheduleRedraw(void)
Definition SoQtGLWidget.cpp:741
virtual void widgetChanged(QWidget *w)
Definition SoQtGLWidget.cpp:581
virtual void initGraphic(void)
Definition SoQtGLWidget.cpp:715
virtual void redrawOverlay(void)
Definition SoQtGLWidget.cpp:708
virtual void sizeChanged(const SbVec2s &size)
Definition SoQtGLWidget.cpp:735
virtual void initOverlayGraphic(void)
Definition SoQtGLWidget.cpp:727
The SoQtRenderArea class adds scene graph handling and event management.
Definition SoQtRenderArea.h:59