MeVisLab Toolbox Reference
SoView2DLabel.h
Go to the documentation of this file.
1/*************************************************************************************
2**
3** Copyright 2013, MeVis Medical Solutions AG
4**
5** The user may use this file in accordance with the license agreement provided with
6** the Software or, alternatively, in accordance with the terms contained in a
7** written agreement between the user and MeVis Medical Solutions AG.
8**
9** For further information use the contact form at https://www.mevislab.de/contact
10**
11**************************************************************************************/
12
13
15
16#pragma once
17
18#include "SoView2DSystem.h"
20
21#include <Inventor/fields/SoSFString.h>
22#include <Inventor/fields/SoSFFloat.h>
23#include <Inventor/fields/SoSFEnum.h>
24#include <Inventor/fields/SoSFInt32.h>
25#include <Inventor/fields/SoSFVec3f.h>
26#include <Inventor/fields/SoSFVec2f.h>
27#include <Inventor/SbBox.h>
28#include <DCMTree_Tag.h>
29
30
31class SoView2D;
32class View2DFont;
33
34// Constant name definitions
35
41
47
52
54{
55 SO_NODE_HEADER(SoView2DLabel);
56
57public:
58
67
78
86
88
89 SoSFString text;
90 SoSFString viewerId;
91
93 SoSFVec3f worldPosition;
95
97 SoSFFloat verticalOffset;
100
101 SoSFInt32 fontSize;
102 SoSFEnum fontSizeMode;
103 SoSFFloat alpha;
104 SoSFBool textShadow;
105
107 SoSFBool highlighted;
108
110 SoSFTypedEnum<BorderMode> borderMode;
111 SoSFColor borderColor;
112
116
119
122
124
126
127 SoSFInt32 timePoint;
129
130 // field for definition of background box
138
139 SoSFBool isUnderMouse;
142
144 static void initClass();
145
148
149 ~SoView2DLabel() override;
150
152 void draw(View2DSliceList *dsl, View2DSlice* dslice, int slice) override;
153
154 float getDepthVisibilityBlendValue(float distance, float voxelSizeZ);
155
156protected:
157 bool getTextLocation(View2DSliceList *dsl, View2DSlice* dslice, int slice, float& alphaToUse, float& dx, float& dy, int& textWidth, int& textHeight);
158
159 bool implementsManagedInteractionAndClassicEventHandling() const override { return false; }
160
163 bool isSensitiveAt(const SoPointerPosition& pos) override;
164 void setHighlightAt(const SoPointerPosition& pos) override;
165 void unsetHighlight() override;
166 void startPressAt(const SoPointerPosition& pos) override;
167 void dragMoveTo(const SoPointerPosition& pos) override;
169
172 void pointerPosition(SoState* state, const SoPointerPosition& pos) override;
173 void pointerLeftWindow(SoState* state) override;
175
176
177
178private:
181
182 float getFontSizeInPixels(View2DSlice* dslice) const;
183 bool labelIsVisibleOnTimePoint(const SoView2D* const view2D) const;
184 void getVisibleDeviceArea(View2DSlice *dsl, float& minX, float& maxX, float& minY, float& maxY) const;
185
186 SbVec2f _startDragDevicePosition;
187 SbVec3f _startWorldPosition;
188 SbVec2f _startRelativePosition;
189 SbBox2f _labelBounds;
190 int _currentInteractionSlice;
191};
HorizPositionMode
@ POS_RIGHT
@ POS_LEFT
@ POS_HCENTER
VertPositionMode
@ POS_ABOVE
@ POS_BELOW
@ POS_VCENTER
TextPositioningMode
@ WORLD_COORDINATES
@ RELATIVE_TO_VIEWER
#define SOVIEW2D_API
File to resolve system dependencies in View2D library.
void pointerPosition(SoState *state, const SoPointerPosition &pos) override
Same as below, with additional SoState argument. By default, simply calls the below version.
void pointerLeftWindow(SoState *state) override
Same as below, with additional SoState argument. By defaults, simply calls the below version.
SoPointerPosition manages the current position of the mouse cursor.
SoView2DInteractionExtension(const std::string &actionID, bool positionSensitive=true)
SoSFBool drawBackground
SoSFVec2f relativeViewerPosition
SoSFEnum depthVisibilityMode
select the mode for depth visibility
SoSFBool showLabelOnAllTimePoints
SoSFFloat depthVisibility
SoSFBool highlighted
Set to true while the label should be highlighted, usually draws a border around the label.
SoSFColor backgroundColor
SoSFVec3f worldPosition
SoSFInt32 timePoint
bool isSensitiveAt(const SoPointerPosition &pos) override
SoSFBool isUnderMouse
SoSFEnum verticalPosition
SoSFFloat depthMinimumAlpha
void setHighlightAt(const SoPointerPosition &pos) override
void startPressAt(const SoPointerPosition &pos) override
SoSFFloat backgroundMarginBottom
bool getTextLocation(View2DSliceList *dsl, View2DSlice *dslice, int slice, float &alphaToUse, float &dx, float &dy, int &textWidth, int &textHeight)
SoSFEnum horizontalPosition
SoSFString viewerId
void dragMoveTo(const SoPointerPosition &pos) override
SoSFInt32 fontSize
SoSFFloat alpha
SoSFFloat backgroundMarginLeft
static void initClass()
inventor runtime type system
~SoView2DLabel() override
SoSFBool useDepthVisibility
enables depth visibility
SoSFFloat verticalOffset
SoSFFloat horizontalOffset
SoSFBool textShadow
SoSFBool keepCursorPositionInViewerWhenMoving
BorderMode
Border mode.
@ SHOW_BORDER_WHEN_HIGHLIGHTED
void unsetHighlight() override
depthVisibilityType
Depth visibility mode.
@ DEPTH_IN_SLICES
The depth visibility in number of slices.
@ DEPTH_IN_MM
The depth visibility in mm.
SoSFString text
Fields.
SoSFColor borderColor
void pointerPosition(SoState *state, const SoPointerPosition &pos) override
SoSFEnum textPositioning
FontSizeMode
Font size mode.
@ FONT_SIZE_IN_PIXELS
Font size in pixels.
@ FONT_SIZE_IN_MM
Font size in mm.
@ FONT_SIZE_IN_VOXELS
Font size in voxels.
SoSFFloat backgroundAlpha
SoSFFloat backgroundMarginRight
bool implementsManagedInteractionAndClassicEventHandling() const override
SoSFTypedEnum< BorderMode > borderMode
Defines the border mode.
void pointerLeftWindow(SoState *state) override
Same as below, with additional SoState argument. By defaults, simply calls the below version.
float getDepthVisibilityBlendValue(float distance, float voxelSizeZ)
SoView2DLabel()
Constructor.
void draw(View2DSliceList *dsl, View2DSlice *dslice, int slice) override
draw annotations on slice
SoSFFloat backgroundMarginTop
SoSFBool keepLabelInViewer
SoSFEnum fontSizeMode
SoView2D is a 2D viewer for image data.
Definition SoView2D.h:62
Abstract GL font drawing using FTGL.
Definition View2DFont.h:30
a list that holds all View2DSlice objects (lazily created) of a SoView2D
a single slice that is stored in a View2DSliceList, typically created by a View2DSliceList
Definition View2DSlice.h:48