Provided by: inventor-doc_2.1.5-10-18_all bug

NAME

       SoXtGLWidget — wrapper around GLwMDraw for OpenGL rendering in a motif widget

INHERITS FROM

       SoXtComponent > SoXtGLWidget

SYNOPSIS

       #include <Inventor/Xt/SoXtGLWidget.h>

          Methods from class SoXtGLWidget:

     void                setBorder(SbBool onOrOff)
     SbBool              isBorder() const
     virtual void        setDoubleBuffer(SbBool onOrOff)
     SbBool              isDoubleBuffer()
     Window              getNormalWindow()
     Window              getOverlayWindow()
     GLXContext          getNormalContext()
     GLXContext          getOverlayContext()
     Widget              getNormalWidget()
     Widget              getOverlayWidget()
     virtual void        setNormalVisual(XVisualInfo *vis)
     XVisualInfo *       getNormalVisual()
     virtual void        setOverlayVisual(XVisualInfo *vis)
     XVisualInfo *       getOverlayVisual()
     void                setDrawToFrontBufferEnable(SbBool enableFlag)
     SbBool              isDrawToFrontBufferEnable() const

          Methods from class SoXtComponent:

     virtual void            show()
     virtual void            hide()
     SbBool                  isVisible()
     Widget                  getWidget() const
     SbBool                  isTopLevelShell() const
     Widget                  getShellWidget() const
     Widget                  getParentWidget() const
     void                    setSize(const SbVec2s &size)
     SbVec2s                 getSize()
     Display *               getDisplay()
     void                    setTitle(const char *newTitle)
     const char *            getTitle() const
     void                    setIconTitle(const char *newIconTitle)
     const char *            getIconTitle() const
     void                    setWindowCloseCallback(SoXtComponentCB *func, void *data = NULL)
     static SoXtComponent *  getComponent(Widget w)
     const char *            getWidgetName() const
     const char *            getClassName() const

DESCRIPTION

       This  abstract  base  class  provides  a C++ wrapper around the GLwMDraw widget. It allows
       OpenGL rendering to be performed within a motif widget and is used by the  SoXtRenderArea.
       SoXtGlWidget  uses  a form widget around two separate GLwMDraw widgets (one for single and
       one for double buffering), with routines to return the appropriate windows.

       Subclasses only need to redefine the redraw() routine  for  rendering  and  processEvent()
       routine if they are interested in receiving X events.

METHODS

     void                setBorder(SbBool onOrOff)
     SbBool              isBorder() const
          Show  and  hide  the  border around the glx widgets (thickness 3). Default is no border
          (FALSE). (The SoXtRenderArea subclass defaults turns the border on by default.)

     virtual void        setDoubleBuffer(SbBool onOrOff)
     SbBool              isDoubleBuffer()
          Routine which dynamically changes between  single  and  double  buffering.  Default  is
          double buffer off. (The SoXtRenderArea subclass makes it double buffer by default.)

     Window              getNormalWindow()
     Window              getOverlayWindow()
     GLXContext          getNormalContext()
     GLXContext          getOverlayContext()
     Widget              getNormalWidget()
     Widget              getOverlayWidget()
          Get  the current normal and overlay GLX windows, contexes and widgets, which are needed
          as arguments to glXMakeCurrent() when doing drawing in the normal or overlay planes.

          Note: These should not be cached by users because they  will  change  as  single/double
          buffering changes.

     virtual void        setNormalVisual(XVisualInfo *vis)
     XVisualInfo *       getNormalVisual()
     virtual void        setOverlayVisual(XVisualInfo *vis)
     XVisualInfo *       getOverlayVisual()
          Specify  exactly  what  the  visual  should  be for the normal and overlay window. This
          allows the user to create all possible visuals supported  by  OpenGL.  The  XVisualInfo
          structure should be a valid OpenGL visual returned by glXChooseVisual(). This structure
          will be copied by the SoXtGLWidget; the application  is  responsible  for  freeing  the
          visual  info with XFree() when done. (The methods for setting the visual are virtual so
          that derived classes can know when the visual is changing.)

     void                setDrawToFrontBufferEnable(SbBool enableFlag)
     SbBool              isDrawToFrontBufferEnable() const
          Inventor 2.1 changed the behavior of double buffered windows to redraw temporary to the
          front  buffer  when an expose event is received or when a new sceneGraph() is set on an
          SoXtRenderArea. This does not apply for general interactive rendering. The idea is that
          it  is better to see something redraw (especially if it is slow) than to see garbage in
          the  window  (in  the  expose  case)  or  an  old   invalid   scene   graph   (in   the
          SoXtRenderArea::setSceneGraph() case).

          This  API  enables you to turn this functionality OFF if for some reason you are unable
          to prevent repeated expose from causing a redraw (which is bad and should be fixed,  as
          it  gets worse for large scenes). This will be the case for example if you can't create
          a pulldown menu in the popup planes.

          NOTE: this api might be removed in some future releases  and  is  only  intended  as  a
          porting help for Inventor 2.0 to 2.1

SEE ALSO

       SoXtComponent, SoXtRenderArea

                                                                              SoXtGLWidget(3IV)()