-
Notifications
You must be signed in to change notification settings - Fork 54
Open
Milestone
Description
In conjunction with imagej/imagej-common#12, we want to rework how SciJava Displays are structured.
The status quo:
- You have an
Object, which gets wrapped in a (UI-agnostic)Display. EachDisplayis a list of suchObjects, rather than only a singleObject. To visualize thatDisplay, you then need a UI-specificDisplayViewer, which actually shows theDisplay's contents to the user somehow. - In ImageJ, the type hierarchies are more complex: you have a
Data, which is wrapped in aDataView(e.g.,Datasetwrapped inDatasetView, orOverlaywrapped inOverlayView). Then anImageDisplay, which is a type ofDisplayforDataViews.
We can streamline this. Let's have instead:
View, which wraps anObject, and contains visualization settings. Subtypes of view (e.g.,ImageView) implemented as needed to encapsulate the appropriate viz settings.- A
ViewServicehandles wrapping ofObjects to the most appropriateView. - In the case of images, there would be an
ImageViewwhich has a position (while its wrappedDatasetdoes not).
- A
Display, which becomes a UI-specific thing used by theUIService.- In other words:
DisplayViewergets renamed toDisplay. - The old
Displayno longer exists—we only support a singleViewperDisplay. - We have a
DefaultViewthat is used forObjects with no particular need for visualization settings.
- In other words:
- To cover the need for multiple N-dimensional image objects (i.e.,
Datasets andOverlays) bagged together, we provideCompositeView, which composes a list ofViews in a single composite space.- See also
CombinedIntervalet. al inimagej-common, which will facilitate this. - This
CompositeViewwould be the closest thing to the currentDisplay, but would support recursive nesting ofViews, so that a proper object hierarchy can exist (see also Improve Display-DisplayView-Data hierarchy imagej/imagej-common#12).
- See also
These changes would reduce the amount of names floating around—we would no longer need "viewers" but would only have Views and Displays. It would also help simplify the implementation of new UIs, at least from the perspective of understanding the execution flow.
Metadata
Metadata
Assignees
Labels
No labels