Whether
metered time or decimal time, composition Channel data is organized into
Measures. Measures are displayed by the ChannelSetViewControl class in
which the horizontal axis of the screen is given the dimension of time.
And every Event in a Channel must align vertically with every other event in
every Channel that is being displayed with it. However, score in standard
notation is not continuous in time and each measure possesses at least one
interregnum at its beginning. Even if there is no clef, key signature or
time signature there is a gap in time between the bar line and the first note.
Yet a user's primary interest may lie with some continuous parameter such as
tempo while she may still want to refer to score data along with that.
Thus all Channel types must be able to optionally format themselves without
interregnums allowing the user to flip back and forth between the two
formats as needed. Displaying interregnums is a ChannelSet's
"Standard View" mode while continuous time display is denoted/tokenized as its
"Continuous View" mode.
The measure class manages the process of formatting a ChannelSet view. The first step in constructing the horizontal offset list for "Standard View" is to construct a list of all the interregnums in (all the ChannelBars in) the measure. To do this it passes each ChannelBar in the ChannelSet being formatted an interregnum list to which each adds its interregnums. (An interregnum is a struct of two fields: { UInt64 offset, double width } If two ChannelBars have interregnums at the same offset the interregnum width in the list is assigned the value of the ChannelBar having the larger interregnum width. The ChannelBar class contains this virtual method:
virtual FillInterregnumList(LinkedList<interregnum> interregnumList, bool firstInFrame)
Every Channel type that has interregnums must implement an override of the above method in its corresponding ChannelBar class and conversely continuous ChannelBar types must be able to display themselves with Interregnums. It is considered an acceptable compromise for a channel to inhibit editing while displayed in one or the other display modes.