Lumiera  0.pre.03
»edit your freedom«
Todo List
File abstract-tangible-test.cpp

WIP ///////////////////////TICKET #959 : GUI Model / Bus

WIP ///////////////////////TICKET #956 : model diff representation

WIP ///////////////////////TICKET #961 : tests to pass...

Class AbstractMO
seems that we don't need this intermediate class...
File abstractmo.cpp
result of the very first code generation from UML in 2008.
File abstractmo.hpp
result of the very first code generation from UML in 2008.
File access-casted-o.hpp
This is the obsoleted old version: It was excessively permissive, which I've learned to view as a danger, since it encourages a sloppy programming style.
File actions.hpp
the old Gtk::Action and Gtk::ActionGroup are planned to be deprecated. Recommendation is to rely on Gtk::Builder and Gtk::SimpleAction instead. As of 5/2017, it is not clear to what extent this might force us into additional "desktop integration" we do not need nor want (like automatically connecting to D-Bus). For that reason, we'll postpone this transition for the time being /////////////////////TICKET #1068
Member Actions::populateShowPanelActions (Gtk::UIManager &uiManager)
4/2017 this can only be a preliminary solution. What we actually want is perspectives, and we want a specific UI to be anchored somewhere in UI space, so we'll be rather be navigating towards it, instead of "showing it here".
Member Actions::updateActionState (workspace::WorkspaceWindow &currentWindow)
as of 2017, the relation of panels to top level windows is unclear and likely needs to be replaced by a focus + perspective concept (–> see topic "Interaction Control")
File advice.cpp

This approach is closely related to the decision to use a single global index table for managing all advice collaborations. An alternative would be to use either a separate table for each type, or to store an additional type descriptor with this memory management information into each "bucket", which can be assumed to manage entries dealing with the same kind of advice data, because each binding automatically includes a type guard. If we ever happen to get a significant amount of advice data, but only a small number of different advice types, we should reconsider this optimisation.

rewrite the allocation to use Lumiera's MPool instead of heap allocations //////TICKET #609

File advice.hpp

allow variables in binding patterns

use the lumiera MPool instead of heap allocations

consider to provide variations of the basic behaviour by policy classes

the implementation is generic/defensive, and could be improved and optimised

Class AdviceBindingPattern_test
partially unimplemented and thus commented out ////////////////////TICKET #605
Member AdviceBindingPattern_test::verifyDynamicMatch ()
this is a future extension and its not clear if we need it and what the exact semantics could be ///////////////////////////////TICKET #615
Class AdviceConfiguration_test
partially unimplemented and thus commented out ////////////////////TICKET #605
Class AdviceMultiplicity_test
advanced topic, deferred for now (4/10) ////////////////////TICKET #610
Class AdviceSituations_test
yet more use cases to come.... ////////////////////////////////////////////////////////TICKET #335
Member AdviceSystem::allocateBuffer (size_t siz)
rewrite to use Lumiera's block allocator / memory pool /////////////////////////////////TICKET #609
File allocation.cpp
result of the very first code generation from UML in 2008.
File allocation.hpp
result of the very first code generation from UML in 2008.
Member Allocation::intersect (LocatingSolution &) const
probably a placeholder and to be pushed down....
File allocator-handle.hpp
6/2023 this specification describes a Concept, not an actual interface type. After the migration to C++20, it will thus be possible to mark some arbitrary custom allocator / front-end with such a concept, thereby documenting proper API usage.
Class AllocatorHandle< TY >

shall be replaced by an AllocationCluster eventually

5/2024 to be reworked and aligned with a prospective C++20 Allocator Concept /////////////////////TICKET #1366

File alsa.h
for now this header defines some functions used for experimentation with ALSA
Member anonymous_namespace{time.cpp}::calculate_drop_frame_number (gavl_time_t time)
I doubt this works correct for negative times!!
File argument-tuple-accept.hpp
switch to variadic templates. Requires a rework of Types<...> /////////////////////////////////////TICKET #967
File assembler.cpp
initially generated code of unclear relevance
File assembler.hpp
initially generated code of unclear relevance
File asset-controller.cpp
WIP 2/2017 early draft / foundations of "interaction control"
File asset-controller.hpp
WIP 2/2017 early draft / a new UI backbone
File asset/effect.cpp
still unimplemented and stalled work as of 2016
Class AssetController
initial draft as of 2/2017 – actual implementation has to be filled in
File assetmanager.hpp

10/10 meanwhile I'm unhappy with some aspects of this implementation //////////////TICKET #691

12/12 and meanwhile I'm way more unhappy with the whole design. Looks like I wasn't proficient enough with OO design in C++ when writing that original design. Especially, this design couples the object creation, the memory management and the registration way too tightly. Having a registration magic in the asset baseclass ctor is just too clever and a half. Rather, there should be a responsibility chain, using completely passive Asset objects: Factory -> AssetManaager -> Asset object

Member AssetManager::clear ()
verify this actually works, especially with session shutdown ////////////////////////////TICKET #154
File auto.cpp
result of the very first code generation from UML in 2008.
File auto.hpp
result of the very first code generation from UML in 2008.
Class AutoExpander< SRC >
as of 12/2017, this is more like a proof-of concept and can be seen as indication, that there might be several flavours of child expansion. Unfortunately, most of these conceivable extensions would require a flexibilisation of Expander's internals and thus increase the complexity of the code. Thus, if we ever encounter the need of anything beyond the basic expansion pattern, we should rework the design of Expander and introduce building blocks to define the evaluation strategy.
File bin-widget.cpp
WIP-WIP-WIP as of 12/2016
File bin-widget.hpp
WIP-WIP-WIP as of 12/2016 we have only very vague preliminary plans regarding the asset management section; also the asset management within the session subsystem will be rewritten to fit our increased understanding of the editing process. So for now, this widget is a mere placeholder in a largely preliminary UI (need more weasel words?)
Class BinWidget
WIP-WIP as of 12/2016
File body-canvas-widget.cpp
as of 3/2023 the foundation of this rewritten, highly flexible drawing code established, and the layout seemingly behaves reasonably stable and visually as expected, yet with some minor glitches. Any kind of dynamic adjustment in response to expanding/collapsing or the content representation of clips is not yet implemented
Member BodyCanvasWidget::establishLayout (DisplayEvaluation &) override
2/2020 WIP
Class BufferProvider

as of 6/2011 buffer management within the engine is still a bit vague

as of 11/11 thread safety within the engine remains to be clarified ///////////////////////////TICKET #854

Class BuffTable
this whole design is a first attempt and rather clumsy. It should be reworked to use a single contiguous memory area and just layer the object structure on top (by using placement new). Yet the idea of an stack-like organisation should be retained
Member Builder< ErrorLog >::Builder (string name)
what is "the default log"??
Member Builder< ErrorLog >::commit ()
currently (8/2018) this is a mere placeholder, we just need an EntryID<ErrorLog>. ///////////////TICKET #1157
Member Builder< TimeGrid >::commit ()
currently (12/2010) the AssetManager is unable to detect duplicate assets. Later on the intention is that in such cases, instead of creating a new grid we'll silently return the already registered existing and equivalent grid.
Member Builder< TimeGrid >::predecessor
currently not supported (as of 12/2010)
File builderfacade.hpp
as of 2016 the builder, as the most crucial component within the architecture, still remains to be addressed. While we'd hoped to get ahead faster, it is considered a good idea not to decide upon the implementation based on assumptions. We will start building the builder "when it is ready"
Class BuildID< PLA >
this is a rather half-baked solution //////////TICKET #523
File bus-mo.cpp

stalled effort towards a session implementation from 2010

2016 likely to stay, but expect some extensive rework

File bus-mo.hpp

stalled effort towards a session implementation from 2010

2016 likely to stay, but expect some extensive rework

Class CairoUtil
this is not a real entity; consider to turn this into a set of free functions!
File calc-stream.hpp

this draft was created in 2013 just to the point of defining the skeleton of the engine.

as of 2016, this is considered the way to go and will be completed eventually

Class CalcStream_test
WIP-WIP-WIP
File call-queue.hpp
simplistic braindead implementation with locking and heap based storage based on std::function; should use a lock-fee queue and should have an eye on the impact of managing argument storage
Class Category
could be far more elaborate. could be a singleton like centralised tree, while just holding references to Category nodes in the individual Asset. At the moment, we just use the most simplistic implementation and handle Category objects using value semantics.
Member Category::operator string () const
to be localized.
File channel-descriptor-obsolete.hpp

as it stands (11/2011) this file is obsoleted and needs to be refactored, alongside with adapting the node invocation to the new BufferProvider interface.

as of 5/2024, this will be retained as part of the FeedManifold, which in turn takes on some aspects of the old buffer table draft.

Class ChildExpandableSource< VAL >
expandChildren() should not return the value pointer. This is just a workaround to cope with the design mismatch in IterSource; the fact that latter just passes around a pointer into the implementation is ugly, dangerous and plain silly. ////////////////////////////////////////////////////////////TICKET #1125 Incidentally, this is also the sole reason why this interface is templated with VAL
Class Clip
define how to denote Time positions /lengths. This is tricky, because it depends on the actual media type, and we want to encapsulate all these details as much as possible.
File clip-presenter.hpp

WIP-WIP-WIP as of 12/2016

as of 10/2018 timeline display in the UI is rebuilt to match the architecture

File clip-widget.cpp
WIP-WIP-WIP as of 1/2021
File clip-widget.hpp
WIP-WIP as of 1/2021
Member Clip::mediaDef_
using a mere ref here is against the scheme and only done as temporal solution, until we work out how to handle multichannel clips.
Class ClipDelegate
WIP-WIP as of 2/2021
Class ClipPresenter
WIP-WIP as of 12/2016
Member ClipPresenter::ClipPresenter (ID identity, ctrl::BusTerm &nexus, WidgetHook &view, optional< TimeSpan > const &timing)
2022 should provide a way to specify a media type immediately at construction //////////////TICKET #1251 : how to specify media type for the Clip
File cmd-context-test.cpp
created 3/2017 as a marker for planned concepts, postponed for now...
File cmd-context.cpp
as of 3/2021 the first prototype for a dragging gesture is shaped The scheme for addressing gestures and scopes is nothing but guesswork currently, since we mostly lack any real-world implementation and haven't done any detailed analysis regarding the actual gestures to be implemented. Only the concept is clear.
File cmd-context.hpp

as of 3/2017 this is a early design draft and WIP-WIP-WIP

after initial design draft, postponed as of 10/2017

File cmd.hpp
WIP 3/2017 early draft
Class CmdContext
write type comment...
Class CmdContext::Resolver
4/2021 this was part of a design draft in 2017, not clear yet if we need it
Member CmdContext::Resolver::operator LuidH ()
4/21 this was an idea from the initial draft in 2017 – undecided yet
File command-impl-clone-builder.hpp
Ticket #301 : it may well be that the need for such a facility is a symptom of misaligned design, but I rather doubt so – because both the memento holder and the command closure need a specifically typed context, and there is no reason for combining them into a single facility.
File command-queue.hpp
as of 12/2016 this is fully functional, but we may want to add some further management functions like purging of expired commands
Member CommandArgument_test::serialiseArgTuples (ArgTuples &tup)
unimplemented, waiting on Serialiser
Class CommandBinding_test
add more test cases...
Class CommandUse2_test
this test is still on hold, as the non-trivial patterns aren't implemented as of 10/09 ////////////////TICKET #211
Class CommandUse3_test

planned but not implemented as of 7/09

as of 12/2016 I doubt we'll get asynchronous invocation but command sequence bundles still seem a reasonable future idea

File common/advice/binding.hpp
for now, only the case of a completely constant (ground) pattern is implemented. Later we may consider to extend the binding patterns to allow variables, which, on match could be fed as parameters to the bound advice. But this extension requires to extend the simple hash-based match check to an actual unification of the patterns. ///TICKET #615
File config-facade.h
there ought to be an external Interface for the Config subsystem. But the full-blown Config system isn't implemented yet anyway
File config-interface.c
as of 2016 this code is unused and likely to be replaced by a different approach.
File config-interface.h
as of 2016, the code is still there in same unfinished shape and basically unused
File config-lookup.c
as of 2016 this code is unused and likely to be replaced by a different approach.
File config-lookup.h
as of 2016, the code is still there but remains mostly unused
File config-resolver.cpp
draft from the early design phase of the Lumiera application. As of 2016, nothing was done on behalf of rules-based configuration, other then preparing the whole architecture for this capability. So this remains one of the most relevant goals of the Project.
File config-resolver.hpp
clarify the relation of config query and query-for-defaults ///////////////TICKET #705
File config-rules.cpp
placeholder and mostly not implemented as of 11/2016
File config-rules.hpp

right now (12/2012) the above paragraph is a lie. ConfigQuery is way older than QueryResolver and will be retrofitted step by step. Not much of a problem, since the currently utilised mock implementation isn't able to deal with a real query anyway.

as of 11/2016 the situation is basically the same: this is placeholder code and just implemented enough to keep us going without violating the architecture vision

clarify the relation of config query and query-for-defaults ///////////////TICKET #705

File config-typed.c
as of 2016 this code is unused and likely to be replaced by a different approach.
File config-wordlist.c
as of 2016 this code is unused and likely to be replaced by a different approach.
File config.c
as of 2016 this code is not used and never was
File config.h
as of 2016, this code is not in any meaningful use
File configentry.c
as of 2016 this code is unused and likely to be replaced by a different approach.
File configentry.h
as of 2016 this code is unused and likely to be replaced by a different approach.
File configfacade.cpp
as of 2016, this seems not to be used much, if at all. The GTK-UI, which in itself is very preliminary, retrieves some values from configuration, most notably the name of the GTK stylesheet (lumiera.css is the default)
File configitem.c
as of 2016 this code is unused and likely to be replaced by a different approach.
File configitem.h
as of 2016 this code is unused and likely to be replaced by a different approach.
Class ConfigSelector< Factory, FUNC, PAR >
as the factories live only within the enclosed table (map) we could allocate them in-place. Unfortunately this is non-trivial, because the STL containers employ value semantics and thus do a copy even on insert. Thus, for now we use a shared_ptr to hold the factory heap allocated. —> see Ticket #248
File conmanager.cpp
initially generated code of unclear relevance
File conmanager.hpp
initially generated code of unclear relevance
Member ConManager::getConnection ()

just a design sketch from 2008, work out signatures etc...

TODO IT!!!!!!!!!!!!!!!!!!

Class Connectivity

the design of this part is messy in several respects. Basically, its left-over from a first prototypical implementation from 2008 As of 1/2012, we're re-shaping that engine interface and invocation with a top-down approach, starting from the player. Anyhow, you can expect the basic setup to remain as-is: there will be a ProcNode and a Connectivity descriptor, telling how it's connected to its predecessors, and defining how the Node is supposed to operate

WIP-WIP-WIP 2024 Node-Invocation is reworked from ground up for the »Playback Vertical Slice«

the design of this part is messy in several respects. Basically, its left-over from a first prototypical implementation from 2008 As of 1/2012, we're re-shaping that engine interface and invocation with a top-down approach, starting from the player. Anyhow, you can expect the basic setup to remain as-is: there will be a ProcNode and a Connectivity descriptor, telling how it's connected to its predecessors, and defining how the Node is supposed to operate

WIP-WIP-WIP 2024 Node-Invocation is reworked from ground up for the »Playback Vertical Slice«

File connectivity-obsolete.hpp
WIP-WIP-WIP 2024 delete this file!!!!
File constraint.cpp
result of the very first code generation from UML in 2008.
File constraint.hpp
result of the very first code generation from UML in 2008.
File control-policy.hpp
6/2011 include all the special cases for QuTimeSpan ////////////////////TICKET #760
File control.hpp
include support for QuTimeSpan values ////////////////////TICKET #760
Class Controller
write type comment...
Class Controller
needs to be reshaped for communication with Steam-Layer ////////////////TICKET #959
File controller.hpp

as of 1/2015 this is complete WIP-WIP-WIP

as of 8/2018 we should consider to distill a common default implementation usable for most controllers. especially, there might be a default (NOP) implementation of the diff mutator builder

Member Controller::doMark (GenNode const &mark) override
is there any default implementation for special messages, which might be eligible as a base class implementation??
Class DataSpan< D >
replace by const std::span
Class DefsRegistry
as of 3/2008 the real query implementation is missing, and the exact behaviour has to be defined.
Class DeleteClip_test
////////////////////////////////////////////////TICKET #499
File diagnostic-buffer-provider.cpp
WIP from 2013, half finished, stalled
Class DiagnosticBufferProvider
write type comment
Member DiagnosticContext< VAL >::extractStack ()
benchmark and improve the data structure used for the snapshot. Vector is not an optimal choice here.
Member die_no_mem (enum lumiera_resource which, enum lumiera_resource_try *iteration, void *context)
10/2023 in the early stages of the Lumiera project a centralised resource pooling was considered. On resource shortage, the (planned) resource-collector would attempt to reclaim excess resources. This would allow to use resources (e.g. memory) wastefully as trade-off for performance gains. This concept was never developed beyond an interface draft; most notably it was never clarified how excess resources could have been identified on-demand while in-flight. Today I view this concept as an immature plan and remove the remaining draft code.
Class DigxelConfigurations_test
cover any newly added Digxel configurations.
File dispatch-table.cpp

draft from 2011, stalled, relevance not yet clear

6/2023 still unimplemented, as is the Fixture, which needs to back the Dispatcher

File dispatch-table.hpp
6/2023 »PlaybackVerticalSlice« : completing and integrating the core engine step by step
Class Dispatcher
6/23 API is remoulded from ground up (»Playback Vertical Slice« integration effort)
File dispatcher.cpp
2023 do we actually need a separate translation unit for this?
File dispatcher.hpp
as of 4/2023 a complete rework of the Dispatcher is underway //////////////////////////////////////TICKET #1275
Member Dispatcher::PipelineBuilder< SRC >::feedTo (play::DataSink &sink)
6/2023 more akin to a place holder, since it is not clear what must be done with the sink handle(s). Moreover, a Transformer returning a reference to the JobPlanning (deeper down in the pipeline) causes yet another unnecessary indirection; if the Transformer wasn't there, the resulting iterator would directly expose the result of the expander, which is the actual JobPlanning (but then we'd need another way how to wire in the DataSink...)
Class DispatchTable
6/2023 gradually building up the core engine components...
File display-evaluation.cpp
WIP-WIP-WIP as of 3/2020
File display-evaluation.hpp
WIP-WIP-WIP as of 3/2020
File display-manager.cpp

as of 10/2018 timeline display in the UI is rebuilt to match the architecture

3/2020 do we actually need this global translation unit?

File display-manager.hpp

as of 10/2018 timeline display in the UI is rebuilt to match the architecture

WIP-WIP-WIP - drafting the DisplayEvaluation as of 3/2020

WIP as of 1/2021 about to build a first preliminary Clip representation

Class DisplayEvaluation
WIP-WIP as of 3/2020
Class DisplayManager
WIP-WIP as of 12/2019
File dock-area.cpp
will be transformed into a Dock entity as of 6/2018 /////////////////////////////////////////////TICKET #1144 refactor dock handling
File dock-area.hpp

2017 need to clarify the intended behaviour of panels ///////////////////////////////////////////////////////////////////////////TICKET #1097 clarify the role and behaviour of Panels

will be transformed into a Dock entity as of 6/2018 /////////////////////////////////////////////TICKET #1144 refactor dock handling

as of 8/2018 this is a copy of the (still actively used) PanelManager; the intention was to do a clean rewrite and then throw away the old messy PanelManager implementation. Meanwhile I was forced to add yet more cruft to PanelManager, just to keep it going. Beware!

Class DockArea
this code is smelly and needs some clean-up ///////////////////////////////TICKET #1026
File dot-gen.hpp
11/2023 this is an initial draft, shaped by the immediate need to visualise random generated computation patterns for Scheduler load testing. The abstraction level of this DSL is low and structures closely match some clauses of the DOT language; this approach may not yet be adequate to generate more complex graph structures and was extracted as a starting point for further refinements.
File drag-relocate-controller.hpp
WIP and prototypical implementation as of 3/2021
Class DragRelocateController

write type comment...

WIP-WIP as of /3/2021 ///////////////////////////////////TODO do we need a translation unit interaction-state.cpp (otherwise delete it!)

File dummy-builder-context.hpp

5/2023 add more elements as needed for test driven integration of Player and engine

this was invented in 2012 – but development of the player subsystem stalled thereafter.

File dummy-image-generator.cpp
obsolete since 2010, can be removed once we have a real player in the UI
File dummy-image-generator.hpp
obsolete since 2010, can be removed once we have a real player in the UI
File dummy-play-connection.hpp
this was invented in 2012 – but development of the player subsystem stalled thereafter. As of 2016, I still consider this design valid and intend to pick up development when able to address this topic again. At the moment, the UI-Session connection is more urgent.
File dummy-session-connection.cpp
WIP as of 10/2018 ///////////////////////TICKET #1042
File dummy-session-connection.hpp
WIP as of 10/2018 //////////////////////////////////////////////////////////////////////TICKET #1042
Class DummyPlayConnection< DEF >

not-yet-implemented as of 2016 – but the design can be considered valid.

6/23 still largely unimplemented, but used as generator for mock ModelPort

Class DummySessionConnection
as of 2018, the most pressing problem is to establish the interplay between Stage-Layer and Steam-Layer, so the software gains some tangible functionality...
Member DummySessionConnection::applyCopy (MutationMessage const &)
build an internal "shadow data structure" and apply all diffs there as well...
File elem-access-dir.hpp
WIP-WIP-WIP need to learn more about the concrete UI implementation ///////////////////////TICKET #1134
Class ElemAccessDir
mostly not yet implemented as of 4/2018 – need to learn more about aforementioned internals.
File element-access.hpp
WIP ///////////////////////TICKET #1134
File element-box-widget.cpp

as of 9/2022 we just hide the label text completely to comply with the constraints; it is conceivable to use a more elaborate approach and to shorten the label text to fit.

WIP-WIP as of 09/2022 ///////////////////////////////////////////////////////////////////////TICKET #1185

File element-box-widget.hpp

WIP-WIP-WIP as of 11/2018 ///////////////////////////////////////////////////////////////////////TICKET #1185

WIP-WIP-WIP as of 9/2022 ///////////////////////////////////////////////////////////////////////TICKET #1219

File element-query.hpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

Class ElementAccess_test
4/2018 in the course of establishing an UI backbone, it is sufficient just to have that abstraction interface; so the test focuses merely on the invocation, and documents how the mock be used. Which is a prerequisite to get the ViewSpecDSL_test finished. The intention is to elaborate the mock in a second step later and use it to build a draft of the implementation mechanics, but based on Rec<GenNode> rather than on the real UI topology.
Class ElementBoxWidget
consider policy based design, //////////////////////////////////////////////////////////////////TICKET #1239 : re-evaluate Design, maybe use Policy Based Design but need more exposure and real world usage as of 9/22
File engine-config.cpp
6/2023 not clear if this is placeholder code or something substantial; however, it seems not plausible; rather I'd expect some data collection and information service to be connected with the RenderEnvironmentClosure
File engine-config.hpp
6/2023 not clear if this is placeholder code or something substantial; however, it seems not plausible; rather I'd expect some data collection and information service to be connected with the RenderEnvironmentClosure
File engine-ctx-facilities.hpp

and we'll have yet to »figure out« what specifically to do for these services and how to start an active render engine for productive use.

WIP-WIP 10/2024 strive at first complete prototypical engine usage ////////////////////////////////////////TICKET #1367

File engine-ctx.hpp

who is responsible for setup of the services for the actual render engine? Might be closely related to brining up façade interfaces.

WIP-WIP 10/2024 provide render node structures

File engine-observer.hpp

WIP-WIP-WIP 10/2023 »Playback Vertical Slice« created as a stub

design and implement the EngineObserver as publisher-subscriber... ////////////////////////////////TICKET #1347 : design EngineObserver

File engine-service-mock.cpp
draft from 2012, and, while stalled, still relevant as of 2016
File engine-service-mock.hpp
1/2012 until the real render engine is usable, this mock implementation will stand-in, allowing us to develop the other parts of the play/render subsystem.
File engine-service.hpp
draft from 2013, stalled, but still relevant and to be continued eventually
Class EngineConfig

WIP-WIP as of 1/2013

anything regarding configuration and session storage

find out about the degree of locking required. Right now (1/13), there is no locking and all values are hard coded. It is conceivable to implement the access in a lock-free manner (by loosening any guarantee regarding the actual time point when a changed setting becomes visible)

Member EngineConfig::currentEngineLatency () const
hard wired value as of 1/2013
File enginefacade.cpp
placeholder/draft as of 1/2017
Class EngineObserver
WIP-WIP 10/2023 - stub as placeholder for later development ////////////////////////////////////TICKET #1347 : design EngineObserver
File entry-id.hpp
as of 11/2018 the basic design seems adequate, but the actual solution looks fishy. Even more so, since we now use subclasses of BareEntryID
  • as identity tag within lib::diff::GenNode
  • as identity tag for all tangible UI elements There are various quirks and hacks to make all of this happen, and especially the hashed-in type information feels gratuitous at places, when all we actually need is a distinct identity plus a human readable symbol.
Class EntryID< TY >

currently storing the symbolic-ID as string. It should be a lib::Symbol, but this isn't possible unless we use a symbol table. //////TICKET #158

As a temporary workaround, we hash the symbolic ID twice, but we should look into using a better hash function ////////////TICKET #865

File error-log-display.hpp

WIP-WIP-WIP as of 9/2017 this is a first draft of a widget to be used as receiver by the GuiNotificationService.

WIP-WIP and in 9/2018 this draft gradually shifts towards a prototype how to deal with custom configured widget behaviour, and how to integrate with our GUI framework (#1099)

File error-log.hpp
8/2018 created as mere placeholder; for now we just need an EntryID<ErrorLog> in order to mark the corresponding receiver widget in the UI. The idea is eventually to persist relevant messages, filtering them out as time passes. Such an incident log would be part of the session model, thus replicating its contents into the corresponding stage::widget::ErrorLogView – which displays notifications without blocking the UI.
Class ErrorLog
8/2018 mere placeholder type for now, to allow defining an EntyID<ErrorLog>. We conceptually need "the" ErrorLog entity as correspondence to the ErrorLogView in the GUI.
Class ExecResult
couldn't that be replaced by a lib::Result<void> instance??
File exit-node.hpp
6/2023 WIP-WIP used as placeholder; relation to ProcNode not yet determined /////////////TICKET #1306
Class ExitNode
6/2023 for the »Playback Vertical Slice« we need somehow to represent "the nodes", while the final solution how to hook up ProcNode and how to represent prerequisites remains still to be settled. So this is a placeholder to support mock testing for now.
Class Facade

this is a dummy placeholder as of 1/2009. Currently, there is only implementation-level code within the Steam-Layer and the interfaces need to be worked out.

at least the Play/Output subsystem slowly turns into something real, as of 6/2011

and as of 1/2017, the Session subsystem is basically implemented and it became clear that there won't be a "Builder subsystem". So this interface might now be considered roughly complete...

File fake-configrules.hpp
to be removed in Alpha, when integrating a real resolution engine /////////////////TICKET #710
File feed-manifold-obsolete.hpp
staled since 2009, picked up in 2024 in an attempt to finish the node invocation.
File feed-manifold.hpp

staled since 2009, picked up in 2024 in an attempt to finish the node invocation.

WIP-WIP 2024 rename and re-interpret as a connection system

Class FeedManifold< N >

this whole design is a first attempt and rather clumsy. It should be reworked to use a single contiguous memory area and just layer the object structure on top (by using placement new). Yet the idea of an stack-like organisation should be retained

WIP-WIP-WIP 7/24 now reworking the old design in the light of actual render engine requirements...

File file.cpp
3/24 consider to establish some central location to define basic literals.
File file.hpp
3/2024 should be part of generic utilities
Class FixedLocation
use a subclass to represent the LocatingSolution? would solve the construction of a ExplicitPlacement much more natural. //////////TICKET #100
File fixedlocation.cpp

stalled effort towards a session implementation from 2008

2016 likely to stay, but expect some extensive rework

File fixedlocation.hpp

stalled effort towards a session implementation from 2008

2016 likely to stay, but expect some extensive rework

Class Fixture
1/2012 Just a Placeholder.
File fixture-change-detector.hpp
WIP-WIP-WIP as of 12/2010
File fixture.cpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

File fixture.hpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

Member Fixture::getAutomation ()
: just a placeholder at the moment!!!
Member Fixture::isValid () const
self-verification of the fixture? necessary?
Class FixtureChangeDetector_test
just a placeholder, nothing done here thus far (2016)
File focus-tracker.cpp
WIP 2/2017 early draft / foundations of "interaction control"
File focus-tracker.hpp
WIP 2/2017 early draft / foundations of "interaction control"
Class FocusTracker
initial draft as of 2/2017 – actual implementation has to be filled in
File fork.cpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

File fork.hpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

File format-obj.hpp
is it possible to stash away the boost::lexical_cast behind a custom facade, the way we did it for boost::format? This would reduce inclusion cost...
Class FrameID
currently (7/08) this is a dummy implementation to find out what interface the Steam layer needs. Probably the vault layer will later on define what is actually needed; this header should then be replaced by a combined C/C++ header
File frameid.hpp
2016 the intention was to use this as cache key, and to include some information regarding the processing chain which led up to the calculation of this frame, to allow for intelligent caching and to avoid throwing away most of the frames on each and every tweak of the edit. This marker was added as a preview in 2010 but we didn't get to the point of actually putting that idea into practical use. Yet the basic idea remains desirable...
File function-closure.hpp

the implementation is able to handle partial application with N arguments, but currently we need just one argument, thus only this case was wrapped up into a convenient functions func::applyFirst and func::applyLast

11/23 these functor-utils were written at a time when support for handling generic functions in C++ was woefully inadequate; at that time, we neither had Lambda-support in the language, nor the ability to use variadic arguments. Providing a one-shot function-style interface for this kind of manipulations is still considered beneficial, and thus we should gradually modernise the tools we want to retain...

File function.hpp
get rid of the repetitive specialisations and use variadic templates to represent the arguments /////////////////////////////////TICKET #994
Class GdkDisplayer
the GdkDisplayer class is not supported anymore in Gtk3. This is due to Gtk3 only supporting drawing with Cairo /////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #950 : new solution for video display
File gen-node-location-query.hpp
WIP 10/2017 started in the effort of shaping the LoactionQuery interface, and used to support writing unit tests, to verify the UiCoordResolver. It remains to be seen if this implementation can be used beyond this limited purpose
File generator-mo.cpp

WIP implementation of player subsystem from 2011

as of 2016, this effort is considered stalled but basically valid

File generator-mo.hpp

WIP implementation of player subsystem from 2011

as of 2016, this effort is considered stalled but basically valid

Member GeneratorMO::GeneratorMO ()
using a mere ref here is against the scheme and only done as temporal solution, until we work out how to handle multichannel clips.
File genfunc.hpp

better unit test coverage

improve implementation of typeFullID

File gesture-state.cpp
do we really need a segregated translation unit for the InteractionState implementations? The alternative would be to emit all the related code from interaction-director.cpp; and in this alternative solution, we'd also allocate all the interaction state right within GestureState, without PImpl. The benefit would to avoid yet another indirection, while the downside would be to include all those implementations unnecessarily also into cmd-context.cpp, with the danger that someone later on starts to "short circuit" directly into some implementation, by switching on type.
File gesture-state.hpp
WIP-WIP as of 3/2021 about to create a prototype implementation for dragging clips...
Class GestureState

write type comment...

WIP-WIP as of 3/2021

as of 3/2021 the whole scheme for addressing gestures and actual state implementations is rather just guesswork ///////////////////////////////////TODO do we need a translation unit interaction-state.cpp (otherwise delete it!)

Member GestureState::getStateFor (Action action, Scope qualifier)
as of 4/2021, interactions and UI state handling can be considered an early draft; since the UI needs to be fleshed out in more detail in order to decide on a proper organisation and possibly flexible configuration.
File gnuplot-gen.cpp
WIP 4/2024 first usage as part of Scheduler stress testing.
File gnuplot-gen.hpp
3/2024 this is an initial draft, shaped by the immediate need to visualise measurement data collected while testing the new Scheduler implementation.
Class Grid

WIP-WIP-WIP

maybe abstract this from Time altogether?

File handling-pattern.hpp

it is not clear what's the difference between "throw" and "no-throw" pattern

any integration with the (yet undefined as of 9/09) SteamDispatcher is missing.

Class HandlingPatternStandardImpl_test
define and code those handling patterns; Ticket #210
File hash-standard.hpp
4/2014 doesn't work as expected. My suspicion is that in the actual use case (PlacementIndex), the type providing the hasher is mixed in through inheritance, and the template specialisation for this base type is not considered on lookup. ///////TICKET #722
File hash-value.h
11/2024 : to ensure a strong and reproducible implementation of hash-chaining, the implementation of LibBoost is used directly. This breaks portability. ///////////////////////////////////////////////////////////////////////////////TICKET #722
File header-pane-widget.hpp
WIP-WIP-WIP as of 12/2016
Class HeaderPaneWidget
WIP-WIP as of 12/2016
Class HelloBug_test
come up with some more bugs
Member Holder< TYPES >::access (Buffer &buf)
shouldn't this rather be located within the Holder::Storage created by clients??
File id-scheme.hpp
as of 2017 .. 2021, this is a half-finished draft and postponed in favour of building the actually visible timeline display first
Class ID< KIND >
it would be desirable to use EntryID instead ///////////////////////////////////////////TICKET #739 : make identification schemes compatible
Member IdentityOfAssets_test::createDuplicate ()
this test is expected to break when the detection of duplicate registrations is implemented.
Member IDLabel::adaptSize (int, int)
as of 10/22, a planned full implementation will eventually shorten the caption text and possibly also combine both Icons into a single button when necessary... ///////////////////TICKET #1242 : adjust size of the ID caption
Class ImplFacadeGAVL
2016 evaluate if libGAVL is still active and maintained
File infobox-panel.hpp
as of 10/2017 this is used as space to host the information and error log
Member InfoBoxPanel::InfoBoxPanel (workspace::PanelManager &, Gdl::DockItem &)
just used as place for the error log as of 10/2017. More to come...
Class InPlaceAnyHolder< siz, AccessPolicy >
add support for moving of rvalue refs
Class Instant
7/2023 this decision should be revised //////////////////////////////////////////////////////////TICKET #1261 : reconsider (im)mutability of time entities
Class Instantiation< _CandidateTemplate_ >

1/2016 is there no better way to achieve this, based on new language features /////////////TICKET #986 Basically we want a SFINAE helper not only to check if a specific instantiation can be formed (which would be trivial), but rather, if a specific instantiation has already been defined. An automated solution for this problem seems questionable by theoretic reasons; such would endanger the "One Definition Rule", since the state of definedness of any type may change during the course of a translation unit from "unknown" to "declared", "partially defined" to "fully defined". To hinge the existence of another type on this transitory state would introduce a dangerous statefulness into the meta-language, which is assumed to be stateless.

what could be done though is to detect if a given template can be default constructed, which, by logical weakening, implies it has be defined at all. Would that satisfy our purpose here?

1/2016 also I'm not happy with the name "Instantiation". It should be something like is_XYZ

File interaction-state.cpp
do we really need a separate implementation unit for this??
File interaction-state.hpp

as of 11/2015 this is complete WIP-WIP-WIP

and as of 3/2021 this is at least just WIP-WIP

Future Plan: in the general case, detecting and handling of complex UI interactions and gestures translates itself into a state machine, maybe even a hierarchical compound of state machines, where the subordinate state machines will detect and handle elementary gestures. The role of InteractionState will then be to provide the building blocks and interfaces for assembling such complex state tracking engines.

Member InteractionDirector::editSetup ()
4/2017 not yet implemented, delegate to the AssetControler, which represents all global aspects of the application, session and project
Member InteractionDirector::newSequence ()
4/2017 using the session-root (=this) as anchor for the moment, but should actually figure out the current context dynamically... //////////////////////////////TICKET #1082 : actually access the interaction state to get "current scope"
Member InteractionDirector::newTrack ()

as of 3/2017 this is an initial draft: It is not clear yet, if this lookup of context will always be treated implicitly, or if it is better to have a public content discovery operation on InteractionDirector and pass the current element explicitly as argument

4/2017 using the session-root (=this) as anchor for the moment, but should actually figure out the current context dynamically... //////////////////////////////TICKET #1082 : actually access the interaction state to get "current scope"

Member InteractionDirector::render ()
4/2017 not yet implemented, and it is not clear how to access the functionality. Do we send a command? Or do we access the Play-Out subsystem directly, to create some kind of dedicated player instance?
Class InteractionState

write type comment...

WIP-WIP as of /3/2021 ///////////////////////////////////TODO do we need a translation unit interaction-state.cpp (otherwise delete it!)

File interfaceproxy.hpp
2018 as it stands (since 2008), the Interface/Plug-in system fulfils the basic task it was created for, but is rather cumbersome to use in practice. We should investigate to use SWIG or something similar to generate the bindings and the low-level interfaces.
Class Inventory
WIP-WIP unimplemented
File inventory.hpp
implementation draft from 2010, stalled as of 2016, but likely to be of relevance eventually...
Class InvocationInstanceID
4/2023 for the time being, this is a mere marker for test code; for the real engine it is planned to generate a unique reproducible hash key for each invocation, which can be used for caching; obviously this hash need to be built from the JobTicket, based on ProcNode structure and the nominal Time. ///////////////////////////////////TICKET #1293
Class InvokeAsync

clarify what "async" means and if we need it....

unimplemented... //////////////////////////////////////////////////////////TICKET #210

describe this pattern in more detail....

Class InvokeSyncNoThrow

describe this pattern in more detail....

unimplemented... //////////////////////////////////////////////////////////TICKET #210

Class InvokeSyncThrow

is throwing here helpful, and how to integrate it into ExecResult...?

describe this pattern in more detail....

unimplemented... //////////////////////////////////////////////////////////TICKET #210

File iter-source.hpp
the design used for the "iteration control API" is misaligned with the purpose of this adapter. Rather, it should be shaped similar to IterStateWrapper with three control functions //////////////////////////////////////TICKET #1125
Class IterAdapterSTL_test
this test just pulls all the values from the iterator and the testsuite verifies the retrieved values. But for the hash-map, the order of the results is not guaranteed, and implementation dependent.
Class IterExplorer< SRC >
if this turns out as a problem on the long run, we'll need to block the iterator operations on the builder (by inheriting protected) and provide an explicit build()-function, which removes the builder API and unleashes or slices down to the iterator instead.
Class IterSource_test
the output order of the values produced by this test is implementation dependent in for the hashmap case
Class IterTools_test
implement more iterator tools.... see Ticket #347
File jack-output.cpp
empty placeholder: yes we will support Jack Audio!
File jack-output.hpp
empty placeholder to underpin the claim: yes we will support Jack Audio!
File job-ticket.cpp
WIP-WIP-WIP 3/2012
Class JobFunctor
refactoring 4/23 – will replace JobClosure
Class JobTicket
6/23 WIP rework and integration for »PlaybackVerticalSlice«
Member JobTicket::getExpectedRuntime ()
6/2023 placeholder implementation with hard wired values in ExitNode
Class Label

Placeholder code for now.

planning to provide some kind of dynamic properties (map)

File label.cpp
result of the very first code generation from UML in 2008.
File label.hpp

result of the very first code generation from UML in 2008.

this is expected to become a very important facility eventually, so expec a lot of rework here...

Member Label::isValid () const
real validity self-check for Label MObject
Class LayoutElement
WIP-WIP as of 3/2020
File lazy-init.hpp
11/2023 at the moment I am just desperately trying to get a bye-product of my main effort into usable shape and salvage an design idea that sounded clever on first thought. I am fully aware that »lazy initialisation« is something much more generic, but I am also aware of the potential of the solution coded here. Thus I'll claim that generic component name, assuming that time will tell if we need a more generic framework to serve this purpose eventually....
Member lib::anonymous_namespace{random.cpp}::eternalNucleus
this one should somehow be configurable
Member lib::diff::mutateInPlace (Record< VAL > &record_to_mutate)
do we have a design mismatch here?? /////////////////////////////////////////TICKET #970
Member lib::explore (IT &&srcSeq)
this framework should be retrofitted to fit in with C++20 pipelines
Member lib::failsafeInvoke (std::exception_ptr &capturedFailure, FUN &&callable, ARGS &&...args) noexcept
with C++20 the body of the implementation can be replaced by std::invoke_r //////////////////////TICKET #1245
Member lib::idi::anonymous_namespace{entry-id.hpp}::buildHash (string const &sym, HashVal seed=0)
several unsolved design problems. How to deal with std hash values in conjunction with LUID. How to create a LuidH instance, if not generating a new random value. How to make EntryID and asset::Ident interchangeable, /////////TICKET #739 which would require both to yield the same hash values....
Member lib::idi::generateSymbolicID ()
consequently the generated IDs might clash for two distinct types, which generate the same namePrefix(). Is this a problem?
Member lib::query::removeTerm (Symbol sym, string &queryString)
as it seems we're not using the extracted term anymore, we could save the effort of rebuilding that term.
Member lib::test::randStr (size_t len)
probably this can be done in a more clever way.
Member lib::time::__framerate_approximation (double fps)
imposing a quite coarse limitation. If this turns out to be a problem: we can do better, use lib::reQuant (rational.hpp)
Member lib::time::getDefaultGridFallback ()
placeholder for accessing a current or default session grid.
File libgavl.cpp
2016 evaluate if libGAVL is still active and maintained
File libgavl.hpp
a draft and placeholder code from 2008, at which time the intention was to rely on libGAVL for processing of raw media data.
Member LibGavl::getImplFacade (TypeTag &)

fill in the actual GAVL frame type

how to distinguish the audio and the video case?

File load-controller.hpp
WIP-WIP 11/2023 »Playback Vertical Slice«
Class LoadController
WIP-WIP 10/2023 gradually filling in functionality as needed
File locatingpin.cpp

stalled effort towards a session implementation from 2008

2016 likely to stay, but expect some extensive rework

File locatingpin.hpp
this can be considered a preliminary sketch without being backed by actual functionality. Just enough to be able to drive the design of other parts ahead. See esp. TICKET #100, which contains an idea for a refactoring.
Class LocatingPin::LocatingSolution

we can't sensibly reason about tracks, because at the moment (10/07) we lack a track implementation...

shouldn't we use a range-restriction LocatingPin (subclass) to represent the to-be-found solution? (ichthyo: see Trac #100)

Member LocatingPin::resolve () const

this could/should be replaced by a full-blown constraint solver at some point in the future

we are packing and unpacking the information (time,track) several times. Ichthyo considers a more elegant solution.

Class LocationClause
maybe add a flag to require the current query goal to exist in tree //////////////////////////////TICKET #1130
File logging.h
logging to files?
Member Looper::wakeTimeout_ms ()
find a way how to retrieve this value from application config! ////////////////////TICKET #1052 : access application configuration
Member lumiera::error::default_usermsg (Error *) noexcept

to be localised

develop a framework to set more specific yet friendly messages

Member lumiera::WrapperPtr
really need to switch to the new lib::Variant and util::AccessCasted implementation ////////////////TICKET #450
Member lumiera_rational_to_time (FSecs const &fractionalSeconds)
this utility function could be factored out into a FSecs or RSec class ///////////////////////TICKET #1262
Member lumiera_resource
10/2023 this is a left-over of the »resource-collector« plan
Member lumiera_resource_try
10/2023 this is a left-over of the »resource-collector« plan Resource collection works iteratively freeing more and more resources.
File marker-widget.cpp

WIP-WIP-WIP as of 12/2016

as of 10/2018 timeline display in the UI is rebuilt to match the architecture

File marker-widget.hpp

WIP-WIP-WIP as of 12/2016

as of 10/2018 timeline display in the UI is rebuilt to match the architecture

Class MarkerWidget

WIP-WIP as of 12/2016

9/2022 baseclass sigc::trackable is ambiguous, we inherit it from two chains (diamond of death)

File media-access-facade.cpp
this was added as a draft and mock implementation in 2008 and is only used sporadic for unit tests.
File media-access-facade.hpp
this was added as a draft and mock implementation in 2008 and is only used sporadic for unit tests.
File media-access-mock-test.cpp
this test must be linked against the Core (including Steam), yet conceptually it belongs into the Vault, indicating a design mismatch. The test support facility drafted here was not used much since then.
File media-access-mock.cpp
this facility was occasionally used until 2011, yet never really completed
File media-access-mock.hpp

this facility was occasionally used until 2011, yet never really completed

the implementation is linked against steam-layer to use a constant definition from 'steam/mobject/session/testclip.hpp' — which highlights an conceptual ambiguity underlying this whole concept; at inception time, there was no clear notion pertaining the kind of structures related to the vault.

Member MediaAccessFacade::queryChannel (MediaDesc &, uint chanNo) const
throw or return NULL-ChanDesc if Filehandle is invalid?
File menu-button.hpp
leftover from the old GTK-2 Lumiera UI as of 3/23, but should be retained and integrated into the reworked GTK-3 UI
Class Meta
just a stub, still have to figure out the distinctive properties of asset::Meta //////////////////////////////////TICKET #1156 : do we need the distinction between STRUCT and META?
Class Meta
do we need this abstract baseclass?
File meta-cmd.cpp
WIP 8/2018 early draft
File mini-button.hpp
leftover from the old GTK-2 Lumiera UI as of 3/23, but should be retained and integrated into the reworked GTK-3 UI
File mixer-widget.cpp
WIP-WIP-WIP as of 12/2016
File mixer-widget.hpp
WIP-WIP-WIP as of 12/2016
Class MixerWidget
WIP-WIP as of 12/2016
File mobject.hpp
as of 2016, this core part of the model still needs to be actually implemented. Most of the code in this hierarchy is preliminary or placeholder code, since we prefer to build the system from ground up, not top-down. It is very likely, that MObject will be just a data tuple in the end.
File mobject/session/clip.cpp

stalled effort towards a session implementation from 2008

2016 likely to stay, but expect some extensive rework

File mobject/session/clip.hpp

stalled effort towards a session implementation from 2008

2016 likely to stay, but expect some extensive rework

File mobject/session/effect.cpp
result of the very first code generation from UML in 2008.
File mobject/session/effect.hpp
result of the very first code generation from UML in 2008.
File mobject/session/meta.cpp

stalled effort towards a session implementation from 2008

2016 not sure if we really need a separate translation unit for this?

File mobject/session/meta.hpp

stalled effort towards a session implementation from 2008

2016 likely to stay, but expect some extensive rework

File mobjectfactory.cpp

stalled effort towards a session implementation from 2008

2016 likely to stay, but expect some extensive rework

File mobjectfactory.hpp

stalled effort towards a session implementation from 2008

2016 likely to stay, but expect some extensive rework. In fact I am quite unhappy with the shape of this code

Member MObjectFactory::operator() (asset::Clip const &, vector< asset::Media const *>)
work out the details of multichannel handling
Class MockElm
some usage details
File model-port.hpp
they might bulk allocated in a similar manner than the ProcNode and Connectivity objects are.
Member MORef< MO >::operator _Id const & () const
not sure if that leads to unexpected conversions, because the underlying implementation can be converted to size_t
File mould.hpp
plan and draft from 2008 – still considered relevant as of 2016
File name-chooser.cpp
this widget is not currently used, as of 3/23; it is a leftover from the old GTK-2 GUI of Lumiera, but was retained since it might be useful in future...
File name-chooser.hpp
this widget is not currently used, as of 3/23; it is a leftover from the old GTK-2 GUI of Lumiera, but was retained since it might be useful in future...
Class Navigator
initial draft as of 2/2017 – actual implementation has to be filled in
File navigator-widget.cpp
WIP-WIP-WIP as of 12/2016
File navigator-widget.hpp
WIP-WIP-WIP as of 12/2016
File navigator.cpp

WIP 2/2017 early draft / foundations of "interaction control"

WIP 1/2018 integrating the concept of UI-Coordinate navigation and resolution. Still WIP-WIP-WIP...

File navigator.hpp
WIP 2/2017 early draft / foundations of "interaction control"
Class NavigatorWidget
WIP-WIP as of 12/2016
Class NetNodeFacade
define the services provided by such a node.
File netnodefacade.cpp
this just documents a vague plan. We won't be able to implement anything of that kind for the foreseeable future as of 1/2017
File netnodefacade.hpp
this just documents a vague plan. We won't be able to implement anything of that kind for the foreseeable future as of 1/2017
Class Nexus
write type comment
File nexus.hpp
initial draft and WIP-WIP-WIP as of 11/2015
File node-builder.hpp
WIP-WIP-WIP 10/2024 Node-Invocation is reworked from ground up – some parts can not be spelled out completely yet, since we have to build this tightly interlocked system of code moving bottom up, and then filling in further details later working top-down.
File node-factory.cpp

draft from the early days of the Lumiera project, reworked in 2009 Development activity in that area as stalled ever since.

WIP-WIP 2024 to be reworked from ground up for the »Playback Vertical Slice«

File node-factory.hpp

draft from the early days of the Lumiera project, reworked in 2009 Development activity in that area as stalled ever since.

about to be reworked for the »Playback Vertical Slice« in 2024

File node-graph-attachment.hpp
2023 WIP-WIP-WIP »Playback Vertical Slice« need at least a drafted model
File node-storage-test.cpp
12/2024 this test will focus on the high-level integration, which is future work and possibly addressed in the next »Vertical Slice« when we add processing of a given media clip from disk.
File nodecreatortool.cpp
stalled design draft from 2008 – basically still considered relevant as of 2016
File nodecreatortool.hpp
stalled design draft from 2008 – basically still considered relevant as of 2016
Class NodeGraphAttachment
WIP-WIP as of 4/2023 – starting with a fake implementation /////////////////////TICKET #1306 : create an actual link to the low-level Model
Class NodeID
currently (10/08) this is a dummy implementation. We'll find out what is needed once the outline of the render engine is complete.
File nodeinvocation-obsolete.hpp
relies still on an obsoleted implementation draft
Member NodeLink_test::build_connected_nodes ()
WIP 7/24 🔁 define ⟶ ✔ implement
Member NodeLink_test::generate_turnout_system ()
WIP 7/24 🔁 define ⟶ implement
Member NodeLink_test::trigger_node_port_invocation ()
WIP 7/24 🔁 define ⟶ implement
File nodewiring-obsolete.cpp
unfinished draft from 2009 regarding the render process
File nop-job-functor.hpp
WIP draft for the »Playback Vertical Slice« 4/2023
File notification-hub.hpp
8/2018 for now we just use and possibly create a hard wired display within the first (primary) application window. Moreover, we do so directly, instead of consulting the (not yet fully implemented) ViewSpec mechanism. (via ViewLocator).
File null-value.hpp
initialisation could be extended to use a free function to fabricate the NIL value object, so to support the special case of an NIL object not being default constructible
Class OpaqueHolder_test
this test doesn't cover automatic conversions and conversions using RTTI from the target objects, while OpaqueHolder.template get() would allow for such conversions. This is similar to Ticket #141, and actually based on the same code as variant.hpp (access-casted.hpp)
File operationpoint.cpp

stalled design draft from 2008 – basically still considered relevant as of 2016

confirmed 12/2024 : the ideas drafted here are considered relevant, yet it is clear meanwhile that the Build will work on meta-descriptors, and not the actual Render Nodes

File operationpoint.hpp
stalled design draft from 2008 – basically still considered relevant as of 2016
Member Option::Option (lib::Cmdline &cmdline)
describe the actual options
Class OutputDesignation
couldn't the inline buffer be "downgraded" to InPlaceBuffer or PolymorphicValue?? Seemingly we never-ever need to re-discover the erased type of the embedded spec. Thus for this to work, we'd just need to add an "empty" spec ///////////////////TICKET #723
Class OutputDirector
write Type comment
Member OutputDirector::isOperational () const
WIP-WIP-WIP 6/2011
Class OutputManager

need a concrete implementation

need a unit-test

write Type comment

File panel-locator.hpp

8/2018 refactoring of docking panel handling is underway ///////////////////////////////////////TICKET # 1144 The PanelLocator is planned to become the one central coordinating manager, while the existing panel managers in each window will be demoted to a mere DockArea, corresponding to a gdl::Dock

8/2018 there is some overlap with the (not yet fully functional) ViewLocator in the InteractionDirector. Right now, PanelLocator fills some gaps here and offers preliminary solutions for some lookup and allocation tasks ultimately to be performed on a more abstract level through the ViewSpec-DSL. This corresponds to the observation, that PanelLocator and WindowLocator are somewhat tangled currently. The goal is to turn them into access services, and shift the allocation logic to the aforementioned higher level.

File panel-manager.hpp
2017 need to clarify the intended behaviour of panels ///////////////////////////////////////////////////////////////////////////TICKET #1097 clarify the role and behaviour of Panels
Member PanelLocator::preliminary_impl_PanelLookup (int typeID)
8/2018 the actual implementation shall eventually be provided by the ViewLocator on a higher abstraction level, and configurable through the ViewSpec-DSL. For now we use a braindead iterate-through-all-windows approach.
Class PanelManager
this code is smelly and needs some clean-up ///////////////////////////////TICKET #1026
Class PApply< SIG, VAL >
11/2023 started with modernising these functor utils. The most relevant bindFirst() / bindLast() operations do no longer rely on the PApply template. There is however the more general case of binding multiple arguments, which is still used at a few places. Possibly PApply should be rewritten from scratch, using modern tooling.
File parameter.cpp
as of 2016, we still need to work out our parameter/automation concept.
File parameter.hpp
as of 2016, we still need to work out our parameter/automation concept.
File paramprovider.cpp
as of 2016, we still need to work out our parameter/automation concept.
File paramprovider.hpp
as of 2016, we still need to work out our parameter/automation concept.
File patchbay-widget.cpp
WIP-WIP-WIP as of 12/2016
File patchbay-widget.hpp
WIP-WIP-WIP as of 10/2018
Class PatchbayWidget
WIP-WIP as of 4/2019
File path-array.hpp
when UICoord is in widespread use, collect performance statistics and revisit this design.
File pathmanager.cpp
placeholder as of 2014, development in this area is stalled
File pathmanager.hpp
this is a design draft and just defines a placeholder to indicate our plans.
Member PAUSED_JOB
do we need this special state?
File pipe-widget.cpp
WIP-WIP-WIP as of 12/2016
File pipe-widget.hpp
WIP-WIP-WIP as of 12/2016
Class PipeWidget
WIP-WIP as of 12/2016
Class PixSpan
quick-n-dirty hack.
File placement-index-query-resolver.cpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

File placement-ref.hpp
better solution for the ID to type connection ///////////////////////TICKET #523
Member PlacementIndex::insert (PLA const &, ID)

this solution is half-baked ///////////////////////////////////TICKET #523

is this API used in application code? or just used in tests?

Class PlacementIndexQuery_test
change that to use a more realistic test session, based on the actual model types //////////////// TICKET #532
Class PlacementObjectIdentity_test
WIP-WIP to be written... TICKET #517
Class Play

WIP-WIP-WIP 6/2011

there should be an accompanying CL Interface defined for the Lumiera interface system, so the player can be accessed from external clients. This was left out for now, as we don't have either plugins, nor any script running capabilities yet. (5/2011)

File play-facade.hpp
in theory this could be an external interface mapped via Lumiera's interface system.
File play-service.cpp
as of 4/2023 Render-Engine integration work is underway ///////////////////////////////////////////TICKET #1233
File play-service.hpp

started as draft in 11/2011

as of 2016 development in this area is stalled, but the design done thus far valid

File playback-controller.hpp
create a durable PlaybacController design //////////////////////////////////////////////////////TICKET #1072
File player-widget.cpp
WIP-WIP-WIP as of 12/2016
File player-widget.hpp
WIP-WIP-WIP as of 12/2016 – the initial version of our UI implemented these controls directly within the timeline pane's button bar. We need to extract this common setup, since it is consensus that there is no consensus regarding the "best" position of such a control within the UI. So we need to offer the option to have "a player" either in the timeline, in the viewer(s) or as a standalone UI element.
Class PlayerWidget
WIP-WIP as of 12/2016
Member PlayOutSubsysDescriptor::shouldStart (Option &) override
actually define cmdline options and parse/decide here!
Class PlayTestFrames_Strategy
placeholder as of 6/23
File plug.cpp
result of the very first code generation from UML in 2008.
File plug.hpp
result of the very first code generation from UML in 2008.
Class PNode
placeholder introduced 12/2024 to abstract from the actual Render Nodes
File polymorphic-value.hpp
the actual implementation for copy support basically achieves this goal, but it is somewhat confusing and muddled, and not entirely correct in some corner cases (esp. when the target type does not collaborate but also does only support copy construction, but no assignment. In fact, part of the solution implemented here is known as "virtual copy support"; meanwhile we use a generic version of that pattern in our Variant container. Thus, at some point, we should rework this aspect of the solution to make it more orthogonal, clearer to understand and more correct. /////////////////////////////////////////////TICKET #1197
File preferences-dialog.hpp
as of 2016, this is more of a place-holder, since we also do not have decided on the implementation approach for application preferences in general.
Class Proc

just a stub, have to figure out what a asset::Proc is

File proc-id.hpp
WIP-WIP as of 10/2024 this is a draft created as an aside while working towards the first integration of render engine functionality //////////////////////////////////////////////TICKET #1377 : establish a systematic processing identification
File proc-node.cpp
WIP-WIP-WIP 6/2024 not clear yet what goes here and what goes into turnout-system.cpp
File proc-node.hpp
WIP-WIP-WIP 2024 Node-Invocation is reworked from ground up for the »Playback Vertical Slice«
Member ProcFactory::operator() (Asset::Ident &key)
actually define
Class ProcNode

it's not clear as of 9/09 if ProcNode shall be an ABC/Interface It might be used as ABC (as was the original intention) when implementing several query/information functions. In that case, the ctor will become protected. The alternative would be to push down these information-retrieval part into a configurable element within Connectivity, in which case we even might drop ProcNode as a frontend entirely.

WIP-WIP-WIP 2024 Node-Invocation is reworked from ground up for the »Playback Vertical Slice«

Class ProcNode_Obsolete

it's not clear as of 9/09 if ProcNode shall be an ABC/Interface It might be used as ABC (as was the original intention) when implementing several query/information functions. In that case, the ctor will become protected. The alternative would be to push down these information-retrieval part into a configurable element within Connectivity, in which case we even might drop ProcNode as a frontend entirely.

WIP-WIP-WIP 2024 Node-Invocation is reworked from ground up for the »Playback Vertical Slice«

Member ProcPatt::ProcPatt (const Asset::Ident &idi)
preliminary implementation, storing the capabilities in the asset name field. We can do better, when it's clear what capabilities we need
File query-focus-stack.hpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

File query-focus.cpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

File query-focus.hpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

File query-text.hpp
actually build the term representation /////////////////////////////TICKET #899
Member Query< RES >::extractID (Symbol predicate) const
used extensively for the mock implementation of query resolution. For real resolution queries, such a function is quite nonsensical. To be revisited and (likely) to be removed on the long run
Class QueryHandler< TY >
retrofit this to install and use a QueryResolver
Class QueryText
this is placeholder code and just embeds a string with the raw query definition, instead of parsing the definition and transforming it into an AST
Member QueryText::degree_of_constriction () const
using a rather deaf placeholder implementation based just on counting the top level predicates.
Member QueryText::normalise (string const &rawDefinition)
when integrating a real resolution engine, we need to parse and verify the given string.
Class QueryText_test
this is placeholder code. The actual query representation needs to be written /////////////////////////////TICKET #899
File random-draw.hpp
11/2023 This is a first draft and was extracted from an actual usage scenario. It remains to be seen if the scheme as defined is of any further use henceforth.
File random.cpp
3/2024 work out how some executions or performances are configured reproducibly.
Member Rational_test::verify_intLog2 ()
this test (and the implementation) belongs into some basic util header.
File real-clock.hpp
this might be a good candidate also to provide some kind of translation service, i.e. a grid to anchor a logical time value with actual running wall clock time.
File rectangle.cpp
3/23 this is leftover code from the old GKT-2 Lumiera GUI.
File rectangle.hpp
3/23 this is leftover code from the old GKT-2 Lumiera GUI.
File ref-array.hpp
as of 2016, this concept seems very questionable: do we really want to abstract over random access, or do we actually want for-iteration??
Class RefArray< T >
ouch – a collection that isn't iterable... ///////////////////////TICKET #1040
Class RelativeCanvasHook< WID >
investigate real-live performance ////////////////////////////////////////////////////////////////TICKET #1254 : investigate impact of indirection
Class RelativeLocation
just a design sketch, nothing finished yet.
File relativelocation.cpp

stalled effort towards a session implementation from 2008

2016 likely to stay, but expect some extensive rework

File relativelocation.hpp

stalled effort towards a session implementation from 2008

2016 likely to stay, but expect some extensive rework

File render-drive.cpp
4/2023 »Playback Vertical Slice« – effort towards first integration of render process ////////////TICKET #1221
File render-drive.hpp
4/2023 »Playback Vertical Slice« – effort towards first integration of render process ////////////TICKET #1221
File render-invocation.cpp
WIP-WIP-WIP 12/2024 about to build a Render Node invocation, combining the old unfinished draft from 2009 with the new Render Engine code
File render-invocation.hpp
WIP-WIP-WIP 2024-12 finally about to connect the unfinished draft from 2009 with the engine structures built bottom-up meanwhile ///////////////////////////////////////////TICKET #905 : Work out what parameters are required to invoke the real code available now....
File render.cpp
this widget is not currently used, as of 3/23; it is a leftover from the old GTK-2 GUI of Lumiera, but was retained since it might be useful in future...
File render.hpp
this widget is not currently used, as of 3/23; it is a leftover from the old GTK-2 GUI of Lumiera, but was retained since it might be useful in future...
Member RenderConfigurator::buildCalculationStreams (ModelPort, OutputSlot &)=0
get rid of the multiple channel connections /////////////////////////////////////////TICKET #1297 : retract differentiation into channels here (instead use ModelPorts in the Segment)
Class RenderDrive
4/23 early DRAFT – find out what this does and write type comment
Member RenderDrive::RenderDrive (RenderEnvironment &renderEnvironment, ModelPort port, uint chan)
Class RenderEngine
this was planned to become the frontend to the render node network, which can be considered at the lower end of the middle layer; the actual render operations are mostly implemented by the vault layer ////////TODO WIP as of 12/2010
Class RenderGraph
likely to be reworked into the engine backbone /////////////TODO WIP as of 12/2010
Class RenderInvocation
write type comment
Member ReplaceableItem_test::verifyOnlyMoveConstructible ()
conceptually, the whole point of this container is the ability to snapshot elements which allow nothing but move construction.
File result.hpp
an option-style interface could be provided for the »right value« (i.e. the exception caught), in case this turns out to be of any use; this kind of API design however is anything than trivial, given that any value can be thrown as exception in C++
Class Root
WIP-WIP.. Serialisation is postponed, the rules implementation is preliminary, the active link to the AssetManager is missing. Thus, as of 12/09 this is an empty placeholder and just serves as root scope.
File root.cpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

File root.hpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

Member Root::isValid () const
validity self-check of the model root should do substantial checks; the idea is to perform a complete sanity check by delegating to the parts.
File ruler-track.cpp

WIP-WIP-WIP as of 6/2019

this is more or less preliminary/placeholder code as of 4/2019

File ruler-track.hpp
WIP-WIP-WIP as of 6/2019
File ruler-widget.cpp
WIP-WIP-WIP as of 12/2016
File ruler-widget.hpp
WIP-WIP-WIP as of 12/2016
Member RulerScale::calcHeight ()
this is more or less braindead placeholder code as of 4/2019
Class RulerTrack
this is more or less preliminary/placeholder code as of 4/2019 ////////////////////////TICKET #1194 : proper handling of ruler tracks
Member RulerTrack::calcHeight ()
this is more or less braindead placeholder code as of 4/2019
Member RulerTrack::getGapHeight ()
this is more or less braindead placeholder code as of 4/2019
Class RulerWidget
WIP-WIP as of 12/2016
Class Scheduler
WIP 11/2023
  • largely completed spring 2024
  • passes stress testing with good performance
  • TODO further integration will require to extract a Scheduler-Interface
File scheduler-frontend.hpp
WIP unfinished since 9/2013
File scheduler.hpp
WIP 11/2024 »Playback Vertical Slice«
  • initial version of Scheduler was built and validated by scheduler-stress-test.cpp
  • now awaiting integration with Render-Node invocation and Job-Planning
  • very likely we'll extract a Scheduler-Interface (and this file then becomes a service-impl)
Member Scheduler::triggerEmergency ()
as of 4/2024 it is not clear what Scheduler-Emergency actually entails; thus it can not be determined at which level of the component the handler must reside, and how it can be reached. Notably there exists a situation in SchedulerCommutatior::findWork(), where emergency can happen, yet in its current configuration, the Layer-2 has no access to the top-level Scheduler component. /////////////////////////////////////////////////TICKET #1362 : where to handle Scheduler-Emergency
Class SchedulerFrontend

this is planned to become the frontend to the render node network, which can be considered at the lower end of the middle layer; the actual render operations are mostly implemented by the vault layer

define the low-level scheduler interface and hook in the necessary calls to implement this frontend. ////////TODO WIP as of 9/2013

Member SchedulerLoadControl_test::simpleUsage ()
WIP 10/23 🔁 define ⟶ 🔁 implement
File scope-cmd.cpp
WIP 3/2017 early draft
File scope-locator.hpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

File scope-path.cpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

File scope.hpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

File scoped-holder-transfer.hpp
expunge this!
Member ScopedPtrVect< T >::detach (void *objAddress)
TICKET #856 better return a Maybe<T&> instead of a pointer?
Member ScopeQuery< MO >::buildSyntacticRepresentation () const
we need a readable and sensible representation as generic query ///////////////////TICKET #901
Class ScopeQuery_test
change that to use a more realistic test session, based on the actual model types //////////////// TICKET #532
Class ScriptRunnerFacade
build the (LUA,C)-script runner.
File scriptrunnerfacade.cpp
this just documents a vague plan. We won't be able to implement anything of that kind for the foreseeable future as of 1/2017
File scriptrunnerfacade.hpp
this just documents a vague plan. We won't be able to implement anything of that kind for the foreseeable future as of 1/2017
Class Segment
WIP-WIP as of 6/2023 – about to establish the engine backbone
File segment.cpp

stalled effort towards a session implementation from 2008

2016 likely to stay, but expect some extensive rework

File segment.hpp

WIP 6/2023 now actually in implementation due to »Playback Vertical Slice«

Datastructure as such is settled; memory allocation and remoulding of an existing Segmentation remains future work as of 6/2023

Class Segmentation

1/2012 Just a Placeholder. The real thing is not yet implemented.

4/2023 now about to bootstrap into the implementation structure step by step (WIP)

File segmentation-tool.cpp
stalled design draft from 2008 – basically still considered relevant as of 2016
File segmentation-tool.hpp
stalled design draft from 2008 – basically still considered relevant as of 2016
File segmentation.cpp
2023 WIP-WIP-WIP »Playback Vertical Slice«
File segmentation.hpp
5/2023 now actually started with the implementation for the »Playback Vertical Slice«
Class SegmentationIntegration_test
2010 ⁐ 2023 a sketch for a test setup, which was meanwhile elaborated into the DummyPlayConnection; indeed such a component integration test is still required to document and cover the fixture data structure....
File sequence-cmd.cpp
WIP 4/2017 early draft
File sequence.hpp
this is a very crucial part of the emerging design of the session model. Unfortunately, development on that frontier has stalled since 2010, since we focused efforts towards the player, the engine and the GUI lately (as of 2016)
File sess-manager-impl.cpp
as of 2016 this is an implementation draft, awaiting integration with several other facilities //////////////////TICKET #704
File sess-manager-impl.hpp
as of 2016, this effort is considered stalled but basically valid
File session-cmd.cpp
WIP 3/2017 early draft
File session-impl.cpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

File session-service-defaults.hpp
rework the existing DefsManager to fit into this scheme. TICKET #404
File session-services.cpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

Member Session::initFlag
really solve the basic init of session manager TICKET #518
Class SessionCommand
as of 2/2021 only the trigger operation is used; if no case for an elaborated command cycle with binding step and deferred invocation shows up, we may consider dropping the other operations
Class SessionManager_test

load a Mock session

create a session and save (serialise) it

load a real test session

Member SessionManager_test::clearSession ()
implement all session content, implement mobject and asset deletion operations.
Member SessionManager_test::loadMockSession ()
implement rebuilding session, implement mock session serialiser
Member SessionManager_test::loadSession (const string &src)
implement real session serialiser
Member SessionManager_test::resetSession ()
define the "global session config", implement session default ctor
Member SessionManager_test::saveSession (string &dest)
implement real session serialiser
Class SessionModifyParts_test

check more kinds of modifications, especially moving parts

define criteria to be checked more precisely

verify the actually dispatched commands

Class SessionStructure_test

define further criteria to be checked

implement Sequence, Fixture, Session::rebuildFixture, handling of EntryID<Fork>

Member SessManager::save (string snapshotID)=0
2017 how actually to serialise, parameters, return value?
Member SessManagerImpl::clear () override
clarify relation to command processing/undo /////////// TICKET #697
Member SessManagerImpl::close () override

avoid blocking when aborting render processes ///////////// TICKET #201

well defined transactional behaviour ///////////////////// TICKET #698

Member SessManagerImpl::reset () override

error handling, how to deal with a partially configured session?

for reset() to work, we need to change the implementation of AssetManager so support this kind of transactional switch!

File several-builder.hpp
this is a first implementation solution from 6/2025 — and was deemed roughly adequate at that time, yet should be revalidated once more observations pertaining real-world usage are available...
Class SimpleAllocator< TYPES, COUNTER >
currently (as of 8/09) the low-level pooled allocator isn't implemented; instead we do just heap allocations. ////////////////////////////////////////////////////////////////////////////////////////////Ticket #835
Class SimpleAllocator_test
as of 9/11 we do heap allocation, but we should use mpool – see also Ticket #835
Member Smpte::applyRangeLimitStrategy (SmpteTC &)
If necessary, this extension point should be converted into a configurable strategy. Possible variations
  • clip values beyond the boundaries
  • throw an exception on illegal values
  • wrap around from 23:59:59:## to 0:0:0:0
  • just make the hour negative, but continue with the same orientation (0:0:0:0 - 1sec = -1:59:59:0)
Member Smpte::getFramerate (QuantR, TimeValue const &)
this design just doesn't feel quite right...
Class SmpteTC
the range extension scheme could be a configurable strategy
File special-job-fun.hpp
WIP 12/2023 invented to help with Scheduler load testing as part of the »Playback Vertical Slice« — this idea however might be generally useful to handle one-time adjustments from within a play- or planning process.
Member SpecialJobFun_test::simpleUsage ()
WIP 12/23 🔁 define ⟶ ✔ implement
Member SpecialJobFun_test::verifyLifecycle ()
WIP 12/23 ✔ define ⟶ ✔ implement
File specific-contents-query.hpp

WIP implementation of session core from 2010

as of 2016, this effort is considered stalled but basically valid

Class SpecificContentsQuery< MO >
develop a system of sub-indices and specialised queries
File spot-locator.cpp
WIP 2/2017 early draft / foundations of "interaction control"
File spot-locator.hpp
WIP 2/2017 early draft / foundations of "interaction control"
Class SpotLocator
initial draft as of 2/2017 – actual implementation has to be filled in
Namespace stage::model

: as of 1/2011 this connection between the GUI proxy model and the Steam-Layer model needs to be set up. Currently, the GUI model entities are just created standalone and thus dysfunctional.

: as of 11/2015 this connection between UI and Steam-Layer is actually in the works, and it is clear by now that we won't use proxy objects, but rather a generic bus-like connection and symbolic IDs to designate the model elements

: and as of 2/2017 the new structure is basically set, but we need actually to implement a new timeline display in accordance to this reworked design. After this is done, most of the model elements in this packare are obsolete.

Member stage::model::anonymous_namespace{zoom-window.hpp}::_FSecs (TimeValue const &timeVal)
preliminary helper to enter into fractional integer calculations
  • FSecs (maybe better called RSec) should be a light-weight wrapper on top of util::Rat = boost::rational<int64_t>
  • a conversion function like in TimeVar should be in the base type
  • however, cross conversion from raw int64_t should be prohibited to avoid ill-guided automatic conversions from µ-tick to seconds
Member stage::model::anonymous_namespace{zoom-window.hpp}::isMicroGridAligned (FSecs duration)
should likewise be member of a FSecs wrapper type...
Member stage::model::anonymous_namespace{zoom-window.hpp}::operator+ (Time const &tval, TimeVar const &tvar)
we need these only because the blurry distinction between lib::time::TimeValue and lib::time::Time, which in turn is caused by a lack of clarity in the fundamental conception (see #1261)
Member stage::timeline::anonymous_namespace{stave-bracket-widget.cpp}::connect (CairoC cox, Gdk::RGBA colour, double leftX, double upperY, double lowerY, double width, double scale, std::vector< uint > connectors)
simplistic implementation as of 3/23; could be made expandable /collapsable
Member stage::widget::anonymous_namespace{element-box-widget.cpp}::reduce (Gtk::Label &label, int goal)
10/22 also attempt to shorten the label... ///////////////////TICKET #1242 : adjust size of the ID caption
Member stage::widget::anonymous_namespace{error-log-display.hpp}::populateStandardTextTags (Glib::RefPtr< TextBuffer::TagTable > tagTable)
9/2018 dummy placeholder code, later to be transformed into a framework /////////////////////TICKET #1168 : find a way to manage style of custom extended UI elements
File state-manager.hpp
as of 2/2016 this is still preliminary. In the end, we want to capture and restore presentation state in dependency to the current perspective and work site
File state-recorder.hpp
as of 2/2016 noting but a simple data retrieval happens here. Actually, on the long run, we want "intelligent" handling of presentation state, we want to capture and restore state with sensitivity to perspective and work site. Probably this means to layer a second level of aggregation on top.
Class StateMapGroupingStorage
reinvestigate with GCC-5 //////////////////////////////////TICKET #991
Member StateMapGroupingStorage::getState (Record const &entry, string propertyKey)

seemingly GCC-4.9 doesn't yet support the "transparent search" feature of C++14, where std::set would support an additional overload of the find() function, templated to accept a value convertible to some key equivalent, which needs to be understood by the comparator of the set. To trigger using this overload, the comparator has to define a suitable operator() and in addition a marker type is_transparent. See transparent-cmp and the [reference][cind-cpp14] for explanation. //////////////////////////////////TICKET #991

File steam/mobject/builder/common.hpp
initially generated code of unclear relevance
File steam/mobject/session/binding.cpp

stalled effort towards a session implementation from 2010

2016 likely to stay, but expect some extensive rework

File steam/mobject/session/binding.hpp

stalled effort towards a session implementation from 2010

2016 likely to stay, but expect some extensive rework

Also consider timeline-slave, a topic postponed as of 10/2018 /////////////////////////////////TICKET #1083

Member steam::anonymous_namespace{config-resolver.cpp}::configure_ConfigResolver ()
PLANNED: use an embedded Prolog-System or similar rules engine. For the time being (as of 2008-2018), we use preconfigured fake answers for some common Config-Queries
Member steam::asset::anonymous_namespace{clip.cpp}::createClipIdent (const Media &mediaref)
getting this one correct is important for handling creation of multiple clip instances from one media. Means we have still to figure out a sensible concept...
Member steam::asset::anonymous_namespace{preview.cpp}::createProxyIdent (const Asset::Ident &mediaref)
getting this one right is important for the handling of "proxy editing"....
Member steam::asset::DUMMY_TIME (FSecs(5))
solve config management
Member steam::asset::meta::theErrorLog_ID
8/2018 for now this is a mere placeholder, but someone need to build a singleton asset to incorporate this eventually ///////////////////////////////////TICKET #1157
Member steam::cmd::COMMAND_DEFINITION (test_fake_injectSequence_2)
use this to enact a complex layout structure in the Timeline-UI //////////////////TICKET #1014 : produce Dummy content to populate timeline
Member steam::cmd::COMMAND_DEFINITION (test_meta_displayInfo)
this is a demo mock setup to further development of the Steam-Stage integration //////////////TICKET #1140 : prototypical Steam-Stage communication
Member steam::cmd::COMMAND_DEFINITION (test_fake_injectSequence_1)
use this to establish basic Timeline display in the UI //////////////////TICKET #1014 : produce Dummy content to populate timeline
Member steam::cmd::COMMAND_DEFINITION (test_fake_blubb)
use this to enact a complex layout structure in the Timeline-UI //////////////////TICKET #1042 : further the DummySessionConnection
Member steam::cmd::COMMAND_DEFINITION (scope_moveRelocateClip)
WIP-WIP 3/2021 – working on a prototype for dragging clips...
Member steam::cmd::COMMAND_DEFINITION (test_meta_markNote)
this is a demo mock setup to further development of the Steam-Stage integration //////////////TICKET #1140 : prototypical Steam-Stage communication
Member steam::cmd::COMMAND_DEFINITION (test_meta_activateContentDiff)
used for preliminary integration testing ///////////////////////////////////////////TICKET #211 prefix test_ bypasses logging and immediately executes for now (2018)
Member steam::cmd::COMMAND_DEFINITION (test_meta_markError)
this is a demo mock setup to further development of the Steam-Stage integration //////////////TICKET #1140 : prototypical Steam-Stage communication
Member steam::cmd::COMMAND_DEFINITION (test_meta_markAction)
this is a demo mock setup to further development of the Steam-Stage integration //////////////TICKET #1140 : prototypical Steam-Stage communication
Member steam::control::anonymous_namespace{looper.hpp}::STEAM_DISPATCHER_BUILDER_DELAY_ms
this value should be retrieved from configuration ////////////////////////////////TICKET #1052 : access application configuration
Member steam::control::anonymous_namespace{looper.hpp}::STEAM_DISPATCHER_BUSY_SLOWDOWN_FACTOR
this value should be retrieved from configuration ////////////////////////////////TICKET #1052 : access application configuration
Member steam::control::test::anonymous_namespace{dispatcher-looper-test.cpp}::EXPECTED_BUILDER_DELAY_ms
this value should be retrieved from configuration ////////////////////////////////TICKET #1052 : access application configuration
Member steam::engine::anonymous_namespace{weaving-pattern-builder.hpp}::manifoldSiz ()
10/24 this is a premature safety guard; need to assess if there is actually a problem (chances are that the optimiser absorbs most of the combinatoric complexity, or that, to the contrary, other proliferation mechanisms cause more harm)
Member steam::engine::test::dummyOp (NoArg in, SoloArg out)
a placeholder operation to wire a prototypical render node
Namespace steam::mobject
is this interface or implementation ??
Member steam::mobject::ON_SESSION_END
specify how this is related to "saving". Is there a way for subsystems to add specific/internal information into the persisted state, besides actually attaching data to objects within the session?
Member steam::mobject::PlacementMO
cleanup uses of ref-to-placement.
Class StreamType
this is just a draft to show the general idea....
Class Struct
the actual meaning of a "structural asset" needs to be sharpened and evolved. The idea is to have a generic mechanism for attaching properties and relations. This will become relevant once we build the real query subsystem. Right now (as of 1/2015), asset::Struct is just an ID provider. //////////////////////////////////TICKET #1156 : do we need the distinction between STRUCT and META?
File struct.cpp
while most code here is a very preliminary draft (let's call it a hack), as of 2016 we acknowledge that this design is here to stay and represents one of the most distinctive features of Lumiera
Member StructFactory::newInstance (Symbol nameID="")
using the AssetManager this way for picking up the previously stored asset is a code smell ////////////////////////////TICKET #691
Member StructFactory::operator() (Query< STRU > const &query)

work out the struct asset naming scheme! /////////////////////////////////TICKET #565

for now we're using a faked config query, just pulling preconfigured hardwired answers from a table. Should be replaced by a real resolution engine.

Class StructFactoryImpl

better use a general struct traits class, esp.for creating the Ident

shouldn't some of the generic factory logic be moved over into the struct baseclass? ////////////////TICKET #565

Member StructFactoryImpl::fabricate (Query< STRU > const &caps)
a real implementation using a resolution engine.
File style-scheme.hpp
as or 10/2018 this is mere placeholder code. The StyleManager needs rework
File stypemanager.hpp
very crucial part of the design, unfortunately development in this area is stalled since 2012
Member STypeManager::getImpl (Symbol libID, StreamType::Prototype const &protoType)
find out if this one is really necessary, because it is especially tricky
Class STypeManager::Registry
as of 3/2008 the real query implementation is missing, and the exact behaviour has to be defined.
File sub-id.hpp
1/2016 this idea seems very reasonable, and we should just make it robust and usable, along the lines pointed out by that draft
  • use std::tuple as storage
  • remove the format-util dependency (!) ////////////////////////////////TICKET #985
  • provide a hash implementation for real
  • extend to arbitrary number of sub-dimensions (variadic)
  • implement comparisons as you'd do for any algebraic type
  • provide a metaprogramming facility to get an id tuple
File subsystem-runner.hpp
as of 2018, a design rework seems indicated eventually /////////////////////////TICKET #1177
Class SubsystemRunner
2018 this component works well but could be (re)written in a cleaner way ////////////////////////TICKET #1177
File suite.hpp
as of 9/09, the implementation seems OKish but a bit clumsy. See Ticket #289
Member Suite::describe ()
this function war rarely used and is kind of broken by the fact that Nobug-assertions terminate the program instead of throwing, rendering the feature to integrate output mostly useless.
File switchboard-widget.cpp
WIP-WIP-WIP as of 12/2016
File switchboard-widget.hpp
WIP-WIP-WIP as of 12/2016 this is a plan (yes, we most definitively want that!), but we do not even remotely know how to implement such a feature. It is only clear by now that we'll build a output processing graph on top of the core render nodes network, and this output processing will care e.g. for scaling the output to fit into the viewer window. Activating the switchboard needs to extend this output processing graph.
Class SwitchboardWidget
WIP-WIP as of 12/2016
Member SYMBOL
intention is to integrate with lib::Symbol
File symbol-impl.cpp
currently as of 9/09 this is more of a placeholder. And maybe a location for collecting small bits of implementation, which could be usable later for real Symbol and Literal datatypes.
File symbol-table.hpp
as of this writing (4/2017), it is neither clear if we really need such a facility, nor do we know enough to judge the implementation approach taken here. It might well turn out that a mere hash over the symbol string would be sufficient. Just the general vision for Lumiera indicates that we're going to rely heavily on some kind of symbolic or meta processing, involving a rules based query system, and in the light of such future developments, introducing a distinct lib::Symbol datatype seemed like a good idea. When we started to generate command IDs systematically, just literal c-string constants weren't sufficient anymore, leading to this very preliminary table based implementation.
File symbol.hpp
9/2017 consider this mostly as settled, but might require some finishing touches
  • maybe improve interoperation of Symbol and std::string
  • investigate performance of the automatic symbol table
  • improve Lifecycle in startup and shutdown phase
  • maybe some metaprogramming magic to build distinct types based on symbols.
Class Symbol_test
2023 this test is very much in preliminary shape, as the implementation of a real symbol table remains was lacking. At some point, a simplistic implementation of »interned strings« was added (TICKET #157) — yet still the actual relevance of unique Symbols remains nebulous
File sync-barrier.hpp
as of 9/2023 it remains to be seen if this facility is just a pre-C++20 workaround; otherwise it may present distinct performance characteristics than std::latch, possibly also a slightly more abstracted (and thus clearer) usage API.
File tangible.hpp
Some actions are very common and can be represented by a shorthand. An example would be to tweak some property, which means to mutate the attribute of a model element known beforehand. Such tweaks are often caused by direct interaction, and thus have the tendency to appear in flushes, which we want to batch in order to remove some load from the lower layers.
Class TCode
as of 2016 this is basically finished since years, but still not in any widespread practical use (not by bad intention, simply by lack of opportunities). So this core interface still needs some feedback from practice in order to be finalised.
File test-control.hpp

as of 9/2018, this is a first rough draft, relevant for #1099 ////////////////////////////TICKET #1140 gradually augment the self-diagnostics controls in the UI

this header also features a design draft how to simplify building notebook widgets. Which could be polished and moved into a separate utility header eventually.

File test-dummy-mobject.hpp
needed to move this temporarily into the core session tree. ////////////TICKET #532
File test-element-access.hpp
right now this test is braindead; the idea is to extend it similar to the GenNodeLocationQuery eventually, so to mimic the way an actual implementation would drill down into the UI topology. Yet at the moment (4/2018) we are still far from implementing anything in this regard; we just need the interface... ///////////////////////////////TICKET #1134
File test-mutation-target.hpp
WIP 2/2016
Class TestClip
maybe use this as Mock object to record invoked operations?
File testsession1.hpp
this is an idea from the early stages of the project and was never really implemented.
File time-quantisation-test.cpp
2024/24 only two of the four timecode formats are implemented /////////////////////////////////////TICKET #736 : HMS and Seconds not implemented
File timecode-widget.hpp
needs extensive rework to get smooth integration with Lumiera's timecode handling functions
File timecode.cpp
a started implementation exists since 2010, yet crucial parts still need to be filled in as of 2016
Member TimeGrid::TimeGrid (GridID const &)
drafted in 2010 – usage of the builder feels unsatisfactory as of 2018
Class Timeline

this new Timeline API was invented about 2010 and remained in half finished state ever since.

we need some actual interface, beyond just creating timelines!

2016 can confirm that we still want to go that route

File timeline-controller.cpp
as of 10/2018 timeline display in the UI is rebuilt to match the architecture
File timeline-controller.hpp
as of 10/2018 timeline display in the UI is rebuilt to match the architecture
File timeline-panel.cpp

as of 10/2016 this is WIP-WIP-WIP : canvas widgets experiment

as of 10/2018 we start to build a new timeline widget, connected to the UI-Bus

File timeline-panel.hpp

as of 10/2016 this is WIP-WIP-WIP : canvas widgets experiment

as of 10/2018 we start to build a new timeline widget, connected to the UI-Bus

File timeline-widget.cpp
as of 10/2018 a complete rework of the timeline display is underway
File timeline-widget.hpp
as of 10/2018 a complete rework of the timeline display is underway
File timeline-zoom-scale.cpp
this was the »zoom slider« implementation from the old GTK-2 GUI of Lumiera. Since 2016, this was deactivated and since 3/23 it is no longer included anywhere, just left in tree to be re-integrated into the reworked GKT-3 Timeline UI
File timeline-zoom-scale.hpp
this was the »zoom slider« implementation from the old GTK-2 GUI of Lumiera. Since 2016, this was deactivated and since 3/23 it is no longer included anywhere, just left in tree to be re-integrated into the reworked GKT-3 Timeline UI ///////////////////////////////////////////////////////////////////////////TICKET #74 : Zoom Slider ///////////////////////////////////////////////////////////////////////////TICKET #1196 : draft zoom handling
File timeline.hpp

around 2010, the concept of Timeline and Session binding was defined, together with a rough preliminary implementation. Up to 2017, there was no opportunity to set this system really into motion; this is not necessarily a bad thing, since meanwhile we understand way better in which way the Session will actually be accessed...

looks like we'll represent a secondary, attached slave display of the same Timeline rather by materialising it into a TimelineClone within the session. This topic has been postponed as of 10/2018 //////////////////////////////////////TICKET #1083

Member Timeline::Timeline (Ident const &, RBinding const &)
anything significant to do here???
Member TimelineCanvas::on_draw (CairoC) override
according to the documentation for signal_draw(), the framework passes the actually visible area as clipping region. In theory, this information could be used to reduce the load of canvas painting and repainting, which becomes crucial for responsiveness on large sessions ////////////////////////////////////TICKET #1191
Class TimelineController
WIP-WIP-rewrite as of 12/2016
Class TimelinePanel
WIP 10/2018 the actual re-implementation of Lumiera's Timeline display
Class TimelineSequenceHandling_test

specify how deletion is handled

specify how to move objects by placement

Member TimelineState::playbackPoint_
very likely to be handled differently when actually integrated with the Player
Member TimelineState::setPlaybackPoint (Time newPos)

do we ever get the situation that we don't have such a position?

very likely to be handled differently, once the GUI is really connected to the Player

Class TimelineWidget
WIP-WIP-rewrite as of 12/2016
Class TimelineWidgetEmpty
This widget could offer a list of last sessions to pick from etc...
Member TimelineZoomScale::TimelineZoomScale ()

The initial adjustment value needs to match what the TimelineViewWindow's actual timeScale Value is.

actually there is a more involved problem. The TimelineWidget maintains a TimelineState, which in turn owns the TimelineViewWindow. Now, the problem is: when we switch to another Sequence (View), then this TimelineState gets switched too, causing also a entirely different TimelineViewWindow to become effective. Thus

  • how can we managed to be notified from that switch?
  • problem is: TimelineZoomScale widget is owned by the TimelinePannel. Likewise, TimelineWidget is owned by the TimelinePannel. But the state handling/switching logic is embedded within TimelineWidget
  • and finally: how can we translate the actual scale (in time units), as maintained within TimelineViewWindow, back into the adjustment used here (which uses a relative scale 0...1.0 ) S
Class TimeSpan
define these mutations
Class Timings
write type comment /////////////////////////////////////////////////////////////////TODO: WIP seems to become some kind of abstracted Grid representation!
File timings.hpp
WIP-WIP-WIP 8/2011
Member Timings::constantFrameTimingsInterval (TimeValue startPoint) const
implement real support for variable frame rates
File toolfactory.cpp
stalled design draft from 2008 – basically still considered relevant as of 2016
File toolfactory.hpp
stalled design draft from 2008 – basically still considered relevant as of 2016
Member ToolFactory::getProduct ()
unclear what to do and to return here
File track-body.hpp
as of 3/2023 the reworked Timeline-UI is basically complete
File track-head-widget.cpp
as of 1/2023, the basic structure was (finally) settled and the painting of vertical space allocation looks correct up to ± 1px, when testing with various margin, border and padding settings in the CSS.
File track-head-widget.hpp
as of 3/2023 the reworked Timeline-UI is basically complete
File track-presenter.hpp

as of 10/2018 timeline display in the UI is rebuilt to match the architecture

as of 3/2023, the basic structure is settled and the design validated

File track-profile.hpp
WIP-WIP-WIP as of 6/2019
Class TrackBody
WIP-WIP as of 6/2019
Class TrackHeadWidget
WIP-WIP as of 12/2016
Class TrackPresenter
WIP-WIP as of 12/2016
Member TrackPresenter::relinkContents ()
2/2021 WIP-WIP initial draft; many aspects still unclear
Class TrackProfile

WIP-WIP as of 4/2019

the number of pinned elements should be a member field, instead of sneaking it into the prelude element...

Class Trait< TY, YES >
this whole decision logic works but is confusingly written ///////////////////////TICKET #1197 : improve design of copy support
File transition-widget.cpp
WIP-WIP-WIP as of 12/2016
File transition-widget.hpp
WIP-WIP-WIP as of 12/2016
Class TransitionWidget
WIP-WIP as of 12/2016
File tuple-helper.hpp
transition lib::meta::Types to variadic parameters /////////////////////////////////TICKET #987
File turnout-system.cpp
unfinished draft from 2009 regarding the render process
File turnout-system.hpp
WIP-WIP-WIP 12/2024 now combining the draft from 2009 / 2012 with recent engine development
File turnout.hpp
relies still on an obsoleted implementation draft
File typed-allocation-manager.hpp

WIP WIP.

using a quick-n-dirty heap allocation implementation for now (8/09), but should write a custom allocator based on cehteh's mpool!

File typed-counter.hpp
2010 ... this is the first, preliminary version of a facility, which is expected to get quite important for custom allocation management.
File typed-id.hpp
and as of 2016, we acknowledge the importance of this approach, just the topic is deferred for now and will be picked up later...
File typed-lookup.cpp
this is placeholder code for an important facility, required once we engage into predicate rules based configuration.
Class TypedAllocationManager
currently (as of 8/09) the low-level pooled allocator isn't implemented; instead we do just heap allocations. see Ticket 231
Class TypedAllocationManager_test
as of 9/09 we do heap allocation, but we should use mpool – see also Ticket #219
Class TypedID::Link< TY >
unfinished design; especially: have to care for correct copying ////////////////////TICKET #593
Class TypedID_test
draft from 2010 – partially unimplemented and thus commented out //////////////////////////////////////////STICKET #599
Class TypeHandler< TY >
6/2010 unify this with the TypeHandler in typed-id.hpp
Class TypeHandlerXX< TY >
design draft as of 4/2010. This interface should eventually be merged with the TypeHandler defined in configrules.hpp
File typelist.hpp
transition lib::meta::Types to variadic parameters /////////////////////////////////TICKET #987
File typeseq-util.hpp
transition lib::meta::Types to variadic parameters /////////////////////////////////TICKET #987
File ui-bus.hpp
as of 1/2015, this header needs to be reshaped ////////////////////TICKET #959
File ui-coord.hpp
WIP 9/2017 first draft ////////////////////////////////////////////////////////////////////////////TICKET #1106 generic UI coordinate system
File ui-location-solver.hpp
as of 2017 .. 2021, this is a half-finished draft and postponed in favour of building the actually visible timeline display first
Member UICoord::isExtendedBelow (UICoord const &parent) const
10/2017 have to verify suitability of this definition
Member UiManager::updateWindowFocusRelatedActions ()
find a solution how to enable/disable menu entries according to focus /////////////////////////////////////////////////TICKET #1076 find out how to handle this properly
Class UiState
initial draft as of 2/2017 – actual implementation has to be filled in
Class UnimplementedConnection
5/2023 quick-n-dirty placeholder to be able to fabricate fake DataSink handles (Handle<Connection>)
Class Unknown
maybe do special handling of the media length, allowing it to support existing clips even if the media length is not known?
Member util::almostEqual (double d1, double d2, unsigned int ulp=2)
3/2024 seems we have solved this problem several times meanwhile /////////////////////////////////TICKET #1360 sort out floating-point rounding and precision
Member util::for_each (Container const &coll, FUN doIt)
reconsider if using rvalue references covers the "inline iteration" use case sufficiently, so that we can get rid of the unwrapping and thus get back to strict const correctness.
Member util::ilog2 (I num)
C++20 will provide std::bit_width(i) — run a microbenchmark!
File variadic-helper.hpp
transition lib::meta::Types to variadic parameters /////////////////////////////////TICKET #987
File variant-o.hpp

the instance handling for the accessor seems somewhat clumsy: we're creating a static accessor instance for each type of access functor, and each of these accessors holds a trampoline table. Why are we building a table, while we're using a templated access functor anyway? This table inhibits inlining, and there seems to be no runtime benefit. This whole design indeed was a hastily made (prompted by actual need) first attempt. It should be rewritten from scratch (HIV 4/2015)

///////////////////////////////////////TICKET #738 should be rewritten from scratch

///////////////////////////////////////TICKET #141 write an unit test for variant

Class Variant< TYPES >
we need to define all copy operations explicitly, due to the templated one-arg ctor to wrap the actual values. There might be a generic solution for that ////////////////////////TICKET #963 Forwarding shadows copy operations – generic solution?? But – Beware of unverifiable generic solutions!
Class VideoDisplayWidget
the first UI draft included a video displayer widget library implementation, Unfortunately, this became defunct with the switch to GTK-3.
File view-locator.cpp
WIP 9/2017 early draft ////////////////////////////////////////////////////////////TICKET #1104
File view-locator.hpp
WIP 6/2018 half finished draft ////////////////////////////////////////////////////////////TICKET #1104
File view-spec-dsl.hpp
as of 9/2017, we confirm the intention to open this configuration DSL for some kind of user provided flexible configuration of screen layouts eventually; yet right now, only the foundation for this flexible configuration is provided while the defaults are to be compiled into the UI as hard wired constants.
File viewer.cpp
half finished draft, topic was postponed as of 2014, but will become relevant again
File viewer.hpp
WIP-WIP-WIP as of 5/11
Member Viewer::Viewer (Ident const &)
anything significant to do here???
Class ViewLocator
initial draft as of 9/2017 – actual implementation need to be filled in
File weaving-pattern-builder.hpp

as of 10/2024, this scheme is established as prototype to explore how processing nodes can be build, connected and invoked; the expectation is however that this simple scheme is suitable to adapt and handle many common cases of invoking media processing functions, because the given functor is constructed within a plug-in tailored to a specific media processing library (e.g. FFmpeg) and thus can be a lambda to forward to the actual function.

WIP-WIP-WIP as of 10/2024 prototyping how to build and invoke render nodes /////////////////////////TICKET #1371

File weaving-pattern.hpp
relies still on an obsoleted implementation draft
Class Widget
write type comment...
File widget.hpp
as of 1/2015 this is complete WIP-WIP-WIP
File wiringrequest.hpp
stalled design draft from 2008 – basically still considered relevant as of 2016
File wish.cpp
result of the very first code generation from UML in 2008.
File wish.hpp
result of the very first code generation from UML in 2008.
Class Wizard
initial draft as of 2/2017 – actual implementation has to be filled in
File wizard.cpp
WIP 3/2017 early draft of the UI top-level controllers
File wizard.hpp

The infrastructure for context sensitive help needs to be defined

WIP 3/2017 early draft of the UI top-level controllers

File work-force.cpp
WIP-WIP 11/2023 »Playback Vertical Slice«
File work-site-trail.cpp
WIP 2/2017 early draft / foundations of "interaction control"
File work-site-trail.hpp
WIP 2/2017 early draft / foundations of "interaction control"
File work-site.cpp
WIP 2/2017 early draft / foundations of "interaction control"
File work-site.hpp
WIP 2/2017 early draft / foundations of "interaction control"
Class WorkSite
initial draft as of 2/2017 – actual implementation has to be filled in
Class WorkSiteTrail
initial draft as of 2/2017 – actual implementation has to be filled in
File wrapper.hpp
2017 consider to split off the FunctionResult into a dedicated header to reduce includes
File zoom-window.cpp
do we need this dedicated translation unit? As of 11/2022, the ZoomWindow component was developed header-only... However the amount of code is significant and the details are complex, and there is indeed a major implementation-only block with private functions.
File zoom-window.hpp

as of 12/2022 it rather seems the more general navigation should be abstracted at a higher level, leaving ZoomWindow mostly focused on time scale handling.

WIP-WIP as of 10/2022 the usage is just emerging, while the actual meaning of this interface still remains somewhat nebulous...

Member ZoomWindow::addSafe (FSecs t1, FSecs t2)
this utility function could be factored out into a FSecs or RSec class //////////////////TICKET #1262
Member ZoomWindow::anchorPoint () const
10/2022 we use a numerical rule currently, but that could be contextual state, like e.g. the current position of the play head or edit cursor or mouse.
Member ZoomWindow::detox (Rat poison)
this utility function could be factored out into a FSecs or RSec class //////////////////TICKET #1262
Member ZoomWindow::scaleSafe (FSecs duration, Rat factor)
this utility function could be factored out into a FSecs or RSec class //////////////////TICKET #1262