SoGtk  0.1.0
Coin3D GUI toolkit binding
All Classes Functions Variables Typedefs Enumerations Enumerator Modules Pages
SoGtkGLWidget Class Referenceabstract

The SoGtkGLWidget class manages OpenGL contexts. More...

#include <Inventor/Gtk/SoGtkGLWidget.h>

Inheritance diagram for SoGtkGLWidget:
SoGtkComponent SoGtkObject SoGtkRenderArea SoGtkViewer SoGtkFullViewer SoGtkConstrainedViewer SoGtkExaminerViewer SoGtkPlaneViewer SoGtkFlyViewer

Public Member Functions

SbBool getAccumulationBuffer (void) const
 
SbBool getAlphaChannel (void) const
 
GtkWidget * getGLWidget (void) const
 
void getLineWidthLimits (SbVec2f &range, float &granularity)
 
GtkWidget * getNormalWidget (void) const
 
unsigned long getOverlayTransparentPixel (void)
 
GtkWidget * getOverlayWidget (void) const
 
void getPointSizeLimits (SbVec2f &range, float &granularity)
 
int getSampleBuffers (void) const
 
SbBool getStencilBuffer (void) const
 
SbBool hasNormalGLArea (void) const
 
SbBool hasOverlayGLArea (void) const
 
SbBool isBorder (void) const
 
SbBool isDoubleBuffer (void) const
 
SbBool isDrawToFrontBufferEnable (void) const
 
SbBool isOverlayRender (void) const
 
SbBool isQuadBufferStereo (void) const
 
SbBool isStealFocus (void) const
 
void setAccumulationBuffer (const SbBool enable)
 
void setAlphaChannel (const SbBool enable)
 
void setBorder (const SbBool enable)
 
virtual void setDoubleBuffer (const SbBool enable)
 
void setDrawToFrontBufferEnable (const SbBool enable)
 
void setOverlayRender (const SbBool onoff)
 
void setQuadBufferStereo (const SbBool enable)
 
void setSampleBuffers (const int numsamples)
 
void setStealFocus (SbBool enable)
 
void setStencilBuffer (const SbBool enable)
 
- Public Member Functions inherited from SoGtkComponent
virtual ~SoGtkComponent ()
 
GtkWidget * getBaseWidget (void) const
 
const char * getClassName (void) const
 
const char * getIconTitle (void) const
 
GtkWidget * getParentWidget (void) const
 
GtkWidget * getShellWidget (void) const
 
SbVec2s getSize (void) const
 
const char * getTitle (void) const
 
GtkWidget * getWidget (void) const
 
const char * getWidgetName (void) const
 
virtual void hide (void)
 
SbBool isFullScreen (void) const
 
SbBool isTopLevelShell (void) const
 
SbBool isVisible (void)
 
virtual void setComponentCursor (const SoGtkCursor &cursor)
 
SbBool setFullScreen (const SbBool onoff)
 
void setIconTitle (const char *const title)
 
void setSize (const SbVec2s size)
 
void setTitle (const char *const title)
 
void setWindowCloseCallback (SoGtkComponentCB *const func, void *const user=NULL)
 
virtual void show (void)
 
- Public Member Functions inherited from SoGtkObject
virtual SoType getTypeId (void) const =0
 
SbBool isOfType (SoType type) const
 

Protected Member Functions

 SoGtkGLWidget (GtkWidget *const parent=NULL, const char *const name=NULL, const SbBool embed=TRUE, const int glmodes=SO_GL_RGB, const SbBool build=TRUE)
 
 ~SoGtkGLWidget ()
 
GtkWidget * buildWidget (GtkWidget *parent)
 
virtual SbBool eventFilter (GtkWidget *object, GdkEvent *event)
 
float getGLAspectRatio (void) const
 
SbVec2s getGLSize (void) const
 
float getGlxAspectRatio (void) const
 
SbVec2s getGlxSize (void) const
 
void glFlushBuffer (void)
 
void glLockNormal (void)
 
void glLockOverlay (void)
 
virtual SbBool glScheduleRedraw (void)
 
void glSwapBuffers (void)
 
void glUnlockNormal (void)
 
void glUnlockOverlay (void)
 
virtual void initGraphic (void)
 
virtual void initOverlayGraphic (void)
 
SbBool isRGBMode (void)
 
SbBool isStereoBuffer (void) const
 
virtual void processEvent (GdkEvent *event)
 
virtual void redraw (void)=0
 
virtual void redrawOverlay (void)
 
void setGLSize (const SbVec2s size)
 
void setGlxSize (const SbVec2s size)
 
void setStereoBuffer (SbBool flag)
 
virtual void sizeChanged (const SbVec2s &size)
 
virtual void widgetChanged (GtkWidget *w)
 
- Protected Member Functions inherited from SoGtkComponent
 SoGtkComponent (GtkWidget *const parent=NULL, const char *const name=NULL, const SbBool embed=TRUE)
 
void addVisibilityChangeCallback (SoGtkComponentVisibilityCB *const func, void *const user=NULL)
 
virtual void afterRealizeHook (void)
 
virtual const char * getDefaultIconTitle (void) const
 
virtual const char * getDefaultTitle (void) const
 
virtual const char * getDefaultWidgetName (void) const
 
void registerWidget (GtkWidget *widget)
 
void removeVisibilityChangeCallback (SoGtkComponentVisibilityCB *const func, void *const user=NULL)
 
void setBaseWidget (GtkWidget *widget)
 
void setClassName (const char *const name)
 
void unregisterWidget (GtkWidget *widget)
 

Protected Attributes

SbBool drawToFrontBuffer
 
SbBool waitForExpose
 
- Protected Attributes inherited from SoGtkComponent
SbBool firstRealize
 

Additional Inherited Members

- Static Public Member Functions inherited from SoGtkComponent
static SoGtkComponentgetComponent (GtkWidget *widget)
 
static void initClasses (void)
 
static void setWidgetCursor (GtkWidget *w, const SoGtkCursor &cursor)
 
- Static Public Member Functions inherited from SoGtkObject
static SoType getClassTypeId (void)
 
static void init (void)
 
static void initClass (void)
 

Detailed Description

The SoGtkGLWidget class manages OpenGL contexts.

This is the basic, abstract component class which sets up an OpenGL canvas for its subclasses.

Application programmers will normally not use this class directly, but rather through the interface of either its direct descendent, SoGtkRenderArea, or through one of the "rapid application development"-style viewer subclasses.

Constructor & Destructor Documentation

◆ SoGtkGLWidget()

SoGtkGLWidget::SoGtkGLWidget ( GtkWidget *const parent = NULL,
const char *const name = NULL,
const SbBool embed = TRUE,
const int glmodes = SO_GL_RGB,
const SbBool build = TRUE )
protected

The constructor is protected, as this is an abstract class to only be used by its subclasses.

◆ ~SoGtkGLWidget()

SoGtkGLWidget::~SoGtkGLWidget ( )
protected

Clean up all use of internal resources.

The destructor is protected, as this is an abstract class to only be used by its subclasses.

Member Function Documentation

◆ buildWidget()

GtkWidget * SoGtkGLWidget::buildWidget ( GtkWidget * parent)
protected

This method builds the component contents in the given parent widget. For subclasses adding new user interface items, this method is typically overridden in the following manner:

GtkWidget* MyOwnViewer::buildWidget(GtkWidget* parent)
{
GtkWidget* superw = <superclass>::buildWidget(parent);
// [then move superw within MyOwnViewer framework and add own
// user interface components]
}
GtkWidget * buildWidget(GtkWidget *parent)
Definition SoGtkGLWidget.cpp:119

◆ eventFilter()

SbBool SoGtkGLWidget::eventFilter ( GtkWidget * obj,
GdkEvent * ev )
protectedvirtual

FIXME: write function documentation

Reimplemented from SoGtkComponent.

◆ getAccumulationBuffer()

SbBool SoGtkGLWidget::getAccumulationBuffer ( void ) const

Returns whether the OpenGL accumulation buffer is enabled.

The returned flag will indicate whether or not accumulation buffers are actually present, and not just parrot the input value to SoGtkGLWidget::setAccumulationBuffer(). See documentation of that function for more information.

◆ getAlphaChannel()

SbBool SoGtkGLWidget::getAlphaChannel ( void ) const

Returns whether the alpha channel is enabled for the OpenGL context.

◆ getGLAspectRatio()

float SoGtkGLWidget::getGLAspectRatio ( void ) const
protected

Return the aspect ratio of the OpenGL canvas.

◆ getGLSize()

SbVec2s SoGtkGLWidget::getGLSize ( void ) const
protected

Return the dimensions of the OpenGL canvas.

◆ getGLWidget()

GtkWidget * SoGtkGLWidget::getGLWidget ( void ) const

Returns a pointer to the toolkit-native GL widget.

◆ getGlxAspectRatio()

float SoGtkGLWidget::getGlxAspectRatio ( void ) const
inlineprotected

This function has been renamed to the more appropriate getGLAspectRatio.

See also
getGLAspectRatio

◆ getGlxSize()

SbVec2s SoGtkGLWidget::getGlxSize ( void ) const
inlineprotected

This function has been renamed to the more appropriate getGLSize.

See also
getGLSize

◆ getLineWidthLimits()

void SoGtkGLWidget::getLineWidthLimits ( SbVec2f & range,
float & granularity )

This function is provided as a convenience for the application programmer to help with acquiring the OpenGL implementation limits for rendering lines.

For robust application code, one needs to consider the range limits when setting the SoDrawStyle::lineWidth field.

◆ getNormalWidget()

GtkWidget * SoGtkGLWidget::getNormalWidget ( void ) const

◆ getOverlayTransparentPixel()

unsigned long SoGtkGLWidget::getOverlayTransparentPixel ( void )

Returns the overlay transparent pixel.

◆ getOverlayWidget()

GtkWidget * SoGtkGLWidget::getOverlayWidget ( void ) const

Returns widget associated with overlay planes, or NULL if no overlay planes are available.

◆ getPointSizeLimits()

void SoGtkGLWidget::getPointSizeLimits ( SbVec2f & range,
float & granularity )

This function is provided as a convenience for the application programmer to help with acquiring the OpenGL implementation limits for rendering points.

For robust application code, one needs to consider the range limits when setting the SoDrawStyle::pointSize field.

◆ getSampleBuffers()

int SoGtkGLWidget::getSampleBuffers ( void ) const

Returns the number of samples used for multisampling. Returns 1 if multisampling is disabled.

◆ getStencilBuffer()

SbBool SoGtkGLWidget::getStencilBuffer ( void ) const

Returns whether the OpenGL stencil buffer is enabled.

The returned flag will indicate whether or not stencil buffers are actually present, in the same manner as for SoGtkGLWidget::getAccumulationBuffer(). See documentation of SoGtkGLWidget::setStencilBuffer().

◆ glFlushBuffer()

void SoGtkGLWidget::glFlushBuffer ( void )
protected

Flush the current GL buffer. Simply calls glFlush().

◆ glLockNormal()

void SoGtkGLWidget::glLockNormal ( void )
protected

This method calls make-current on the correct context and increases the lock level.

◆ glLockOverlay()

void SoGtkGLWidget::glLockOverlay ( void )
protected

This method calls make-current on the correct context and increases the lock level.

◆ glScheduleRedraw()

SbBool SoGtkGLWidget::glScheduleRedraw ( void )
protectedvirtual

Will be called whenever scene graph needs to be redrawn. If this method return FALSE, redraw() will be called immediately.

Default method simply returns FALSE. Override this method to schedule a redraw and return TRUE if you're trying to do The Right Thing.

Reimplemented in SoGtkRenderArea.

◆ glSwapBuffers()

void SoGtkGLWidget::glSwapBuffers ( void )
protected

Swap back buffer to front and vice versa.

◆ glUnlockNormal()

void SoGtkGLWidget::glUnlockNormal ( void )
protected

This method decreases the lock level.

◆ glUnlockOverlay()

void SoGtkGLWidget::glUnlockOverlay ( void )
protected

This method decreases the lock level.

◆ hasNormalGLArea()

SbBool SoGtkGLWidget::hasNormalGLArea ( void ) const

Will return TRUE if a normal GL drawing area exists.

◆ hasOverlayGLArea()

SbBool SoGtkGLWidget::hasOverlayGLArea ( void ) const

Will return TRUE if an overlay GL drawing area exists.

◆ initGraphic()

void SoGtkGLWidget::initGraphic ( void )
protectedvirtual

Will be called when GL widget should initialize graphic, after the widget has been created. Default method enabled GL_DEPTH_TEST.

Reimplemented in SoGtkRenderArea.

◆ initOverlayGraphic()

void SoGtkGLWidget::initOverlayGraphic ( void )
protectedvirtual

Will be called after the overlay widget has been created, and subclasses should override this to initialize overlay stuff.

Default method does nothing.

Reimplemented in SoGtkRenderArea.

◆ isBorder()

SbBool SoGtkGLWidget::isBorder ( void ) const

Returns whether or not there's a border framing the OpenGL canvas.

See also
setBorder()

◆ isDoubleBuffer()

SbBool SoGtkGLWidget::isDoubleBuffer ( void ) const

Returns the status of the buffer mode.

See also
setDoubleBuffer()

◆ isDrawToFrontBufferEnable()

SbBool SoGtkGLWidget::isDrawToFrontBufferEnable ( void ) const

◆ isOverlayRender()

SbBool SoGtkGLWidget::isOverlayRender ( void ) const

Returns a flag indicating whether or not overplay planes are currently used.

See also
setOverlayRender()

◆ isQuadBufferStereo()

SbBool SoGtkGLWidget::isQuadBufferStereo ( void ) const

Returns TRUE if quad buffer stereo is enabled for this widget.

◆ isRGBMode()

SbBool SoGtkGLWidget::isRGBMode ( void )
protected

Returns TRUE if the normal GL context is in RGBA mode. Return FALSE if color index mode is used.

◆ isStealFocus()

SbBool SoGtkGLWidget::isStealFocus ( void ) const

Returns whether focus stealing policy is on (TRUE) or off (FALSE).

Default is TRUE.

See also
setStealFocus
Since
SoGtk 1.3.0

◆ isStereoBuffer()

SbBool SoGtkGLWidget::isStereoBuffer ( void ) const
protected

Returns whether OpenGL stereo buffers are being used.

◆ processEvent()

void SoGtkGLWidget::processEvent ( GdkEvent * anyevent)
protectedvirtual

Any events from the native window system that goes to the OpenGL canvas gets piped through this method.

It is overridden in the subclasses to catch user interaction with the render canvas in the viewers, as well as forwarding relevant events to the scene graph.

Reimplemented in SoGtkRenderArea.

◆ redraw()

void SoGtkGLWidget::redraw ( void )
protectedpure virtual

This method is invoked when the GL buffer needs to be redrawn.

Implemented in SoGtkRenderArea.

◆ redrawOverlay()

void SoGtkGLWidget::redrawOverlay ( void )
protectedvirtual

Renders the overlay scene graph. Default method is empty. Subclasses should override this method.

Reimplemented in SoGtkRenderArea.

◆ setAccumulationBuffer()

void SoGtkGLWidget::setAccumulationBuffer ( const SbBool enable)

Enables/disables the OpenGL accumulation buffer.

For general information about accumulation buffers, confer with your OpenGL reference documentation.

By default, the accumulation buffer will be attempted disabled. Whether or not it will actually be disabled depends on what OpenGL contexts are available on the system. It is perfectly possible that the only usable contexts with regard to the other settings (like double buffering and RGBA mode versus color index mode) causes the context selection to choose an OpenGL format that contains an accumulation buffer, even though it was not requested.

Vice versa, one is not guaranteed to get accumulation buffers even when requested through this function, either because they are not available, or because they are only available in combination with other OpenGL context settings that are not wanted (like single buffers, non-accelerated rendering, etc).

If you try to enable accumulation buffers by using this function, you should therefore in succession use the SoGtkGLWidget::getAccumulationBuffer() to query whether or not an accumulation buffer could actually be set up.

See also
SoGtkRenderArea::setAntiAliasing()

◆ setAlphaChannel()

void SoGtkGLWidget::setAlphaChannel ( const SbBool enable)

Enables/disables the alpha channel for the OpenGL context.

◆ setBorder()

void SoGtkGLWidget::setBorder ( const SbBool enable)

Specify whether or not there should be a border framing the OpenGL canvas. The border will be 2 pixels wide.

The default is to display the OpenGL canvas with no border.

See also
isBorder()

◆ setDoubleBuffer()

void SoGtkGLWidget::setDoubleBuffer ( const SbBool enable)
virtual

Switch between single and double buffer mode for the OpenGL canvas. The default is to use a single buffer canvas.

See also
isDoubleBuffer()

Reimplemented in SoGtkViewer.

◆ setDrawToFrontBufferEnable()

void SoGtkGLWidget::setDrawToFrontBufferEnable ( const SbBool enable)

If this is set to TRUE, rendering will happen in the front buffer even if the current rendering mode is double buffered.

◆ setGLSize()

void SoGtkGLWidget::setGLSize ( const SbVec2s size)
protected

Sets the size of the GL canvas.

◆ setGlxSize()

void SoGtkGLWidget::setGlxSize ( const SbVec2s size)
inlineprotected

This function has been renamed to the more appropriate setGLSize.

See also
setGLSize

◆ setOverlayRender()

void SoGtkGLWidget::setOverlayRender ( const SbBool onoff)

Turn on or off the use of overlay planes.

See also
isOverlayRender()

◆ setQuadBufferStereo()

void SoGtkGLWidget::setQuadBufferStereo ( const SbBool enable)

Enables or disables OpenGL quad buffer stereo.

◆ setSampleBuffers()

void SoGtkGLWidget::setSampleBuffers ( const int numsamples)

Set the number of samples use when enabling multisample buffer contexts. Multisampling will be enabled when numsamples > 1.

◆ setStealFocus()

void SoGtkGLWidget::setStealFocus ( SbBool enable)

Sets whether the GL widget should steal keyboard focus when the mouse is over the GL view.

Default is TRUE.

See also
isStealFocus
Since
SoGtk 1.3.0

◆ setStencilBuffer()

void SoGtkGLWidget::setStencilBuffer ( const SbBool enable)

Enables/disables the OpenGL stencil buffer.

For general information about stencil buffers, confer with your OpenGL reference documentation.

By default, the stencil buffer will be attempted disabled, but the same notes apply for stencil buffers as for accumulation buffers. For an explanation on the issue of stencil and accumulation buffer availability, see the function documentation of SoGtkGLWidget::setAccumulationBuffer().

◆ setStereoBuffer()

void SoGtkGLWidget::setStereoBuffer ( SbBool flag)
protected

Sets whether OpenGL stereo buffers (quad buffer stereo) should be used.

◆ sizeChanged()

void SoGtkGLWidget::sizeChanged ( const SbVec2s & size)
protectedvirtual

Called internally from within the SoGtk library when the widget embedded in a component changes its size, which is usually triggered by end-user interaction.

This method is then invoked to notify the component that the size has changed. It is called from the top and all the way down to the bottom, the size being adjusted to take into account extra decorations having been added at each level in the component class hierarchy.

Override to detect when the base widget in the component changes its dimensions (an operation which is usually triggered by the user).

Reimplemented from SoGtkComponent.

Reimplemented in SoGtkRenderArea, SoGtkFullViewer, and SoGtkViewer.

◆ widgetChanged()

void SoGtkGLWidget::widgetChanged ( GtkWidget * w)
protectedvirtual

This is the method which gets called whenever we change which OpenGL widget is used.

Should be overridden in subclasses which directly or indirectly store the return value from the SoGtkGLWidget::getGLWidget() method.

See also
sizeChanged()

Reimplemented in SoGtkRenderArea.

Member Data Documentation

◆ drawToFrontBuffer

SbBool SoGtkGLWidget::drawToFrontBuffer
protected

If this is TRUE, rendering will happen in the front buffer even if the current rendering mode is double buffered.

◆ waitForExpose

SbBool SoGtkGLWidget::waitForExpose
protected

If this is TRUE, rendering should not be done yet. Upon the first expose event of a newly created OpenGL widget, this variable will be set to FALSE.


The documentation for this class was generated from the following files: