ImFusion SDK 4.3
ImageView3D Class Reference

#include <ImFusion/GUI/ImageView3D.h>

Qt widget for 3d rendering of one or multiple images. More...

+ Inheritance diagram for ImageView3D:

Detailed Description

Qt widget for 3d rendering of one or multiple images.

Serves as Qt wrapper of the GlVolumeView and GlVolumeRenderer classes for 3D volume rendering. Depending on the displayOptionsSource property of ImageView3D the DisplayOptions3d used during rendering are either individual for each image (stored in the images' DataComponents) or shared for all shown images (stored in ImageView3D).

Note
Due to the potential external storage of display options, the Qt signals for changes of individual display options (i.e. windowChanged, levelChanged, alphaChanged are only emitted when using their corresponding Qt property setter. If the underlying DisplayOptions3d have changed by somebody else in the background, this is not detected. If you need to be notified reliably in all occasions you need to register to the DisplayOptions3d changed signal directly.

Public Types

enum class  DisplayOptionsSource { View = 0 , Data = 1 }
 Describes from where to take the DisplayOptions for rendering. More...
 
- Public Types inherited from InteractiveView
enum  LayoutDirection { Horizontal = int(GUI::ViewOverlay::LayoutDirection::Horizontal) , Vertical = int(GUI::ViewOverlay::LayoutDirection::Vertical) }
 Layout direction when stacking multiple InteractiveOverlays at the same anchor.
 

Public Slots

void reset () override
 Reset the view.
 
- Public Slots inherited from InteractiveView
void setVisible (bool value)
 Make view hidden/visible.
 
void render () override
 
virtual void reset ()
 

Public Member Functions

 ImageView3D ()
 Default constructor.
 
 ~ImageView3D () override
 Destructor.
 
const GlVolumeViewview () const
 Read-only access to OpenGL view.
 
GlVolumeViewview ()
 Read-write access to OpenGL view.
 
void setImageData (SharedImageSet *is)
 Set image data. Convenience function which calls corresponding function in volume.
 
SharedImageSetimageData () const
 
DisplayOptionsSource displayOptionsSource () const
 Returns where to take display options from.
 
void setDisplayOptionsSource (DisplayOptionsSource value)
 Sets where to take display options from.
 
void configure (const Properties *p) override
 Restore view state from properties.
 
void configuration (Properties *p) const override
 Save view state to properties.
 
InteractionView3Dinteraction3D () const
 Convenience function to return the first interaction of type InteractionView3D if present.
 
void setShowSlices (int mode)
 Apply a visualization mode for all GlSlices shown in this view.
 
int showSlices () const
 Return how slices are displayed.
 
void setMatrix (const mat4 &matrix, bool suppressAnimation=false)
 Set matrix of underlying GlView.
 
void setCenter (const vec3 &c, mat3 *rot=nullptr)
 
const DisplayOptions3ddisplayOptions (const Data *data=nullptr) const
 Return the DisplayOptions used for the given data wrt.
 
DisplayOptions3ddisplayOptions (const Data *data=nullptr)
 
void setImage (SharedImage *image)
 Convenience method to display a single image.
 
void setImage (Image *image)
 Convenience method to display a single image.
 
- Public Member Functions inherited from InteractiveView
 InteractiveView (std::unique_ptr< GlView > glView)
 Construct view with underlying GlView.
 
void setInteractions (std::vector< std::unique_ptr< ViewInteraction > > interactions)
 Replace all existing ViewInteractions with the ones in interactions.
 
void addInteraction (std::unique_ptr< ViewInteraction > interaction, int where=-1)
 Add an interaction at the given position (default is at the end).
 
void removeInteraction (ViewInteraction *interaction)
 Delete the given interaction, if it exists. Note: This will make the pointer invalid.
 
std::vector< ViewInteraction * > interactions () const
 Returns all view interactions of this view.
 
template<typename T>
T * findInteraction () const
 Returns the first ViewInteraction that dynamic_casts to T or nullptr if no such ViewInteraction exists.
 
void setBorderColor (const QColor &color)
 Set border color.
 
void setDrawBorder (bool drawBorder)
 Set whether to draw a border around the view.
 
bool isBorderDrawn () const
 Get whether to draw a border around the view.
 
void setBorderPixelSize (int pixelSize)
 Set the size of the border around the view.
 
int borderPixelSize () const
 Get the size of the border around the view.
 
void setBackgroundColor (const QColor &color)
 Set border color.
 
void setViewGroup (ViewGroup *group)
 Set associated view group. The view is not automatically added to the view group.
 
ViewGroupviewGroup () const
 Get associated view group.
 
QRectF boundingRect () const
 Bounding rect in item coordinates.
 
virtual void setRect (const QRect &rect)
 Set position and size of view in scene coordinates.
 
QRect rect () const
 Get position and size of view in scene coordinates.
 
void setViewport (const GL::Viewport &rect) override
 Sets the area where this view is drawn in render() wrt. the attached framebuffer.
 
virtual bool sceneEvent (QEvent *qtEvent, const GUI::InputEvent &inputEvent)
 Called by the DisplayWidget if a user input event has happened on this view.
 
void addObject (GUI::ViewObject *object) override
 Add the given InteractiveObject to this view.
 
void removeObject (GUI::ViewObject *object) override
 Remove the given InteractiveObject from this view.
 
virtual bool hasObject (const InteractiveObject *object) const
 
virtual void addOverlay (std::unique_ptr< InteractiveOverlay > overlay, int position=-1)
 Add overlay to this view.
 
std::unique_ptr< GUI::ViewOverlayremoveOverlay (GUI::ViewOverlay *overlay) override
 Remove overlay. The user is responsible for deleting the overlay afterwards.
 
void setWaterMark (SharedImage *image)
 Set a water mark to the view.
 
void setAnchorLayoutDirection (InteractiveOverlay::AnchorPoint anchor, LayoutDirection direction)
 Sets in which direction multiple overlays at one anchor are layed out.
 
void requestUpdate ()
 Allows some outside interaction to request an update of the view.
 
bool showOverlays () const
 Get flag whether to show overlays.
 
void setAndRunAnimation (std::unique_ptr< Animations::Animation >)
 Launch an animation while ensuring that only one animation is running at a time for this instance.
 
- Public Member Functions inherited from View
 View (std::unique_ptr< GlView > glView)
 Instantiate a new View using the given GlView as renderer; glView must not be null.
 
virtual void render ()
 Will render the view into the viewport() of the current framebuffer by drawing the optional background color, the optional border, the underlying GlView, and finally all overlays().
 
const GlViewglView () const
 Returns the underlying GlView.
 
GlViewglView ()
 Returns the underlying GlView.
 
const GL::Viewportviewport () const
 Returns the area where this view is drawn in render() wrt. the attached framebuffer.
 
bool isVisible () const
 Returns whether this view has a non-zero viewport and can therefore be considered visible.
 
std::optional< vec3 > backgroundColor () const
 Returns the optional background color used to clear the viewport before rendering anything.
 
void setBackgroundColor (std::optional< vec3 > value)
 Sets the optional background color used to clear the viewport before rendering anything.
 
const BorderConfigborderConfig () const
 Returns the BorderConfig struct defining if and how to render a border frame surrounding the view.
 
virtual void setBorderConfig (const BorderConfig &value)
 Sets the BorderConfig struct defining if and how to render a border frame surrounding the view.
 
bool showsOverlays () const
 Returns the flag whether to show overlays or not.
 
void setShowOverlays (bool value)
 Sets the flag whether to show overlays or not.
 
void setWatermark (const SharedImage &image)
 Sets a watermark image to be rendered on top of the view.
 
virtual EventResult handleInputEvent (const InputEvent &event)
 Called by the parent Display if a user input event has happened on this view.
 
void setDataDisplayDispatcher (std::shared_ptr< DataDisplayDispatcher > ddd)
 Sets a common DataDisplayDispatcher so that it can be shared across views.
 
const DataDisplayDispatcher * dataDisplayDispatcher () const
 Returns the DataDisplayDispatcher used by this view.
 
virtual bool acceptsData (const Data *data) const
 Returns whether this view is capable of displaying the given data.
 
void setVisibleData (const DataList &data)
 Set the data that should be shown in this view.
 
const DataListvisibleData () const
 Returns a list of the currently displayed data.
 
bool showData (Data *data)
 Appends the given Data instance to the list of visible data.
 
void hideData (const Data *data)
 Removes the given Data instance to the list of visible data.
 
void setEventHandlers (std::vector< std::unique_ptr< EventHandler > > eventHandlers)
 Replace all existing EventHandlers with the ones in eventHandlers.
 
void addEventHandler (std::unique_ptr< EventHandler > eventHandler, int where=-1)
 Add an EventHandler at the given position (default is at the end).
 
std::unique_ptr< EventHandlerremoveEventHandler (EventHandler *interaction)
 Delete the given interaction, if it exists. Note: This will make the pointer invalid.
 
std::vector< EventHandler * > eventHandlers () const
 Returns all view interactions of this view.
 
template<typename T>
T * findEventHandler () const
 Returns the first EventHandler that dynamic_casts to T, or nullptr if no such EventHandler exists.
 
void addOverlay (std::unique_ptr< ViewOverlay > overlay, ViewOverlay::Anchor anchor, int position=-1)
 Inserts overlay into the list of overlays of this view at position of the given anchor.
 
std::vector< ViewOverlay * > overlays () const
 Returns all InteractiveOverlays of this view.
 
void setOverlayAnchor (ViewOverlay *overlay, ViewOverlay::Anchor anchor)
 Set the anchor point to use for the given overlay.
 
void setOverlayLayoutDirection (ViewOverlay::Anchor anchor, ViewOverlay::LayoutDirection direction)
 Sets in which direction multiple overlays at one anchor are laid out.
 
std::vector< ViewObject * > objects () const
 Returns all ViewObjects of this view.
 
const GlViewview () const
 
GlViewview ()
 Return associated GlView object.
 
- Public Member Functions inherited from Configurable
virtual void configureDefaults ()
 Retrieve the properties of this object, replaces values with their defaults and sets it again.
 
void registerParameter (ParameterBase *param)
 Register the given Parameter or SubProperty, so that it will be configured during configure()/configuration().
 
void unregisterParameter (const ParameterBase *param)
 Remove the given Parameter or SubProperty from the list of registered parameters.
 
 Configurable (const Configurable &rhs)
 
 Configurable (Configurable &&rhs) noexcept
 
Configurableoperator= (const Configurable &)
 
Configurableoperator= (Configurable &&) noexcept
 
- Public Member Functions inherited from SignalReceiver
 SignalReceiver ()=default
 Default constructor.
 
 SignalReceiver (const SignalReceiver &other)
 Copy constructor, does not copy any existing signal connections from other.
 
SignalReceiveroperator= (SignalReceiver rhs)
 Assignment operator, disconnects all existing connections, does not copy any existing signal connections from rhs.
 
virtual ~SignalReceiver ()
 Virtual destructor disconnects from all connected signals.
 

Protected Attributes

GlVolumeViewm_view3D
 Internal OpenGL view instance.
 
DisplayOptionsSource m_displayOptionsSource
 
DisplayOptions3d m_displayOptionsView
 
- Protected Attributes inherited from InteractiveView
std::vector< std::unique_ptr< ViewInteraction > > m_interactions
 ViewInteractions used for this view.
 
ViewGroupm_group = nullptr
 Optional ViewGroup this view is part of.
 
- Protected Attributes inherited from View
std::unique_ptr< GlViewm_glView
 
std::unique_ptr< ViewOverlayLayouter > m_overlayLayouter
 
std::vector< std::unique_ptr< EventHandler > > m_eventHandlers
 
std::vector< std::unique_ptr< ViewOverlay > > m_overlays
 
std::vector< ViewObject * > m_objects
 
DataList m_visibleData
 
GL::Viewport m_viewport
 
const void * m_mouseEventFocusObject = nullptr
 Pointer to the event receiver that shall receive MouseEvent::Type::Move events exclusively.
 
const void * m_touchEventFocusObject = nullptr
 Pointer to the event receiver that shall receive TouchEvent::Type::Update events exclusively.
 
- Protected Attributes inherited from Configurable
std::vector< Paramm_params
 List of all registered Parameter and SubProperty instances.
 

Properties

int renderMode
 
double window
 
double level
 
double alpha
 
- Properties inherited from InteractiveView
QRect rect
 

Property read methods

int renderMode () const
 
double window () const
 View window setting of the selected display options.
 
double level () const
 View level setting of the selected display options.
 
double alpha () const
 View alpha blending setting of the selected display options.
 

Property write methods

void setRenderMode (int val)
 
void setWindow (double val)
 Set view window of the selected display options.
 
void setLevel (double val)
 Set view level of the selected display options.
 
void setAlpha (double val)
 Set view level of the selected display options.
 

Property notifiers

void renderModeChanged (int val)
 
void windowChanged (double val)
 Emitted when window changed.
 
void levelChanged (double val)
 Emitted when level changed.
 
void alphaChanged (double val)
 Emitted when alpha blending changed.
 

Additional Inherited Members

- Signals inherited from InteractiveView
void visibilityChanged (bool visible)
 
void rectChanged (QRect rect)
 
void updateRequested ()
 
void visibilityChangeRequested (bool visible)
 
void visibleDataChanged (const DataList &before, const DataList &now)
 Emitted in setVisibleData after the visible data has been changed from before to now.
 
- Public Attributes inherited from InteractiveView
Signal< DataListsignalRendered
 Emitted at the end of render(); the passed DataList will hold all visible data.
 
- Public Attributes inherited from View
Signal signalUpdateRequested
 Emitted when this view or one of its overlays has become outdated and needs to be re-rendered.
 
Signal< const DataList &, const DataList & > signalVisibleDataChanged
 Emitted when visibleData() has changed.
 
- Public Attributes inherited from Configurable
Signal signalParametersChanged
 Emitted whenever one of the registered Parameters' or SubPropertys' signalValueChanged signal was emitted.
 
- Protected Member Functions inherited from InteractiveView
GUI::EventResult dispatchToViewOverlays (const GUI::InputEvent &event) override
 Dispatch event to all known ViewOverlays considering m_mouseEventFocusObject and m_touchEventFocusObject.
 
GUI::EventResult dispatchToViewObjects (const GUI::InputEvent &event) override
 Dispatch event to all known ViewObjects considering m_mouseEventFocusObject and m_touchEventFocusObject.
 
GUI::EventResult dispatchToViewEventHandlers (const GUI::InputEvent &event) override
 Dispatch event to all known View::EventHandlers considering m_mouseEventFocusObject and m_touchEventFocusObject.
 
virtual bool handleOverlayEvent (QEvent *qtEvent, const GUI::InputEvent &inputEvent)
 The default implementation will call InteractiveOverlay::sceneEvent() and set m_mouseEventTarget/m_touchEventTarget if needed.
 
virtual bool handleObjectEvent (QEvent *qtEvent, const GUI::InputEvent &inputEvent)
 Auxiliary method for forwarding the scene event to all registered objects.
 
virtual bool handleInteractionEvent (QEvent *qtEvent, const GUI::InputEvent &inputEvent)
 Auxiliary method for forwarding the scene event to the view interaction.
 
- Protected Member Functions inherited from View
void updateEventFocus (const InputEvent &event, const void *newTarget)
 Update the internal bookkeeping of "focus" event handlers:
 
bool filterEventFocus (const InputEvent &event, const void *target) const
 Checks if the object target should receive the given event based on the event type and current "focus" object.
 
virtual void showDataImpl (Data *data)
 Override this function to implement custom logic whenever a dataset is added to the list of visible data.
 
virtual void hideDataImpl (const Data *data)
 Override this function to implement custom logic whenever a dataset is removed from the list of visible data.
 
- Protected Member Functions inherited from SignalReceiver
void disconnectAll ()
 Disconnects all existing connections.
 

Member Enumeration Documentation

◆ DisplayOptionsSource

enum class DisplayOptionsSource
strong

Describes from where to take the DisplayOptions for rendering.

Enumerator
View 

All visible data will be rendered using the same view's display options.

Data 

Every visible data will be rendered using its own display options.

Member Function Documentation

◆ configure()

void configure ( const Properties * p)
overridevirtual

Restore view state from properties.

Reimplemented from Configurable.

◆ configuration()

void configuration ( Properties * p) const
overridevirtual

Save view state to properties.

Reimplemented from Configurable.

◆ setShowSlices()

void setShowSlices ( int mode)

Apply a visualization mode for all GlSlices shown in this view.

Parameters
modeInteger representation of the GlSlice::ObjectRenderModes bitfield.

◆ displayOptions()

const DisplayOptions3d & displayOptions ( const Data * data = nullptr) const

Return the DisplayOptions used for the given data wrt.

to the views' display options source setting. If the display options source is set to View, this function will return the view's display options. If the display options source is set to Data, this function will return the display options of data. If data is 0 but required, it will use the first visible data of this view instead.

◆ setImage() [1/2]

void setImage ( SharedImage * image)

Convenience method to display a single image.

Internally, creates a container SharedImageSet holding image and then calls setVisibleData(). InteractiveView will not take ownership of image. If image is 0, will remove all data from this view.

Deprecated
This function has problematic ownership semantics. Use setVisibleData() instead.

◆ setImage() [2/2]

void setImage ( Image * image)

Convenience method to display a single image.

Internally, creates a container SharedImageSet holding image and then calls setVisibleData(). InteractiveView will not take ownership of image, it must stay alive as long as the image is shown. If image is 0, will remove all data from this view.

Deprecated
This function has problematic ownership semantics. Use setVisibleData() instead.

The documentation for this class was generated from the following file:
Search Tab / S to search, Esc to close