Timeline: solve basic layout issue by properly calculating the height
As it turns out, we need to take the actual allocation of the cells within the grid explicitly into account: combined cells will report their extension for each of the underlying cells, thus leading to excessively overestimated measurements. So we now calculate the overall height based on the actual structure - first row holds the label - left column below used as expander - right column holds individual content Remaining problems: - height of ruler canvas at top not taken into account (11px in this example) - start of sub-track headers not synchronised with start of sub-tracks in the body area
This commit is contained in:
parent
4887194589
commit
b38481fa89
4 changed files with 228 additions and 113 deletions
|
|
@ -68,6 +68,7 @@ namespace timeline {
|
|||
: Gtk::Grid{}
|
||||
, nameTODO_{"?"}
|
||||
, treeTODO_{"↳"}
|
||||
, padding_{}
|
||||
, headCtrl_{}
|
||||
, childCnt_{0}
|
||||
{
|
||||
|
|
@ -78,9 +79,10 @@ namespace timeline {
|
|||
headCtrl_.set_valign(Gtk::Align::ALIGN_CENTER);
|
||||
headCtrl_.set_halign(Gtk::Align::ALIGN_FILL);
|
||||
this->attach (nameTODO_, 0,0, 2,1);
|
||||
this->attach (treeTODO_, 0,1, 1,1);
|
||||
attachDirectContent();
|
||||
this->property_expand() = false; // do not expand to fill
|
||||
this->attach (treeTODO_, 0,1, 1,2);
|
||||
this->attach (headCtrl_, 1,1, 1,1); // corresponds to direct content
|
||||
this->attach (padding_, 1,2, 1,1);// used to sync with sub-track display
|
||||
this->property_expand() = false; // do not expand to fill
|
||||
this->show_all();
|
||||
}
|
||||
|
||||
|
|
@ -113,68 +115,52 @@ namespace timeline {
|
|||
return max (0, max (actual, natural));
|
||||
}
|
||||
|
||||
/**
|
||||
* @remark the cell(1,1) is guaranteed to exist;
|
||||
* if childCnt_ == 0, it holds the direct content control area
|
||||
*/
|
||||
uint
|
||||
TrackHeadWidget::calcContentHeight() const
|
||||
TrackHeadWidget::getOverallHeight() const
|
||||
{
|
||||
uint heightSum = 0;
|
||||
for (uint line=1; line <= max(1u, childCnt_); ++line)
|
||||
{
|
||||
int h = getHeightAt (1,line);
|
||||
heightSum += max (0,h);
|
||||
}
|
||||
return heightSum;
|
||||
}
|
||||
|
||||
uint
|
||||
TrackHeadWidget::calcOverallHeight() const
|
||||
{
|
||||
uint heightSum = 0;
|
||||
for (uint line=0; line <= max(1u, childCnt_); ++line)
|
||||
{
|
||||
uint heightSum{0};
|
||||
for (uint line=1; line <= 2u + childCnt_; ++line)
|
||||
{/////////////////////////////////////////////TODO
|
||||
int h1 = getHeightAt (0,line);
|
||||
int h2 = getHeightAt (1,line);
|
||||
|
||||
heightSum += max (0, max (h1,h2));
|
||||
}
|
||||
return heightSum;
|
||||
////////////////////////////////////////////////////TODO
|
||||
cout<<"|o| cH(line="<<line<<") += ("<<h1<<","<<h2<<")"<<endl;
|
||||
////////////////////////////////////////////////////TODO
|
||||
heightSum += getHeightAt (1,line);
|
||||
}/////////////////////////////////////////////TODO
|
||||
heightSum = max (heightSum, getExpansionHeight());
|
||||
return heightSum + getLabelHeight();
|
||||
}
|
||||
|
||||
void
|
||||
TrackHeadWidget::enforceHeightAt(int left, int top, uint height)
|
||||
{
|
||||
uint hvor = getOverallHeight();
|
||||
uint h = getHeightAt (left,top);
|
||||
int reqW, reqH, reqHn;
|
||||
auto* cell = this->get_child_at(left,top);
|
||||
REQUIRE (cell);
|
||||
cell->get_size_request (reqW, reqH);
|
||||
cell->set_size_request (-1, height);
|
||||
uint hnach = getOverallHeight();
|
||||
cell->get_size_request (reqW, reqHn);
|
||||
cout<<"|+| Head:inc ("<<left<<","<<top<<") h="<<h<<" ⟶ "<<height<<" vor:"<<hvor<<" nach:"<<hnach<<" (c:"<<reqH<<"⟶"<<reqHn<<")"<<endl;
|
||||
}
|
||||
|
||||
void
|
||||
TrackHeadWidget::accommodateContentHeight(uint contentHeight)
|
||||
{
|
||||
uint localHeight = calcContentHeight();
|
||||
uint localHeight = getContentHeight();
|
||||
if (contentHeight > localHeight)
|
||||
increaseContentHeight (contentHeight-localHeight);
|
||||
}
|
||||
|
||||
/** apply the Δ to the »content area« (4th quadrant) */
|
||||
void
|
||||
TrackHeadWidget::increaseContentHeight(uint delta)
|
||||
{
|
||||
increaseHeightAt (1,1, delta);
|
||||
}
|
||||
|
||||
/** increase the general vertical spread by the given Δ */
|
||||
void
|
||||
TrackHeadWidget::increaseExpansionHeight(uint delta)
|
||||
{
|
||||
increaseHeightAt (0,1, delta);
|
||||
enforceContentHeight (contentHeight);
|
||||
}
|
||||
|
||||
void
|
||||
TrackHeadWidget::increaseHeightAt(int left, int top, uint delta)
|
||||
TrackHeadWidget::accommodateOverallHeight(uint overallHeight)
|
||||
{
|
||||
uint hvor = calcOverallHeight();
|
||||
auto* cell = this->get_child_at(left,top);
|
||||
REQUIRE (cell);
|
||||
uint h = getHeightAt (left,top);
|
||||
cell->set_size_request (-1, h+delta);
|
||||
uint hnach = calcOverallHeight();
|
||||
cout<<"|+| Head:inc ("<<left<<","<<top<<") h="<<h<<" Δ="<<delta<<" vor:"<<hvor<<" nach:"<<hnach<<endl;
|
||||
uint localHeight = getOverallHeight();
|
||||
if (overallHeight > localHeight)
|
||||
enforceExpansionHeight (overallHeight - getLabelHeight());
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -184,23 +170,26 @@ cout<<"|+| Head:inc ("<<left<<","<<top<<") h="<<h<<" Δ="<<delta<<" vor:"<<hvor<
|
|||
* video editing software does -- rather, each sequence holds a _fork of nested scopes._
|
||||
* This recursively nested structure is reflected in the patchbay area corresponding to
|
||||
* each track in the _header pane_ of the timeline display, located to the left. The
|
||||
* patchbay for each track is a grid with initially four quadrants, and the 4th quadrant
|
||||
* corresponds to the _content area_ of the track itself, and will hold the controls for
|
||||
* the scope, i.e. the track _together with all nested sub-tracks._ Additional sub-Tracks
|
||||
* are added as additional lines to the grid, while deeper nested sub-Tracks will be
|
||||
* handled by the corresponding nested TrackHeadWidget. The column to the left side
|
||||
* will be increased accordingly to display the nested fork structure.
|
||||
* patchbay for each track is a grid with initially three rows:
|
||||
* - a row holding the Track Header label and menu (actually an \ref ElementBoxWidget)
|
||||
* - a row corresponding to the _content area_ of the track itself, to hold the controls
|
||||
* for this track's scope, i.e. the track _together with all nested sub-tracks._
|
||||
* - a padding row to help synchronising track head and track body display. Additional
|
||||
* sub-Tracks are added as additional lines to the grid, while deeper nested sub-Tracks
|
||||
* will be handled by the corresponding nested TrackHeadWidget. The column to the
|
||||
* left side will be increased accordingly to display the nested fork structure.
|
||||
* @note Child tracks are always appended. When tracks are reordered or deleted,
|
||||
* the whole structure has to be re-built accordingly.
|
||||
*/
|
||||
void
|
||||
TrackHeadWidget::attachSubFork (TrackHeadWidget& subForkHead)
|
||||
{
|
||||
++childCnt_; // left,top
|
||||
Gtk::Grid::attach (subForkHead, 1, 1+childCnt_, 1,1);
|
||||
++childCnt_;
|
||||
uint act = 2 + childCnt_; // left,top
|
||||
Gtk::Grid::attach (subForkHead, 1, act, 1,1);
|
||||
// expand the structure display column....
|
||||
Gtk::Grid::remove (treeTODO_); // width,height
|
||||
Gtk::Grid::attach (treeTODO_, 0,1, 1, 1+childCnt_);
|
||||
Gtk::Grid::remove (treeTODO_); // width,height
|
||||
Gtk::Grid::attach (treeTODO_, 0,1, 1, act);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -217,10 +206,11 @@ cout<<"|+| Head:inc ("<<left<<","<<top<<") h="<<h<<" Δ="<<delta<<" vor:"<<hvor<
|
|||
TrackHeadWidget::detachSubFork (TrackHeadWidget& subForkHead)
|
||||
{
|
||||
--childCnt_;
|
||||
uint act = 2 + childCnt_;
|
||||
Gtk::Grid::remove (subForkHead);
|
||||
// reduce the structure display column....
|
||||
Gtk::Grid::remove (treeTODO_); // width,height
|
||||
Gtk::Grid::attach (treeTODO_, 0,1, 1, 1+childCnt_);
|
||||
Gtk::Grid::remove (treeTODO_);
|
||||
Gtk::Grid::attach (treeTODO_, 0,1, 1,act);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -234,28 +224,7 @@ cout<<"|+| Head:inc ("<<left<<","<<top<<") h="<<h<<" Δ="<<delta<<" vor:"<<hvor<
|
|||
Gtk::Grid::remove_row (childCnt_);
|
||||
--childCnt_;
|
||||
}
|
||||
Gtk::Grid::attach (treeTODO_, 0,1, 1,1);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @remark a _leaf track_ holds content immediately, and thus also
|
||||
* provides a head area with placement controls directly attached.
|
||||
* In all other cases, a nested TrackHeadWidget for the sub-fork
|
||||
* is installed
|
||||
*/
|
||||
void
|
||||
TrackHeadWidget::attachDirectContent()
|
||||
{
|
||||
headCtrl_.show();
|
||||
Gtk::Grid::attach(headCtrl_, 1,1, 1,1);
|
||||
}
|
||||
|
||||
void
|
||||
TrackHeadWidget::detachDirectContent()
|
||||
{
|
||||
Gtk::Grid::remove (headCtrl_);
|
||||
headCtrl_.hide();
|
||||
Gtk::Grid::attach (treeTODO_, 0,1, 1,2);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -85,6 +85,7 @@ namespace timeline {
|
|||
{
|
||||
Gtk::Label nameTODO_;
|
||||
Gtk::Label treeTODO_;
|
||||
Gtk::Box padding_;
|
||||
HeadControlArea headCtrl_;
|
||||
|
||||
uint childCnt_;
|
||||
|
|
@ -101,31 +102,41 @@ namespace timeline {
|
|||
|
||||
void setTrackName (cuString&);
|
||||
|
||||
uint calcContentHeight() const;
|
||||
uint calcOverallHeight() const;
|
||||
uint getContentHeight() const;
|
||||
uint getOverallHeight() const;
|
||||
|
||||
void accommodateContentHeight(uint);
|
||||
void increaseContentHeight(uint delta);
|
||||
void increaseExpansionHeight(uint delta);
|
||||
void increaseHeightAt(int left, int top, uint delta);
|
||||
void accommodateOverallHeight(uint);
|
||||
|
||||
private:/* ===== Internals ===== */
|
||||
|
||||
/** Integrate the control area for a nested sub track fork. */
|
||||
void attachSubFork (TrackHeadWidget& subForkHead);
|
||||
void detachSubFork (TrackHeadWidget& subForkHead);
|
||||
|
||||
/** activate the direct patchbay control container */
|
||||
void attachDirectContent();
|
||||
void detachDirectContent();
|
||||
|
||||
|
||||
/** Discard all nested sub track display widgets. */
|
||||
void clearFork();
|
||||
|
||||
/** get the height allocated at cell(x,y) */
|
||||
uint getHeightAt (int left, int top) const;
|
||||
|
||||
void enforceHeightAt(int left, int top, uint height);
|
||||
|
||||
uint getExpansionHeight() const { return getHeightAt (0,1); };
|
||||
uint getSyncPadHeight() const { return getHeightAt (1,2); };
|
||||
uint getLabelHeight() const { return getHeightAt (0,0); };
|
||||
|
||||
void enforceContentHeight (uint h){ enforceHeightAt (1,1, h); }
|
||||
void enforceExpansionHeight(uint h){ enforceHeightAt (0,1, h); }
|
||||
};
|
||||
|
||||
|
||||
/** @remark the cell(1,1) is guaranteed to exist; it may be empty,
|
||||
* or hold the placement controls for this track's scope. */
|
||||
inline uint
|
||||
TrackHeadWidget::getContentHeight() const
|
||||
{
|
||||
return getHeightAt (1,1);
|
||||
}
|
||||
|
||||
|
||||
}}// namespace stage::timeline
|
||||
|
|
|
|||
|
|
@ -467,12 +467,12 @@ namespace timeline {
|
|||
{
|
||||
return clip->determineRequiredVerticalExtension();
|
||||
}));
|
||||
auto headH = head_.calcContentHeight();/////////////////////////////////////////////////////////////////////TODO
|
||||
auto headH = head_.getContentHeight();/////////////////////////////////////////////////////////////////////TODO
|
||||
auto bodyH = maxVSize;
|
||||
maxVSize = max (maxVSize, headH);
|
||||
this->body_.accommodateContentHeight (maxVSize);
|
||||
this->head_.accommodateContentHeight (maxVSize);
|
||||
auto headN = head_.calcContentHeight();
|
||||
auto headN = head_.getContentHeight();
|
||||
auto bodyN = body_.DEBUGconH();
|
||||
cout<<"|*| establishExtension(clipH="<<bodyH<<" headH="<<headH<<" max="<<maxVSize<<" hN="<<headN<<" bN="<<bodyN<<" this(track)="<<this<<")"<<endl;
|
||||
}
|
||||
|
|
@ -511,14 +511,14 @@ cout<<"|*| establishExtension(clipH="<<bodyH<<" headH="<<headH<<" max="<<maxVSiz
|
|||
inline void
|
||||
DisplayFrame::sync_and_balance (DisplayEvaluation&)
|
||||
{
|
||||
uint headSize = head_.calcOverallHeight();
|
||||
uint headSize = head_.getOverallHeight();
|
||||
uint bodySize = body_.calcHeight();
|
||||
if (bodySize > headSize)
|
||||
if (bodySize > headSize)
|
||||
{//////////////////////////////////////////////////////TODO
|
||||
uint hcV = head_.calcContentHeight();
|
||||
head_.increaseExpansionHeight (bodySize-headSize);
|
||||
uint hN = head_.calcOverallHeight();
|
||||
uint hcN = head_.calcContentHeight();
|
||||
uint hcV = head_.getContentHeight();
|
||||
head_.accommodateOverallHeight (bodySize);
|
||||
uint hN = head_.getOverallHeight();
|
||||
uint hcN = head_.getContentHeight();
|
||||
cout<<"|+| syncBal: head="<<headSize<<" body="<<bodySize<<" Δ="<<bodySize-headSize<<" hN="<<hN<<"(c:"<<hcV<<"⟶"<<hcN<<")"<<endl;
|
||||
}//////////////////////////////////////////////////////TODO
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27764,10 +27764,33 @@
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1674161525129" ID="ID_1762683235" MODIFIED="1674163468109" TEXT="Grid-Zelle für die Placement-Controls vorsehen">
|
||||
<linktarget COLOR="#b1493c" DESTINATION="ID_1762683235" ENDARROW="Default" ENDINCLINATION="624;37;" ID="Arrow_ID_1560223761" SOURCE="ID_1332292119" STARTARROW="None" STARTINCLINATION="129;-6;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#435e98" CREATED="1674170380401" HGAP="36" ID="ID_600466568" MODIFIED="1674170473951" TEXT="sollte dann doch besser in eine eigene Zeile" VSHIFT="-3">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
wozu haben wir das Gtk::Grid
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1674170423490" HGAP="62" ID="ID_1552228594" MODIFIED="1674170479627" TEXT="ist immer Zelle (1,1) ⟹ für vertikale Content-Anpassung nutzen" VSHIFT="-9">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1563469608318" ID="ID_174979019" MODIFIED="1563469619520" TEXT="zusätzliche sub-Tracks resultieren in zusätzlichen Zeilen">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563469770472" ID="ID_1252550324" MODIFIED="1674163220678" TEXT="einfügen gemäß Zahl der Kind-Tracks">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1563469770472" ID="ID_1252550324" MODIFIED="1674170526467" TEXT="einfügen gemäß Zahl der Kind-Tracks">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1674170489677" ID="ID_1683231262" MODIFIED="1674170519062" TEXT="ab Zeile 2">
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1674170497184" ID="ID_904031404" MODIFIED="1674170560370" TEXT="jeweils auch den Platz für das Struktur-Diagramm mit anpassen">
|
||||
<arrowlink COLOR="#5ba7d5" DESTINATION="ID_478580800" ENDARROW="Default" ENDINCLINATION="358;-30;" ID="Arrow_ID_776518349" STARTARROW="None" STARTINCLINATION="-77;131;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1563469790905" ID="ID_1917094772" MODIFIED="1563469795921" TEXT="re-Konstruieren">
|
||||
<node CREATED="1563469797573" ID="ID_615107402" MODIFIED="1563469801027" TEXT="platt machen"/>
|
||||
|
|
@ -27779,11 +27802,9 @@
|
|||
<linktarget COLOR="#b74f6e" DESTINATION="ID_530086217" ENDARROW="Default" ENDINCLINATION="276;749;" ID="Arrow_ID_614998223" SOURCE="ID_1366095324" STARTARROW="None" STARTINCLINATION="644;37;"/>
|
||||
<linktarget COLOR="#f6e1c2" DESTINATION="ID_530086217" ENDARROW="Default" ENDINCLINATION="-366;30;" ID="Arrow_ID_694017211" SOURCE="ID_1463490313" STARTARROW="None" STARTINCLINATION="-2163;252;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563469686644" ID="ID_467394520" MODIFIED="1563469732788" TEXT="gar nicht wenn es nur einen Kind-Track gibt">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563469700651" ID="ID_478580800" MODIFIED="1674161457707" TEXT="auf die richtige Höhe zielen">
|
||||
<linktarget COLOR="#bf7897" DESTINATION="ID_478580800" ENDARROW="Default" ENDINCLINATION="451;41;" ID="Arrow_ID_513449931" SOURCE="ID_1311832889" STARTARROW="None" STARTINCLINATION="481;-27;"/>
|
||||
<linktarget COLOR="#5ba7d5" DESTINATION="ID_478580800" ENDARROW="Default" ENDINCLINATION="358;-30;" ID="Arrow_ID_776518349" SOURCE="ID_904031404" STARTARROW="None" STARTINCLINATION="-77;131;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1563469735149" ID="ID_704791408" MODIFIED="1563469741153" TEXT="Selection-State zeigen">
|
||||
|
|
@ -29181,8 +29202,8 @@
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582931260542" ID="ID_43972117" MODIFIED="1582931271486" TEXT="Thema: Koordinieren zwischen Header und Body">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1582931260542" ID="ID_43972117" MODIFIED="1674254416095" TEXT="Thema: Koordinieren zwischen Header und Body">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1582931486072" ID="ID_1623890878" MODIFIED="1582931599326" TEXT="Ausdehnung der Tracks">
|
||||
<arrowlink COLOR="#fe5b57" DESTINATION="ID_1920766923" ENDARROW="Default" ENDINCLINATION="595;0;" ID="Arrow_ID_1362710635" STARTARROW="Default" STARTINCLINATION="529;0;"/>
|
||||
<linktarget COLOR="#ea7967" DESTINATION="ID_1623890878" ENDARROW="Default" ENDINCLINATION="24;-87;" ID="Arrow_ID_809556626" SOURCE="ID_142948287" STARTARROW="None" STARTINCLINATION="119;11;"/>
|
||||
|
|
@ -29192,14 +29213,127 @@
|
|||
<arrowlink COLOR="#bf7897" DESTINATION="ID_478580800" ENDARROW="Default" ENDINCLINATION="451;41;" ID="Arrow_ID_513449931" STARTARROW="None" STARTINCLINATION="481;-27;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1674163294922" ID="ID_1332292119" LINK="#ID_1650195806" MODIFIED="1674163468109" TEXT="Probleme mit der vertikalen Koordination bei nested Tracks">
|
||||
<node COLOR="#435e98" CREATED="1674163294922" ID="ID_1332292119" LINK="#ID_1650195806" MODIFIED="1674254403617" TEXT="Probleme mit der vertikalen Koordination bei nested Tracks">
|
||||
<arrowlink COLOR="#b1493c" DESTINATION="ID_1762683235" ENDARROW="Default" ENDINCLINATION="624;37;" ID="Arrow_ID_1560223761" STARTARROW="None" STARTINCLINATION="129;-6;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node COLOR="#435e98" CREATED="1674174926441" FOLDED="true" ID="ID_896721694" MODIFIED="1674254493101" TEXT="Zweifel an der berechneten Höhe">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1674175196891" ID="ID_390658088" MODIFIED="1674175199729" TEXT="Body?">
|
||||
<node CREATED="1674175200596" ID="ID_1235875992" MODIFIED="1674175204768" TEXT="nachmessen per GIMP"/>
|
||||
<node CREATED="1674175205694" ID="ID_1007099807" MODIFIED="1674175218093" TEXT="es fehlt der Ruler-Canvas">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1674175219297" ID="ID_873831776" MODIFIED="1674175224981" TEXT="ansonsten sind die Werte exakt">
|
||||
<node CREATED="1674175226593" ID="ID_891434672" MODIFIED="1674175293596" TEXT="82 px für Root-Content + Slope-down"/>
|
||||
<node CREATED="1674175239335" ID="ID_108512900" MODIFIED="1674175288293" TEXT="164 für Root-content + Child-content + slope down+up"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1674176070056" ID="ID_743840121" MODIFIED="1674176073188" TEXT="Head">
|
||||
<node CREATED="1674176074535" ID="ID_39929710" MODIFIED="1674176094582" TEXT="das Gesamt-Grid wird zu groß ermittelt">
|
||||
<node CREATED="1674176096077" ID="ID_583910543" MODIFIED="1674176120813" TEXT="angeblich 164">
|
||||
<node CREATED="1674176756797" ID="ID_1711694466" MODIFIED="1674176762735" TEXT="berechnet als 14+68+82"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1674177671455" ID="ID_200566627" MODIFIED="1674254483689" TEXT="möglicherweise ist die kombinierte Spalte das Problem">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
|o| cH(line=0) += (14,14)
|
||||
</p>
|
||||
<p>
|
||||
|o| cH(line=1) += (68,12)
|
||||
</p>
|
||||
<p>
|
||||
|o| cH(line=2) += (68,82)
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<arrowlink COLOR="#2b91d0" DESTINATION="ID_1671254452" ENDARROW="Default" ENDINCLINATION="220;0;" ID="Arrow_ID_864210010" STARTARROW="None" STARTINCLINATION="-7;189;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1674177711595" ID="ID_926975812" MODIFIED="1674177719085" TEXT="14 = Höhe Label"/>
|
||||
<node CREATED="1674177720641" ID="ID_490298226" MODIFIED="1674177730988" TEXT="12 = Höhe Glühbirne (control)"/>
|
||||
<node CREATED="1674177737457" ID="ID_467766336" MODIFIED="1674177745813" TEXT="82 = Höhe nested Track-Head"/>
|
||||
<node CREATED="1674177887491" ID="ID_1629142103" MODIFIED="1674177906308" TEXT="68 = 40 + Δ=28"/>
|
||||
</node>
|
||||
<node CREATED="1674247115438" ID="ID_1557269606" MODIFIED="1674247168418" TEXT="tatsächlich zählen die kombinierten Spalten nur einmal">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1674247332612" ID="ID_421176912" MODIFIED="1674247406408" TEXT="14+12+82 = 108 sieht viel realistischer aus....">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...und das würde auch erklären, warum trotzdem die Zelle mit der Glühbirne (=die direkten Controls) <i>überhaupt nicht aufgespreitzt </i>wird
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#dbc5b3" COLOR="#ff0000" CREATED="1674247147690" ID="ID_428940289" MODIFIED="1674247211671" TEXT="⟹ der Ansatz mit dem Maximum pro Zeile ist nicht korrekt"/>
|
||||
</node>
|
||||
<node CREATED="1674176180377" ID="ID_154967424" MODIFIED="1674176210609" TEXT="visuell sehe ich nur 14+94 = 108"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1674247231512" ID="ID_704080657" MODIFIED="1674254386095" TEXT="Höhe im TrackHeadWidget korrekt messen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1674247251100" ID="ID_1501775447" MODIFIED="1674247278994" TEXT="nur die 2.Spalte insgesamt summieren">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1674247260807" ID="ID_1423273480" MODIFIED="1674247276378" TEXT="paßt gut zusammen mit dem End-Ausgleich in der 1.Spalte">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1674248099319" ID="ID_1685711239" MODIFIED="1674254383950" TEXT="aber zudem sicherstellen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1674248116285" ID="ID_1285555258" MODIFIED="1674254382320" TEXT="...daß das wirkliche Maximum gemessen wird">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
⟹ es muß das strukturell korrekte Maximum explizit berechnet werden; würden wir nur die rechte Spalte summieren, bliebe eine bereits bestehende Spreizung in der linken Spalte unberücksichtigt
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1674248127199" ID="ID_991058401" MODIFIED="1674254380528" TEXT="...daß die Struktur-Spalte auch wirklich auf Anschlag ist">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
⟹ aber auch das umgekehrte Szenario muß berücksichtigt werden: falls die Gesamthöhe von der Summe in der rechten Spalte dominiert wird, genügt es nicht, blindlings nur eine eigentlich kleinere linke Strukturspalte mit dem Δ zu beaufschlagen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1674254451385" ID="ID_1671254452" MODIFIED="1674254477841" TEXT="jetzt ist die Berechnung korrekt">
|
||||
<linktarget COLOR="#2b91d0" DESTINATION="ID_1671254452" ENDARROW="Default" ENDINCLINATION="220;0;" ID="Arrow_ID_864210010" SOURCE="ID_200566627" STARTARROW="None" STARTINCLINATION="-7;189;"/>
|
||||
<icon BUILTIN="forward"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1674172473327" ID="ID_1376269414" MODIFIED="1674172528937" TEXT="Beginn der nested-Tracks koordinieren">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1674172530639" ID="ID_1531517037" MODIFIED="1674172537538" TEXT="sie beginnen typischerweise zu früh"/>
|
||||
<node CREATED="1674172548813" ID="ID_53484260" MODIFIED="1674172558839" TEXT="Padding für die Content-Höhe genügt nicht"/>
|
||||
</node>
|
||||
<node CREATED="1674172566487" ID="ID_1608232649" MODIFIED="1674172575495" TEXT="Diskrepanz sinnvoll einbringen">
|
||||
<node COLOR="#435e98" CREATED="1674172577081" ID="ID_1556472546" MODIFIED="1674254503089" TEXT="Höhe insgesamt ⟼ Struktur-Spalte"/>
|
||||
<node CREATED="1674172577081" ID="ID_902379987" MODIFIED="1674247020264" TEXT="Synchronisation ⟼ padding nach direct content"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1674158539561" ID="ID_1440303749" MODIFIED="1674160219745" TEXT="#1265 define expanding/collapsing of tracks">
|
||||
<linktarget COLOR="#926b99" DESTINATION="ID_1440303749" ENDARROW="Default" ENDINCLINATION="-978;62;" ID="Arrow_ID_1979782904" SOURCE="ID_1119649795" STARTARROW="None" STARTINCLINATION="-281;21;"/>
|
||||
<linktarget COLOR="#c65e7c" DESTINATION="ID_1440303749" ENDARROW="Default" ENDINCLINATION="-1806;-99;" ID="Arrow_ID_537995229" SOURCE="ID_852402445" STARTARROW="None" STARTINCLINATION="-421;38;"/>
|
||||
<linktarget COLOR="#926b99" DESTINATION="ID_1440303749" ENDARROW="Default" ENDINCLINATION="-978;62;" ID="Arrow_ID_1979782904" SOURCE="ID_1119649795" STARTARROW="None" STARTINCLINATION="-281;21;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1674160660563" ID="ID_1828648487" MODIFIED="1674161293621" TEXT="#1266 implement scope rulers and group tracks">
|
||||
|
|
@ -31617,6 +31751,7 @@
|
|||
</node>
|
||||
<node CREATED="1564497891485" ID="ID_1183787016" MODIFIED="1564932176101" TEXT="Ha! man muß irgendwo eine Farbe angeben">
|
||||
<linktarget COLOR="#2ee773" DESTINATION="ID_1183787016" ENDARROW="Default" ENDINCLINATION="120;7;" ID="Arrow_ID_1051090636" SOURCE="ID_621726316" STARTARROW="None" STARTINCLINATION="-30;75;"/>
|
||||
<linktarget COLOR="#2ee773" DESTINATION="ID_1183787016" ENDARROW="Default" ENDINCLINATION="278;16;" ID="Arrow_ID_1462879108" SOURCE="ID_1801143265" STARTARROW="None" STARTINCLINATION="344;0;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1564497939401" ID="ID_1944950668" MODIFIED="1564497957953" TEXT="...dann wird das outset/inset durchaus sichtbar"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue