MeVisLab Toolbox Reference
SoView2DVoxelView Class Reference

SoView2DExtension for detailed voxel viewing. More...

#include <SoView2DVoxelView.h>

Inheritance diagram for SoView2DVoxelView:
SoView2DExtension SoInteractionProviderNode SoInteractionOwner SoInteractionProvider

Public Member Functions

 SoView2DVoxelView (void)
 Creates a detail viewer for voxels.
 
void draw (View2DSliceList *dsl, View2DSlice *dslice, int slice) override
 Virtual method called by the SoView2D node.
 
- 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 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 *)
 
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.
 
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
 
- 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 (void)
 Initialization function of 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

Parameter fields.

If enabled the voxel value is drawn in the center of each voxel; default is TRUE.

SoSFBool drawVoxelValues
 
SoSFString defaultFitString
 String which should fit into a voxel to be shown, that means if it does not fit no voxel values are shown to avoid unreadable text overlays on inappropriate zoom values; default is "123".
 
SoSFBool drawCenterDots
 If enabled a pixel is drawn in the center of each voxel; default is false.
 
SoSFBool drawCornerDots
 If enabled dots are drawn in all corners of each voxel; default is false.
 
SoSFBool useCommas
 If enabled then all spaces in multicomponent voxel values are replaced by commas for better readability; default is TRUE.
 
SoSFBool outLineVoxels
 If enabled then on voxel the border pixels are drawn; default is FALSE.
 
SoSFBool useLut
 If enabled a connected look up table will be used to draw everything in the "looked up" values of the voxel value; if disabled a connected LUT will be ignored.
 
SoSFFloat defaultAlpha
 Transparency from [0,1] used if no LUT is used; default is 0.5 (half transparent).
 
SoSFFloat fontSize
 Size of font for voxel value; default is 10, minimum is 6, maximum is 250.
 
SoSFInt32 numCoordinateComponents
 The number of coordinate components to be shown; default is 0.
 
SoSFInt32 numRowComponents
 The number of coordinate components to be shown in one row; 0 means automatic row size, which uses root of component numbers in case of matrices; default is 0.
 
SoSFInt32 numPrecisionDigits
 The maximum number of digits after "." in floating point numbers; default is 1.
 
SoSFMLBase inputLut
 Optional node input for an optional lookup table node which controls color mapping of drawn stuff.
 
- 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 Member Functions

virtual void _drawCellInformation (View2DSliceList *, View2DSlice *, int, bool, int, const MLTypeInfos &, MLDataType, MLTypeData *, int, GLfloat[4], float, float, View2DFont &, float)
 User defined function to draw additional stuff in derived classes.
 
void _getGLColor (double dblVoxVal, GLfloat rgba[4])
 Set correct color value in rgba dependent on the current settings and the voxel value dblVoxVal.
 
float _drawVoxelValue (bool drawTexts, int numRowComps, MLDataType dType, MLTypeData *vBuf1, int numDTComponents, GLfloat rgba[4], float xPos, float yPos, View2DFont &font, float fSize)
 If drawTexts is true, the default string fits into a voxel then draw the voxel value from voxel data buffer vBuf1 (if non NULL) of type dType with numDTComponents components with the color rgba at the vertical device position (xPos, yPos).
 
float _drawStringVoxelValue (bool drawTexts, MLDataType dType, MLTypeData *vBuf1, int numDTComponents, GLfloat rgba[4], float xPos, float yPos, View2DFont &font, float fSize)
 Still incomplete and unused.
 
void _drawCoordinateComponents (bool drawTexts, int numComps, XVImageSize &pos, GLfloat rgba[4], float xPos, float yPos, View2DFont &font, float fSize)
 If drawTexts is true then draw numComps coordinate components of position pos with the color rgba at the vertical device position (xPos, yPos).
 
void _updateLutData (SoSFMLImage &inImg, View2DLutPrecision precision)
 Update the look up table according to the image data.
 
- Protected Member Functions inherited from SoView2DExtension
virtual void editingOnChanged (SoField *)
 called when editingOn field is touched:
 
virtual void buttonMaskChanged (SoField *)
 called when one of the button/modifier fields is touched:
 
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 *)
 

Protected Attributes

ml::LUTData< MLfloat_lutData
 Data table for voxel value look up.
 
- 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
 

Additional Inherited Members

- 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 *)
 

Detailed Description

SoView2DExtension for detailed voxel viewing.

Definition at line 33 of file SoView2DVoxelView.h.

Constructor & Destructor Documentation

◆ SoView2DVoxelView()

SoView2DVoxelView::SoView2DVoxelView ( void )

Creates a detail viewer for voxels.

Member Function Documentation

◆ _drawCellInformation()

virtual void SoView2DVoxelView::_drawCellInformation ( View2DSliceList * ,
View2DSlice * ,
int ,
bool ,
int ,
const MLTypeInfos & ,
MLDataType ,
MLTypeData * ,
int ,
GLfloat [4],
float ,
float ,
View2DFont & ,
float  )
inlineprotectedvirtual

User defined function to draw additional stuff in derived classes.

Parameters
dslpointer to View2DSliceList passed to the internally overloaded View2DExtension::draw() method.
dSlicepointer to View2DSlice passed to the internally overloaded View2DExtension::draw() method.
sliceslice number passed to the internally overloaded View2DExtension::draw() method.
drawTextsis true if text shall be drawn because it seems to fit into the default string width.
numRowCompsThe number of coordinate components to be shown in one row; 0 means automatic row size, which uses root of component numbers in case of matrices.
dTypeis the data type id of the voxel.
v1BufPointer to the voxel data.
numDTCompsNumber of components of the voxel.
fontFont to be used for text drawing.
fSizeSize of font to be used for text drawing.

Definition at line 130 of file SoView2DVoxelView.h.

◆ _drawCoordinateComponents()

void SoView2DVoxelView::_drawCoordinateComponents ( bool drawTexts,
int numComps,
XVImageSize & pos,
GLfloat rgba[4],
float xPos,
float yPos,
View2DFont & font,
float fSize )
protected

If drawTexts is true then draw numComps coordinate components of position pos with the color rgba at the vertical device position (xPos, yPos).

numComps must be a value from [0,...,6]. Font and font size are given by font and fSize.

◆ _drawStringVoxelValue()

float SoView2DVoxelView::_drawStringVoxelValue ( bool drawTexts,
MLDataType dType,
MLTypeData * vBuf1,
int numDTComponents,
GLfloat rgba[4],
float xPos,
float yPos,
View2DFont & font,
float fSize )
protected

Still incomplete and unused.

If drawTexts is true, the default string fits into a voxel then draw the voxel value from voxel data buffer vBuf1 (if non NULL) of type dType with numDTComponents components with the color rgba at the vertical device position (xPos, yPos) as string. Font and font size are given by font and fSize. The return value is the optimal position for drawings of the coordinate position.

◆ _drawVoxelValue()

float SoView2DVoxelView::_drawVoxelValue ( bool drawTexts,
int numRowComps,
MLDataType dType,
MLTypeData * vBuf1,
int numDTComponents,
GLfloat rgba[4],
float xPos,
float yPos,
View2DFont & font,
float fSize )
protected

If drawTexts is true, the default string fits into a voxel then draw the voxel value from voxel data buffer vBuf1 (if non NULL) of type dType with numDTComponents components with the color rgba at the vertical device position (xPos, yPos).

Font and font size are given by font and fSize. The return value is the optimal position for drawings of the coordinate position.

◆ _getGLColor()

void SoView2DVoxelView::_getGLColor ( double dblVoxVal,
GLfloat rgba[4] )
protected

Set correct color value in rgba dependent on the current settings and the voxel value dblVoxVal.

◆ _updateLutData()

void SoView2DVoxelView::_updateLutData ( SoSFMLImage & inImg,
View2DLutPrecision precision )
protected

Update the look up table according to the image data.

On available LUT true is returned and shift and scale can be used to transform voxel values to non clamped LutData indices. If no LUT is available then false is returned and shift and scale are left unchanged.

◆ draw()

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

Virtual method called by the SoView2D node.

It is called for each slices drawn in each viewer. dsl is the View2DSliceList, the list containing all information of all slices handled by the viewer. dslice is the slice currently drawn and slice the the number of the currently drawn slice.

Reimplemented from SoView2DExtension.

◆ initClass()

static void SoView2DVoxelView::initClass ( void )
static

Initialization function of this class.

It implements the registration of this class in the runtime type system of open Inventor and other user stuff e.g. activation of other Inventor classes (events, actions, elements) needed in this class.

Member Data Documentation

◆ _lutData

ml::LUTData<MLfloat> SoView2DVoxelView::_lutData
protected

Data table for voxel value look up.

Definition at line 146 of file SoView2DVoxelView.h.

◆ defaultAlpha

SoSFFloat SoView2DVoxelView::defaultAlpha

Transparency from [0,1] used if no LUT is used; default is 0.5 (half transparent).

Definition at line 87 of file SoView2DVoxelView.h.

◆ defaultFitString

SoSFString SoView2DVoxelView::defaultFitString

String which should fit into a voxel to be shown, that means if it does not fit no voxel values are shown to avoid unreadable text overlays on inappropriate zoom values; default is "123".

Definition at line 66 of file SoView2DVoxelView.h.

◆ drawCenterDots

SoSFBool SoView2DVoxelView::drawCenterDots

If enabled a pixel is drawn in the center of each voxel; default is false.

Definition at line 69 of file SoView2DVoxelView.h.

◆ drawCornerDots

SoSFBool SoView2DVoxelView::drawCornerDots

If enabled dots are drawn in all corners of each voxel; default is false.

Definition at line 72 of file SoView2DVoxelView.h.

◆ drawVoxelValues

SoSFBool SoView2DVoxelView::drawVoxelValues

Definition at line 61 of file SoView2DVoxelView.h.

◆ fontSize

SoSFFloat SoView2DVoxelView::fontSize

Size of font for voxel value; default is 10, minimum is 6, maximum is 250.

Definition at line 90 of file SoView2DVoxelView.h.

◆ inputLut

SoSFMLBase SoView2DVoxelView::inputLut

Optional node input for an optional lookup table node which controls color mapping of drawn stuff.

Its usage is enabled by useLut.

Definition at line 107 of file SoView2DVoxelView.h.

◆ numCoordinateComponents

SoSFInt32 SoView2DVoxelView::numCoordinateComponents

The number of coordinate components to be shown; default is 0.

Definition at line 93 of file SoView2DVoxelView.h.

◆ numPrecisionDigits

SoSFInt32 SoView2DVoxelView::numPrecisionDigits

The maximum number of digits after "." in floating point numbers; default is 1.

Values smaller 0 are considered the maximum sensible digit number for the floating point types; values larger than the maximum sensible number will lead to at most the maximum sensible number of digits.

Definition at line 103 of file SoView2DVoxelView.h.

◆ numRowComponents

SoSFInt32 SoView2DVoxelView::numRowComponents

The number of coordinate components to be shown in one row; 0 means automatic row size, which uses root of component numbers in case of matrices; default is 0.

Definition at line 97 of file SoView2DVoxelView.h.

◆ outLineVoxels

SoSFBool SoView2DVoxelView::outLineVoxels

If enabled then on voxel the border pixels are drawn; default is FALSE.

Definition at line 79 of file SoView2DVoxelView.h.

◆ useCommas

SoSFBool SoView2DVoxelView::useCommas

If enabled then all spaces in multicomponent voxel values are replaced by commas for better readability; default is TRUE.

Definition at line 76 of file SoView2DVoxelView.h.

◆ useLut

SoSFBool SoView2DVoxelView::useLut

If enabled a connected look up table will be used to draw everything in the "looked up" values of the voxel value; if disabled a connected LUT will be ignored.

be ignored; default is TRUE.

Definition at line 84 of file SoView2DVoxelView.h.


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