Formatting Measures And Interregnums

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.

NEXT