MeVisLabToolboxReference
SoView2DExtension Class Reference

SoView2DExtension Base class for all View2DExtensions used for drawing and event handling on the View2D. More...

#include <SoView2DExtension.h>

Inheritance diagram for SoView2DExtension:
SoView2DAnnotation SoView2DBorder SoView2DCallback SoView2DCSOEditor SoView2DCSOExtensibleEditor SoView2DDeformationGridView SoView2DEnlargeOnClick SoView2DExtensionSeparator SoView2DInteractionExtension SoView2DLegend SoView2DMagnifyController SoView2DTransRot SoView2DVectorFieldView SoView2DVoxelView

List of all members.

Public Member Functions

 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 draw (View2DSliceList *slicelist, View2DSlice *slice, int sliceZ)
 Called by the SoView2D for each slice that is rendered.
virtual bool evalEvent (SoView2D *view2d, View2DSliceList *slicelist, View2DEvent *ec, View2DEventPhase phase)
 Called by the SoView2D for each event that happens on the viewer.
virtual void startDrawing (View2DSliceList *)
virtual void endDrawing (View2DSliceList *)
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.
virtual void drawMiniRect (float x, float y)
 Draws a small rectangle with side length given by selectDist in device coordinates.
virtual void drawMiniRect (float xp, float yp, float ext)
 Draws a small rectangle with given side length.
virtual void drawFilledMiniRect (float xp, float yp, float ext)
 Draws a small rectangle with given side length.
virtual void drawMiniCircle (float xp, float yp, float ext)
 Draws a small rectangle with given side length.
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.
virtual bool implementsManagedInteractionAndClassicEventHandling () const
 return true if this node is a hybrid module providing managed interaction and classic event handling - in this case SoView2D::useManagedInteraction decides which one to use

Static Public Member Functions

static void initClass ()
 Initializes this class.
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.

Public Attributes

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.

Protected Member Functions

virtual ~SoView2DExtension ()
 destructor
virtual void GLRender (SoGLRenderAction *action)
virtual void callback (SoCallbackAction *action)
virtual void handleEvent (SoHandleEventAction *action)
virtual void getMatrix (SoGetMatrixAction *action)
virtual void getBoundingBox (SoGetBoundingBoxAction *action)
virtual void pick (SoPickAction *action)
virtual void doAction (SoAction *action)
virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)

Protected Attributes

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
enum  Sign { ZERO, NEGATIVE, POSITIVE }
 defines the sign of a number, with zero as an extra value More...
static void getAxisOrientation (int axis, SbMatrix &matrix, char &negativeResult, char &positiveResult)
 returns the orientation letter for the negative and positive direction of the given axis axis = 0 - X axis = 1 - Y axis = 2 - Z
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

Detailed Description

SoView2DExtension Base class for all View2DExtensions used for drawing and event handling on the View2D.

Author:
Florian Link

Definition at line 189 of file SoView2DExtension.h.


Member Enumeration Documentation

defines the sign of a number, with zero as an extra value

Enumerator:
ZERO 
NEGATIVE 
POSITIVE 

Definition at line 369 of file SoView2DExtension.h.


Constructor & Destructor Documentation

SoView2DExtension::SoView2DExtension ( )

Constructor.

virtual SoView2DExtension::~SoView2DExtension ( ) [protected, virtual]

destructor


Member Function Documentation

virtual void SoView2DExtension::callback ( SoCallbackAction *  action) [protected, virtual]
virtual void SoView2DExtension::consumeEvent ( View2DEvent ec,
bool  handled = TRUE 
) [virtual]

Set handled-flag of ec to true (= consumed) if handled is True and setEventHandled is True.

virtual void SoView2DExtension::deleteSelectedObject ( ) [virtual]

deletes the currently active object (derive this method in child) (called by SoView2D)

Reimplemented in SoView2DMarkerEditor.

virtual void SoView2DExtension::doAction ( SoAction *  action) [protected, virtual]
virtual void SoView2DExtension::draw ( View2DSliceList slicelist,
View2DSlice slice,
int  sliceZ 
) [virtual]

Called by the SoView2D for each slice that is rendered.

Implement this method if you want your SoView2DExtension to point on the slices. The sliceZ is the slice that is rendered onto, the slicelist and slice object are passed to access image geometry and render state

Reimplemented in SoView2DAnnotation, SoView2DAutoCenter, SoView2DBorder, SoView2DBorderHighlight, SoView2DDeformationGridView, SoView2DExtensionSeparator, SoView2DLegend, SoView2DMagnifyController, SoView2DMarkerEditor, SoView2DOverlay, SoView2DOverlayDecoration, SoView2DPlane, SoView2DPosition, SoView2DRectangle, SoView2DVectorFieldView, SoView2DVoxelView, SoView2DCallback, SoView2DCSOEditor, and SoView2DCSOExtensibleEditor.

virtual void SoView2DExtension::drawFilledMiniRect ( float  xp,
float  yp,
float  ext 
) [virtual]

Draws a small rectangle with given side length.

virtual void SoView2DExtension::drawMiniCircle ( float  xp,
float  yp,
float  ext 
) [virtual]

Draws a small rectangle with given side length.

virtual void SoView2DExtension::drawMiniRect ( float  x,
float  y 
) [virtual]

Draws a small rectangle with side length given by selectDist in device coordinates.

virtual void SoView2DExtension::drawMiniRect ( float  xp,
float  yp,
float  ext 
) [virtual]

Draws a small rectangle with given side length.

void SoView2DExtension::drawVoxelBorder ( View2DSlice slice,
float  vx,
float  vy,
float  vz 
)

surround the given voxel with a border

static Sign SoView2DExtension::edgeIntersectWithPlane ( const SbVec3f &  v1,
const SbVec3f &  v2,
const SbPlane &  plane,
SbVec3f &  intersect 
) [static]

intersect given edge from v1 to v2 with given plane, returns sign and intersect point

virtual void SoView2DExtension::endDrawing ( View2DSliceList ) [inline, virtual]

this method is called after the slicelist is called and allows some cleenup of precalculated data

Reimplemented in SoView2DExtensionSeparator, and SoView2DOverlay.

Definition at line 291 of file SoView2DExtension.h.

virtual bool SoView2DExtension::evalEvent ( SoView2D view2d,
View2DSliceList slicelist,
View2DEvent ec,
View2DEventPhase  phase 
) [virtual]

Called by the SoView2D for each event that happens on the viewer.

Implement this method if you want to handle events. If this method is called depends on the fields wantsAllEvents, wantsKeyEvents, wantsMouseWheelEvents and the mouse mask given by button1, button2, button3, shift, control, alt. When using the mouse mask (when wantsAllEvents is set to false), the View2DEventPhase indicates in which phase of the mouse mask you are in.

Reimplemented in SoView2DAnnotation, SoView2DAutoCenter, SoView2DEnlargeOnClick, SoView2DLegend, SoView2DMagnifyController, SoView2DMarkerEditor, SoView2DOverlay, SoView2DPlane, SoView2DPosition, SoView2DRectangle, SoView2DSlicePan, SoView2DSlicer, SoView2DSliceZoom, SoView2DTransRot, SoView2DVoxelValue, SoView2DCallback, and SoView2DCSOEditor.

virtual bool SoView2DExtension::evaluateEvent ( SoView2D view2d,
View2DEvent ec 
) [virtual]

To be called by the application which creates events and which wants to apply them to the extension

Reimplemented in SoView2DExtensionSeparator.

virtual void SoView2DExtension::fieldChanged ( SoSensor *  sensor) [virtual]

handle if any field has changed

Reimplemented in SoView2DAnnotation, SoView2DLegend, SoView2DInteractionExtension, and SoView2DCSOExtensibleEditor.

static void SoView2DExtension::fieldChangedCB ( void *  data,
SoSensor *  sensor 
) [static]

inventor callbacks if any field has changed, calls fieldChanged

static void SoView2DExtension::getAxisOrientation ( int  axis,
SbMatrix &  matrix,
char &  negativeResult,
char &  positiveResult 
) [static]

returns the orientation letter for the negative and positive direction of the given axis axis = 0 - X axis = 1 - Y axis = 2 - Z

virtual void SoView2DExtension::getBoundingBox ( SoGetBoundingBoxAction *  action) [protected, virtual]
View2DEvent* SoView2DExtension::getEvent ( )

get the current event (when inside of evalEvent)

virtual void SoView2DExtension::getMatrix ( SoGetMatrixAction *  action) [protected, virtual]
SoPointingAction::Trigger SoView2DExtension::getPointingActionTriggerFromFields ( )

Get the trigger that matches the button/modifier field state.

virtual void SoView2DExtension::getPrimitiveCount ( SoGetPrimitiveCountAction *  action) [protected, virtual]
float SoView2DExtension::getSelectDist ( )

Set the distance tolerance on hit checking in pixels.

int SoView2DExtension::getSelectedIgnoreMask ( )
int SoView2DExtension::getSelectedModifierMask ( )

Get compare and ignore mask for the currently selected button/modifier combination, usable with SoPointingAction.

virtual void SoView2DExtension::getStatusString ( SbString &  status) [virtual]

get the current status of this extension

int SoView2DExtension::getX ( )

get the x device position of current event, only returns valid result when called inside of evalEvent()

int SoView2DExtension::getY ( )

get the y device position of current event, only returns valid result when called inside of evalEvent()

virtual void SoView2DExtension::GLRender ( SoGLRenderAction *  action) [protected, virtual]

Reimplemented in SoView2DOverlay.

virtual void SoView2DExtension::handleEvent ( SoHandleEventAction *  action) [protected, virtual]
virtual bool SoView2DExtension::ignoreEvent ( View2DEvent ec) [virtual]

Return true if ec has been handled before and if ignoreHandledEvents is True.

Reimplemented in SoView2DMarkerEditor, SoView2DPosition, and SoView2DRectangle.

virtual bool SoView2DExtension::implementsManagedInteractionAndClassicEventHandling ( ) const [inline, virtual]

return true if this node is a hybrid module providing managed interaction and classic event handling - in this case SoView2D::useManagedInteraction decides which one to use

Reimplemented in SoView2DAnnotation, SoView2DLegend, and SoView2DInteractionExtension.

Definition at line 408 of file SoView2DExtension.h.

void SoView2DExtension::init ( )

setup internal state

virtual bool SoView2DExtension::isActive ( ) [virtual]

returns if the extension is active (derive this method in child) (in createNewMode or with a selected object)(called by SoView2D)

Reimplemented in SoView2DMarkerEditor.

virtual bool SoView2DExtension::isClipToSlice ( ) [inline, virtual]

check if the image is clipped to slice

Definition at line 329 of file SoView2DExtension.h.

bool SoView2DExtension::isCreateNewMode ( )

check if extension is in createNewMode

bool SoView2DExtension::isCreateNewModeRequest ( )

check if extension has a request for createNewMode

virtual bool SoView2DExtension::isDrawingOn ( ) [inline, virtual]

check if drawing is on

Definition at line 323 of file SoView2DExtension.h.

virtual bool SoView2DExtension::isEditingOn ( ) [inline, virtual]

check if editing is on

Definition at line 325 of file SoView2DExtension.h.

virtual bool SoView2DExtension::isFixZOn ( ) [inline, virtual]

check if z should stay fixed

Definition at line 327 of file SoView2DExtension.h.

static bool SoView2DExtension::isImageParallel ( SoSFMLImage image,
View2DSliceList dsl 
) [static]

Return true if image is parallel to the image of the slice list up to slice thickness.

bool SoView2DExtension::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.

the rectangle's size is defined by getSelectDist if not overwritten by a non-zero hitRectangleSize.

virtual void SoView2DExtension::pick ( SoPickAction *  action) [protected, virtual]
static float SoView2DExtension::pointToLineDistance ( SbVec2f  point,
SbVec2f  line1,
SbVec2f  line2 
) [static]

calculate 2D point to line distance

static float SoView2DExtension::pointToLineDistance ( SbVec3f  point,
SbVec3f  line1,
SbVec3f  line2 
) [static]

calculate 3D point to line distance

void SoView2DExtension::setCreateNewMode ( bool  flag)

set this extension to create new objects

void SoView2DExtension::setCreateNewModeRequest ( bool  flag)

set that extension want to become createNewMode

virtual void SoView2DExtension::startDrawing ( View2DSliceList ) [inline, virtual]

this method is called before the slicelist is called and allows some precalculation needed for all drawn slices

Reimplemented in SoView2DAutoCenter, SoView2DExtensionSeparator, SoView2DOverlay, SoView2DSliceZoom, and SoView2DCSOExtensibleEditor.

Definition at line 288 of file SoView2DExtension.h.

virtual void SoView2DExtension::updateValues ( ) [virtual]

Update fields to local variables, may be reimplemented if you want to update additional local vars.

Reimplemented in SoView2DBorder, SoView2DBorderHighlight, and SoView2DSlicer.

bool SoView2DExtension::wantsMouseOverUpdates ( ) const [inline]

public access to _wantsMouseOverUpdateEvents

Definition at line 392 of file SoView2DExtension.h.


Member Data Documentation

SoNodeSensor* SoView2DExtension::_nodeSensor [protected]

node sensor that is used to notice field changes

Reimplemented in SoView2DExtensionSeparator.

Definition at line 425 of file SoView2DExtension.h.

float SoView2DExtension::_rgbColor[4] [protected]

Color of the object, update on each field change by _nodeSensor.

Definition at line 428 of file SoView2DExtension.h.

set this flag to receive mouse over events while the extension is active

Definition at line 431 of file SoView2DExtension.h.

shift alt for mouse mask

Definition at line 233 of file SoView2DExtension.h.

mouse mask for button1

Definition at line 223 of file SoView2DExtension.h.

mouse mask for button2

Definition at line 225 of file SoView2DExtension.h.

mouse mask for button3

Definition at line 227 of file SoView2DExtension.h.

Flag to clip drawing to slice.

Definition at line 246 of file SoView2DExtension.h.

color that should be used for drawing

Definition at line 196 of file SoView2DExtension.h.

shift control for mouse mask

Definition at line 231 of file SoView2DExtension.h.

flag if extension is in createNewMode

Definition at line 242 of file SoView2DExtension.h.

Definition at line 243 of file SoView2DExtension.h.

Set cursor shape if the mouse mask fits and mouseEvents are effectively sent to evalEvent for editing.

Definition at line 250 of file SoView2DExtension.h.

flag if the extension should draw, needs to be checked inside of the draw() method

Definition at line 198 of file SoView2DExtension.h.

flag if the extension should edit objects on mouse events, needs to be checked inside of the evalEvent() method

Definition at line 200 of file SoView2DExtension.h.

DEPRECATED flag that indicates that the extension should fix the z value, only used in SoView2DRectangle.

Definition at line 255 of file SoView2DExtension.h.

Ignore events, that have been handled by previous extensions.

Definition at line 219 of file SoView2DExtension.h.

flag if the event mask is valid.

Definition at line 203 of file SoView2DExtension.h.

sets if a valid voxel must be hit to get evalEvent() calls

Definition at line 236 of file SoView2DExtension.h.

defines if the extension should be rendered on all slab slices

Definition at line 239 of file SoView2DExtension.h.

the selection tolerance in pixels

Definition at line 206 of file SoView2DExtension.h.

Set event handled if it is indeed handled by this extension.

Definition at line 217 of file SoView2DExtension.h.

shift modifier for mouse mask

Definition at line 229 of file SoView2DExtension.h.

flag if ALL events should be passed to evalEvent(), if disabled, events are only passed to evalEvent when the mouse mask gets valid

Definition at line 210 of file SoView2DExtension.h.

flag if keyboard events should be passed to evalEvent()

Definition at line 212 of file SoView2DExtension.h.

flag if MouseWheel events should be passed to evalEvent()

Definition at line 214 of file SoView2DExtension.h.


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