From f2eea38c07b2c060523bbe13eededda0ee77e393 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sat, 6 Apr 2019 04:20:31 +0200 Subject: [PATCH] Timeline: plan for the drawing routine --- wiki/draw/UI-TimelineTrackProfile-1.png | Bin 0 -> 65348 bytes wiki/renderengine.html | 41 +++++++++++++++-- wiki/thinkPad.ichthyo.mm | 58 +++++++++++++++++++++++- 3 files changed, 92 insertions(+), 7 deletions(-) create mode 100644 wiki/draw/UI-TimelineTrackProfile-1.png diff --git a/wiki/draw/UI-TimelineTrackProfile-1.png b/wiki/draw/UI-TimelineTrackProfile-1.png new file mode 100644 index 0000000000000000000000000000000000000000..af701924243bebcd0704a7af890aa8656ae2b709 GIT binary patch literal 65348 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 literal 0 HcmV?d00001 diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 82a32722e..1a35f55ed 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -1863,7 +1863,7 @@ The fake implementation should follow the general pattern planned for the Prolog -

+
The Render Engine is the part of the application doing the actual video calculations. Relying on system level services and retrieving raw audio and video data through [[Lumiera's Vault Layer|VaultLayer]], its operations are guided by the objects and parameters edited by the user in [[the session|Session]]. The middle layer of the Lumiera architecture, known as the Steam-Layer, spans the area between these two extremes, providing the the (abstract) edit operations available to the user, the representation of [["editable things"|MObjects]] and the translation of those into structures and facilities allowing to [[drive the rendering|Rendering]].
 
 !About this wiki page
@@ -1888,6 +1888,9 @@ The system is ''open'' inasmuch every part mirrors the structure of correspondin
 &rarr; [[Problems|ProblemsTodo]] to be solved and notable [[design decisions|DesignDecisions]]
 &rarr; [[Concepts, Abstractions and Formalities|Concepts]]
 &rarr; [[Implementation Details|ImplementationDetails]] {{red{WIP}}}
+
+&rarr; ''Help''/Documentation of [[TiddlyWiki-Markup|https://classic.tiddlywiki.com/#HelloThere%20%5B%5BHeadings%20Formatting%5D%5D%20%5B%5BBasic%20Formatting%5D%5D%20%5B%5BCode%20Formatting%5D%5D%20%5B%5BCSS%20Formatting%5D%5D%20%5B%5BHorizontal%20Rule%20Formatting%5D%5D%20%5B%5BHTML%20Entities%20Formatting%5D%5D%20%5B%5BHTML%20Formatting%5D%5D%20HtmlEntities%20%5B%5BImage%20Formatting%5D%5D%20%5B%5BLine%20Break%20Formatting%5D%5D%20%5B%5BLink%20Formatting%5D%5D%20%5B%5BList%20Formatting%5D%5D%20PeriodicTable%20PlainText%20PluginFormatting%20%5B%5BQuotations%20Formatting%5D%5D%20%5B%5BSuppressing%20Formatting%5D%5D%20%5B%5BTables%20Formatting%5D%5D%20TiddlerComments]]
+
 
@@ -3514,6 +3517,27 @@ In accordance with the Lumiera application architecture in general, the UI is no
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.
 
+
+
The presentation of the track body area relies on the [[Gtk::Layout "canvas widget"|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
+[>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.
+
+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.
+
+Each individual track contributes a similar sequence of structure elements to this overall ''track profile'':
+* a set of rulers, where each ruler may optionally inject a small additional //gap//
+* a content area
+* the self similar recursive child track fork
+
+!!!Assembling the track profile
+The actual expression of these elements depends on the content, which is injected via diff message pushed up from the steam layer; additionally, some presentation state like collapsing of elements need to be taken into account. Assembling the complete profile of the track structure thus incurs a tree walk over the nested track body objects, which in turn communicate with the track presenters for layout state. At this point, it is advisable to separate the actual graphics drawing code from the content and state discovery scattered over the nested structure. Thus we produce a ''verb sequence'' as result of the tree walk, which can be stored into a (heap allocated) list for repeated evaluation when handling the actual draw events. Whenever the overall layout has been invalidated, this structure description has to be rebuilt by yet another tree walk. To illustrate this concept, with {{{r(#)}}} ruler, {{{g}}} gap, {{{c(#)}}} content and ''⤵⤴'' direction verbs, the profile above might yield a sequence
+|>|>|>|>|!__Track-1__ |
+| | !__Track-11__ |>|>|!__Track-12__ |
+|>|>| |!__Track-121__ |!__Track-122__ |
+|r(1),r(1),g,''c''(2)|⤵r(1),g,''c''(3)|r(1),g,r(1)|⤵r(1),''c''(2)|r(1),''c''(1)⤴⤴|
+
+
There are various reasons why we might want to offer multiple equivalent UI representations of the same Timeline...
 * the user might want to see several remote parts of the same timeline simultaneously, in focussed display
@@ -3529,7 +3553,7 @@ Now, since we build our UI on the notion of mapping session contents via a messa
 
 In any case, this is an advanced topic, and nowhere near trivial. It seems reasonable to reject opening duplicate timeline presentations as a first step, and then address this topic way later, when we've gained sufficient knowledge regarding all the subtleties of timeline presentation and editing.
-
+
Within the Lumieara GUI, the [[Timeline]] structure(s) from the HighLevelModel are arranged and presented according to the following principles and conventions.
 Several timeline views may be present at the same time -- and there is not necessarily a relation between them, since »a Timeline« is the top-level concept within the [[Session]]. Obviously, there can also be several //views// based on the same »Timeline« model element, and in this latter case, these //coupled views// behave according to a linked common state. An entity »Timeline« as represented through the GUI, emerges from the combination of several model elements
 * a root level [[Binding|BindingMO]] acts as framework
@@ -3558,6 +3582,7 @@ The workspace dimension (vertical layout) is more like a ''Fork'', which can be
 * the second track has a global effect attached; it shows up in the scope ruler
 @@
 This collapsed, expanded and possibly nested workspace structure is always exactly paralleled in the header pane. In addition, it allows to configure specific placement properties for each nested scope, which especially means to display faders and some toggles, depending on what kind of placement was added. Of course, this placement configuration needs to be collapsible too. Effects and markers can appear at various different scopes, sometimes requiring an abridged display
+&rarr; more about [[the actual drawing code|GuiTimelineDraw]]
 
 
 !!!lifecycle and instances
@@ -3580,9 +3605,11 @@ By principle, this workspace structure is //not a list of "Tracks"// -
 In the most general case, there can be per-track content and nested content at the same point in time. The GUI is able to represent this state. But, due to the semantics of Lumiera's HighLevelModel,  top-level content and nested content are siblings //within the same scope.// Thus, at a suitable point {{red{to be defined}}}, an equivalence transformation is applied to the GUI model, by prepending a new sibling track and moving top-level content there.
 
 &rarr; important question: how to [[organise the widgets|GuiTimelineWidgetStructure]]
+&rarr; details of the actual [[timeline drawing code|GuiTimelineDraw]]
+
 
-
+
The Timeline is probably the most prominent place in the GUI where we need to come up with a custom UI design.
 Instead of combining standard components in one of the well-known ways, here we need to come up with our own handling solution -- which also involves to build several custom GTK widgets. Thus the question of layout and screen space division and organisation becomes a crucial design decision. The ~GTK-2 UI, as implemented during the initial years of the Lumiera project, did already take some steps along this route, which was was valuable as foundation for assessment and further planning.
 
@@ -3621,6 +3648,9 @@ Here, the "component" relevant for such structural changes is always t
 
 From these observations we can draw the conclusion, that we'll build a ''local structural model'', to reflect the logical relations between the parts comprising the timeline display. More precisely, these structuring components are not mere model objects, rather they are mediating entities used to guide and organise the actual view entities, which in turn are passive. They are more like a view model, while also bearing some local controller responsibilities. For this reason, we prefer to term these as ''presenters'' -- i.e. TrackPresenter and ClipPresenter. And each of these local representation components holds onto a ''display context'', which generally links it //into two different display widget stacks// within the two parts of the actual timeline display. Adding a child component thus becomes a rather tricky operation, involving to link possibly two child widgets into two disjoint parent widgets, thereby forming a similar display context for the child presenter. Overall, the guiding idea is that of self similarity: on each level, we have to reproduce the same relations and collaborations as present in the parent level.
 
+Another aspect related to the nesting of scopes is the question how to organise the &rarr; [[actual timeline drawing code|GuiTimelineDraw]].
+We may exploit the nested structure of the UI representation objects by letting them emit intermediary instructions towards the actual Cairo drawing code.
+
 !!!building the timeline representation structure
 It is a fundamental decision within the Lumiera UI that any structure has to be injected as diff by the core. We do not hold a structure or data model within some UI entity and then "interpret" that model into a widget structure -- rather we build the widget structure itself in response to a diff message describing the structure. Especially in the case of timelines, the receiver of those messages is the InteractionDirector, which corresponds to the model root. On being prompted to set up a timeline, it will allocate a {{{TimelineWidget}}} within a suitable timeline docking panel and then attach to the {{{TimelineController}}} embedded within the widget.
 
@@ -8782,11 +8812,12 @@ function addKeyDownHandlers(e)
 
 
-
+
The Name of the Software driving this Wiki. Is is written completely in ~JavaScript and contained in one single HTML page.
 Thus no server and no network connection is needed. Simply open the file in your browser and save changes locally. As the [[Engine/Development TiddlyWiki|CoreDevelopment]] HTML is located in the Lumiera source tree, all changes will be managed and distributed via GIT. While doing so, you sometimes will have to merge conflicing changes manually in the HTML source.
  * see GettingStarted
- * see [[Homepage|http://tiddlywiki.org]], [[Wiki-Markup|http://tiddlywiki.org/#Markup]], [[CSS-formatting|http://tiddlywiki.org/#%5B%5BCSS%20Formatting%5D%5D]]
+ * see [[Wiki-Markup|https://classic.tiddlywiki.com/#HelloThere%20%5B%5BHeadings%20Formatting%5D%5D%20%5B%5BBasic%20Formatting%5D%5D%20%5B%5BCode%20Formatting%5D%5D%20%5B%5BCSS%20Formatting%5D%5D%20%5B%5BHorizontal%20Rule%20Formatting%5D%5D%20%5B%5BHTML%20Entities%20Formatting%5D%5D%20%5B%5BHTML%20Formatting%5D%5D%20HtmlEntities%20%5B%5BImage%20Formatting%5D%5D%20%5B%5BLine%20Break%20Formatting%5D%5D%20%5B%5BLink%20Formatting%5D%5D%20%5B%5BList%20Formatting%5D%5D%20PeriodicTable%20PlainText%20PluginFormatting%20%5B%5BQuotations%20Formatting%5D%5D%20%5B%5BSuppressing%20Formatting%5D%5D%20%5B%5BTables%20Formatting%5D%5D%20TiddlerComments]], [[CSS-formatting|https://classic.tiddlywiki.com/#%5B%5BCSS%20Formatting%5D%5D]]
+__note__: This is  a //Tiddly Wiki »classic«// -- the version prior to the complete rewrite known as [[TiddlyWiki-5|http://five.tiddlywiki.com/]]
 
diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 735f247b4..c98bd537e 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -19663,9 +19663,63 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + +

+ warum? +

+

+ weil sonst der TrackBody um die Dekoration wissen müßte, +

+

+ wenn er mit der HeaderPane den benötigten Platz aushandelt +

+ + +
+ + + + + + + + + + + + + + + + + +