Timeline: generate the symbolic track profile description

...by recursive walk over the track structure
This commit is contained in:
Fischlurch 2019-04-11 17:31:09 +02:00
parent abdac7aab6
commit 9292da84f2
7 changed files with 199 additions and 58 deletions

View file

@ -96,11 +96,6 @@ namespace lib {
return (receiver.*handler_)(std::forward<ARGS>(args)...);
}
operator string() const
{
return string(token_);
}
VerbToken(Handler handlerFunction, Literal token)
: handler_(handlerFunction)
, token_(token)
@ -113,6 +108,17 @@ namespace lib {
/* default copyable */
operator string() const
{
return string(token_);
}
Literal const&
getID()
{
return token_;
}
/** equality of VerbToken, based on equality of the #token_ Literal
* @remarks member pointers to virtual functions aren't comparable, for good reason
*/

View file

@ -26,6 +26,7 @@
** and time code ticks and markers onto the TimelineCanvas.
**
** @todo WIP-WIP-WIP as of 12/2018
** @todo this is more or less preliminary/placeholder code as of 4/2019
**
*/
@ -37,7 +38,7 @@
//#include "lib/format-string.hpp"
//#include "lib/format-cout.hpp"
//#include "lib/util.hpp"
#include "lib/util.hpp"
//#include <algorithm>
//#include <vector>
@ -45,6 +46,7 @@
//using util::_Fmt;
using util::isnil;
//using util::contains;
//using Gtk::Widget;
//using sigc::mem_fun;
@ -57,9 +59,12 @@ namespace stage {
namespace timeline {
namespace {
uint TIMERULER_SCALE_HEIGHT_px = 20;
uint TIMERULER_LARGE_TICK_WEIGHT_px = 2;
uint TIMERULER_SMALL_TICK_WEIGHT_px = 2;
const uint DEFAULT_OVERVIEW_HEIGHT_px = 20;
const uint TIMERULER_SCALE_HEIGHT_px = 20;
const uint TIMERULER_LARGE_TICK_WEIGHT_px = 2;
const uint TIMERULER_SMALL_TICK_WEIGHT_px = 2;
const uint TIMERULE_GAP_BELOW_px = 5;
}
@ -77,15 +82,48 @@ namespace timeline {
/**
* recursively calculate the height in pixels to display this track,
* including all nested sub-tracks
* recursively calculate the height in pixels to display this ruler track.
* @todo this is more or less braindead placeholder code as of 4/2019
*/
uint
RulerTrack::calcHeight()
{
UNIMPLEMENTED ("calculate display height of the overview ruler in pixels");
if (isnil (scales_))
return DEFAULT_OVERVIEW_HEIGHT_px;
else
{ // handle time ruler ////////////////////////////////////////////////TICKET #1194 : proper handling of ruler tracks
uint combinedScaleHeight = 0;
for (auto& scale : scales_)
combinedScaleHeight += scale.calcHeight();
return combinedScaleHeight;
}
}
/**
* possibly cause the display of an additional padding gap below this ruler track
* @return `0` when no gap shall be displayed, _otherwise_ the gap height in pixels.
* @todo this is more or less braindead placeholder code as of 4/2019
*/
uint
RulerTrack::getGapHeight()
{
if (not isnil (scales_))
return TIMERULE_GAP_BELOW_px;
else
return 0; // no Gap
}
/**
* get vertical extension of this scale on the time(code) overview ruler
* @todo this is more or less braindead placeholder code as of 4/2019
*/
uint
RulerScale::calcHeight()
{ ////////////////////////////////////////////////TICKET #1194 : proper handling of ruler tracks
return TIMERULER_SCALE_HEIGHT_px;
}
}}// namespace stage::timeline

View file

@ -54,9 +54,10 @@
namespace stage {
namespace timeline {
////////////////////////////////////////////////////////////////////TICKET #1195 : Timecode Ruler presentation
struct RulerScale
{
uint calcHeight();
};
@ -64,7 +65,7 @@ namespace timeline {
* Helper to organise and draw the time or content overview ruler at the top of the
* timeline track display. The purpose is to support custom drawing onto the TimelineCanvas
* to show rendered content, timecode or frame count ticks plus any markers, ranges and locators...
* @todo WIP-WIP as of 10/2018
* @todo this is more or less preliminary/placeholder code as of 4/2019 ////////////////////////TICKET #1194 : proper handling of ruler tracks
*/
class RulerTrack
{
@ -77,6 +78,7 @@ namespace timeline {
~RulerTrack();
uint calcHeight();
uint getGapHeight();
private:/* ===== Internals ===== */

View file

@ -37,7 +37,7 @@
//#include "stage/ui-bus.hpp"
//#include "lib/format-string.hpp"
//#include "lib/util.hpp"
#include "lib/util.hpp"
//#include <algorithm>
//#include <vector>
@ -45,6 +45,7 @@
//using util::_Fmt;
using util::isnil;
//using util::contains;
//using Gtk::Widget;
//using sigc::mem_fun;
@ -57,7 +58,6 @@ namespace stage {
namespace timeline {
namespace {
const uint DEFAULT_OVERVIEW_HEIGHT_px = 20;
const uint DEFAULT_CONTENT_HEIGHT_px = 80;
}
@ -65,8 +65,7 @@ namespace timeline {
TrackBody::TrackBody()
: overviewHeight_{DEFAULT_OVERVIEW_HEIGHT_px}
, contentHeight_{DEFAULT_CONTENT_HEIGHT_px}
: contentHeight_{DEFAULT_CONTENT_HEIGHT_px}
, subTracks_{}
, rulers_{}
{ }
@ -92,7 +91,13 @@ namespace timeline {
uint
TrackBody::calcHeight()
{
uint heightSum = overviewHeight_ + contentHeight_;
uint overviewHeight = 0;
for (auto& ruler : rulers_)
{
overviewHeight += ruler->calcHeight();
+ ruler->getGapHeight();
}
uint heightSum = overviewHeight + contentHeight_;
for (TrackBody* subTrack : subTracks_)
heightSum += subTrack->calcHeight();
return heightSum;
@ -103,11 +108,28 @@ namespace timeline {
* recursively establish the screen space allocation for this structure of nested tracks.
* The TrackProfile is an abstracted description of the sequence of track elements,
* which constitute a vertical cross section through the track bodies
* - pre: the given profile is built and complete up to the (upper side) start of this timeline
* - post: the profile is elaborated for this track and its children, down to the lower end.
*
*/
void
TrackBody::establishTrackSpace (TrackProfile& profile)
{
UNIMPLEMENTED ("recursively build the TrackProfile");
for (auto& ruler : rulers_)
{
profile.append_ruler (ruler->calcHeight());
uint gapHeight = ruler->getGapHeight();
if (gapHeight > 0)
profile.append_gap (gapHeight);
}
profile.append_content (this->contentHeight_);
if (not isnil(subTracks_))
{
profile.addSlopeDown();
for (TrackBody* subTrack : subTracks_)
subTrack->establishTrackSpace (profile);
profile.addSlopeUp();
}
}

View file

@ -71,7 +71,6 @@ namespace timeline {
*/
class TrackBody
{
uint overviewHeight_;
uint contentHeight_;
using PRuler = std::unique_ptr<RulerTrack>;

View file

@ -122,6 +122,36 @@ namespace timeline {
TOKEN_BUILDER (close)
TOKEN_BUILDER (prelude)
TOKEN_BUILDER (coda)
void
addSlopeDown()
{
this->append_open (1);
}
void
addSlopeUp()
{
if (lastEntryIs("close"))
incrementLastCloseSlope();
else
append_close (1);
}
private:
bool
lastEntryIs (Literal expectedToken)
{
return util::isnil (elements)
or elements.back().first.getID() == expectedToken;
}
void
incrementLastCloseSlope()
{
REQUIRE (lastEntryIs ("close"));
++ elements.back().second;
}
};

View file

@ -19333,14 +19333,14 @@
<icon BUILTIN="flag-yellow"/>
<node CREATED="1480607033512" ID="ID_1815699851" MODIFIED="1518487921082" TEXT="Kopf">
<node CREATED="1540684299064" ID="ID_1911781593" MODIFIED="1540684308285" TEXT="Header-Pane">
<node CREATED="1540641296565" HGAP="31" ID="ID_991484939" MODIFIED="1544829939686" TEXT="NavigationWidget" VSHIFT="40">
<arrowlink DESTINATION="ID_1952536945" ENDARROW="Default" ENDINCLINATION="73;-35;" ID="Arrow_ID_1459742640" STARTARROW="None" STARTINCLINATION="112;0;"/>
<node CREATED="1540641296565" HGAP="31" ID="ID_991484939" MODIFIED="1554996333615" TEXT="NavigationWidget" VSHIFT="40">
<arrowlink DESTINATION="ID_1952536945" ENDARROW="Default" ENDINCLINATION="136;-157;" ID="Arrow_ID_1459742640" STARTARROW="None" STARTINCLINATION="112;0;"/>
<node CREATED="1540682850119" HGAP="39" ID="ID_1885212949" MODIFIED="1540683945028" TEXT="ein Grid">
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1540641305092" HGAP="50" ID="ID_18552766" MODIFIED="1554417721968" TEXT="PatchbayWidget" VSHIFT="-2">
<arrowlink DESTINATION="ID_151954769" ENDARROW="Default" ENDINCLINATION="182;-48;" ID="Arrow_ID_1923805019" STARTARROW="None" STARTINCLINATION="93;24;"/>
<node CREATED="1540641305092" HGAP="50" ID="ID_18552766" MODIFIED="1554996384127" TEXT="PatchbayWidget" VSHIFT="-2">
<arrowlink DESTINATION="ID_151954769" ENDARROW="Default" ENDINCLINATION="263;-88;" ID="Arrow_ID_1923805019" STARTARROW="None" STARTINCLINATION="93;24;"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1540682893097" HGAP="65" ID="ID_419298158" MODIFIED="1540747497085" TEXT="interne Struktur" VSHIFT="11">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
@ -19425,9 +19425,10 @@
</node>
</node>
<node CREATED="1480607035712" ID="ID_1405339006" MODIFIED="1518487921082" TEXT="Rumpf">
<node CREATED="1540641313667" ID="ID_1952536945" MODIFIED="1544829939686" TEXT="Time-Ruler">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1952536945" ENDARROW="Default" ENDINCLINATION="73;-35;" ID="Arrow_ID_1459742640" SOURCE="ID_991484939" STARTARROW="None" STARTINCLINATION="112;0;"/>
<node CREATED="1544835109183" ID="ID_1598364198" MODIFIED="1544835121769" TEXT="Konzept: RulerTrack">
<node CREATED="1544835109183" ID="ID_1598364198" MODIFIED="1554996128177" TEXT="Konzept: RulerTrack">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544849233126" ID="ID_665765482" MODIFIED="1554996286114" TEXT="#1194 Handling of Ruler Tracks">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1544835125485" ID="ID_1915741861" MODIFIED="1544835132216" TEXT="Verallgemeinerung">
<node CREATED="1544835133005" ID="ID_168632162" MODIFIED="1544835144110" TEXT="Time Ruler"/>
<node CREATED="1544835135955" ID="ID_676965041" MODIFIED="1544835140321" TEXT="Overview Ruler"/>
@ -19435,7 +19436,9 @@
<node CREATED="1544835146834" ID="ID_1998202502" MODIFIED="1544835150581" TEXT="Konfigurierbar">
<node CREATED="1544835156145" ID="ID_967222646" MODIFIED="1544835160124" TEXT="Content-Anzeige"/>
<node CREATED="1544835160640" ID="ID_498988220" MODIFIED="1544835165339" TEXT="Bereichs-Anzeige"/>
<node CREATED="1544835165903" ID="ID_80922465" MODIFIED="1544835171594" TEXT="Timecode + Ticks"/>
<node CREATED="1544835165903" ID="ID_80922465" MODIFIED="1554996324416" TEXT="Timecode + Ticks">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_80922465" ENDARROW="Default" ENDINCLINATION="343;0;" ID="Arrow_ID_630173444" SOURCE="ID_1619835790" STARTARROW="None" STARTINCLINATION="376;0;"/>
</node>
<node CREATED="1544835172206" ID="ID_429836650" MODIFIED="1544835173818" TEXT="Marker"/>
</node>
<node CREATED="1544837600332" ID="ID_415425563" MODIFIED="1544837612741" TEXT="konkrete Konfig">
@ -19458,6 +19461,10 @@
<icon BUILTIN="forward"/>
</node>
</node>
<node CREATED="1554996492819" ID="ID_1391546845" MODIFIED="1554996595043" TEXT="Konfig laut systematischem Modell">
<arrowlink COLOR="#3e63c5" DESTINATION="ID_433238862" ENDARROW="Default" ENDINCLINATION="-136;-11;" ID="Arrow_ID_1858329997" STARTARROW="None" STARTINCLINATION="-747;0;"/>
<icon BUILTIN="info"/>
</node>
</node>
<node CREATED="1553911718090" ID="ID_612121351" MODIFIED="1553911723566" TEXT="praktische Ausgestalutng">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1553911730196" ID="ID_1967793006" MODIFIED="1553911734132" TEXT="offene Fragen">
@ -19473,8 +19480,8 @@
</node>
</node>
</node>
</node>
<node CREATED="1544837985030" ID="ID_528262547" MODIFIED="1544837990229" TEXT="Verh&#xe4;ltnis zum Time-Ruler">
<node CREATED="1544837985030" HGAP="-90" ID="ID_528262547" MODIFIED="1554996158749" TEXT="Verh&#xe4;ltnis zum Time-Ruler" VSHIFT="87">
<edge STYLE="linear"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1544837991621" ID="ID_1767589633" MODIFIED="1544838002589" TEXT="k&#xfc;hne Idee: zusammenlegen">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
@ -19485,12 +19492,53 @@
</node>
<node CREATED="1544839243971" ID="ID_1000231823" MODIFIED="1544839267628" TEXT="Ausf&#xfc;hrung obliegt der Session"/>
</node>
<node CREATED="1544839283413" ID="ID_960193981" MODIFIED="1544839285469" TEXT="Bauen">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544849233126" ID="ID_1576984939" MODIFIED="1544849240021" TEXT="#1193 represent time and overview rulers">
</node>
<node CREATED="1540641313667" ID="ID_1952536945" MODIFIED="1554996333615" TEXT="Time-Ruler">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1952536945" ENDARROW="Default" ENDINCLINATION="136;-157;" ID="Arrow_ID_1459742640" SOURCE="ID_991484939" STARTARROW="None" STARTINCLINATION="112;0;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544849233126" ID="ID_904348697" MODIFIED="1554995793628" TEXT="#1195 Timecode Ruler">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1544839288936" ID="ID_43593052" MODIFIED="1544846001893" TEXT="zwei Ruler-Konfigs in das systematische UI-Modell">
<arrowlink COLOR="#5f84b0" DESTINATION="ID_1083901292" ENDARROW="Default" ENDINCLINATION="-756;-82;" ID="Arrow_ID_1167484185" STARTARROW="None" STARTINCLINATION="-592;0;"/>
<node CREATED="1554996306756" ID="ID_1619835790" MODIFIED="1554996324416" TEXT="auf spezielle Konfig eines &quot;Ruler-Tracks&quot; zur&#xfc;ckf&#xfc;hren">
<arrowlink DESTINATION="ID_80922465" ENDARROW="Default" ENDINCLINATION="343;0;" ID="Arrow_ID_630173444" STARTARROW="None" STARTINCLINATION="376;0;"/>
</node>
</node>
<node CREATED="1540641317386" ID="ID_151954769" MODIFIED="1554996384127" TEXT="Canvas">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_151954769" ENDARROW="Default" ENDINCLINATION="263;-88;" ID="Arrow_ID_1923805019" SOURCE="ID_18552766" STARTARROW="None" STARTINCLINATION="93;24;"/>
<node CREATED="1540951718734" HGAP="56" ID="ID_179159881" MODIFIED="1540951729689" TEXT="TrackBody" VSHIFT="11">
<node CREATED="1540951732747" ID="ID_879954288" MODIFIED="1540951770897" TEXT="kein Widget, sondern eine Hilfs-Struktur"/>
<node CREATED="1540951833141" ID="ID_387631457" MODIFIED="1540951859869" TEXT="erledigt f&#xfc;r den Canvas das Zeichnen f&#xfc;r einen Track"/>
<node CREATED="1540951862399" ID="ID_708158546" MODIFIED="1540951902567" TEXT="relative Koordinaten (und sowiso nur vertikal)"/>
<node CREATED="1540951873159" ID="ID_1843757439" MODIFIED="1540951880554" TEXT="kennt aber seine eigene H&#xf6;he"/>
<node CREATED="1540951934151" ID="ID_1702719060" MODIFIED="1540951945593" TEXT="Bestandteile">
<node CREATED="1540951946493" ID="ID_803471574" MODIFIED="1540951952401" TEXT="overview ruler"/>
<node CREATED="1540951953036" ID="ID_1163326543" MODIFIED="1540951958127" TEXT="content area"/>
<node CREATED="1540951987535" ID="ID_1044870207" MODIFIED="1540952016368" TEXT="sub-content"/>
<node CREATED="1540952017027" ID="ID_1004640509" MODIFIED="1540952034477" TEXT="Sequenz von (nested) sub TrackBody"/>
</node>
<node CREATED="1540953620811" ID="ID_421197092" MODIFIED="1540953623748" TEXT="Aufgaben">
<node CREATED="1540953625171" ID="ID_1987245010" MODIFIED="1540953631853" TEXT="sub-TrackBody verwalten"/>
<node CREATED="1540953632393" ID="ID_132647407" MODIFIED="1540953641353" TEXT="gesamt-H&#xf6;he ermitteln"/>
<node CREATED="1540953791364" ID="ID_540126417" MODIFIED="1540953808931" TEXT="vertikale Koordinaten zum Platzieren von Content ermitteln"/>
<node CREATED="1540953642160" ID="ID_1963147841" MODIFIED="1540953662125" TEXT="Hintergrund f&#xfc;r eigenen Bereich zeichnen"/>
<node CREATED="1544839283413" ID="ID_960193981" MODIFIED="1554996215297" TEXT="Ruler-Tracks bauen">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544849233126" ID="ID_1576984939" MODIFIED="1544849240021" TEXT="#1193 represent time and overview rulers">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1554995807523" ID="ID_896927472" MODIFIED="1554995812346" TEXT="grunds&#xe4;tzliches Konzept">
<node CREATED="1554995813195" ID="ID_1158334025" MODIFIED="1554995817730" TEXT="sind Modell-Elemente"/>
<node CREATED="1554995818270" ID="ID_753876518" MODIFIED="1554995826338" TEXT="werden in den Track injiziert"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1554995829834" ID="ID_1945074845" MODIFIED="1554995865296" TEXT="teilweise noch unklar">
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1554995834875" ID="ID_1119649795" MODIFIED="1554995856751" TEXT="Zusammenspiel mit Expand/Collapse">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1554995841966" ID="ID_1443277448" MODIFIED="1554995854985" TEXT="genaue Rolle der Session??">
<icon BUILTIN="help"/>
</node>
</node>
</node>
<node CREATED="1544839288936" ID="ID_43593052" MODIFIED="1554996355955" TEXT="zwei Ruler-Konfigs in das systematische UI-Modell">
<arrowlink COLOR="#5f84b0" DESTINATION="ID_1083901292" ENDARROW="Default" ENDINCLINATION="-756;-82;" ID="Arrow_ID_1167484185" STARTARROW="None" STARTINCLINATION="-942;0;"/>
<node COLOR="#338800" CREATED="1544849869166" ID="ID_1025477379" MODIFIED="1553911646237" TEXT="Frage: wo ansiedeln?">
<icon BUILTIN="button_ok"/>
<node CREATED="1544849875744" ID="ID_27673928" MODIFIED="1553911580738" TEXT="im TrackPresenter">
@ -19519,25 +19567,6 @@
</node>
</node>
</node>
<node CREATED="1540641317386" ID="ID_151954769" MODIFIED="1554417721969" TEXT="Canvas">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_151954769" ENDARROW="Default" ENDINCLINATION="182;-48;" ID="Arrow_ID_1923805019" SOURCE="ID_18552766" STARTARROW="None" STARTINCLINATION="93;24;"/>
<node CREATED="1540951718734" HGAP="56" ID="ID_179159881" MODIFIED="1540951729689" TEXT="TrackBody" VSHIFT="11">
<node CREATED="1540951732747" ID="ID_879954288" MODIFIED="1540951770897" TEXT="kein Widget, sondern eine Hilfs-Struktur"/>
<node CREATED="1540951833141" ID="ID_387631457" MODIFIED="1540951859869" TEXT="erledigt f&#xfc;r den Canvas das Zeichnen f&#xfc;r einen Track"/>
<node CREATED="1540951862399" ID="ID_708158546" MODIFIED="1540951902567" TEXT="relative Koordinaten (und sowiso nur vertikal)"/>
<node CREATED="1540951873159" ID="ID_1843757439" MODIFIED="1540951880554" TEXT="kennt aber seine eigene H&#xf6;he"/>
<node CREATED="1540951934151" ID="ID_1702719060" MODIFIED="1540951945593" TEXT="Bestandteile">
<node CREATED="1540951946493" ID="ID_803471574" MODIFIED="1540951952401" TEXT="overview ruler"/>
<node CREATED="1540951953036" ID="ID_1163326543" MODIFIED="1540951958127" TEXT="content area"/>
<node CREATED="1540951987535" ID="ID_1044870207" MODIFIED="1540952016368" TEXT="sub-content"/>
<node CREATED="1540952017027" ID="ID_1004640509" MODIFIED="1540952034477" TEXT="Sequenz von (nested) sub TrackBody"/>
</node>
<node CREATED="1540953620811" ID="ID_421197092" MODIFIED="1540953623748" TEXT="Aufgaben">
<node CREATED="1540953625171" ID="ID_1987245010" MODIFIED="1540953631853" TEXT="sub-TrackBody verwalten"/>
<node CREATED="1540953632393" ID="ID_132647407" MODIFIED="1540953641353" TEXT="gesamt-H&#xf6;he ermitteln"/>
<node CREATED="1540953791364" ID="ID_540126417" MODIFIED="1540953808931" TEXT="vertikale Koordinaten zum Platzieren von Content ermitteln"/>
<node CREATED="1540953642160" ID="ID_1963147841" MODIFIED="1540953662125" TEXT="Hintergrund f&#xfc;r eigenen Bereich zeichnen"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1541814972977" HGAP="8" ID="ID_1482433902" MODIFIED="1541814987634" TEXT="offen..." VSHIFT="5">
<icon BUILTIN="bell"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1541814988759" ID="ID_327310802" MODIFIED="1541815003222" TEXT="mu&#xdf; der TrackBody seinen Namen kennen?">
@ -19748,7 +19777,21 @@
<node CREATED="1554516951713" ID="ID_318462518" MODIFIED="1554516961692" TEXT="Verben (rekursiv) generieren">
<node CREATED="1554516977204" ID="ID_305770947" MODIFIED="1554516978849" TEXT="Ruler"/>
<node CREATED="1554516979454" ID="ID_508239889" MODIFIED="1554516983920" TEXT="Gaps handhaben"/>
<node CREATED="1554516984485" ID="ID_351302473" MODIFIED="1554516987376" TEXT="Content"/>
<node CREATED="1554516984485" ID="ID_351302473" MODIFIED="1554990860071" TEXT="Content">
<icon BUILTIN="hourglass"/>
<node COLOR="#338800" CREATED="1554990830581" ID="ID_1043247821" MODIFIED="1554990855994" TEXT="vorl&#xe4;ufig Konstante addiert">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1554990844745" ID="ID_1673637596" MODIFIED="1554990853907" TEXT="brauche hier Abstimmung mit Layout">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
<node COLOR="#338800" CREATED="1554990786369" ID="ID_97624142" MODIFIED="1554990791717" TEXT="sub-Tracks">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1554990802429" ID="ID_785342074" MODIFIED="1554990812865" TEXT="sub-Track-Slopes zusammensetzen">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1554517013770" ID="ID_1565362810" MODIFIED="1554517019643" TEXT="Verb-Sequenz konsolidieren"/>
<node CREATED="1554517023983" ID="ID_582840262" MODIFIED="1554517030946" TEXT="Verb-Sequenz interpretieren">
@ -21977,8 +22020,8 @@
<node CREATED="1538956802701" ID="ID_840384156" MODIFIED="1538956809576" TEXT="Sequence{Marker}">
<node CREATED="1538957049292" ID="ID_1955645432" MODIFIED="1538957077700" TEXT="if typeID = &quot;Marker&quot;"/>
</node>
<node CREATED="1544839585279" ID="ID_1083901292" MODIFIED="1544846001893" TEXT="Sequence{Ruler}">
<linktarget COLOR="#5f84b0" DESTINATION="ID_1083901292" ENDARROW="Default" ENDINCLINATION="-756;-82;" ID="Arrow_ID_1167484185" SOURCE="ID_43593052" STARTARROW="None" STARTINCLINATION="-592;0;"/>
<node CREATED="1544839585279" ID="ID_1083901292" MODIFIED="1554996355955" TEXT="Sequence{Ruler}">
<linktarget COLOR="#5f84b0" DESTINATION="ID_1083901292" ENDARROW="Default" ENDINCLINATION="-756;-82;" ID="Arrow_ID_1167484185" SOURCE="ID_43593052" STARTARROW="None" STARTINCLINATION="-942;0;"/>
<node CREATED="1544846037083" ID="ID_667362504" MODIFIED="1544846061300" TEXT="if typeID = &quot;Ruler&quot;"/>
<node CREATED="1544846062288" ID="ID_855083299" MODIFIED="1544846101674" TEXT="storage direkt (nested) im TrackBody"/>
</node>
@ -21994,7 +22037,8 @@
<node CREATED="1538957049292" ID="ID_98299428" MODIFIED="1538957077700" TEXT="if typeID = &quot;Marker&quot;"/>
</node>
</node>
<node CREATED="1544840312839" ID="ID_433238862" MODIFIED="1544840343280" TEXT="Ruler">
<node CREATED="1544840312839" ID="ID_433238862" MODIFIED="1554996595043" TEXT="Ruler">
<linktarget COLOR="#3e63c5" DESTINATION="ID_433238862" ENDARROW="Default" ENDINCLINATION="-136;-11;" ID="Arrow_ID_1858329997" SOURCE="ID_1391546845" STARTARROW="None" STARTINCLINATION="-747;0;"/>
<node CREATED="1544840455429" ID="ID_1283986005" MODIFIED="1544840465760" TEXT="&quot;timecode&quot; = formatID"/>
<node CREATED="1544840496225" ID="ID_230755841" MODIFIED="1544840613171" TEXT="&quot;contentFormat&quot; = formatID (none|pivot|frames|wave|synopsis)"/>
<node CREATED="1544840634822" ID="ID_1138129422" MODIFIED="1544840643904" TEXT="Sequence{Marker.kind}">