Lumiera
0.pre.03
»edit your freedom«
|
#include "stage/timeline/track-profile.hpp"
Description of the structure and arrangement of tracks for display in the UI.
This sequence of verb tokens especially details the profile of a vertical cross-section; the nested structure of the track fork is translated into a series of steps and insets, running alongside the timeline display. To decouple the drawing code – thus allowing for later customisations – we let the individual TrackBody elements just emit these structure description.
WIP-WIP as of 4/2019
the number of pinned elements should be a member field, instead of sneaking it into the prelude element...
Definition at line 78 of file track-profile.hpp.
Public Member Functions | |
void | addSlopeDown () |
void | addSlopeUp () |
void | clear () noexcept |
bool | empty () const |
uint | getPrecedingSlopeUp () |
void | markPrefixEnd () |
void | performWith (ProfileInterpreter &interpreter) |
void | performWith (ProfileInterpreter &interpreter, bool isRulerSegment) |
A variation of standard evaluation, only rendering one segment of the profile. More... | |
Private Types | |
using | Elements = std::vector< SlopeVerb > |
using | SlopeVerb = lib::VerbPack< ProfileInterpreter, void, ProfileInterpreter::MAX_ARG_SIZE > |
Private Member Functions | |
template<typename FUN , typename... ARGS> | |
void | append (FUN &&handler, Literal token, ARGS &&... params) |
auto | filterSegment (bool selectPrefixPart) |
void | incrementLastCloseSlope () |
bool | lastEntryIs (Literal expectedToken) |
Private Attributes | |
Elements | elements |
int | pinnedPrefixCnt = 0 |
|
inline |
A variation of standard evaluation, only rendering one segment of the profile.
The prelude
verb defines a special prefix part of the track profile, which is assumed to correspond to the timecode ruler tracks. These special overview tracks are rendered always visible at the top of the timeline, even when scrolling down on large arrangements with several tracks. Effectively this means we have to split the TrackProfile into two segments, which are to be rendered within two distinct TimelineCanvas widgets (the first one always on top, while the second one with the actual track content is shown within a pane with scrollbars).
selectRuler | decide if this evaluation shall render the overview rulers (when given true ) or alternatively the remaining standard body part of the timeline (when given false ). |
Definition at line 221 of file track-profile.hpp.