Timeline: better save the number of pinned elements as dedicated field
...within the Profile object, instead of sneaking this info into the prelude verb
This commit is contained in:
parent
ec50407167
commit
713178aecd
4 changed files with 63 additions and 62 deletions
|
|
@ -89,12 +89,9 @@ namespace timeline {
|
||||||
|
|
||||||
|
|
||||||
/** paint the top of the track body area
|
/** paint the top of the track body area
|
||||||
* @param f number of consecutive track elements
|
|
||||||
* to keep pinned (always visible) at top
|
|
||||||
* @todo argument doesn't belong here
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
prelude (uint) override
|
prelude() override
|
||||||
{
|
{
|
||||||
int topMargin = style_->get_margin().get_top();
|
int topMargin = style_->get_margin().get_top();
|
||||||
style_->render_background (cox_
|
style_->render_background (cox_
|
||||||
|
|
@ -190,12 +187,9 @@ namespace timeline {
|
||||||
|
|
||||||
|
|
||||||
/** overlays to show at top of the track body area
|
/** overlays to show at top of the track body area
|
||||||
* @param f number of consecutive track elements
|
|
||||||
* to keep pinned (always visible) at top
|
|
||||||
* @todo argument doesn't belong here
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
prelude (uint) override
|
prelude() override
|
||||||
{
|
{
|
||||||
/* nothing to paint */
|
/* nothing to paint */
|
||||||
line_ += style_->get_margin().get_top();
|
line_ += style_->get_margin().get_top();
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,14 @@ namespace timeline {
|
||||||
{
|
{
|
||||||
bool topLevel = isnil (profile);
|
bool topLevel = isnil (profile);
|
||||||
if (topLevel)
|
if (topLevel)
|
||||||
profile.append_prelude (rulers_.size());
|
{
|
||||||
|
// global setup for the profile
|
||||||
|
profile.append_prelude();
|
||||||
|
|
||||||
|
// Profile elements are always visible on top:
|
||||||
|
// Top-level rules and one additionally for the prelude
|
||||||
|
profile.pinnedPrefixCnt = 1 + rulers_.size();
|
||||||
|
}
|
||||||
|
|
||||||
for (auto& ruler : rulers_)
|
for (auto& ruler : rulers_)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -68,8 +68,8 @@ namespace timeline {
|
||||||
virtual void content(uint h) =0; ///< represent a content area with the given vertical extension
|
virtual void content(uint h) =0; ///< represent a content area with the given vertical extension
|
||||||
virtual void open() =0; ///< indicate entering a nested structure, typically as 3D inset
|
virtual void open() =0; ///< indicate entering a nested structure, typically as 3D inset
|
||||||
virtual void close(uint n) =0; ///< indicate the end of `n` nested structures, typically by ascending back `n` levels
|
virtual void close(uint n) =0; ///< indicate the end of `n` nested structures, typically by ascending back `n` levels
|
||||||
virtual void prelude(uint f) =0; ///< start track presentation at top of the timeline, with `f` pinned (always visible) elements @todo argument doesn't belong here
|
virtual void prelude() =0; ///< start the track presentation at top of the timeline
|
||||||
virtual void coda(uint pad) =0; ///< the closing part of the timeline at the bottom of the track display, with `pad` additional padding
|
virtual void coda(uint pad) =0; ///< closing part of the timeline below track display, with `pad` additional padding
|
||||||
|
|
||||||
static const size_t MAX_ARG_SIZE = sizeof(size_t);
|
static const size_t MAX_ARG_SIZE = sizeof(size_t);
|
||||||
};
|
};
|
||||||
|
|
@ -91,6 +91,8 @@ namespace timeline {
|
||||||
|
|
||||||
Elements elements;
|
Elements elements;
|
||||||
|
|
||||||
|
uint pinnedPrefixCnt = 0;
|
||||||
|
|
||||||
// default constructible, standard copy operations
|
// default constructible, standard copy operations
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
|
@ -158,13 +160,6 @@ namespace timeline {
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool
|
|
||||||
firstEntryIs (Literal expectedToken)
|
|
||||||
{
|
|
||||||
return not isnil(elements)
|
|
||||||
and elements.front()->getID() == expectedToken;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
lastEntryIs (Literal expectedToken)
|
lastEntryIs (Literal expectedToken)
|
||||||
{
|
{
|
||||||
|
|
@ -181,12 +176,6 @@ namespace timeline {
|
||||||
++ slopeDepth;
|
++ slopeDepth;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
getPinnedPrefixCnt()
|
|
||||||
{
|
|
||||||
return firstEntryIs("prelude")? elements.front().accessArg<uint>() : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto
|
auto
|
||||||
filterSegment(bool selectPrefixPart)
|
filterSegment(bool selectPrefixPart)
|
||||||
{
|
{
|
||||||
|
|
@ -205,7 +194,7 @@ namespace timeline {
|
||||||
|
|
||||||
|
|
||||||
return lib::treeExplore(elements)
|
return lib::treeExplore(elements)
|
||||||
.filter(CountingFilter{getPinnedPrefixCnt(), selectPrefixPart});
|
.filter(CountingFilter{pinnedPrefixCnt, selectPrefixPart});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20872,35 +20872,24 @@
|
||||||
<node CREATED="1560612790659" ID="ID_977261236" MODIFIED="1560612827353" STYLE="fork" TEXT="und für die up-Slope habe ich einen solchen Zugriff auch akzeptabel befunden">
|
<node CREATED="1560612790659" ID="ID_977261236" MODIFIED="1560612827353" STYLE="fork" TEXT="und für die up-Slope habe ich einen solchen Zugriff auch akzeptabel befunden">
|
||||||
<icon BUILTIN="smiley-neutral"/>
|
<icon BUILTIN="smiley-neutral"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1560612863371" FOLDED="true" ID="ID_161592739" MODIFIED="1561827482929" TEXT="alternativ könnte man ein Feld im Profil selber machen">
|
<node CREATED="1560612863371" FOLDED="true" ID="ID_161592739" MODIFIED="1563141484962" TEXT="alternativ könnte man ein Feld im Profil selber machen">
|
||||||
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||||
<node CREATED="1560612942381" ID="ID_1967930581" MODIFIED="1560612949943" TEXT="und das wäre etwa die gleiche Menge Code"/>
|
<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 CREATED="1560612951033" ID="ID_850127059" MODIFIED="1560612963343" TEXT="und auch etwa gleichermaßen lesbar"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1560613101287" ID="ID_4285270" MODIFIED="1563118082873" TEXT="Beschluß: sofern die Prelude/Coda-Stukur da ist, kann man sie auch so nutzen">
|
<node CREATED="1560613101287" ID="ID_4285270" MODIFIED="1563141611597" TEXT="einen Monat später fand ich dann doch ein dediziertes Feld im Profil-Objekt besser">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
weil genau an der Stelle, an der diese Klammer erzeugt wird, auch diese Info über die Präfix-Tracks angelegt werden muß.
|
...ist klarer, und erlaubt nebenbei auch noch, zwei Methoden einzusparen
|
||||||
</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>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html></richcontent>
|
</html>
|
||||||
<linktarget COLOR="#304ed9" DESTINATION="ID_4285270" ENDARROW="Default" ENDINCLINATION="751;409;" ID="Arrow_ID_1197384474" SOURCE="ID_189142395" STARTARROW="None" STARTINCLINATION="603;0;"/>
|
</richcontent>
|
||||||
|
<linktarget COLOR="#304ed9" DESTINATION="ID_4285270" ENDARROW="None" ENDINCLINATION="751;409;" ID="Arrow_ID_1197384474" SOURCE="ID_189142395" STARTARROW="Default" STARTINCLINATION="603;0;"/>
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
|
|
@ -20960,9 +20949,9 @@
|
||||||
</html></richcontent>
|
</html></richcontent>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563118329642" ID="ID_337327442" MODIFIED="1563118375106" TEXT="Denkfehler: prelude() muß mitgezählt werden">
|
<node COLOR="#338800" CREATED="1563118329642" ID="ID_337327442" MODIFIED="1563141708284" TEXT="Denkfehler: prelude() muß mitgezählt werden">
|
||||||
<linktarget COLOR="#d7476c" DESTINATION="ID_337327442" ENDARROW="Default" ENDINCLINATION="523;0;" ID="Arrow_ID_376180455" SOURCE="ID_1599825097" STARTARROW="Default" STARTINCLINATION="1063;0;"/>
|
<linktarget COLOR="#25e58e" DESTINATION="ID_337327442" ENDARROW="Default" ENDINCLINATION="523;0;" ID="Arrow_ID_376180455" SOURCE="ID_1599825097" STARTARROW="Default" STARTINCLINATION="1063;0;"/>
|
||||||
<icon BUILTIN="flag-yellow"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
|
|
@ -21996,36 +21985,58 @@
|
||||||
<linktarget COLOR="#44437f" DESTINATION="ID_1017084418" ENDARROW="Default" ENDINCLINATION="1682;-201;" ID="Arrow_ID_187242024" SOURCE="ID_1267787629" STARTARROW="None" STARTINCLINATION="1913;158;"/>
|
<linktarget COLOR="#44437f" DESTINATION="ID_1017084418" ENDARROW="Default" ENDINCLINATION="1682;-201;" ID="Arrow_ID_187242024" SOURCE="ID_1267787629" STARTARROW="None" STARTINCLINATION="1913;158;"/>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563117568795" ID="ID_1179051544" MODIFIED="1563117587278" TEXT="Unterscheidung realisieren">
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563117568795" ID="ID_1179051544" MODIFIED="1563117587278" TEXT="Unterscheidung realisieren">
|
||||||
<icon BUILTIN="pencil"/>
|
<icon BUILTIN="pencil"/>
|
||||||
<node CREATED="1563117596397" ID="ID_925319859" MODIFIED="1563117602323" TEXT="pinned-elements">
|
<node COLOR="#435e98" CREATED="1563117596397" ID="ID_925319859" MODIFIED="1563141882354" TEXT="pinned-elements...">
|
||||||
<node CREATED="1563117603629" ID="ID_760190185" MODIFIED="1563117609774" TEXT="im prelude()-Verb">
|
<node COLOR="#338800" CREATED="1563117655125" FOLDED="true" ID="ID_764471994" MODIFIED="1563141879178" TEXT="in das Profil speichern">
|
||||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1563117613147" ID="ID_1413963999" MODIFIED="1563117625089" TEXT="keine Gute Idee">
|
<icon BUILTIN="button_ok"/>
|
||||||
|
<node CREATED="1563117603629" ID="ID_760190185" MODIFIED="1563141837891" TEXT="war im prelude()-Verb">
|
||||||
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||||
|
<icon BUILTIN="info"/>
|
||||||
|
<node CREATED="1563117613147" ID="ID_1413963999" MODIFIED="1563141844997" TEXT="keine Gute Idee">
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563117630103" ID="ID_251975498" MODIFIED="1563117644348" TEXT="sollte in ein Objekt-Feld im Profil">
|
<node COLOR="#435e98" CREATED="1563117630103" ID="ID_251975498" MODIFIED="1563141856315" TEXT="sollte in ein Objekt-Feld im Profil"/>
|
||||||
<icon BUILTIN="bell"/>
|
|
||||||
</node>
|
</node>
|
||||||
</node>
|
|
||||||
<node CREATED="1563117655125" ID="ID_764471994" MODIFIED="1563118116587" TEXT="in das Profil speichern">
|
|
||||||
<icon BUILTIN="hourglass"/>
|
|
||||||
<node CREATED="1563118014245" ID="ID_336436751" MODIFIED="1563118086917" TEXT="ja...nein...ja...??">
|
<node CREATED="1563118014245" ID="ID_336436751" MODIFIED="1563118086917" TEXT="ja...nein...ja...??">
|
||||||
<icon BUILTIN="smiley-angry"/>
|
<icon BUILTIN="smiley-angry"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1563118023721" ID="ID_189142395" MODIFIED="1563118124539" TEXT="hatte da vor 1 Monat schon mal darüber nachgedacht">
|
<node CREATED="1563118023721" ID="ID_189142395" MODIFIED="1563141663430" TEXT="hatte da vor 1 Monat schon mal darüber nachgedacht">
|
||||||
<arrowlink COLOR="#304ed9" DESTINATION="ID_4285270" ENDARROW="Default" ENDINCLINATION="751;409;" ID="Arrow_ID_1197384474" STARTARROW="None" STARTINCLINATION="603;0;"/>
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
und seinerzeit beschlossen, es vorerst im prelude() zu belassen...
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<arrowlink COLOR="#304ed9" DESTINATION="ID_4285270" ENDARROW="None" ENDINCLINATION="751;409;" ID="Arrow_ID_1197384474" STARTARROW="Default" STARTINCLINATION="603;0;"/>
|
||||||
<icon BUILTIN="stop-sign"/>
|
<icon BUILTIN="stop-sign"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1563118092858" ID="ID_1331508927" MODIFIED="1563118108338" TEXT="und beschlossen, es vorerst im prelude() zu belassen">
|
<node COLOR="#435e98" CREATED="1563118092858" ID="ID_1331508927" MODIFIED="1563141685957" TEXT="jetzt doch ein separates, Feld -- ist doch sauberer">
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563117670147" ID="ID_1912884721" MODIFIED="1563117681947" TEXT="Filter realisieren">
|
<node COLOR="#338800" CREATED="1563117670147" ID="ID_1912884721" MODIFIED="1563141879178" TEXT="Filter realisieren">
|
||||||
<icon BUILTIN="pencil"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node COLOR="#338800" CREATED="1563117686001" ID="ID_698759785" MODIFIED="1563117694625" TEXT="prefix-Filter implementiert">
|
<node COLOR="#338800" CREATED="1563117686001" ID="ID_698759785" MODIFIED="1563141879178" TEXT="prefix-Filter implementiert">
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563117696328" ID="ID_1599825097" MODIFIED="1563118375105" TEXT="Konzeptioneller Fehler beim Zählen">
|
<node COLOR="#338800" CREATED="1563117696328" ID="ID_1599825097" MODIFIED="1563141879178" TEXT="Konzeptioneller Fehler beim Zählen gefixt">
|
||||||
<arrowlink COLOR="#d7476c" DESTINATION="ID_337327442" ENDARROW="Default" ENDINCLINATION="523;0;" ID="Arrow_ID_376180455" STARTARROW="Default" STARTINCLINATION="1063;0;"/>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<icon BUILTIN="flag-yellow"/>
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
nicht nur die Ruler, auch das Prelude selber ist ein solches gePinntes Element (selbst wenn es leer ist)
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<arrowlink COLOR="#25e58e" DESTINATION="ID_337327442" ENDARROW="Default" ENDINCLINATION="523;0;" ID="Arrow_ID_376180455" STARTARROW="Default" STARTINCLINATION="1063;0;"/>
|
||||||
|
<icon BUILTIN="button_ok"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue