Lumiera 0.pre.04~rc.1
»edit your freedom«
Loading...
Searching...
No Matches
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 100 of file display-evaluation.hpp.

Public Member Functions

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

Private Member Functions

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

Private Attributes

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

Member Function Documentation

◆ attach()

void attach ( LayoutElement e)
inline

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

References DisplayEvaluation::elms_.

Referenced by TimelineLayout::setupStructure().

+ Here is the caller graph for this function:

◆ 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 61 of file display-evaluation.cpp.

References DisplayEvaluation::collectLayout_, DisplayEvaluation::elms_, and DisplayEvaluation::reset().

Referenced by TimelineLayout::triggerDisplayEvaluation().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isCollectPhase()

bool isCollectPhase ( ) const
inline

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

References DisplayEvaluation::collectLayout_.

Referenced by TrackPresenter::completeLayout(), and TrackPresenter::establishLayout().

+ Here is the caller graph for this function:

◆ reset()

void reset ( )
private

pristine state for the next DisplayEvaluation pass

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

References DisplayEvaluation::collectLayout_, and DisplayEvaluation::elms_.

Referenced by DisplayEvaluation::perform().

+ Here is the caller graph for this function:

Member Data Documentation

◆ elms_

std::vector<LayoutElement*> elms_
private

◆ collectLayout_

bool collectLayout_ {true}
private
+ Inheritance diagram for DisplayEvaluation:
+ Collaboration diagram for DisplayEvaluation:

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