Open
Description
In conjunction with imagej/imagej-common#12, we want to rework how SciJava Display
s are structured.
The status quo:
- You have an
Object
, which gets wrapped in a (UI-agnostic)Display
. EachDisplay
is a list of suchObject
s, 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.,Dataset
wrapped inDatasetView
, orOverlay
wrapped inOverlayView
). Then anImageDisplay
, which is a type ofDisplay
forDataView
s.
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
ViewService
handles wrapping ofObject
s to the most appropriateView
. - In the case of images, there would be an
ImageView
which has a position (while its wrappedDataset
does not).
- A
Display
, which becomes a UI-specific thing used by theUIService
.- In other words:
DisplayViewer
gets renamed toDisplay
. - The old
Display
no longer exists—we only support a singleView
perDisplay
. - We have a
DefaultView
that is used forObject
s with no particular need for visualization settings.
- In other words:
- To cover the need for multiple N-dimensional image objects (i.e.,
Dataset
s andOverlay
s) bagged together, we provideCompositeView
, which composes a list ofView
s in a single composite space.- See also
CombinedInterval
et. al inimagej-common
, which will facilitate this. - This
CompositeView
would be the closest thing to the currentDisplay
, but would support recursive nesting ofView
s, 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 View
s and Display
s. 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