MeVisLab Toolbox Reference
SoView2DPlane Class Reference

#include <SoView2DPlane.h>

Inheritance diagram for SoView2DPlane:
SoView2DInteractionExtension SoView2DExtension SoInteractionProviderNode SoInteractionOwner SoInteractionProvider

Public Types

enum  InteractionMode { TRANSLATE , ROTATE , BOTH }
 
enum  NormalShape { TRIANGLE , ARROW }
 
- Public Types inherited from SoView2DExtension
enum  Sign { ZERO , NEGATIVE , POSITIVE }
 defines the sign of a number, with zero as an extra value More...
 
- Public Types inherited from SoInteractionProvider
typedef SoInteractionProvider *(* GetProviderFunc) (SoNode *)
 

Public Member Functions

 SoView2DPlane ()
 Constructor.
 
void draw (View2DSliceList *dsl, View2DSlice *dslice, int slice) override
 reimplemented from SoView2DExtension
 
bool evalEvent (SoView2D *view2d, View2DSliceList *slicelist, View2DEvent *ec, View2DEventPhase phase) override
 reimplemented from SoView2DExtension
 
void setExternalRotationAxis (SbVec3f rotPosition)
 
- Public Member Functions inherited from SoView2DInteractionExtension
 SoView2DInteractionExtension (const std::string &actionID, bool positionSensitive=true)
 
 SoView2DInteractionExtension ()
 Constructor.
 
bool implementsManagedInteractionAndClassicEventHandling () const override
 this node is a hybrid module providing managed interaction and classic event handling
 
- Public Member Functions inherited from SoView2DExtension
 SoView2DExtension ()
 Constructor.
 
void init ()
 setup internal state
 
virtual void updateValues ()
 Update fields to local variables, may be reimplemented if you want to update additional local vars.
 
virtual void startDrawing (View2DSliceList *)
 
virtual void endDrawing (View2DSliceList *)
 
virtual void overwriteDrawingSettings (SoView2DDrawingSettings &)
 
View2DEventgetEvent ()
 get the current event (when inside of evalEvent)
 
float getSelectDist ()
 Set the distance tolerance on hit checking in pixels.
 
bool isPointInsideDeviceRect (float pointX, float pointY, float centerX, float centerY, float hitRectangleSize=0.0)
 returns whether the given point is inside a rectangle around the given center.
 
void drawMiniRect (float xp, float yp, float ext, float lineWidth=1.f)
 Draws a small rectangle with given half side length and a line width.
 
void drawDashedMiniRect (float xp, float yp, float ext, float lineWidth)
 
void drawFilledMiniRect (float xp, float yp, float ext, float lineWidth=1.f)
 Draws a small filled rectangle with given half side length.
 
void drawMiniTriangle (float xp, float yp, float ext, float lineWidth=1.f)
 Draws a small triangle with given center point, half height and line width.
 
void drawFilledMiniTriangle (float xp, float yp, float ext, float lineWidth=1.f)
 Draws a small filled triangle with given center point and half height.
 
void drawMiniCircle (float xp, float yp, float ext, float lineWidth=1.f)
 Draws a small circle with given center point and radius.
 
void drawFilledMiniCircle (float xp, float yp, float ext, float lineWidth=1.f)
 Draws a small filled circle with given center point and radius.
 
void drawFixedSizeMiniCircleAt (float xp, float yp)
 Draws a fixed size small circle at the given position.
 
void drawVoxelBorder (View2DSlice *slice, float vx, float vy, float vz)
 surround the given voxel with a border
 
int getX ()
 get the x device position of current event, only returns valid result when called inside of evalEvent()
 
int getY ()
 get the y device position of current event, only returns valid result when called inside of evalEvent()
 
virtual bool isDrawingOn ()
 check if drawing is on
 
virtual bool isEditingOn ()
 check if editing is on
 
virtual bool isFixZOn ()
 check if z should stay fixed
 
virtual bool isClipToSlice ()
 check if the image is clipped to slice
 
virtual void fieldChanged (SoSensor *sensor)
 handle if any field has changed
 
bool isCreateNewMode ()
 check if extension is in createNewMode
 
void setCreateNewMode (bool flag)
 set this extension to create new objects
 
bool isCreateNewModeRequest ()
 check if extension has a request for createNewMode
 
void setCreateNewModeRequest (bool flag)
 set that extension want to become createNewMode
 
virtual bool isActive ()
 returns if the extension is active (derive this method in child) (in createNewMode or with a selected object)(called by SoView2D)
 
virtual void deleteSelectedObject ()
 deletes the currently active object (derive this method in child) (called by SoView2D)
 
virtual void getStatusString (SbString &status)
 get the current status of this extension
 
virtual bool evaluateEvent (SoView2D *view2d, View2DEvent *ec)
 
virtual bool ignoreEvent (View2DEvent *ec)
 Return true if ec has been handled before and if ignoreHandledEvents is True.
 
bool wantsMouseOverUpdates () const
 public access to _wantsMouseOverUpdateEvents
 
virtual void consumeEvent (View2DEvent *ec, bool handled=TRUE)
 Set handled-flag of ec to true (= consumed) if handled is True and setEventHandled is True.
 
int getSelectedModifierMask ()
 Get compare and ignore mask for the currently selected button/modifier combination, usable with SoPointingAction.
 
int getSelectedIgnoreMask ()
 
SoPointingAction::Trigger getPointingActionTriggerFromFields ()
 Get the trigger that matches the button/modifier field state.
 
- Public Member Functions inherited from SoInteractionProviderNode
 SoInteractionProviderNode ()
 Default constructor.
 
 ~SoInteractionProviderNode () override
 Destructor.
 
std::string getID () const override
 Returns the id string for identifying the provider (and its actions) - this is usually the name of the scene node.
 
void objRef () override
 Memory management by reference counting; must be implemented in derived classes.
 
void objUnref () override
 
- Public Member Functions inherited from SoInteractionOwner
 SoInteractionOwner ()
 Default constructor.
 
 ~SoInteractionOwner () override
 The destructor will destroy all interactions created with this object as owner.
 
std::list< SoInteraction * > getInteractions (SoState *state) override
 Returns the list of all interactions of this provider.
 
void pointerPosition (SoState *state, const SoPointerPosition &pos) override
 Same as below, with additional SoState argument. Be defaults simply calls the below version.
 
void pointerLeftWindow (SoState *state) override
 Same as below, with additional SoState argument. Be defaults simply calls the below version.
 
void addListener (SoInteractionOwnerListenerInterface *listener)
 Add a listener object that is notified of changes in the interaction list.
 
void removeListener (SoInteractionOwnerListenerInterface *listener)
 Remove a listener object that was notified of changes in the interaction list.
 
- Public Member Functions inherited from SoInteractionProvider
 SoInteractionProvider ()
 Default constructor.
 
virtual ~SoInteractionProvider ()
 
template<class T >
std::list< T * > getInteractionsOfType (SoState *state)
 Returns list of interactions of a specific type:
 
virtual std::list< SoCommandAction * > getCommandActions (SoState *state)
 
virtual std::list< SoPointingAction * > getPointingActions (SoState *state)
 
virtual std::list< SoOffsetAction * > getOffsetActions (SoState *state)
 

Static Public Member Functions

static void initClass ()
 inventor runtime type system
 
- Static Public Member Functions inherited from SoView2DInteractionExtension
static void initClass ()
 Initializes this class.
 
- Static Public Member Functions inherited from SoView2DExtension
static void initClass ()
 Initializes this class.
 
static float snapToPixelCenter (float coordinateComponent)
 Snaps the coordinate component to the pixel center.
 
static void fieldChangedCB (void *data, SoSensor *sensor)
 inventor callbacks if any field has changed, calls fieldChanged
 
static bool isImageParallel (SoSFMLImage *image, View2DSliceList *dsl)
 Return true if image is parallel to the image of the slice list up to slice thickness.
 
static void enableLineStippling (const SoSFEnum &lineStyleField)
 Set/reset stippling pattern.
 
static void disableLineStippling (const SoSFEnum &lineStyleField)
 
static void getAxisOrientation (int axis, SbMatrix &matrix, char &negativeResult, char &positiveResult)
 Geometry helpers.
 
static float pointToLineDistance (SbVec3f point, SbVec3f line1, SbVec3f line2)
 calculate 3D point to line distance
 
static float pointToLineDistance (SbVec2f point, SbVec2f line1, SbVec2f line2)
 calculate 2D point to line distance
 
static Sign edgeIntersectWithPlane (const SbVec3f &v1, const SbVec3f &v2, const SbPlane &plane, SbVec3f &intersect)
 intersect given edge from v1 to v2 with given plane, returns sign and intersect point
 
- Static Public Member Functions inherited from SoInteractionProviderNode
static void initClass ()
 Initializes this class.
 
- Static Public Member Functions inherited from SoInteractionProvider
static void registerInteractionProviderNode (SoType type, GetProviderFunc func)
 Register a function to obtain a SoInteractionProvider from a SoNode.
 
static SoInteractionProvidergetInteractionProvider (SoNode *node)
 Get a SoInteractionProvider from a SoNode if registered, else NULL.
 

Public Attributes

SoSFPlane plane
 Fields.
 
SoSFEnum interactionMode
 interaction mode plane can be rotated or translated or both
 
SoSFBool maskValidAndHit
 gives the state of the mask, which calculated by the current mousebuttons and modifier key compared to the button1,button2,button3,ctrl,shift,alt settings.
 
SoSFFloat blendMin
 minimum blend value
 
SoSFFloat blendMax
 maximum blend value
 
SoSFBool normalOn
 draw normal
 
SoSFBool shadowOn
 draw shadow
 
SoSFBool externalRotationAxisOn
 set external rotation axis
 
SoSFBool allowMoveExternalRotationAxis
 allow to move the external rotation axis point with mouse
 
SoSFVec3f externalRotationAxis
 external rotation axis position
 
SoSFFloat centerGapSize
 don't draw plane around rotationAxis (only if fixedLineWidth is set), gap size in pixels
 
SoSFInt32 normalSize
 size of normal to be drawn (in pixels)
 
SoSFFloat normalOffset
 offset of the normal from the plane
 
SoSFEnum normalShape
 shape of normal indicator
 
SoSFMatrix rotationDifference
 Rotation between previous and current orientation.
 
SoSFFloat translationLineFraction
 Fraction of the visible line that is associated with translation (percent)
 
SoSFBool useTranslationRange
 use translation range for plane parameter d
 
SoSFFloat translationRangeMin
 minimum value for plane parameter d
 
SoSFFloat translationRangeMax
 maximum value for plane parameter d
 
SoSFBool fixedLineWidth
 use translation range for plane parameter d
 
SoSFBool useAntiAliasing
 use anti-aliasing for rendering lines
 
SoSFBool useMouseCursors
 use mouse cursors to indicate next interaction
 
- Public Attributes inherited from SoView2DInteractionExtension
SoSFTrigger singleClicked
 this is triggered when the user clicks without moving the mouse (this only is supported when using Managed Interaction)
 
SoSFTrigger doubleClicked
 the same for the second click in a row
 
- Public Attributes inherited from SoView2DExtension
SoSFColor color
 color that should be used for drawing
 
SoSFBool drawingOn
 flag if the extension should draw, needs to be checked inside of the draw() method
 
SoSFBool editingOn
 flag if the extension should edit objects on mouse events, needs to be checked inside of the evalEvent() method
 
SoSFBool maskValid
 flag if the event mask is valid.
 
SoSFFloat selectionTolerance
 the selection tolerance in pixels
 
SoSFBool wantsAllEvents
 flag if ALL events should be passed to evalEvent(), if disabled, events are only passed to evalEvent when the mouse mask gets valid
 
SoSFBool wantsKeyEvents
 flag if keyboard events should be passed to evalEvent()
 
SoSFBool wantsMouseWheelEvents
 flag if MouseWheel events should be passed to evalEvent()
 
SoSFBool setEventHandled
 Set event handled if it is indeed handled by this extension.
 
SoSFBool ignoreHandledEvents
 Ignore events, that have been handled by previous extensions.
 
SoSFEnum button1
 mouse mask for button1
 
SoSFEnum button2
 mouse mask for button2
 
SoSFEnum button3
 mouse mask for button3
 
SoSFEnum shift
 shift modifier for mouse mask
 
SoSFEnum control
 shift control for mouse mask
 
SoSFEnum alt
 shift alt for mouse mask
 
SoSFBool needsValidVoxel
 sets if a valid voxel must be hit to get evalEvent() calls
 
SoSFBool renderOnSlab
 defines if the extension should be rendered on all slab slices
 
SoSFBool createNewMode
 flag if extension is in createNewMode
 
SoSFTrigger createNewModeRequest
 
SoSFBool clipToSlice
 Flag to clip drawing to slice.
 
SoSFEnum cursorShape
 Set cursor shape if the mouse mask fits and mouseEvents are effectively sent to evalEvent for editing.
 
SoSFBool fixZOn
 DEPRECATED flag that indicates that the extension should fix the z value, only used in SoView2DRectangle.
 
- Public Attributes inherited from SoInteractionProviderNode
SoSFString instanceName
 Defines interface field to store the instance name.
 
SoSFString interactionProviderID
 This field overrides the instanceName as providerID if specified.
 

Protected Types

enum  HIT_MODE { NO_HIT , HIT_ROTATE , HIT_TRANSLATE , HIT_CENTER }
 describes if we hit the line and how More...
 

Protected Member Functions

void clipLinePoint (float &p1x, float &p1y, float p2x, float p2y, float x0, float x1)
 clip a line and a point in 2D, returns new point in p1x,p1y
 
bool clipToSliceRect (SbVec2f &p1, SbVec2f &p2, View2DSlice *dslice)
 clip line to device rectangle of slice, returns false if nothing is left afterwards
 
void drawPlaneLine (View2DSliceList *dsl, View2DSlice *dslice, SbVec2f p1, SbVec2f p2)
 draw plane line, possibly including the normal indicator
 
void drawNormal (View2DSliceList *dsl, View2DSlice *dslice, SbVec2f p1, SbVec2f p2)
 draw a normal on the slice
 
HIT_MODE _hitPlane (const SbVec3f &point, View2DSliceList *dsl, int &proposedCursorShape)
 is mouse cursor on plane?
 
void dragMoveTo (const SbVec3f &point, View2DSliceList *slicelist)
 implement dragging, parameter is world position
 
int getCurrentCursor (SoViewerProxy *viewerProxy) override
 interface forwarded from SoPointingAction:
 
bool isSensitiveAt (const SoPointerPosition &pos) override
 
void startPressAt (const SoPointerPosition &pos) override
 
void dragMoveTo (const SoPointerPosition &pos) override
 
SoPointingActionendPress (int clickCount) override
 
- Protected Member Functions inherited from SoView2DInteractionExtension
 ~SoView2DInteractionExtension () override
 destructor
 
bool isValidLocation (const SoPointerPosition &pos)
 return true if the position is inside the image or needsValidVoxel is not set
 
virtual bool shouldPointingActionBeEnabled ()
 
void editingOnChanged (SoField *field) override
 called when editingOn field is touched:
 
void buttonMaskChanged (SoField *field) override
 called when one of the button/modifier fields is touched:
 
virtual void setHighlightAt (const SoPointerPosition &)
 
virtual void unsetHighlight ()
 
virtual int getNumInteractionModes () const
 
virtual void setInteractionMode (int)
 
- Protected Member Functions inherited from SoView2DExtension
virtual void createNewModeRequestTriggered (SoField *)
 called when createNewModeRequest field ist touched:
 
 ~SoView2DExtension () override
 destructor
 
void GLRender (SoGLRenderAction *action) override
 Inventor actions.
 
void callback (SoCallbackAction *action) override
 
void handleEvent (SoHandleEventAction *action) override
 
void getMatrix (SoGetMatrixAction *action) override
 
void getBoundingBox (SoGetBoundingBoxAction *action) override
 
void pick (SoPickAction *action) override
 
void doAction (SoAction *action) override
 
- Protected Member Functions inherited from SoInteractionOwner
virtual void pointerPosition (const SoPointerPosition &)
 Override this if you always need to be informed of the current mouse cursor position.
 
virtual void pointerLeftWindow ()
 This is called when the mouse cursor leaves the window.
 
bool hasInteractions () const
 Returns whether there are any actions defined by this owner.
 
template<class T >
bool hasInteractionsOfType () const
 Same as above, but asking for a specific type of interaction.
 
void addPointingAction (SoPointingAction *)
 
void addCommandAction (SoCommandAction *)
 
void addOffsetAction (SoOffsetAction *)
 

Additional Inherited Members

- Protected Attributes inherited from SoView2DInteractionExtension
SoPointingAction_pointingAction
 
- Protected Attributes inherited from SoView2DExtension
SoNodeSensor_nodeSensor
 node sensor that is used to notice field changes
 
float _rgbColor [4]
 Color of the object, update on each field change by _nodeSensor.
 
bool _wantsMouseOverUpdateEvents
 set this flag to receive mouse over events while the extension is active
 

Detailed Description

Definition at line 26 of file SoView2DPlane.h.

Member Enumeration Documentation

◆ HIT_MODE

describes if we hit the line and how

Enumerator
NO_HIT 
HIT_ROTATE 
HIT_TRANSLATE 
HIT_CENTER 

Definition at line 126 of file SoView2DPlane.h.

◆ InteractionMode

Enumerator
TRANSLATE 
ROTATE 
BOTH 

Definition at line 31 of file SoView2DPlane.h.

◆ NormalShape

Enumerator
TRIANGLE 
ARROW 

Definition at line 37 of file SoView2DPlane.h.

Constructor & Destructor Documentation

◆ SoView2DPlane()

SoView2DPlane::SoView2DPlane ( )

Constructor.

Member Function Documentation

◆ _hitPlane()

HIT_MODE SoView2DPlane::_hitPlane ( const SbVec3f & point,
View2DSliceList * dsl,
int & proposedCursorShape )
protected

is mouse cursor on plane?

◆ clipLinePoint()

void SoView2DPlane::clipLinePoint ( float & p1x,
float & p1y,
float p2x,
float p2y,
float x0,
float x1 )
protected

clip a line and a point in 2D, returns new point in p1x,p1y

◆ clipToSliceRect()

bool SoView2DPlane::clipToSliceRect ( SbVec2f & p1,
SbVec2f & p2,
View2DSlice * dslice )
protected

clip line to device rectangle of slice, returns false if nothing is left afterwards

◆ dragMoveTo() [1/2]

void SoView2DPlane::dragMoveTo ( const SbVec3f & point,
View2DSliceList * slicelist )
protected

implement dragging, parameter is world position

◆ dragMoveTo() [2/2]

void SoView2DPlane::dragMoveTo ( const SoPointerPosition & pos)
overrideprotectedvirtual

Reimplemented from SoView2DInteractionExtension.

◆ draw()

void SoView2DPlane::draw ( View2DSliceList * dsl,
View2DSlice * dslice,
int slice )
overridevirtual

reimplemented from SoView2DExtension

Reimplemented from SoView2DExtension.

◆ drawNormal()

void SoView2DPlane::drawNormal ( View2DSliceList * dsl,
View2DSlice * dslice,
SbVec2f p1,
SbVec2f p2 )
protected

draw a normal on the slice

◆ drawPlaneLine()

void SoView2DPlane::drawPlaneLine ( View2DSliceList * dsl,
View2DSlice * dslice,
SbVec2f p1,
SbVec2f p2 )
protected

draw plane line, possibly including the normal indicator

◆ endPress()

SoPointingAction * SoView2DPlane::endPress ( int clickCount)
overrideprotectedvirtual

Reimplemented from SoView2DInteractionExtension.

◆ evalEvent()

bool SoView2DPlane::evalEvent ( SoView2D * view2d,
View2DSliceList * slicelist,
View2DEvent * ec,
View2DEventPhase phase )
overridevirtual

reimplemented from SoView2DExtension

Reimplemented from SoView2DExtension.

◆ getCurrentCursor()

int SoView2DPlane::getCurrentCursor ( SoViewerProxy * viewerProxy)
overrideprotectedvirtual

interface forwarded from SoPointingAction:

Reimplemented from SoView2DInteractionExtension.

◆ initClass()

static void SoView2DPlane::initClass ( )
static

inventor runtime type system

◆ isSensitiveAt()

bool SoView2DPlane::isSensitiveAt ( const SoPointerPosition & pos)
overrideprotectedvirtual

Reimplemented from SoView2DInteractionExtension.

◆ setExternalRotationAxis()

void SoView2DPlane::setExternalRotationAxis ( SbVec3f rotPosition)
inline

Definition at line 109 of file SoView2DPlane.h.

References mlrange_cast().

◆ startPressAt()

void SoView2DPlane::startPressAt ( const SoPointerPosition & pos)
overrideprotectedvirtual

Reimplemented from SoView2DInteractionExtension.

Member Data Documentation

◆ allowMoveExternalRotationAxis

SoSFBool SoView2DPlane::allowMoveExternalRotationAxis

allow to move the external rotation axis point with mouse

Definition at line 67 of file SoView2DPlane.h.

◆ blendMax

SoSFFloat SoView2DPlane::blendMax

maximum blend value

Definition at line 59 of file SoView2DPlane.h.

◆ blendMin

SoSFFloat SoView2DPlane::blendMin

minimum blend value

Definition at line 57 of file SoView2DPlane.h.

◆ centerGapSize

SoSFFloat SoView2DPlane::centerGapSize

don't draw plane around rotationAxis (only if fixedLineWidth is set), gap size in pixels

Definition at line 71 of file SoView2DPlane.h.

◆ externalRotationAxis

SoSFVec3f SoView2DPlane::externalRotationAxis

external rotation axis position

Definition at line 69 of file SoView2DPlane.h.

◆ externalRotationAxisOn

SoSFBool SoView2DPlane::externalRotationAxisOn

set external rotation axis

Definition at line 65 of file SoView2DPlane.h.

◆ fixedLineWidth

SoSFBool SoView2DPlane::fixedLineWidth

use translation range for plane parameter d

Definition at line 89 of file SoView2DPlane.h.

◆ interactionMode

SoSFEnum SoView2DPlane::interactionMode

interaction mode plane can be rotated or translated or both

Definition at line 50 of file SoView2DPlane.h.

◆ maskValidAndHit

SoSFBool SoView2DPlane::maskValidAndHit

gives the state of the mask, which calculated by the current mousebuttons and modifier key compared to the button1,button2,button3,ctrl,shift,alt settings.

Moreover the plane must be hit.

Definition at line 54 of file SoView2DPlane.h.

◆ normalOffset

SoSFFloat SoView2DPlane::normalOffset

offset of the normal from the plane

Definition at line 75 of file SoView2DPlane.h.

◆ normalOn

SoSFBool SoView2DPlane::normalOn

draw normal

Definition at line 61 of file SoView2DPlane.h.

◆ normalShape

SoSFEnum SoView2DPlane::normalShape

shape of normal indicator

Definition at line 77 of file SoView2DPlane.h.

◆ normalSize

SoSFInt32 SoView2DPlane::normalSize

size of normal to be drawn (in pixels)

Definition at line 73 of file SoView2DPlane.h.

◆ plane

SoSFPlane SoView2DPlane::plane

Fields.

plane to be drawn

Definition at line 45 of file SoView2DPlane.h.

◆ rotationDifference

SoSFMatrix SoView2DPlane::rotationDifference

Rotation between previous and current orientation.

Definition at line 79 of file SoView2DPlane.h.

◆ shadowOn

SoSFBool SoView2DPlane::shadowOn

draw shadow

Definition at line 63 of file SoView2DPlane.h.

◆ translationLineFraction

SoSFFloat SoView2DPlane::translationLineFraction

Fraction of the visible line that is associated with translation (percent)

Definition at line 81 of file SoView2DPlane.h.

◆ translationRangeMax

SoSFFloat SoView2DPlane::translationRangeMax

maximum value for plane parameter d

Definition at line 87 of file SoView2DPlane.h.

◆ translationRangeMin

SoSFFloat SoView2DPlane::translationRangeMin

minimum value for plane parameter d

Definition at line 85 of file SoView2DPlane.h.

◆ useAntiAliasing

SoSFBool SoView2DPlane::useAntiAliasing

use anti-aliasing for rendering lines

Definition at line 91 of file SoView2DPlane.h.

◆ useMouseCursors

SoSFBool SoView2DPlane::useMouseCursors

use mouse cursors to indicate next interaction

Definition at line 93 of file SoView2DPlane.h.

◆ useTranslationRange

SoSFBool SoView2DPlane::useTranslationRange

use translation range for plane parameter d

Definition at line 83 of file SoView2DPlane.h.


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