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
|
||||
* @param f number of consecutive track elements
|
||||
* to keep pinned (always visible) at top
|
||||
* @todo argument doesn't belong here
|
||||
*/
|
||||
void
|
||||
prelude (uint) override
|
||||
prelude() override
|
||||
{
|
||||
int topMargin = style_->get_margin().get_top();
|
||||
style_->render_background (cox_
|
||||
|
|
@ -190,12 +187,9 @@ namespace timeline {
|
|||
|
||||
|
||||
/** 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
|
||||
prelude (uint) override
|
||||
prelude() override
|
||||
{
|
||||
/* nothing to paint */
|
||||
line_ += style_->get_margin().get_top();
|
||||
|
|
|
|||
|
|
@ -131,7 +131,14 @@ namespace timeline {
|
|||
{
|
||||
bool topLevel = isnil (profile);
|
||||
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_)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -68,8 +68,8 @@ namespace timeline {
|
|||
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 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 coda(uint pad) =0; ///< the closing part of the timeline at the bottom of the track display, with `pad` additional padding
|
||||
virtual void prelude() =0; ///< start the track presentation at top of the timeline
|
||||
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);
|
||||
};
|
||||
|
|
@ -91,6 +91,8 @@ namespace timeline {
|
|||
|
||||
Elements elements;
|
||||
|
||||
uint pinnedPrefixCnt = 0;
|
||||
|
||||
// default constructible, standard copy operations
|
||||
|
||||
bool
|
||||
|
|
@ -158,13 +160,6 @@ namespace timeline {
|
|||
}
|
||||
|
||||
private:
|
||||
bool
|
||||
firstEntryIs (Literal expectedToken)
|
||||
{
|
||||
return not isnil(elements)
|
||||
and elements.front()->getID() == expectedToken;
|
||||
}
|
||||
|
||||
bool
|
||||
lastEntryIs (Literal expectedToken)
|
||||
{
|
||||
|
|
@ -181,12 +176,6 @@ namespace timeline {
|
|||
++ slopeDepth;
|
||||
}
|
||||
|
||||
int
|
||||
getPinnedPrefixCnt()
|
||||
{
|
||||
return firstEntryIs("prelude")? elements.front().accessArg<uint>() : 0;
|
||||
}
|
||||
|
||||
auto
|
||||
filterSegment(bool selectPrefixPart)
|
||||
{
|
||||
|
|
@ -205,7 +194,7 @@ namespace timeline {
|
|||
|
||||
|
||||
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">
|
||||
<icon BUILTIN="smiley-neutral"/>
|
||||
</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"/>
|
||||
<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="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>
|
||||
<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
|
||||
...ist klarer, und erlaubt nebenbei auch noch, zwei Methoden einzusparen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<linktarget COLOR="#304ed9" DESTINATION="ID_4285270" ENDARROW="Default" ENDINCLINATION="751;409;" ID="Arrow_ID_1197384474" SOURCE="ID_189142395" STARTARROW="None" STARTINCLINATION="603;0;"/>
|
||||
</html>
|
||||
</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"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -20960,9 +20949,9 @@
|
|||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563118329642" ID="ID_337327442" MODIFIED="1563118375106" 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;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1563118329642" ID="ID_337327442" MODIFIED="1563141708284" TEXT="Denkfehler: prelude() muß mitgezählt werden">
|
||||
<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="button_ok"/>
|
||||
</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;"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563117568795" ID="ID_1179051544" MODIFIED="1563117587278" TEXT="Unterscheidung realisieren">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1563117596397" ID="ID_925319859" MODIFIED="1563117602323" TEXT="pinned-elements">
|
||||
<node CREATED="1563117603629" ID="ID_760190185" MODIFIED="1563117609774" TEXT="im prelude()-Verb">
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1563117613147" ID="ID_1413963999" MODIFIED="1563117625089" TEXT="keine Gute Idee">
|
||||
<node COLOR="#435e98" CREATED="1563117596397" ID="ID_925319859" MODIFIED="1563141882354" TEXT="pinned-elements...">
|
||||
<node COLOR="#338800" CREATED="1563117655125" FOLDED="true" ID="ID_764471994" MODIFIED="1563141879178" TEXT="in das Profil speichern">
|
||||
<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"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563117630103" ID="ID_251975498" MODIFIED="1563117644348" TEXT="sollte in ein Objekt-Feld im Profil">
|
||||
<icon BUILTIN="bell"/>
|
||||
<node COLOR="#435e98" CREATED="1563117630103" ID="ID_251975498" MODIFIED="1563141856315" TEXT="sollte in ein Objekt-Feld im Profil"/>
|
||||
</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...??">
|
||||
<icon BUILTIN="smiley-angry"/>
|
||||
</node>
|
||||
<node CREATED="1563118023721" ID="ID_189142395" MODIFIED="1563118124539" 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;"/>
|
||||
<node CREATED="1563118023721" ID="ID_189142395" MODIFIED="1563141663430" TEXT="hatte da vor 1 Monat schon mal darüber nachgedacht">
|
||||
<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"/>
|
||||
</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"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563117670147" ID="ID_1912884721" MODIFIED="1563117681947" TEXT="Filter realisieren">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1563117686001" ID="ID_698759785" MODIFIED="1563117694625" TEXT="prefix-Filter implementiert">
|
||||
<node COLOR="#338800" CREATED="1563117670147" ID="ID_1912884721" MODIFIED="1563141879178" TEXT="Filter realisieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1563117686001" ID="ID_698759785" MODIFIED="1563141879178" TEXT="prefix-Filter implementiert">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563117696328" ID="ID_1599825097" MODIFIED="1563118375105" TEXT="Konzeptioneller Fehler beim Zählen">
|
||||
<arrowlink COLOR="#d7476c" DESTINATION="ID_337327442" ENDARROW="Default" ENDINCLINATION="523;0;" ID="Arrow_ID_376180455" STARTARROW="Default" STARTINCLINATION="1063;0;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1563117696328" ID="ID_1599825097" MODIFIED="1563141879178" TEXT="Konzeptioneller Fehler beim Zählen gefixt">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<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>
|
||||
|
|
|
|||
Loading…
Reference in a new issue