MeVisLabToolboxReference
|
SoView2DExtension Base class for all View2DExtensions used for drawing and event handling on the View2D. More...
#include <SoView2DExtension.h>
Public Member Functions | |
SoView2DExtension () | |
Constructor. More... | |
void | init () |
setup internal state More... | |
virtual void | updateValues () |
Update fields to local variables, may be reimplemented if you want to update additional local vars. More... | |
virtual void | draw (View2DSliceList *slicelist, View2DSlice *slice, int sliceZ) |
Called by the SoView2D for each slice that is rendered. More... | |
virtual bool | evalEvent (SoView2D *view2d, View2DSliceList *slicelist, View2DEvent *ec, View2DEventPhase phase) |
Called by the SoView2D for each event that happens on the viewer. More... | |
virtual void | startDrawing (View2DSliceList *) |
virtual void | endDrawing (View2DSliceList *) |
View2DEvent * | getEvent () |
get the current event (when inside of evalEvent) More... | |
float | getSelectDist () |
Set the distance tolerance on hit checking in pixels. More... | |
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. More... | |
virtual void | drawMiniRect (float xp, float yp, float ext) |
Draws a small rectangle with given side length. More... | |
virtual void | drawFilledMiniRect (float xp, float yp, float ext) |
Draws a small rectangle with given side length. More... | |
virtual void | drawMiniCircle (float xp, float yp, float ext) |
Draws a small rectangle with given side length. More... | |
void | drawVoxelBorder (View2DSlice *slice, float vx, float vy, float vz) |
surround the given voxel with a border More... | |
int | getX () |
get the x device position of current event, only returns valid result when called inside of evalEvent() More... | |
int | getY () |
get the y device position of current event, only returns valid result when called inside of evalEvent() More... | |
virtual bool | isDrawingOn () |
check if drawing is on More... | |
virtual bool | isEditingOn () |
check if editing is on More... | |
virtual bool | isFixZOn () |
check if z should stay fixed More... | |
virtual bool | isClipToSlice () |
check if the image is clipped to slice More... | |
virtual void | fieldChanged (SoSensor *sensor) |
handle if any field has changed More... | |
bool | isCreateNewMode () |
check if extension is in createNewMode More... | |
void | setCreateNewMode (bool flag) |
set this extension to create new objects More... | |
bool | isCreateNewModeRequest () |
check if extension has a request for createNewMode More... | |
void | setCreateNewModeRequest (bool flag) |
set that extension want to become createNewMode More... | |
virtual bool | isActive () |
returns if the extension is active (derive this method in child) (in createNewMode or with a selected object)(called by SoView2D) More... | |
virtual void | deleteSelectedObject () |
deletes the currently active object (derive this method in child) (called by SoView2D) More... | |
virtual void | getStatusString (SbString &status) |
get the current status of this extension More... | |
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. More... | |
bool | wantsMouseOverUpdates () const |
public access to _wantsMouseOverUpdateEvents More... | |
virtual void | consumeEvent (View2DEvent *ec, bool handled=TRUE) |
Set handled-flag of ec to true (= consumed) if handled is True and setEventHandled is True. More... | |
int | getSelectedModifierMask () |
Get compare and ignore mask for the currently selected button/modifier combination, usable with SoPointingAction. More... | |
int | getSelectedIgnoreMask () |
SoPointingAction::Trigger | getPointingActionTriggerFromFields () |
Get the trigger that matches the button/modifier field state. More... | |
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 More... | |
Public Member Functions inherited from SoInteractionProviderNode | |
SoInteractionProviderNode () | |
Default constructor. More... | |
virtual | ~SoInteractionProviderNode () |
Destructor. More... | |
virtual std::string | getID () const |
Returns the id string for identifying the provider (and its actions) - this is usually the name of the scene node. More... | |
virtual void | objRef () |
Memory management by reference counting; must be implemented in derived classes. More... | |
virtual void | objUnref () |
Public Member Functions inherited from SoInteractionOwner | |
SoInteractionOwner () | |
Default constructor. More... | |
virtual | ~SoInteractionOwner () |
The destructor will destroy all interactions created with this object as owner. More... | |
virtual std::list< SoInteraction * > | getInteractions (SoState *state) |
Returns the list of all interactions of this provider. More... | |
virtual void | pointerPosition (SoState *state, const SoPointerPosition &pos) |
Same as below, with additional SoState argument. Be defaults simply calls the below version. More... | |
virtual void | pointerLeftWindow (SoState *state) |
Same as below, with additional SoState argument. Be defaults simply calls the below version. More... | |
Public Member Functions inherited from SoInteractionProvider | |
SoInteractionProvider () | |
Default constructor. More... | |
virtual | ~SoInteractionProvider () |
template<class T > | |
std::list< T * > | getInteractionsOfType (SoState *state) |
Returns list of interactions of a specific type: More... | |
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 () |
Initializes this class. More... | |
static float | snapToPixelCenter (float coordinateComponent) |
Snaps the coordinate component to the pixel center. More... | |
static void | fieldChangedCB (void *data, SoSensor *sensor) |
inventor callbacks if any field has changed, calls fieldChanged More... | |
static bool | isImageParallel (SoSFMLImage *image, View2DSliceList *dsl) |
Return true if image is parallel to the image of the slice list up to slice thickness. More... | |
static void | enableLineStippling (const SoSFEnum &lineStyleField) |
static void | disableLineStippling (const SoSFEnum &lineStyleField) |
Static Public Member Functions inherited from SoInteractionProviderNode | |
static void | initClass () |
Initializes this class. More... | |
Static Public Member Functions inherited from SoInteractionProvider | |
static void | registerInteractionProviderNode (SoType type, GetProviderFunc func) |
Register a function to obtain a SoInteractionProvider from a SoNode. More... | |
static SoInteractionProvider * | getInteractionProvider (SoNode *node) |
Get a SoInteractionProvider from a SoNode if registered, else NULL. More... | |
Public Attributes | |
SoSFColor | color |
color that should be used for drawing More... | |
SoSFBool | drawingOn |
flag if the extension should draw, needs to be checked inside of the draw() method More... | |
SoSFBool | editingOn |
flag if the extension should edit objects on mouse events, needs to be checked inside of the evalEvent() method More... | |
SoSFBool | maskValid |
flag if the event mask is valid. More... | |
SoSFFloat | selectionTolerance |
the selection tolerance in pixels More... | |
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 More... | |
SoSFBool | wantsKeyEvents |
flag if keyboard events should be passed to evalEvent() More... | |
SoSFBool | wantsMouseWheelEvents |
flag if MouseWheel events should be passed to evalEvent() More... | |
SoSFBool | setEventHandled |
Set event handled if it is indeed handled by this extension. More... | |
SoSFBool | ignoreHandledEvents |
Ignore events, that have been handled by previous extensions. More... | |
SoSFEnum | button1 |
mouse mask for button1 More... | |
SoSFEnum | button2 |
mouse mask for button2 More... | |
SoSFEnum | button3 |
mouse mask for button3 More... | |
SoSFEnum | shift |
shift modifier for mouse mask More... | |
SoSFEnum | control |
shift control for mouse mask More... | |
SoSFEnum | alt |
shift alt for mouse mask More... | |
SoSFBool | needsValidVoxel |
sets if a valid voxel must be hit to get evalEvent() calls More... | |
SoSFBool | renderOnSlab |
defines if the extension should be rendered on all slab slices More... | |
SoSFBool | createNewMode |
flag if extension is in createNewMode More... | |
SoSFTrigger | createNewModeRequest |
SoSFBool | clipToSlice |
Flag to clip drawing to slice. More... | |
SoSFEnum | cursorShape |
Set cursor shape if the mouse mask fits and mouseEvents are effectively sent to evalEvent for editing. More... | |
SoSFBool | fixZOn |
DEPRECATED flag that indicates that the extension should fix the z value, only used in SoView2DRectangle. More... | |
Public Attributes inherited from SoInteractionProviderNode | |
SoSFString | instanceName |
Defines interface field to store the instance name. More... | |
SoSFString | interactionProviderID |
This field overrides the instanceName as providerID if specified. More... | |
Protected Member Functions | |
virtual | ~SoView2DExtension () |
destructor More... | |
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) |
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. More... | |
virtual void | pointerLeftWindow () |
This is called when the mouse cursor leaves the window. More... | |
bool | hasInteractions () const |
Returns whether there are any actions defined by this owner. More... | |
template<class T > | |
bool | hasInteractionsOfType () const |
Same as above, but asking for a specific type of interaction. More... | |
void | addPointingAction (SoPointingAction *) |
void | addCommandAction (SoCommandAction *) |
void | addOffsetAction (SoOffsetAction *) |
Protected Attributes | |
SoNodeSensor * | _nodeSensor |
node sensor that is used to notice field changes More... | |
float | _rgbColor [4] |
Color of the object, update on each field change by _nodeSensor. More... | |
bool | _wantsMouseOverUpdateEvents |
set this flag to receive mouse over events while the extension is active More... | |
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 More... | |
static float | pointToLineDistance (SbVec3f point, SbVec3f line1, SbVec3f line2) |
calculate 3D point to line distance More... | |
static float | pointToLineDistance (SbVec2f point, SbVec2f line1, SbVec2f line2) |
calculate 2D point to line distance More... | |
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 More... | |
Additional Inherited Members | |
Public Types inherited from SoInteractionProvider | |
typedef SoInteractionProvider *(* | GetProviderFunc) (SoNode *) |
Callback function type. More... | |
SoView2DExtension Base class for all View2DExtensions used for drawing and event handling on the View2D.
Definition at line 207 of file SoView2DExtension.h.
defines the sign of a number, with zero as an extra value
Enumerator | |
---|---|
ZERO | |
NEGATIVE | |
POSITIVE |
Definition at line 393 of file SoView2DExtension.h.
SoView2DExtension::SoView2DExtension | ( | ) |
Constructor.
|
protectedvirtual |
destructor
|
protectedvirtual |
|
virtual |
Set handled-flag of ec to true (= consumed) if handled is True and setEventHandled is True.
|
virtual |
deletes the currently active object (derive this method in child) (called by SoView2D)
Reimplemented in SoView2DMarkerEditor.
|
static |
|
protectedvirtual |
Reimplemented in SoView2DCSOExtensibleEditor, SoView2DExtensionSeparator, and SoView2DExtensionSampler.
|
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 SoView2DCSOEditor, SoView2DMarkerEditor, SoView2DCSOExtensibleEditor, SoView2DAnnotation, SoView2DLegend, SoView2DSlider, SoView2DPlane, SoView2DPosition, SoView2DOverlay, SoView2DMagnifyController, SoView2DLabel, SoView2DRectangle, SoView2DOverlayDecoration, SoView2DVectorFieldView, SoView2DExtensionSeparator, SoView2DDeformationGridView, SoView2DCallback, SoView2DVoxelView, SoView2DRigidRegistrationEditorBase, SoView2DExtensionSampler, SoView2DBorder, SoView2DAutoCenter, SoView2DShaderOverlay, SoView2DShaderDevicePosition, and SoView2DBorderHighlight.
|
virtual |
Draws a small rectangle with given side length.
|
virtual |
Draws a small rectangle with given side length.
|
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 |
intersect given edge from v1
to v2
with given plane, returns sign and intersect
point
|
static |
|
inlinevirtual |
this method is called after the slicelist is called and allows some cleanup of precalculated data
Reimplemented in SoView2DOverlay, SoView2DExtensionSeparator, and SoView2DExtensionSampler.
Definition at line 309 of file SoView2DExtension.h.
|
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 SoView2DCSOEditor, SoView2DMarkerEditor, SoView2DCSOExtensibleEditor, SoView2DAnnotation, SoView2DLegend, SoView2DSlider, SoView2DPlane, SoView2DPosition, SoView2DOverlay, SoView2DMagnifyController, SoView2DRectangle, SoView2DVoxelValue, SoView2DTransRot, SoView2DSliceZoom, SoView2DCallback, SoView2DTouchControl, SoView2DSlicer, SoView2DEnlargeOnClick, SoView2DSlicePan, and SoView2DAutoCenter.
|
virtual |
To be called by the application which creates events and which wants to apply them to the extension
Reimplemented in SoView2DExtensionSeparator, and SoView2DExtensionSampler.
|
virtual |
handle if any field has changed
Reimplemented in SoView2DMarkerEditor, SoView2DAnnotation, SoView2DLegend, SoView2DCSOExtensibleEditor, SoView2DRigidRegistrationEditorBase, SoView2DVoxelValue, SoView2DInteractionExtension, SoView2DRigidRegistrationEditor, and SoView2DSlicer.
|
static |
inventor callbacks if any field has changed, calls fieldChanged
|
static |
returns the orientation letter for the negative and positive direction of the given axis axis = 0 - X axis = 1 - Y axis = 2 - Z
|
protectedvirtual |
View2DEvent* SoView2DExtension::getEvent | ( | ) |
get the current event (when inside of evalEvent)
|
protectedvirtual |
SoPointingAction::Trigger SoView2DExtension::getPointingActionTriggerFromFields | ( | ) |
Get the trigger that matches the button/modifier field state.
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 |
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()
|
protectedvirtual |
Reimplemented in SoView2DOverlay, SoView2DShaderOverlay, and SoView2DShaderDevicePosition.
|
protectedvirtual |
|
virtual |
Return true if ec has been handled before and if ignoreHandledEvents is True.
Reimplemented in SoView2DMarkerEditor, SoView2DSlider, SoView2DPosition, and SoView2DRectangle.
|
inlinevirtual |
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, SoView2DSlider, SoView2DRigidRegistrationEditorBase, and SoView2DInteractionExtension.
Definition at line 432 of file SoView2DExtension.h.
void SoView2DExtension::init | ( | ) |
setup internal state
|
static |
Initializes this class.
|
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.
|
inlinevirtual |
check if the image is clipped to slice
Definition at line 348 of file SoView2DExtension.h.
bool SoView2DExtension::isCreateNewMode | ( | ) |
check if extension is in createNewMode
bool SoView2DExtension::isCreateNewModeRequest | ( | ) |
check if extension has a request for createNewMode
|
inlinevirtual |
check if drawing is on
Definition at line 342 of file SoView2DExtension.h.
|
inlinevirtual |
check if editing is on
Definition at line 344 of file SoView2DExtension.h.
Referenced by SoView2DInteractionExtension::shouldPointingActionBeEnabled().
|
inlinevirtual |
check if z should stay fixed
Definition at line 346 of file SoView2DExtension.h.
|
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.
|
protectedvirtual |
|
static |
calculate 3D point to line distance
|
static |
calculate 2D 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
|
inlinestatic |
Snaps the coordinate component to the pixel center.
Definition at line 319 of file SoView2DExtension.h.
|
inlinevirtual |
this method is called before the slicelist is called and allows some precalculation needed for all drawn slices
Reimplemented in SoView2DCSOExtensibleEditor, SoView2DOverlay, SoView2DExtensionSeparator, SoView2DSliceZoom, SoView2DExtensionSampler, and SoView2DAutoCenter.
Definition at line 306 of file SoView2DExtension.h.
|
virtual |
Update fields to local variables, may be reimplemented if you want to update additional local vars.
Reimplemented in SoView2DBorder, SoView2DSlicer, and SoView2DBorderHighlight.
|
inline |
public access to _wantsMouseOverUpdateEvents
Definition at line 416 of file SoView2DExtension.h.
|
protected |
node sensor that is used to notice field changes
Definition at line 446 of file SoView2DExtension.h.
|
protected |
Color of the object, update on each field change by _nodeSensor.
Definition at line 449 of file SoView2DExtension.h.
|
protected |
set this flag to receive mouse over events while the extension is active
Definition at line 452 of file SoView2DExtension.h.
SoSFEnum SoView2DExtension::alt |
shift alt for mouse mask
Definition at line 251 of file SoView2DExtension.h.
SoSFEnum SoView2DExtension::button1 |
mouse mask for button1
Definition at line 241 of file SoView2DExtension.h.
SoSFEnum SoView2DExtension::button2 |
mouse mask for button2
Definition at line 243 of file SoView2DExtension.h.
SoSFEnum SoView2DExtension::button3 |
mouse mask for button3
Definition at line 245 of file SoView2DExtension.h.
SoSFBool SoView2DExtension::clipToSlice |
Flag to clip drawing to slice.
Definition at line 264 of file SoView2DExtension.h.
SoSFColor SoView2DExtension::color |
color that should be used for drawing
Definition at line 214 of file SoView2DExtension.h.
SoSFEnum SoView2DExtension::control |
shift control for mouse mask
Definition at line 249 of file SoView2DExtension.h.
SoSFBool SoView2DExtension::createNewMode |
flag if extension is in createNewMode
Definition at line 260 of file SoView2DExtension.h.
SoSFTrigger SoView2DExtension::createNewModeRequest |
Definition at line 261 of file SoView2DExtension.h.
SoSFEnum SoView2DExtension::cursorShape |
Set cursor shape if the mouse mask fits and mouseEvents are effectively sent to evalEvent for editing.
Definition at line 268 of file SoView2DExtension.h.
SoSFBool SoView2DExtension::drawingOn |
flag if the extension should draw, needs to be checked inside of the draw() method
Definition at line 216 of file SoView2DExtension.h.
SoSFBool SoView2DExtension::editingOn |
flag if the extension should edit objects on mouse events, needs to be checked inside of the evalEvent() method
Definition at line 218 of file SoView2DExtension.h.
SoSFBool SoView2DExtension::fixZOn |
DEPRECATED flag that indicates that the extension should fix the z value, only used in SoView2DRectangle.
Definition at line 273 of file SoView2DExtension.h.
SoSFBool SoView2DExtension::ignoreHandledEvents |
Ignore events, that have been handled by previous extensions.
Definition at line 237 of file SoView2DExtension.h.
SoSFBool SoView2DExtension::maskValid |
flag if the event mask is valid.
Definition at line 221 of file SoView2DExtension.h.
SoSFBool SoView2DExtension::needsValidVoxel |
sets if a valid voxel must be hit to get evalEvent() calls
Definition at line 254 of file SoView2DExtension.h.
SoSFBool SoView2DExtension::renderOnSlab |
defines if the extension should be rendered on all slab slices
Definition at line 257 of file SoView2DExtension.h.
SoSFFloat SoView2DExtension::selectionTolerance |
the selection tolerance in pixels
Definition at line 224 of file SoView2DExtension.h.
SoSFBool SoView2DExtension::setEventHandled |
Set event handled if it is indeed handled by this extension.
Definition at line 235 of file SoView2DExtension.h.
SoSFEnum SoView2DExtension::shift |
shift modifier for mouse mask
Definition at line 247 of file SoView2DExtension.h.
SoSFBool SoView2DExtension::wantsAllEvents |
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 228 of file SoView2DExtension.h.
SoSFBool SoView2DExtension::wantsKeyEvents |
flag if keyboard events should be passed to evalEvent()
Definition at line 230 of file SoView2DExtension.h.
SoSFBool SoView2DExtension::wantsMouseWheelEvents |
flag if MouseWheel events should be passed to evalEvent()
Definition at line 232 of file SoView2DExtension.h.