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

#include "stage/timeline/display-evaluation.hpp"

Description

Visitor and state holder for a collaborative layout adjustment pass.

Todo:
WIP-WIP as of 3/2020

Definition at line 109 of file display-evaluation.hpp.

Public Member Functions

void attach (LayoutElement &e)
 
bool isCollectPhase () const
 
void perform ()
 Conduct global passes over the wired layout elements, in order to adjust and coordinate the overall timeline layout. More...
 

Private Member Functions

void reset ()
 pristine state for the next DisplayEvaluation pass
 
- Private Member Functions inherited from NonCopyable
 NonCopyable (NonCopyable const &)=delete
 
NonCopyableoperator= (NonCopyable const &)=delete
 

Private Attributes

bool collectLayout_ {true}
 
std::vector< LayoutElement * > elms_
 

Member Function Documentation

◆ perform()

void perform ( )

Conduct global passes over the wired layout elements, in order to adjust and coordinate the overall timeline layout.

Within these passes, each element starts with the (vertical) extension as allocated by GTK; typically these values need to be increased slightly, in order to align the track headers and the track body display, and to accommodate the clips and effects placed into each track. Such local adjustments will typically re-trigger the custom drawing code, and thus re-invoke this function, until the overall layout is stable. In a similar vein, the expanding or collapsing of clips and even whole sub-track scopes will cause adjustments and a re-evaluation.

Warning
care has to be taken to not "overshoot" each adjustment, since this might lead to never ending re-invocations and "layout oscillation".
Remarks
the Layout is established proceeding in two phases
  • first the necessary screen extension is determined and the global profile of tracks is reconstructed
  • the second pass verifies and possibly reflows to achieve consistency, possibly triggering recursively through additional size adjustments.

Definition at line 70 of file display-evaluation.cpp.

+ Inheritance diagram for DisplayEvaluation:
+ Collaboration diagram for DisplayEvaluation:

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