Lumiera  0.pre.03
»edit your freedom«
TrackProfile Class Reference

#include "stage/timeline/track-profile.hpp"

Description

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.

Todo:

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
 

Member Function Documentation

◆ performWith()

void performWith ( ProfileInterpreter interpreter,
bool  isRulerSegment 
)
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).

Parameters
selectRulerdecide 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.

+ Collaboration diagram for TrackProfile:

The documentation for this class was generated from the following file: