ImFusion SDK 4.3
Display and views

Interfaces and base classes for building a visualization viewport. More...

+ Collaboration diagram for Display and views:

Detailed Description

Interfaces and base classes for building a visualization viewport.

The architecture of the visualization framework is designed in a hierarchical fashion and with a clear separation between the OpenGL rendering layer (classes with Gl prefix) and the GUI layer (classes inside the GUI namespace):

Architecture overview of the ImFusion::GUI visualization framework.

The top-most entity is represented by the DisplayBase interface providing a viewport into which one or multiple View objects can render. The views can be arranged inside the viewport using a tiling layouting approach with the DisplayLayout class. For instance, a typical radiology workstation setup for volumetric data would show 3 MPR views (axial, sagittal, coronal) as well as a 3D volumetric view in a 2x2 grid. The DisplayBase is also the one to receive InputEvents from the platform GUI toolkit and will distribute them to the entities inside (e.g. views).

A View represents an individual sub viewport that can show Data (e.g. a specific anatomical plane) inside a display. It always wraps a corresponding GlView which implements the actual rendering using OpenGL. Furthermore, it can host any number of ViewOverlays and ViewObjects. A view also implements an advanced InputEvent handling and dispatching mechanism to process the events received from the parent display and forward them to overlays, objects, and view event handlers in a useful fashion.

A ViewObject represents a scene entity that resides in world space and is rendered inside a View. They wrap a GlObject and combine them with input event handling capabilities. For some use cases it can be beneficial to extract the event handling functionality into a dedicated reusable class. To this end, use the TypedViewObject specialization and the ViewObject::EventHandler alias.

A ViewOverlay represents a scene entity that resides in viewport space and is rendered on top of a View. They wrap a GlOverlay and combine them with input event handling capabilities.

Classes

class  DisplayBase
 Common base class interface of GUI::Display and DisplayWidget enabling other parts of the framework to access the most basic functionality in a general fashion. More...
 
class  Display
 Basic version of a display surface hosting a set of Views, rendering them, and distributing input events to them. More...
 
class  DisplayLayoutConfig
 The DisplayLayoutConfig serves as static "snapshot" of the view configuration of a DisplayLayout. More...
 
class  DisplayLayout
 Tiling-based layouting class for arranging Views inside a Display in a non-overlapping fashion. More...
 
class  View
 Base interface for a rendering view (e.g. More...
 
class  ViewObject
 Wraps a GlObject pairing it with an optional EventHandler in order to attach it to a View. More...
 
class  TypedViewObject< ObjectType, EventHandlerType >
 Specialization of a ViewObject where the concrete types of the underlying GlObject and EventHandler are defined by the template parameters. More...
 
class  ViewOverlay
 Wraps a GlOverlay in order to display it at specific positions inside a View and handle input events. More...
 

Typedefs

using DisplayLayoutConfig = GUI::DisplayLayoutConfig
 
using DisplayLayout = GUI::DisplayLayout
 
Search Tab / S to search, Esc to close