Timeline: possible solution for construction of the TrackProfile
...not yet really convinced though ...how does this relate to the "display evaluation pass" of the Layout Manager?
This commit is contained in:
parent
c87ca5d632
commit
d5af020520
5 changed files with 102 additions and 8 deletions
|
|
@ -49,6 +49,7 @@
|
|||
|
||||
//using util::_Fmt;
|
||||
using util::max;
|
||||
using util::isnil;
|
||||
//using util::contains;
|
||||
//using Gtk::Widget;
|
||||
using Gdk::Rectangle;
|
||||
|
|
@ -300,7 +301,7 @@ namespace timeline {
|
|||
{
|
||||
if (rootBody_)
|
||||
{
|
||||
if (not profile_)
|
||||
if (isnil (profile_))
|
||||
rootBody_->establishTrackSpace (profile_);
|
||||
}
|
||||
return profile_; //////////////////////////////////////////////////////////////////////////////////////TICKET #1039 : who actually invokes this function? what if not(rootBody_)?
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ namespace timeline {
|
|||
* For both cases we prepare a way to build a _nested mutator_, and in both cases this
|
||||
* is simply achieved by relying on the common interface of all those "elements", which
|
||||
* is stage::model::Tangible and just happens to require each such "tangible" to offer
|
||||
* a mutation building method, just like this one here. Simple recursive programming.
|
||||
* a mutation building method, just like this one here. Plain recursive programming.
|
||||
* @see DiffComplexApplication_test
|
||||
*/
|
||||
void
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ namespace timeline {
|
|||
|
||||
namespace {
|
||||
const uint DEFAULT_CONTENT_HEIGHT_px = 80;
|
||||
const uint TIMELINE_BOTTOM_PADDING_px = 5;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -110,11 +111,17 @@ namespace timeline {
|
|||
* 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.
|
||||
*
|
||||
* @todo 6/19 this very much looks like the "display evaluation pass" envisioned for the timeline::DisplayManager.
|
||||
* Need to find out if we'll need a dedicated evaluation pass and how to interconnect both.
|
||||
*/
|
||||
void
|
||||
TrackBody::establishTrackSpace (TrackProfile& profile)
|
||||
{
|
||||
bool topLevel = isnil (profile);
|
||||
|
||||
if (topLevel)
|
||||
profile.append_prelude(rulers_.size());
|
||||
|
||||
for (auto& ruler : rulers_)
|
||||
{
|
||||
profile.append_ruler (ruler->calcHeight());
|
||||
|
|
@ -130,6 +137,9 @@ namespace timeline {
|
|||
subTrack->establishTrackSpace (profile);
|
||||
profile.addSlopeUp();
|
||||
}
|
||||
|
||||
if (topLevel)
|
||||
profile.append_coda(TIMELINE_BOTTOM_PADDING_px);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -91,10 +91,10 @@ namespace timeline {
|
|||
|
||||
// default constructible, standard copy operations
|
||||
|
||||
explicit
|
||||
operator bool() const
|
||||
bool
|
||||
empty() const
|
||||
{
|
||||
return not isnil (elements);
|
||||
return elements.empty();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -19151,7 +19151,12 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1480639473324" ID="ID_191170582" MODIFIED="1557498707226" TEXT="eval pass"/>
|
||||
<node CREATED="1480639473324" ID="ID_191170582" MODIFIED="1560627749713" TEXT="eval pass">
|
||||
<linktarget COLOR="#921d48" DESTINATION="ID_191170582" ENDARROW="Default" ENDINCLINATION="1918;0;" ID="Arrow_ID_982561049" SOURCE="ID_624999649" STARTARROW="None" STARTINCLINATION="185;0;"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1560627720011" HGAP="35" ID="ID_322949413" MODIFIED="1560627732292" TEXT="brauchen wir den??" VSHIFT="23">
|
||||
<icon BUILTIN="help"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1555022703032" ID="ID_13722484" MODIFIED="1557498707226" TEXT="Verdrahtung">
|
||||
<node CREATED="1555022710839" ID="ID_1166296639" MODIFIED="1557498707226" TEXT="muß in alle Nutzer injiziert werden"/>
|
||||
<node CREATED="1555022761189" ID="ID_640769952" MODIFIED="1560612965105" TEXT="wie? geht wohl nur direkte Referenz">
|
||||
|
|
@ -20618,6 +20623,37 @@
|
|||
<node CREATED="1560612942381" ID="ID_1967930581" MODIFIED="1560612949943" TEXT="und das wäre etwa die gleiche Menge Code"/>
|
||||
<node CREATED="1560612951033" ID="ID_850127059" MODIFIED="1560612963343" TEXT="und auch etwa gleichermaßen lesbar"/>
|
||||
</node>
|
||||
<node CREATED="1560613101287" ID="ID_4285270" MODIFIED="1560613236377" TEXT="Beschluß: sofern die Prelude/Coda-Stukur da ist, kann man sie auch so nutzen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
weil genau an der Stelle, an der diese Klammer erzeugt wird, auch diese Info über die Präfix-Tracks angelegt werden muß.
|
||||
</p>
|
||||
<p>
|
||||
Es macht also durchaus Sinn, das als eine Einheit zu betrachten.
|
||||
</p>
|
||||
<p>
|
||||
|
||||
</p>
|
||||
<p>
|
||||
Sollte sich dagegen <i>längerfristig</i> herausstellen, daß diese Prelude/Coda-Struktur sinnfrei bleibt,
|
||||
</p>
|
||||
<p>
|
||||
dann wäre ein dediziertes Feld für das fixierte Track-Präfix wohl besser
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1560618427589" ID="ID_713762696" MODIFIED="1560618436168" TEXT="wer generiert diese Info?">
|
||||
<node CREATED="1560618449106" ID="ID_450355502" MODIFIED="1560618479666" TEXT="undurchdringbar verworren">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -20632,9 +20668,56 @@
|
|||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1555084648375" ID="ID_483631091" MODIFIED="1557498707229" TEXT="organisiert das Struktur-Profil">
|
||||
<node CREATED="1560618609627" ID="ID_506564995" MODIFIED="1560618618079" TEXT="benötigt ein Struktur-Profil der Spuren">
|
||||
<node CREATED="1555084648375" ID="ID_483631091" MODIFIED="1560618638500" TEXT="was ist dieses TrackProfil?">
|
||||
<arrowlink COLOR="#2e66db" DESTINATION="ID_1659558780" ENDARROW="Default" ENDINCLINATION="-889;0;" ID="Arrow_ID_1691760775" STARTARROW="None" STARTINCLINATION="828;0;"/>
|
||||
</node>
|
||||
<node CREATED="1560618654038" ID="ID_1561447255" MODIFIED="1560618660841" TEXT="wie wird es aufgebaut?">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1560618662829" ID="ID_799744277" MODIFIED="1560618668613" TEXT="Rahmen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1560619599886" ID="ID_1652576901" MODIFIED="1560619609798" TEXT="Problem: Fixierte Overview-Ruler">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1560619612613" ID="ID_1255750107" MODIFIED="1560619622751" TEXT="die sind etwas Globales"/>
|
||||
<node CREATED="1560619623251" ID="ID_1890187732" MODIFIED="1560619628318" TEXT="aber die Info liegt nur indirekt vor">
|
||||
<node CREATED="1560619663110" ID="ID_994568218" MODIFIED="1560619675632" TEXT="die Ruler des top-level-TrackBody"/>
|
||||
<node CREATED="1560619676228" ID="ID_1236432450" MODIFIED="1560619685013" TEXT="genauer: die Anzahl dieser Ruler"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1560618669419" ID="ID_930843555" MODIFIED="1560618693061" TEXT="Inhalt: durch Traversieren...">
|
||||
<node CREATED="1560618694269" ID="ID_1133842596" MODIFIED="1560618694932" TEXT="der TrackBody-Struktur"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1560618715494" ID="ID_453891028" MODIFIED="1560618729609" TEXT="wer verwaltet das TrackProfil?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1560618780573" ID="ID_1295221704" MODIFIED="1560619724431" TEXT="naheliegend: das BodyCanvasWidget selber">
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1560618821911" ID="ID_1127517536" MODIFIED="1560619559162" TEXT="muß aber irgendwie an die TrackBody-Struktur delegiert werden">
|
||||
<linktarget COLOR="#297bdb" DESTINATION="ID_1127517536" ENDARROW="Default" ENDINCLINATION="118;0;" ID="Arrow_ID_1683662279" SOURCE="ID_2106254" STARTARROW="Default" STARTINCLINATION="118;0;"/>
|
||||
<icon BUILTIN="forward"/>
|
||||
</node>
|
||||
<node CREATED="1560618895535" ID="ID_1309792012" MODIFIED="1560618913282" TEXT="jedes Struktur-Update muß das Profil neu generieren">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1560618799458" ID="ID_1264363118" MODIFIED="1560618820650" TEXT="führt zu einem Gestrüpp der Abhängigkeiten">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1560619493205" ID="ID_630720873" MODIFIED="1560619542216" TEXT="logisch würde es irgendwie zum Layout passen">
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node CREATED="1560619504005" ID="ID_342347780" MODIFIED="1560619513182" TEXT="aber das Layout hat nicht die notwendigen Infos"/>
|
||||
<node CREATED="1560619513934" ID="ID_2106254" MODIFIED="1560619564904" TEXT="praktisch alle Infos sind in der TrackBody-Struktur">
|
||||
<arrowlink COLOR="#297bdb" DESTINATION="ID_1127517536" ENDARROW="Default" ENDINCLINATION="118;0;" ID="Arrow_ID_1683662279" STARTARROW="Default" STARTINCLINATION="118;0;"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1560627625383" ID="ID_269248332" MODIFIED="1560627650483" TEXT="noch nicht recht glücklich mit dieser Lösung....">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1560627658092" ID="ID_624999649" MODIFIED="1560627749713" TEXT="wo bleibt der Display Evaluation Pass?">
|
||||
<arrowlink COLOR="#921d48" DESTINATION="ID_191170582" ENDARROW="Default" ENDINCLINATION="1918;0;" ID="Arrow_ID_982561049" STARTARROW="None" STARTINCLINATION="185;0;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1540641317386" ID="ID_151954769" MODIFIED="1557498707229" 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;"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue