---
name: "SoXtConstrainedViewer"
section: "3iv"
platform: "linux"
package: "inventor-doc"
version: "2.1.6+ds-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SoXtConstrainedViewer"
---

# SoXtConstrainedViewer(3iv)

base viewer class which adds camera constraints given a world up direction

## NAME

SoXtConstrainedViewer — base viewer class which adds camera constraints given a world up direction

## INHERITS FROM

SoXtComponent \> SoXtGLWidget \> SoXtRenderArea \> SoXtViewer \> SoXtFullViewer \> SoXtConstrainedViewer

## SYNOPSIS

**#include \<Inventor/Xt/viewers/SoXtConstrainedViewer.h\>**

Methods from class SoXtConstrainedViewer:

**void**	**setUpDirection(const SbVec3f &newUpDirection)**\
 **SbVec3f**	**getUpDirection()**

Methods from class SoXtFullViewer:

**void**	**setDecoration(SbBool onOrOff)**\
 **SbBool**	**isDecoration()**\
 **void**	**setPopupMenuEnabled(SbBool trueOrFalse)**\
 **SbBool**	**isPopupMenuEnabled()**\
 **Widget**	**getAppPushButtonParent() const**\
 **void**	**addAppPushButton(Widget newButton)**\
 **void**	**insertAppPushButton(Widget newButton, int index)**\
 **void**	**removeAppPushButton(Widget oldButton)**\
 **int**	**findAppPushButton(Widget oldButton)**\
 **int**	**lengthAppPushButton()**\
 **Widget**	**getRenderAreaWidget()**

Methods from class SoXtViewer:

**virtual void**	**setCamera(SoCamera \*cam)**\
 **SoCamera \***	**getCamera()**\
 **virtual void**	**setCameraType(SoType type)**\
 **SoType**	**getCameraType()**\
 **virtual void**	**viewAll()**\
 **virtual void**	**saveHomePosition()**\
 **virtual void**	**resetToHomePosition()**\
 **virtual void**	**setHeadlight(SbBool onOrOff)**\
 **SbBool**	**isHeadlight()**\
 **SoDirectionalLight \***	**getHeadlight()**\
 **virtual void**	**setDrawStyle(SoXtViewer::DrawType type, SoXtViewer::DrawStyle style)**\
 **SoXtViewer::DrawStyle**	**getDrawStyle(SoXtViewer::DrawType type)**\
 **virtual void**	**setBufferingType(SoXtViewer::BufferType type)**\
 **SoXtViewer::BufferType**	**getBufferingType()**\
 **virtual void**	**setViewing(SbBool onOrOff)**\
 **SbBool**	**isViewing() const**\
 **virtual void**	**setCursorEnabled(SbBool onOrOff)**\
 **SbBool**	**isCursorEnabled() const**\
 **void**	**setAutoClipping(SbBool onOrOff)**\
 **SbBool**	**isAutoClipping() const**\
 **virtual void**	**setStereoViewing(SbBool onOrOff)**\
 **virtual SbBool**	**isStereoViewing()**\
 **void**	**setStereoOffset(float dist)**\
 **float**	**getStereoOffset()**\
 **void**	**setDetailSeek(SbBool onOrOff)**\
 **SbBool**	**isDetailSeek()**\
 **void**	**setSeekTime(float seconds)**\
 **float**	**getSeekTime()**\
 **void**	**addStartCallback(SoXtViewerCB \*f, void \*userData = NULL)**\
 **void**	**addFinishCallback(SoXtViewerCB \*f, void \*userData = NULL)**\
 **void**	**removeStartCallback(SoXtViewerCB \*f, void \*userData = NULL)**\
 **void**	**removeFinishCallback(SoXtViewerCB \*f, void \*userData = NULL)**\
 **void**	**copyView(Time eventTime)**\
 **void**	**pasteView(Time eventTime)**\
 **virtual void**	**recomputeSceneSize()**

Methods from class SoXtRenderArea:

**virtual void**	**setSceneGraph(SoNode \*newScene)**\
 **virtual SoNode \***	**getSceneGraph()**\
 **void**	**setOverlaySceneGraph(SoNode \*newScene)**\
 **SoNode \***	**getOverlaySceneGraph()**\
 **void**	**registerDevice(SoXtDevice \*)**\
 **void**	**unregisterDevice(SoXtDevice \*)**\
 **void**	**setBackgroundColor(const SbColor &c)**\
 **const SbColor &**	**getBackgroundColor() const**\
 **void**	**setBackgroundIndex(int index)**\
 **int**	**getBackgroundIndex() const**\
 **void**	**setOverlayBackgroundIndex(int index)**\
 **int**	**getOverlayBackgroundIndex() const**\
 **void**	**setColorMap(int startIndex, int num, const SbColor \*colors)**\
 **void**	**setOverlayColorMap(int startIndex, int num, const SbColor \*colors)**\
 **void**	**setViewportRegion(const SbViewportRegion &newRegion)**\
 **const SbViewportRegion &**	**getViewportRegion() const**\
 **void**	**setTransparencyType(SoGLRenderAction::TransparencyType type)**\
 **SoGLRenderAction::TransparencyType**\
 	**getTransparencyType() const**\
 **void**	**setAntialiasing(SbBool smoothing, int numPasses)**\
 **void**	**getAntialiasing(SbBool &smoothing, int &numPasses) const**\
 **void**	**setClearBeforeRender(SbBool trueOrFalse)**\
 **SbBool**	**isClearBeforeRender() const**\
 **void**	**setClearBeforeOverlayRender(SbBool trueOrFalse)**\
 **SbBool**	**isClearBeforeOverlayRender() const**\
 **void**	**setAutoRedraw(SbBool trueOrFalse)**\
 **SbBool**	**isAutoRedraw() const**\
 **void**	**setRedrawPriority(uint32\_t priority)**\
 **uint32\_t**	**getRedrawPriority() const**\
 **static uint32\_t**	**getDefaultRedrawPriority()**\
 **void**	**render()**\
 **void**	**renderOverlay()**\
 **void**	**scheduleRedraw()**\
 **void**	**scheduleOverlayRedraw()**\
 **void**	**redrawOnSelectionChange(SoSelection \*s)**\
 **void**	**redrawOverlayOnSelectionChange(SoSelection \*s)**\
 **void**	**setEventCallback(SoXtRenderAreaEventCB \*fcn, void \*userData = NULL)**\
 **void**	**setGLRenderAction(SoGLRenderAction \*ra)**\
 **SoGLRenderAction \***	**getGLRenderAction() const**\
 **void**	**setOverlayGLRenderAction(SoGLRenderAction \*ra)**\
 **SoGLRenderAction \***	**getOverlayGLRenderAction() const**\
 **void**	**setSceneManager(SoSceneManager \*sm)**\
 **SoSceneManager \***	**getSceneManager() const**\
 **void**	**setOverlaySceneManager(SoSceneManager \*sm)**\
 **SoSceneManager \***	**getOverlaySceneManager() const**

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 is a base class for the SoXtWalkViewer** and **SoXtFlyViewer** component viewers. This class adds methods and convenience routines available to subclasses to constrain the camera given a world up direction. This prevents the camera from looking upside down. By default the +Y direction is used.

## METHODS

**void**	**setUpDirection(const SbVec3f &newUpDirection)**\
 **SbVec3f**	**getUpDirection()**\
 Specifies the upward direction of the viewer. This up direction is used by the viewers to constrain the camera when tilting up/down, and also used when rotating the camera right/left. The default is the +Y (0,1,0) direction.

## SEE ALSO

**SoXtFullViewer, SoXtViewer, SoXtComponent, SoXtRenderArea, SoXtWalkViewer, SoXtFlyViewer**
