Timeline: after a long break... reconsider how to integrate the new VerbPack

...into the draft skeleton of timeline drawing
This commit is contained in:
Fischlurch 2019-06-10 16:08:31 +02:00
parent f6e5886348
commit 1a8917e60a
12 changed files with 121 additions and 63 deletions

View file

@ -24,7 +24,7 @@
/** @file body-canvas-widget.cpp /** @file body-canvas-widget.cpp
** Implementation details of timeline custom drawing. ** Implementation details of timeline custom drawing.
** **
** @todo WIP-WIP-WIP as of 12/2016 ** @todo WIP-WIP-WIP as of 6/2019
** **
*/ */
@ -77,8 +77,8 @@ 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 * @param f number of consecutive track elements
to keep pinned (always visible) at top */ * to keep pinned (always visible) at top */
void void
prelude (uint f) override prelude (uint f) override
{ {
@ -86,7 +86,7 @@ namespace timeline {
} }
/** finish painting the track body area /** finish painting the track body area
@param pad additional padding to add at bottom */ * @param pad additional padding to add at bottom */
void void
coda (uint pad) override coda (uint pad) override
{ {
@ -94,7 +94,7 @@ namespace timeline {
} }
/** draw grounding of a overview/ruler track /** draw grounding of a overview/ruler track
with the given height */ * with the given height */
void void
ruler (uint h) override ruler (uint h) override
{ {
@ -109,7 +109,7 @@ namespace timeline {
} }
/** fill background of track content area /** fill background of track content area
with the given vertical extension */ * with the given vertical extension */
void void
content (uint h) override content (uint h) override
{ {
@ -117,7 +117,7 @@ namespace timeline {
} }
/** paint opening slope to enter nested sub tracks /** paint opening slope to enter nested sub tracks
@note we only ever open one level deep a time */ * @note we only ever open one level deep a time */
void void
open (uint n) override open (uint n) override
{ {
@ -125,7 +125,7 @@ namespace timeline {
} }
/** paint closing slope to finish nested sub tracks /** paint closing slope to finish nested sub tracks
@param n number of nested levels to close */ * @param n number of nested levels to close */
void void
close (uint n) override close (uint n) override
{ {
@ -194,7 +194,7 @@ namespace timeline {
* rather, each sequence holds a _fork of nested scopes._ This recursively nested structure is reflected in the way * rather, each sequence holds a _fork of nested scopes._ This recursively nested structure is reflected in the way
* we organise and draw the timeline representation onto the TimelineCanvas: we use an intermediary entity, the TrackBody * we organise and draw the timeline representation onto the TimelineCanvas: we use an intermediary entity, the TrackBody
* as an organisational grouping device, even while we draw _all of the timeline representation_ onto a single global * as an organisational grouping device, even while we draw _all of the timeline representation_ onto a single global
* ::canvas_ within the (scrollable) BodyCanvasWidget. Thus, adding the first TrackBody to represent the root track * #mainCanvas_ within the (scrollable) #contentArea_. Thus, adding the first TrackBody to represent the root track
* of a Timeline, will also prepare the grounding for any other nested entities to be drawn on top. * of a Timeline, will also prepare the grounding for any other nested entities to be drawn on top.
*/ */
void void

View file

@ -49,7 +49,7 @@
** As result, some new widgets may be injected, existing widgets might be removed or ** As result, some new widgets may be injected, existing widgets might be removed or
** hidden, and other widgets may be relocated to different virtual canvas coordinates. ** hidden, and other widgets may be relocated to different virtual canvas coordinates.
** **
** @todo WIP-WIP-WIP as of 12/2016 ** @todo WIP-WIP-WIP as of 6/2019
** **
*/ */
@ -98,18 +98,18 @@ namespace timeline {
TimelineCanvas (_RenderFactory groundingFac, _RenderFactory overlayFac); TimelineCanvas (_RenderFactory groundingFac, _RenderFactory overlayFac);
private: private:
virtual bool on_draw (Cairo::RefPtr<Cairo::Context> const&) override; virtual bool on_draw (CairoC) override;
void openCanvas (Cairo::RefPtr<Cairo::Context> const&); void openCanvas (CairoC);
void closeCanvas (Cairo::RefPtr<Cairo::Context> const&); void closeCanvas (CairoC);
void drawGrounding (Cairo::RefPtr<Cairo::Context> const&); void drawGrounding (CairoC);
void drawOverlays (Cairo::RefPtr<Cairo::Context> const&); void drawOverlays (CairoC);
}; };
/** /**
* @todo WIP-WIP as of 12/2016 * @todo WIP-WIP as of 6/2019
*/ */
class BodyCanvasWidget class BodyCanvasWidget
: public Gtk::Box : public Gtk::Box

View file

@ -25,7 +25,7 @@
** Implementation details regarding custom drawing of track overview ** Implementation details regarding custom drawing of track overview
** and time code ticks and markers onto the TimelineCanvas. ** and time code ticks and markers onto the TimelineCanvas.
** **
** @todo WIP-WIP-WIP as of 12/2018 ** @todo WIP-WIP-WIP as of 6/2019
** @todo this is more or less preliminary/placeholder code as of 4/2019 ** @todo this is more or less preliminary/placeholder code as of 4/2019
** **
*/ */

View file

@ -28,13 +28,15 @@
** this track content area we build a horizontal ruler to show the timecode or ** this track content area we build a horizontal ruler to show the timecode or
** frame count references plus any markers, ranges and locators. In case of ** frame count references plus any markers, ranges and locators. In case of
** group tracks or collapsed tracks, a synopsis of the content may be rendered ** group tracks or collapsed tracks, a synopsis of the content may be rendered
** into this overview bar. Since any of these display elements need to be aligned ** into this overview bar. However, similar ruler tracks can also be used _within_
** the actual fork of tracks, to represent a sub-scope or a similar kind of overview
** or summarising display. Since any of these display elements need to be aligned
** precisely with the content, we employ custom drawing for the rulers as well. ** precisely with the content, we employ custom drawing for the rulers as well.
** The RulerTrack -- like any parts of the coordinated TimelineLayout, will be ** The RulerTrack -- like any parts of the coordinated TimelineLayout, will be
** referred to from and used by the BodyCanvasWidget for offloading specific ** referred to from and used by the BodyCanvasWidget for offloading specific
** parts of the drawing routines. ** parts of the drawing routines.
** **
** @todo WIP-WIP-WIP as of 12/2018 ** @todo WIP-WIP-WIP as of 6/2019
** **
*/ */

View file

@ -64,7 +64,7 @@ namespace timeline {
TimelineLayout::TimelineLayout (Gtk::Paned& topLevelContainer) TimelineLayout::TimelineLayout (Gtk::Paned& topLevelContainer)
: paneSplitPosition_{topLevelContainer.property_position()} : paneSplitPosition_{topLevelContainer.property_position()}
, bodyCanvas_{*this} // inject (as interface DisplayManager) , bodyCanvas_{*this} // inject (as interface DisplayManager)
, headerPane_{bodyCanvas_.get_vadjustment()} // wire the header pane (Gtk::Viewport) to follow the body vertical scroll movement , headerPane_{bodyCanvas_.get_vadjustment()} // wire the patchbay (Gtk::Viewport) to follow the body vertical scroll movement
{ {
topLevelContainer.add1 (headerPane_); topLevelContainer.add1 (headerPane_);
topLevelContainer.add2 (bodyCanvas_); topLevelContainer.add2 (bodyCanvas_);

View file

@ -69,7 +69,7 @@
** **
** For this to work, the _element_ can not be the actual widget, since the result of this whole ** For this to work, the _element_ can not be the actual widget, since the result of this whole
** process might be to create or retract an actual GTK widget. For this reason, the timeline ** process might be to create or retract an actual GTK widget. For this reason, the timeline
** layout management relies on a _Presenter_ entity, which in turn controls a mostly passive ** layout management relies on _Presenter_ entities, which in turn control a mostly passive
** view -- our solution in fact relies on some flavour of the ** view -- our solution in fact relies on some flavour of the
** [MVP pattern](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter) here. ** [MVP pattern](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter) here.
** **

View file

@ -118,7 +118,7 @@ namespace timeline {
* @param trackID the mandatory root track used in the associated Sequence * @param trackID the mandatory root track used in the associated Sequence
* @param nexus some established connection to the UI-Bus, will be used * @param nexus some established connection to the UI-Bus, will be used
* to register the embedded TimelineController as communication * to register the embedded TimelineController as communication
* partner to respond under the given ID. * partner to respond under the given timeline ID.
* @remarks after creation, the widget can just be hooked up and wired like * @remarks after creation, the widget can just be hooked up and wired like
* any ordinary GTK element; it becomes passive and just responds to * any ordinary GTK element; it becomes passive and just responds to
* signals. The active role is played by the controller, which also * signals. The active role is played by the controller, which also

View file

@ -25,7 +25,7 @@
** Implementation details regarding display management of the ** Implementation details regarding display management of the
** track body area within the timeline display canvas. ** track body area within the timeline display canvas.
** **
** @todo WIP-WIP-WIP as of 12/2016 ** @todo WIP-WIP-WIP as of 6/2019
** **
*/ */

View file

@ -67,7 +67,7 @@ namespace timeline {
* task of a TrackBody is to find out about its own overall height, including the * task of a TrackBody is to find out about its own overall height, including the
* overall height required by all its nested children. Moreover, the height of * overall height required by all its nested children. Moreover, the height of
* the content area needs to be negotiated with the actual content elements. * the content area needs to be negotiated with the actual content elements.
* @todo WIP-WIP as of 10/2018 * @todo WIP-WIP as of 6/2019
*/ */
class TrackBody class TrackBody
{ {

View file

@ -22,7 +22,7 @@
/** @file track-profile.hpp /** @file track-profile.hpp
** Abstraction build the layout for the track spaces for timeline display. ** Abstraction to build the layout for the track spaces within timeline display.
** In Lumiera, tracks are arranged into a fork of nested shapes, which structure ** In Lumiera, tracks are arranged into a fork of nested shapes, which structure
** is parallelled into nested structure of TrackBody elements. A tree walk over ** is parallelled into nested structure of TrackBody elements. A tree walk over
** this structure yields a sequence of adjacent timeline elements, like overview ** this structure yields a sequence of adjacent timeline elements, like overview
@ -30,7 +30,7 @@
** be transformed into suitable drawing instructions to create a 3D shaded ** be transformed into suitable drawing instructions to create a 3D shaded
** display, clearly highlighting the complex structure of the track arrangement. ** display, clearly highlighting the complex structure of the track arrangement.
** **
** @todo WIP-WIP-WIP as of 4/2019 ** @todo WIP-WIP-WIP as of 6/2019
** **
*/ */
@ -53,11 +53,12 @@ namespace stage {
namespace timeline { namespace timeline {
using lib::Literal; using lib::Literal;
using util::isnil;
class ProfileInterpreter class ProfileInterpreter
{ {
public: public:
~ProfileInterpreter() { } ///< this is an interface virtual ~ProfileInterpreter() { } ///< this is an interface
virtual void ruler(uint h) =0; ///< represent a overview/ruler track with the given height virtual void ruler(uint h) =0; ///< represent a overview/ruler track with the given height
virtual void gap(uint h) =0; ///< represent a gap to structure the display virtual void gap(uint h) =0; ///< represent a gap to structure the display
@ -90,7 +91,7 @@ namespace timeline {
explicit explicit
operator bool() const operator bool() const
{ {
return not util::isnil (elements); return not isnil (elements);
} }
void void

View file

@ -3517,11 +3517,11 @@ In accordance with the Lumiera application architecture in general, the UI is no
<pre>A specially configured LumieraPlugin, which actually contains or loads the complete code of the (GTK)GUI, and additionally is linked dynamically against the application core lib. During the [[UI startup process|GuiStart]], loading of this Plugin is triggered from {{{main()}}}. Actually this causes spawning of the GTK event thread and execution of the GTK main loop. <pre>A specially configured LumieraPlugin, which actually contains or loads the complete code of the (GTK)GUI, and additionally is linked dynamically against the application core lib. During the [[UI startup process|GuiStart]], loading of this Plugin is triggered from {{{main()}}}. Actually this causes spawning of the GTK event thread and execution of the GTK main loop.
</pre> </pre>
</div> </div>
<div title="GuiTimelineDraw" creator="Ichthyostega" modifier="Ichthyostega" created="201904052156" modified="201904061546" tags="GuiPattern spec impl img draft" changecount="90"> <div title="GuiTimelineDraw" creator="Ichthyostega" modifier="Ichthyostega" created="201904052156" modified="201906101247" tags="GuiPattern spec impl img draft" changecount="92">
<pre>The presentation of the track body area relies on the [[Gtk::Layout &quot;canvas widget&quot;|GtkLayoutWidget]], thus allowing for a mixture of custom drawing with embedded custom Gtk widgets. The actual drawing routine is activated in response to the {{{on_draw}}} signal -- and invoking the inherited handler function will initiate the standard drawing for the embedded child widgets. This partitions the additional, specific drawing activities into a pre-widget drawing phase to prepare the background and framework structure of the track area, and a post-widget drawing phase to show all kinds of overlays, markers cursors and similar UI indicators. A nested structure of {{{TrackBody}}} objects serves as organisational device to structure these custom drawing activities in accordance with the nested structure of the track fork. <pre>The presentation of the track body area relies on the [[Gtk::Layout &quot;canvas widget&quot;|GtkLayoutWidget]], thus allowing for a mixture of custom drawing with embedded custom Gtk widgets. The actual drawing routine is activated in response to the {{{on_draw}}} signal -- and invoking the inherited handler function will initiate the standard drawing for the embedded child widgets. This partitions the additional, specific drawing activities into a pre-widget drawing phase to prepare the background and framework structure of the track area, and a post-widget drawing phase to show all kinds of overlays, markers cursors and similar UI indicators. A nested structure of {{{TrackBody}}} objects serves as organisational device to structure these custom drawing activities in accordance with the nested structure of the track fork.
!Building a nested 3D structure !Building a nested 3D structure
[&gt;img[3D structure of track drawing|draw/UI-TimelineTrackProfile-1.png]]A proficient UI design often relies on subtle cues to guide the user intuitively -- which includes shading of boundary areas to structure the interface space. Both the space and the means to give such unambiguous visual clues are limited, and it would be unwise to forgo such possibilities to follow some stylish fad. Rather, we strive at some degree of internal coherency within the application of these stylistic means. [&gt;img[3D structure of track drawing|draw/UI-TimelineTrackProfile-1.png]]A proficient UI design often relies on subtle cues to guide the user intuitively -- which includes shading of boundary areas to structure the interface space. Both the space and the means to give such unambiguous visual clues are limited, and it would be unwise to forgo such possibilities to follow some stylish fad. Rather, we strive at achieving some degree of internal coherency within the application of these stylistic means.
In Lumiera, the //tracks// represent an organisational device, a nested set of //scopes,// which -- for the UI representation -- is paralleled by nested insets holding the media content. One or several //rulers// as guiding devices run alongside the top of each scope, either representing the scope as a whole, or introducing the working area of this scope similar to a side walk running alongside a channel. A system of increasingly deeper nested scopes thus becomes a cadence of insets in the way of a lateral staircase. In Lumiera, the //tracks// represent an organisational device, a nested set of //scopes,// which -- for the UI representation -- is paralleled by nested insets holding the media content. One or several //rulers// as guiding devices run alongside the top of each scope, either representing the scope as a whole, or introducing the working area of this scope similar to a side walk running alongside a channel. A system of increasingly deeper nested scopes thus becomes a cadence of insets in the way of a lateral staircase.

View file

@ -19667,7 +19667,7 @@
<node CREATED="1555247665396" ID="ID_1210108422" MODIFIED="1557498707228" TEXT="vermutlich werden Lambdas eine Rolle spielen"/> <node CREATED="1555247665396" ID="ID_1210108422" MODIFIED="1557498707228" TEXT="vermutlich werden Lambdas eine Rolle spielen"/>
<node CREATED="1555247678988" ID="ID_1615700205" MODIFIED="1557498707228" TEXT="aber ich m&#xf6;chte Heap-Storage vermeiden"/> <node CREATED="1555247678988" ID="ID_1615700205" MODIFIED="1557498707228" TEXT="aber ich m&#xf6;chte Heap-Storage vermeiden"/>
</node> </node>
<node COLOR="#338800" CREATED="1555247704342" ID="ID_929740643" MODIFIED="1557590585181" TEXT="Entwurf/Test"> <node COLOR="#338800" CREATED="1555247704342" FOLDED="true" ID="ID_929740643" MODIFIED="1560172875969" TEXT="Entwurf/Test">
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1555247713060" ID="ID_1159666241" MODIFIED="1557590555065" TEXT="proof-of-concept"> <node COLOR="#435e98" CREATED="1555247713060" ID="ID_1159666241" MODIFIED="1557590555065" TEXT="proof-of-concept">
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
@ -19881,8 +19881,7 @@
d.h er funktioniert nur, wenn man das std::get&lt;idx&gt; (tuple) unmittelbar an den jeweiligen Ziel-Parameter bindet d.h er funktioniert nur, wenn man das std::get&lt;idx&gt; (tuple) unmittelbar an den jeweiligen Ziel-Parameter bindet
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
</node> </node>
<node CREATED="1557414442871" ID="ID_501615874" MODIFIED="1557498707228" TEXT="dagegen std::forward w&#xe4;hlt flexibel einen von zwei overloads"> <node CREATED="1557414442871" ID="ID_501615874" MODIFIED="1557498707228" TEXT="dagegen std::forward w&#xe4;hlt flexibel einen von zwei overloads">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
@ -19897,8 +19896,7 @@
und einen, der einen RValue entgegennimmt und einen, der einen RValue entgegennimmt
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1557414483962" ID="ID_656447545" MODIFIED="1557498707228" TEXT="und dies kann ich hier nicht nachbilden"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1557414483962" ID="ID_656447545" MODIFIED="1557498707228" TEXT="und dies kann ich hier nicht nachbilden">
<linktarget COLOR="#f05859" DESTINATION="ID_656447545" ENDARROW="Default" ENDINCLINATION="45;-420;" ID="Arrow_ID_1477395313" SOURCE="ID_474705115" STARTARROW="None" STARTINCLINATION="649;0;"/> <linktarget COLOR="#f05859" DESTINATION="ID_656447545" ENDARROW="Default" ENDINCLINATION="45;-420;" ID="Arrow_ID_1477395313" SOURCE="ID_474705115" STARTARROW="None" STARTINCLINATION="649;0;"/>
@ -19916,8 +19914,7 @@
steht in keinem Verh&#228;ltnis zum Zweck steht in keinem Verh&#228;ltnis zum Zweck
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
<icon BUILTIN="stop-sign"/> <icon BUILTIN="stop-sign"/>
</node> </node>
</node> </node>
@ -20011,8 +20008,7 @@
Also ist das sogar das korrekte Verhalten. Also ist das sogar das korrekte Verhalten.
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
</node> </node>
<node CREATED="1557446482447" ID="ID_835188518" MODIFIED="1557498707229" TEXT="L&#xf6;sung: Duck-Detector f&#xfc;r Methoden-Name"> <node CREATED="1557446482447" ID="ID_835188518" MODIFIED="1557498707229" TEXT="L&#xf6;sung: Duck-Detector f&#xfc;r Methoden-Name">
<node CREATED="1557446494679" ID="ID_1259664145" MODIFIED="1557498707229" TEXT="verzichtet auf Signatur-Check"> <node CREATED="1557446494679" ID="ID_1259664145" MODIFIED="1557498707229" TEXT="verzichtet auf Signatur-Check">
@ -20025,8 +20021,7 @@
d.h. wenn zuf&#228;llig das Interface auch eine Methode CloneInto() enth&#228;lt, aber mit einer unpassenden Signatur d.h. wenn zuf&#228;llig das Interface auch eine Methode CloneInto() enth&#228;lt, aber mit einer unpassenden Signatur
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
<icon BUILTIN="messagebox_warning"/> <icon BUILTIN="messagebox_warning"/>
</node> </node>
<node CREATED="1557446561925" ID="ID_1267977919" MODIFIED="1557498707229" TEXT="ist ohnehin keine wirkliche Sicherheit"/> <node CREATED="1557446561925" ID="ID_1267977919" MODIFIED="1557498707229" TEXT="ist ohnehin keine wirkliche Sicherheit"/>
@ -20050,8 +20045,7 @@
das ist auch gut so, zu viel Flexibilit&#228;t schadet (besonders, wenn man sie dann gar nicht unterst&#252;tzt) das ist auch gut so, zu viel Flexibilit&#228;t schadet (besonders, wenn man sie dann gar nicht unterst&#252;tzt)
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/> <font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/> <icon BUILTIN="yes"/>
</node> </node>
@ -20071,8 +20065,7 @@
Leider haben wir dann zweimal die gleiche Basisklasse in beiden Zweigen der multiple inheritance... Leider haben wir dann zweimal die gleiche Basisklasse in beiden Zweigen der multiple inheritance...
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
</node> </node>
<node CREATED="1557446924907" ID="ID_1029661613" MODIFIED="1557498707229" TEXT="...was hier absolut naheliegend ist"> <node CREATED="1557446924907" ID="ID_1029661613" MODIFIED="1557498707229" TEXT="...was hier absolut naheliegend ist">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
@ -20087,8 +20080,7 @@
(was ich bisher in der Praxis so noch nie gemacht habe) (was ich bisher in der Praxis so noch nie gemacht habe)
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
</node> </node>
<node CREATED="1557447075623" ID="ID_1422873677" MODIFIED="1557498707229" TEXT="dummerweise kann dann der GCC die EmptyBase nicht wegoptimieren"> <node CREATED="1557447075623" ID="ID_1422873677" MODIFIED="1557498707229" TEXT="dummerweise kann dann der GCC die EmptyBase nicht wegoptimieren">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
@ -20103,8 +20095,7 @@
hab das ganz explizit ausgeknobelt, es fehlt hier genau dieser eine zus&#228;tzliche &quot;Slot&quot; hab das ganz explizit ausgeknobelt, es fehlt hier genau dieser eine zus&#228;tzliche &quot;Slot&quot;
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
<icon BUILTIN="broken-line"/> <icon BUILTIN="broken-line"/>
</node> </node>
<node COLOR="#338800" CREATED="1557447159900" ID="ID_691196423" MODIFIED="1557498722522" TEXT="L&#xf6;sung: anderen Namen verwenden"> <node COLOR="#338800" CREATED="1557447159900" ID="ID_691196423" MODIFIED="1557498722522" TEXT="L&#xf6;sung: anderen Namen verwenden">
@ -20119,8 +20110,8 @@
<node CREATED="1555807464657" ID="ID_1089528099" MODIFIED="1557498707229" TEXT="diese meta-Intelligenz sollte komplett in dem Adapter stecken"/> <node CREATED="1555807464657" ID="ID_1089528099" MODIFIED="1557498707229" TEXT="diese meta-Intelligenz sollte komplett in dem Adapter stecken"/>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1557446611550" ID="ID_596556632" MODIFIED="1557590501784" TEXT="Ticket #1197 : rationalise copy support in PolymorphicValue"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1557446611550" ID="ID_596556632" MODIFIED="1557590501784" TEXT="Ticket #1197 : rationalise copy support in PolymorphicValue">
<linktarget COLOR="#1a64bc" DESTINATION="ID_596556632" ENDARROW="Default" ENDINCLINATION="-129;0;" ID="Arrow_ID_884404467" SOURCE="ID_1511870599" STARTARROW="None" STARTINCLINATION="-284;0;"/>
<linktarget COLOR="#829ebf" DESTINATION="ID_596556632" ENDARROW="Default" ENDINCLINATION="-282;0;" ID="Arrow_ID_1622655110" SOURCE="ID_383098394" STARTARROW="None" STARTINCLINATION="-74;193;"/> <linktarget COLOR="#829ebf" DESTINATION="ID_596556632" ENDARROW="Default" ENDINCLINATION="-282;0;" ID="Arrow_ID_1622655110" SOURCE="ID_383098394" STARTARROW="None" STARTINCLINATION="-74;193;"/>
<linktarget COLOR="#1a64bc" DESTINATION="ID_596556632" ENDARROW="Default" ENDINCLINATION="-129;0;" ID="Arrow_ID_884404467" SOURCE="ID_1511870599" STARTARROW="None" STARTINCLINATION="-284;0;"/>
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="flag-yellow"/>
</node> </node>
</node> </node>
@ -20220,8 +20211,7 @@
wo wir die konkreten Argumente in den vorbereiteten Argument-Tupel im Holder schieben wo wir die konkreten Argumente in den vorbereiteten Argument-Tupel im Holder schieben
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
</node> </node>
</node> </node>
@ -20250,8 +20240,7 @@
</li> </li>
</ul> </ul>
</body> </body>
</html> </html></richcontent>
</richcontent>
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
</node> </node>
<node COLOR="#338800" CREATED="1557590794163" ID="ID_497379433" MODIFIED="1557590811601" TEXT="Werte kopiert und verglichen"> <node COLOR="#338800" CREATED="1557590794163" ID="ID_497379433" MODIFIED="1557590811601" TEXT="Werte kopiert und verglichen">
@ -20311,8 +20300,7 @@
und es obliegt der n&#228;chst h&#246;heren Schicht, dies auch in sinnvollem Rahmen zu tun... und es obliegt der n&#228;chst h&#246;heren Schicht, dies auch in sinnvollem Rahmen zu tun...
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
<arrowlink COLOR="#fcda04" DESTINATION="ID_1932269477" ENDARROW="Default" ENDINCLINATION="290;0;" ID="Arrow_ID_742389536" STARTARROW="None" STARTINCLINATION="187;8;"/> <arrowlink COLOR="#fcda04" DESTINATION="ID_1932269477" ENDARROW="Default" ENDINCLINATION="290;0;" ID="Arrow_ID_742389536" STARTARROW="None" STARTINCLINATION="187;8;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/> <font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/> <icon BUILTIN="yes"/>
@ -20321,7 +20309,60 @@
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1557590586650" ID="ID_1348312855" MODIFIED="1557590595855" TEXT="den (neu gebauten) VerbPack integrieren"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1557590586650" ID="ID_1348312855" MODIFIED="1557590595855" TEXT="den (neu gebauten) VerbPack integrieren">
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="flag-yellow"/>
<node CREATED="1560175373902" ID="ID_1956293405" MODIFIED="1560175561475" TEXT="bestehendes TrackProfile sinngem&#xe4;&#xdf; umbauen">
<icon BUILTIN="yes"/>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1560175492578" ID="ID_1159091213" MODIFIED="1560175557813" TEXT="Verb + explizite Storage -&gt; VerbPack">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1560175383722" ID="ID_107500239" MODIFIED="1560175568187" TEXT="Problem: addSlopeUp()">
<icon BUILTIN="flag-yellow"/>
<node CREATED="1560175410857" ID="ID_1553338375" MODIFIED="1560175429772" TEXT="bisher konnten wir einfach das Argument manipulieren"/>
<node CREATED="1560175430998" ID="ID_125919592" MODIFIED="1560175477371" TEXT="...aber jetzt gibt es nicht mehr &quot;das&quot; Argument">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
sondern die Argumente sind in einem Tuple eingewickelt,
</p>
<p>
und befinden sich tief vergraben in der Implementierungsklasse,
</p>
<p>
innerhalb eines PolymorphicValue.
</p>
</body>
</html>
</richcontent>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1560175478468" ID="ID_105401193" MODIFIED="1560175566685" TEXT="Hilfe... was tun?">
<icon BUILTIN="flag-pink"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1560175529230" ID="ID_914166338" MODIFIED="1560175635885">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
Verh&#228;ltnis zum Inteface <b>Renderer</b>&#160;kl&#228;ren
</p>
</body>
</html>
</richcontent>
<arrowlink COLOR="#508bd1" DESTINATION="ID_1592949721" ENDARROW="Default" ENDINCLINATION="59;-58;" ID="Arrow_ID_1618633786" STARTARROW="None" STARTINCLINATION="-91;0;"/>
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node CREATED="1560175579123" ID="ID_678068478" MODIFIED="1560175590213" TEXT="in generische draw()-Routine einbinden">
<node CREATED="1560175593361" ID="ID_1592949721" MODIFIED="1560175631513" TEXT="wo kommt der Renderer ins Spiel?">
<linktarget COLOR="#508bd1" DESTINATION="ID_1592949721" ENDARROW="Default" ENDINCLINATION="59;-58;" ID="Arrow_ID_1618633786" SOURCE="ID_914166338" STARTARROW="None" STARTINCLINATION="-91;0;"/>
</node>
<node CREATED="1560175646834" ID="ID_585934033" MODIFIED="1560175663115" TEXT="wo wird entschieden, was in den Ruler-Teil kommt?"/>
</node> </node>
</node> </node>
</node> </node>
@ -20421,6 +20462,15 @@
<icon BUILTIN="forward"/> <icon BUILTIN="forward"/>
</node> </node>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1560173474830" ID="ID_351544133" MODIFIED="1560173496890" TEXT="sind es &quot;zwei&quot; oder sind es N Konfigs?">
<icon BUILTIN="help"/>
<node COLOR="#ba568c" CREATED="1560173511341" ID="ID_637775069" MODIFIED="1560173529984" TEXT="Monate sp&#xe4;ter...">
<icon BUILTIN="smily_bad"/>
</node>
<node CREATED="1560173498827" ID="ID_553759798" MODIFIED="1560173508018" TEXT="und was meint hier &quot;Konfig&quot;...?">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
</node>
</node> </node>
</node> </node>
</node> </node>
@ -20464,7 +20514,7 @@
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1541862804070" ID="ID_430268635" MODIFIED="1557498707230" TEXT="Display-Manager == Abstraktion"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1541862804070" ID="ID_430268635" MODIFIED="1557498707230" TEXT="Display-Manager == Abstraktion">
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="flag-yellow"/>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1541862816104" FOLDED="true" ID="ID_1545586243" MODIFIED="1557498707230" TEXT="lokal injiziert beim Aufbau"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1541862816104" FOLDED="true" ID="ID_1545586243" MODIFIED="1560173642952" TEXT="lokal injiziert beim Aufbau">
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="flag-yellow"/>
<node CREATED="1554475687257" ID="ID_908192712" MODIFIED="1554475728633" TEXT="das hei&#xdf;t: separates Thema"> <node CREATED="1554475687257" ID="ID_908192712" MODIFIED="1554475728633" TEXT="das hei&#xdf;t: separates Thema">
<icon BUILTIN="yes"/> <icon BUILTIN="yes"/>
@ -22667,7 +22717,7 @@
<node CREATED="1541545696185" ID="ID_1907010009" MODIFIED="1557498707234" TEXT="Grund: UI-Bus - Routing"> <node CREATED="1541545696185" ID="ID_1907010009" MODIFIED="1557498707234" TEXT="Grund: UI-Bus - Routing">
<icon BUILTIN="info"/> <icon BUILTIN="info"/>
</node> </node>
<node COLOR="#435e98" CREATED="1541545933006" FOLDED="true" ID="ID_1850412206" MODIFIED="1557498707234" TEXT="t&#xfc;ckisches Problem"> <node COLOR="#435e98" CREATED="1541545933006" FOLDED="true" ID="ID_1850412206" MODIFIED="1560172942629" TEXT="t&#xfc;ckisches Problem">
<linktarget COLOR="#c9876a" DESTINATION="ID_1850412206" ENDARROW="Default" ENDINCLINATION="49;-155;" ID="Arrow_ID_1571993328" SOURCE="ID_787025622" STARTARROW="None" STARTINCLINATION="-11;173;"/> <linktarget COLOR="#c9876a" DESTINATION="ID_1850412206" ENDARROW="Default" ENDINCLINATION="49;-155;" ID="Arrow_ID_1571993328" SOURCE="ID_787025622" STARTARROW="None" STARTINCLINATION="-11;173;"/>
<linktarget COLOR="#c9876a" DESTINATION="ID_1850412206" ENDARROW="Default" ENDINCLINATION="369;179;" ID="Arrow_ID_1229280605" SOURCE="ID_659707505" STARTARROW="None" STARTINCLINATION="586;-203;"/> <linktarget COLOR="#c9876a" DESTINATION="ID_1850412206" ENDARROW="Default" ENDINCLINATION="369;179;" ID="Arrow_ID_1229280605" SOURCE="ID_659707505" STARTARROW="None" STARTINCLINATION="586;-203;"/>
<icon BUILTIN="messagebox_warning"/> <icon BUILTIN="messagebox_warning"/>
@ -22879,10 +22929,13 @@
</node> </node>
<node CREATED="1538956703435" ID="ID_275497582" MODIFIED="1557498707234" TEXT="Timeline"> <node CREATED="1538956703435" ID="ID_275497582" MODIFIED="1557498707234" TEXT="Timeline">
<node CREATED="1538956945754" ID="ID_1216887436" MODIFIED="1557498707234" TEXT="&quot;name&quot;"/> <node CREATED="1538956945754" ID="ID_1216887436" MODIFIED="1557498707234" TEXT="&quot;name&quot;"/>
<node CREATED="1538956717369" ID="ID_21520084" MODIFIED="1557498707234" TEXT="&quot;fork&quot; = Track"/> <node CREATED="1538956717369" ID="ID_21520084" MODIFIED="1560172967031" TEXT="&quot;fork&quot; = Track">
<arrowlink DESTINATION="ID_1319425167" ENDARROW="Default" ENDINCLINATION="-1;-52;" ID="Arrow_ID_1260691192" STARTARROW="None" STARTINCLINATION="-79;17;"/>
</node>
<node CREATED="1538956709026" ID="ID_326010297" MODIFIED="1557498707234" TEXT="Sequence{Marker}"/> <node CREATED="1538956709026" ID="ID_326010297" MODIFIED="1557498707234" TEXT="Sequence{Marker}"/>
</node> </node>
<node CREATED="1538956769298" ID="ID_1319425167" MODIFIED="1557498707234" TEXT="Track"> <node CREATED="1538956769298" ID="ID_1319425167" MODIFIED="1560172967031" TEXT="Track">
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1319425167" ENDARROW="Default" ENDINCLINATION="-1;-52;" ID="Arrow_ID_1260691192" SOURCE="ID_21520084" STARTARROW="None" STARTINCLINATION="-79;17;"/>
<node CREATED="1538956775249" ID="ID_1811758034" MODIFIED="1557498707234" TEXT="Sequence{Track}"> <node CREATED="1538956775249" ID="ID_1811758034" MODIFIED="1557498707234" TEXT="Sequence{Track}">
<node CREATED="1538957049292" ID="ID_1618683787" MODIFIED="1557498707234" TEXT="if typeID = &quot;Fork&quot;"/> <node CREATED="1538957049292" ID="ID_1618683787" MODIFIED="1557498707234" TEXT="if typeID = &quot;Fork&quot;"/>
<node CREATED="1544846114433" ID="ID_1306886572" MODIFIED="1557498707234" TEXT="die Sub-Tracks"> <node CREATED="1544846114433" ID="ID_1306886572" MODIFIED="1557498707234" TEXT="die Sub-Tracks">
@ -22895,7 +22948,8 @@
<node CREATED="1538956802701" ID="ID_840384156" MODIFIED="1557498707234" TEXT="Sequence{Marker}"> <node CREATED="1538956802701" ID="ID_840384156" MODIFIED="1557498707234" TEXT="Sequence{Marker}">
<node CREATED="1538957049292" ID="ID_1955645432" MODIFIED="1557498707234" TEXT="if typeID = &quot;Marker&quot;"/> <node CREATED="1538957049292" ID="ID_1955645432" MODIFIED="1557498707234" TEXT="if typeID = &quot;Marker&quot;"/>
</node> </node>
<node CREATED="1544839585279" ID="ID_1083901292" MODIFIED="1557498707234" TEXT="Sequence{Ruler}"> <node CREATED="1544839585279" ID="ID_1083901292" MODIFIED="1560173044668" TEXT="Sequence{Ruler}">
<arrowlink DESTINATION="ID_433238862" ENDARROW="Default" ENDINCLINATION="-37;-96;" ID="Arrow_ID_472987279" STARTARROW="None" STARTINCLINATION="-69;14;"/>
<linktarget COLOR="#5f84b0" DESTINATION="ID_1083901292" ENDARROW="Default" ENDINCLINATION="-756;-82;" ID="Arrow_ID_1167484185" SOURCE="ID_43593052" STARTARROW="None" STARTINCLINATION="-981;0;"/> <linktarget COLOR="#5f84b0" DESTINATION="ID_1083901292" ENDARROW="Default" ENDINCLINATION="-756;-82;" ID="Arrow_ID_1167484185" SOURCE="ID_43593052" STARTARROW="None" STARTINCLINATION="-981;0;"/>
<node CREATED="1544846037083" ID="ID_667362504" MODIFIED="1557498707234" TEXT="if typeID = &quot;Ruler&quot;"/> <node CREATED="1544846037083" ID="ID_667362504" MODIFIED="1557498707234" TEXT="if typeID = &quot;Ruler&quot;"/>
<node CREATED="1544846062288" ID="ID_855083299" MODIFIED="1557498707234" TEXT="storage direkt (nested) im TrackBody"/> <node CREATED="1544846062288" ID="ID_855083299" MODIFIED="1557498707234" TEXT="storage direkt (nested) im TrackBody"/>
@ -22912,8 +22966,9 @@
<node CREATED="1538957049292" ID="ID_98299428" MODIFIED="1557498707234" TEXT="if typeID = &quot;Marker&quot;"/> <node CREATED="1538957049292" ID="ID_98299428" MODIFIED="1557498707234" TEXT="if typeID = &quot;Marker&quot;"/>
</node> </node>
</node> </node>
<node CREATED="1544840312839" ID="ID_433238862" MODIFIED="1557498707234" TEXT="Ruler"> <node CREATED="1544840312839" ID="ID_433238862" MODIFIED="1560173044668" TEXT="Ruler">
<linktarget COLOR="#3e63c5" DESTINATION="ID_433238862" ENDARROW="Default" ENDINCLINATION="-612;-125;" ID="Arrow_ID_1858329997" SOURCE="ID_1391546845" STARTARROW="None" STARTINCLINATION="-747;0;"/> <linktarget COLOR="#3e63c5" DESTINATION="ID_433238862" ENDARROW="Default" ENDINCLINATION="-612;-125;" ID="Arrow_ID_1858329997" SOURCE="ID_1391546845" STARTARROW="None" STARTINCLINATION="-747;0;"/>
<linktarget COLOR="#a9b4c1" DESTINATION="ID_433238862" ENDARROW="Default" ENDINCLINATION="-37;-96;" ID="Arrow_ID_472987279" SOURCE="ID_1083901292" STARTARROW="None" STARTINCLINATION="-69;14;"/>
<node CREATED="1544840455429" ID="ID_1283986005" MODIFIED="1557498707234" TEXT="&quot;timecode&quot; = formatID"/> <node CREATED="1544840455429" ID="ID_1283986005" MODIFIED="1557498707234" TEXT="&quot;timecode&quot; = formatID"/>
<node CREATED="1544840496225" ID="ID_230755841" MODIFIED="1557498707234" TEXT="&quot;contentFormat&quot; = formatID (none|pivot|frames|wave|synopsis)"/> <node CREATED="1544840496225" ID="ID_230755841" MODIFIED="1557498707234" TEXT="&quot;contentFormat&quot; = formatID (none|pivot|frames|wave|synopsis)"/>
<node CREATED="1544840634822" ID="ID_1138129422" MODIFIED="1557498707234" TEXT="Sequence{Marker.kind}"> <node CREATED="1544840634822" ID="ID_1138129422" MODIFIED="1557498707234" TEXT="Sequence{Marker.kind}">
@ -41262,7 +41317,7 @@
</node> </node>
</node> </node>
</node> </node>
<node CREATED="1541547600640" HGAP="79" ID="ID_659707505" MODIFIED="1557498707237" TEXT="Element-IDs m&#xfc;ssen eindeutig sein" VSHIFT="10"> <node CREATED="1541547600640" HGAP="79" ID="ID_659707505" MODIFIED="1560172942629" TEXT="Element-IDs m&#xfc;ssen eindeutig sein" VSHIFT="10">
<arrowlink COLOR="#c9876a" DESTINATION="ID_1850412206" ENDARROW="Default" ENDINCLINATION="369;179;" ID="Arrow_ID_1229280605" STARTARROW="None" STARTINCLINATION="586;-203;"/> <arrowlink COLOR="#c9876a" DESTINATION="ID_1850412206" ENDARROW="Default" ENDINCLINATION="369;179;" ID="Arrow_ID_1229280605" STARTARROW="None" STARTINCLINATION="586;-203;"/>
<icon BUILTIN="messagebox_warning"/> <icon BUILTIN="messagebox_warning"/>
<node CREATED="1541547743885" ID="ID_1112550435" MODIFIED="1557498707237" TEXT="wegen UI-Bus-Routing"/> <node CREATED="1541547743885" ID="ID_1112550435" MODIFIED="1557498707237" TEXT="wegen UI-Bus-Routing"/>