logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

SoXtViewer — viewer component lowest base class

Description

       This  is  the  lowest  base  class  for  viewer components. This class adds the notion of a camera to the
       SoXtRenderArea class.  Whenever  a  new  scene  is  specified  with  setSceneGraph(),  the  first  camera
       encountered  will be by default used as the edited camera. If no camera is found in the scene, the viewer
       will automatically create one. If the viewer type is SoXtViewer::BROWSER then the camera is told to  view
       the  supplied  scene  graph  but  is  not  added  beneath  that  scene  graph root. If the viewer type is
       SoXtViewer::EDITOR then the camera is added beneath the supplied scene graph root.

       In addition to automatically creating a camera if needed,  this  base  class  also  creates  a  headlight
       (directional  light  which is made to follow the camera), enables the user to change drawing styles (like
       wireframe or move wireframe), and buffering types. This base class also provides a convenient way to have
       the camera near and far clipping planes be automatically adjusted to minimize the clipping of objects  in
       the scene.

       Viewers  allow  the  application  to  shadow  event  processing.  When the application registers an event
       processing callback by calling setEventCallback() the viewer will invoke this callback for every X  event
       it  receives.  However, unlike the render area, the viewer ignores the return value of this callback, and
       processes the event as usual. This allows the application to expand viewing capabilities without breaking
       the viewing paradigm. It is an easy way to hook up other devices, like  the  spaceball,  to  an  existing
       viewer.

Inherits From

       SoXtComponent > SoXtGLWidget > SoXtRenderArea > SoXtViewer

Methods

virtualvoidsetCamera(SoCamera*cam)SoCamera*getCamera()
          Set  and  get  the  edited  camera. Setting the camera is only needed if the first camera found in the
          scene when setting the scene graph isn't the one the user really wants to edit.

     virtualvoidsetCameraType(SoTypetype)SoTypegetCameraType()
          Set and get the camera type that will be created by the viewer if no cameras are found  in  the  scene
          graph  (see  SoPerspectiveCamera  and SoOrthographicCamera). By default an SoPerspectiveCamera will be
          created if no camera are found.

          Note: the set method will only take effect next time a scene graph is specified (and if no camera  are
          found).

     virtualvoidviewAll()
          Changes the camera position to view the entire scene (the camera zoom or orientation isn't changed).

     virtualvoidsaveHomePosition()virtualvoidresetToHomePosition()
          Saves and restores the camera values.

     virtualvoidsetHeadlight(SbBoolonOrOff)SbBoolisHeadlight()SoDirectionalLight*getHeadlight()
          Turns the headlight on/off (default on) and return the headlight node.

     virtualvoidsetDrawStyle(SoXtViewer::DrawTypetype,SoXtViewer::DrawStylestyle)SoXtViewer::DrawStylegetDrawStyle(SoXtViewer::DrawTypetype)
          Sets/gets the current drawing style in the main view — The user can specify the INTERACTIVE draw style
          (draw  style  used  when  the  scene  changes)  independently  from the STILL style. STILL defaults to
          VIEW_AS_IS.  INTERACTIVE defaults to VIEW_NO_TEXTURE on machine that do not  support  fast  texturing,
          VIEW_SAME_AS_STILL otherwise. Possible draw styles are:

          VIEW_AS_IS — Leaves the objects unchanged.

          VIEW_HIDDEN_LINE  —  Renders  the  object  as wireframe, but only show the object front faces. This is
          accomplished using a two pass rendering. In the first pass, the objects are rendered as  FILLED  using
          the  background BASE_COLOR (this sets up the wanted z-buffer values). The second pass then renders the
          objects as LINES, while adjusting the z-buffer range to limit overlapping polygons problems.

          VIEW_NO_TEXTURE — Renders the objects withought any textures.  This is done by  setting  the  override
          flag on an SoComplexity node with textureQuality = 0.

          VIEW_LOW_COMPLEXITY  —  Renders  the objects withought any textures and with a low complexity. This is
          done by setting the override flag on an SoComplexity node with textureQuality = 0 and complexity value
          = 0.15.

          VIEW_LINE — Renders the objects as LINES (no texture) with lighting model set to BASE_COLOR.

          VIEW_LOW_RES_LINE — Renders the objects as LINES (no texture) using a low  complexity,  with  lighting
          model set to BASE_COLOR and no depth comparison.

          VIEW_POINT — Renders the objects as POINTS (no texture) with lighting model set to BASE_COLOR.

          VIEW_LOW_RES_POINT  — Renders the objects as POINTS (no texture) using a low complexity, with lighting
          model set to BASE_COLOR and no depth comparison.

          VIEW_BBOX — Renders the objects with complexity BOUNDING_BOX, lighting model  set  to  BASE_COLOR  and
          drawing style LINES (no texture) with no depth comparison.

          VIEW_SAME_AS_STILL — This only applies to INTERACTIVE draw type. It enables the interactive draw style
          mode to match the regular draw style mode withough having to set it explicitly.

     virtualvoidsetBufferingType(SoXtViewer::BufferTypetype)SoXtViewer::BufferTypegetBufferingType()
          Sets/gets the current buffering type in the main view (default SoXtViewer::BUFFER_DOUBLE).

     virtualvoidsetViewing(SbBoolonOrOff)SbBoolisViewing()const
          Set/get  whether  the  viewer  is turned on or off. When turned on, events are consumed by the viewer.
          When viewing is off, events are processed by the viewers render area. This means events will  be  sent
          down  to  the  scene  graph  for processing (i.e. picking can occur). Note that if the application has
          registered an event callback, it will be invoked on every event, whether viewing is turned on or  not.
          However,  the return value of this callback (which specifies whether the callback handled the event or
          not) is ignored when viewing is on. That is, the viewer will process the event even  if  the  callback
          already did. This is to ensure that the viewing paradigm is not broken (default viewing is ON).

     virtualvoidsetCursorEnabled(SbBoolonOrOff)SbBoolisCursorEnabled()const
          Set/get  whether the viewer is allowed to change the cursor over the renderArea window. When disabled,
          the cursor is undefined by the viewer and will not change as the mode of the viewer changes. When  re-
          enabled, the viewer will reset it to the appropriate icon.

          Disabling the cursor enables the application to set the cursor directly on the viewer window or on any
          parent widget of the viewer. This can be used when setting a busy cursor on the application shell.

          Subclasses  should  redefine  this  routine  to  call  XUndefineCursor()  or  XDefineCursor() with the
          appropariate glyth. The base class routine only sets the flag.

     voidsetAutoClipping(SbBoolonOrOff)SbBoolisAutoClipping()const
          Set and get the auto clipping plane. When auto clipping is ON, the camera  near  and  far  planes  are
          dynamically adjusted to be as tight as possible around the objects being viewed. When OFF, the user is
          expected to manually set those planes within the preference sheet (default is on).

     virtualvoidsetStereoViewing(SbBoolonOrOff)virtualSbBoolisStereoViewing()voidsetStereoOffset(floatdist)floatgetStereoOffset()
          Turns  stereo  viewing  on/off on the viewer (default off). When in stereo mode, which may not work on
          all machines, the scene is rendered twice (in the left and right buffers) with an offset  between  the
          two  views  to  simulate  stereo  viewing.  Stereo  glasses  have  to  be  used  to see the effect and
          /usr/gfx/setmon needs to be called to set the monitor in stereo mode.

          The user can also specify what the offset between the two views should be.

     voidsetDetailSeek(SbBoolonOrOff)SbBoolisDetailSeek()
          When the viewer is in seek mode, left mouse clicks  initiate  a  pick,  and  the  viewer  changes  its
          orientation  and  position to look at the picked object. This routine tells the seeking viewer whether
          to orient the camera towards the picked point (detail on), or the center of the object's bounding  box
          (detail off). Default is detail on.

     voidsetSeekTime(floatseconds)floatgetSeekTime()
          Set  the time a seek takes to change to the new camera location. A value of zero seeks directly to the
          point without any animation. Default value is 2 seconds.

     voidaddStartCallback(SoXtViewerCB*f,void*userData=NULL)voidaddFinishCallback(SoXtViewerCB*f,void*userData=NULL)voidremoveStartCallback(SoXtViewerCB*f,void*userData=NULL)voidremoveFinishCallback(SoXtViewerCB*f,void*userData=NULL)
          Add/remove start and finish callback routines on the viewer. Start callbacks are called  whenever  the
          user  starts doing interactive viewing (for example, mouse down), and finish callbacks are called when
          user is done doing interactive work (for example, mouse up).

          Note: The viewer "this" pointer is passed as callback data.

     voidcopyView(TimeeventTime)voidpasteView(TimeeventTime)
          Copy/paste the view. eventTime should be the time of the X event which initiated  the  copy  or  paste
          (e.g.  if  copy/paste  is  initiated  from a keystroke, eventTime should be the time in the X KeyPress
          event.)

     virtualvoidrecomputeSceneSize()
          This can be used to let the viewer know that the scene graph  has  changed  so  that  the  viewer  can
          recompute  things like speed which depend on the scene graph size. Note: This routine is automatically
          called whenever setSceneGraph() is called.

Name

       SoXtViewer — viewer component lowest base class

See Also

SoXtComponent,SoXtRenderArea,SoXtExaminerViewer,SoXtWalkViewer,SoXtFlyViewer,SoXtPlaneViewerSoXtViewer(3IV)()

Synopsis

#include<Inventor/Xt/viewers/SoXtViewer.h>typedefvoidSoXtViewerCB(void*userData,SoXtViewer*viewer)enumType{SoXtViewer::BROWSER  camera views scene, but is not added to scene
          SoXtViewer::EDITOR   camera is added to user's scene
     }enumDrawStyle{SoXtViewer::VIEW_AS_IS       unchanged
          SoXtViewer::VIEW_HIDDEN_LINE render only the front most lines
          SoXtViewer::VIEW_NO_TEXTURE  render withought textures
          SoXtViewer::VIEW_LOW_COMPLEXITY
                                       render low complexity and no texture
          SoXtViewer::VIEW_LINE        wireframe draw style
          SoXtViewer::VIEW_LOW_RES_LINE
                                       low complexity wireframe with no depth comparison
          SoXtViewer::VIEW_POINT       point draw style
          SoXtViewer::VIEW_LOW_RES_POINT
                                       low complexity point with no depth comparison
          SoXtViewer::VIEW_BBOX        bounding box draw style with no depth comparison
          SoXtViewer::VIEW_SAME_AS_STILL
                                       forces the INTERACTIVE draw style to automatically match STILL
     }enumDrawType{SoXtViewer::STILL        applies to static rendering
          SoXtViewer::INTERACTIVE  applies to rendering while interactive viewing
     }enumBufferType{SoXtViewer::BUFFER_SINGLE  single buffer
          SoXtViewer::BUFFER_DOUBLE  double buffer
          SoXtViewer::BUFFER_INTERACTIVE
                                     double buffer while interactive viewing
     }

          Methods from class SoXtViewer:

     virtualvoidsetCamera(SoCamera*cam)SoCamera*getCamera()virtualvoidsetCameraType(SoTypetype)SoTypegetCameraType()virtualvoidviewAll()virtualvoidsaveHomePosition()virtualvoidresetToHomePosition()virtualvoidsetHeadlight(SbBoolonOrOff)SbBoolisHeadlight()SoDirectionalLight*getHeadlight()virtualvoidsetDrawStyle(SoXtViewer::DrawTypetype,SoXtViewer::DrawStylestyle)SoXtViewer::DrawStylegetDrawStyle(SoXtViewer::DrawTypetype)virtualvoidsetBufferingType(SoXtViewer::BufferTypetype)SoXtViewer::BufferTypegetBufferingType()virtualvoidsetViewing(SbBoolonOrOff)SbBoolisViewing()constvirtualvoidsetCursorEnabled(SbBoolonOrOff)SbBoolisCursorEnabled()constvoidsetAutoClipping(SbBoolonOrOff)SbBoolisAutoClipping()constvirtualvoidsetStereoViewing(SbBoolonOrOff)virtualSbBoolisStereoViewing()voidsetStereoOffset(floatdist)floatgetStereoOffset()voidsetDetailSeek(SbBoolonOrOff)SbBoolisDetailSeek()voidsetSeekTime(floatseconds)floatgetSeekTime()voidaddStartCallback(SoXtViewerCB*f,void*userData=NULL)voidaddFinishCallback(SoXtViewerCB*f,void*userData=NULL)voidremoveStartCallback(SoXtViewerCB*f,void*userData=NULL)voidremoveFinishCallback(SoXtViewerCB*f,void*userData=NULL)voidcopyView(TimeeventTime)voidpasteView(TimeeventTime)virtualvoidrecomputeSceneSize()

          Methods from class SoXtRenderArea:

     virtualvoidsetSceneGraph(SoNode*newScene)virtualSoNode*getSceneGraph()voidsetOverlaySceneGraph(SoNode*newScene)SoNode*getOverlaySceneGraph()voidregisterDevice(SoXtDevice*)voidunregisterDevice(SoXtDevice*)voidsetBackgroundColor(constSbColor&c)constSbColor&getBackgroundColor()constvoidsetBackgroundIndex(intindex)intgetBackgroundIndex()constvoidsetOverlayBackgroundIndex(intindex)intgetOverlayBackgroundIndex()constvoidsetColorMap(intstartIndex,intnum,constSbColor*colors)voidsetOverlayColorMap(intstartIndex,intnum,constSbColor*colors)voidsetViewportRegion(constSbViewportRegion&newRegion)constSbViewportRegion&getViewportRegion()constvoidsetTransparencyType(SoGLRenderAction::TransparencyTypetype)SoGLRenderAction::TransparencyTypegetTransparencyType()constvoidsetAntialiasing(SbBoolsmoothing,intnumPasses)voidgetAntialiasing(SbBool&smoothing,int&numPasses)constvoidsetClearBeforeRender(SbBooltrueOrFalse)SbBoolisClearBeforeRender()constvoidsetClearBeforeOverlayRender(SbBooltrueOrFalse)SbBoolisClearBeforeOverlayRender()constvoidsetAutoRedraw(SbBooltrueOrFalse)SbBoolisAutoRedraw()constvoidsetRedrawPriority(uint32_tpriority)uint32_tgetRedrawPriority()conststaticuint32_tgetDefaultRedrawPriority()voidrender()voidrenderOverlay()voidscheduleRedraw()voidscheduleOverlayRedraw()voidredrawOnSelectionChange(SoSelection*s)voidredrawOverlayOnSelectionChange(SoSelection*s)voidsetEventCallback(SoXtRenderAreaEventCB*fcn,void*userData=NULL)voidsetGLRenderAction(SoGLRenderAction*ra)SoGLRenderAction*getGLRenderAction()constvoidsetOverlayGLRenderAction(SoGLRenderAction*ra)SoGLRenderAction*getOverlayGLRenderAction()constvoidsetSceneManager(SoSceneManager*sm)SoSceneManager*getSceneManager()constvoidsetOverlaySceneManager(SoSceneManager*sm)SoSceneManager*getOverlaySceneManager()const

          Methods from class SoXtGLWidget:

     voidsetBorder(SbBoolonOrOff)SbBoolisBorder()constvirtualvoidsetDoubleBuffer(SbBoolonOrOff)SbBoolisDoubleBuffer()WindowgetNormalWindow()WindowgetOverlayWindow()GLXContextgetNormalContext()GLXContextgetOverlayContext()WidgetgetNormalWidget()WidgetgetOverlayWidget()virtualvoidsetNormalVisual(XVisualInfo*vis)XVisualInfo*getNormalVisual()virtualvoidsetOverlayVisual(XVisualInfo*vis)XVisualInfo*getOverlayVisual()voidsetDrawToFrontBufferEnable(SbBoolenableFlag)SbBoolisDrawToFrontBufferEnable()const

          Methods from class SoXtComponent:

     virtualvoidshow()virtualvoidhide()SbBoolisVisible()WidgetgetWidget()constSbBoolisTopLevelShell()constWidgetgetShellWidget()constWidgetgetParentWidget()constvoidsetSize(constSbVec2s&size)SbVec2sgetSize()Display*getDisplay()voidsetTitle(constchar*newTitle)constchar*getTitle()constvoidsetIconTitle(constchar*newIconTitle)constchar*getIconTitle()constvoidsetWindowCloseCallback(SoXtComponentCB*func,void*data=NULL)staticSoXtComponent*getComponent(Widgetw)constchar*getWidgetName()constconstchar*getClassName()const

See Also