Lumiera 0.pre.04~rc.1
»edit your freedom«
Loading...
Searching...
No Matches
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. Relevance not clear yet...
File abstractmo.hpp
result of the very first code generation from UML in 2008. Relevance not clear yet...
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

5/2025 generally speaking, we use way too much registration relying on matching textual IDs; This is a "boilerplaty" approach, we can do better ///////////////////////TICKET #1405 : all this registration with matching IDs is way too much "boilerplaty"

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

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

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.

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. Relevance not clear yet...
File allocation.hpp

result of the very first code generation from UML in 2008. Relevance not clear yet...

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
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. Relevance not clear yet...
File auto.hpp
result of the very first code generation from UML in 2008. Relevance not clear yet...
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 BindToArgument< SIG, X, pos >
6/2025 while this was added later to handle a special case, now after clean-up (see #987) this seems to be the much cleaner implementation approach and can easily be generalised to cover all the general features available through PApply; it would be sufficient to replace the single template parameter X by a type-sequence of the values to bind. All use cases of partial application could be modelled this way... //////////////////////////////////////////////TICKET #1394
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
File buffer-proxy-provider.hpp
BROKEN as of 12/2024 //////////////////////////////////////////////////////////////////////////////TICKET #1387 : can not properly compose BufferProvider
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

Member BufferProvider::lockBuffer (BuffDescr const &)
2/2025 might need to accept a cache key as additional parameter //////////////////////////////////TICKET #1392 : get cache key from computation to the cache backend
Class BufferProxyProvider
WIP-WIP 12/2024 this is a design sketch to explore extension capabilities of BufferProvider
Struct 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"
Struct 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

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.
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. It should be a smart pointer of some kind and the unlink() function of the asset should take it into account when breaking circular references.
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...
Struct 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.

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

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

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.
File conmanager.cpp
initially generated code of unclear relevance
File conmanager.hpp
initially generated code of unclear relevance
Member ConManager::getConnection ()

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

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

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«

File constraint.cpp
result of the very first code generation from UML in 2008. Relevance not clear yet...
File constraint.hpp
result of the very first code generation from UML in 2008. Relevance not clear yet...
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...
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 demo-controller.cpp
5/2025 now used for a research project for XV video display ////////////////////////////////////TICKET #1403 : attempt to upgrade the XV displayer
File demo-controller.hpp

as a temporary solution, 1/2017 the playback controller was moved into the viewer panel. Of course it can not work that way....

5/2025 now used for a research project for XV video display ////////////////////////////////////TICKET #1403 : attempt to upgrade the XV displayer

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

File displayer.cpp

as of 2016 it is not clear, if this code will be evolved into the actual display facility, or be replaced and rewritten, when we're about to create a functional video display connected to the render engine.

5/2025 used in an experiment for video output

Member Displayer::format ()
this feature was seemingly never used... can it be relevant? can we handle different formats?
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 dropframe.hpp
2025 this header provides some calculation functions to implement such a mapping scheme (thereby documenting the know-how). But the project never got to the point of integrating this functionality into an actual timecode implementation. Doing so will be future work. ///////////////////////////////////////////////////TICKET #751
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

revived in 2025 for research of video output techniques; this is test code.

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...
Member Effect::getProcAsset () const
: clarify asset->mobject relation and asset dependencies; /////////////////////////////////////////TICKET #255
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 2/2025 provide actual service implementation and find a way how to populate the Facilities with these actual services...

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.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.
Struct 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.
Struct 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 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. The real thing is not yet implemented.
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...

6/2025 basically everything here is unused or will likely be done in a different way — expect this and rendergraph.cpp to be obsolete

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

2/25 note that there is a bind_front in C++20 and C++23 will provide a bind_back helper, which would provide the implementation fully in accordance with current expectations (including move, constexpr); if we choose to retain a generic function-style front-end, it should be aligned with these standard facilities. We might want to retain a simple generic interface especially for binding some selected argument, which handles the intricacies of storing the functor.

6/25 note however that the full-fledged partial function application is a relevant core feature and is used in the NodeBuilder (see tuple-closure.hpp). Further improvement of the implementation is thus mandated... ////////////////////////////////////TICKET #1394

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. It should be a smart pointer of some kind and the unlink() function of the asset should take it into account when breaking circular references.
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. In the meantime, we use some hard wired mappings to actual InteractionState implementations
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-combine.hpp
2024 the Lumiera project has yet to decide how to approach portability of hash values, and the related performance issues. This code was directly integrated into the code base to ensure a stable implementation and reproducible hash values. ///////////////////////////////////////////////////////////////////////////////////////////////////TICKET #722 uniform uses of hash values
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

File hetero-data.hpp
WIP-WIP this is the draft of a design sketch regarding the render node network, which seems to be still pretty much in flux as of 12/2024
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
File interaction-state.cpp
do we really need a separate implementation unit for this??
File interaction-state.hpp

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.

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

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

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...
Union 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.....

describe this pattern in more detail....

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

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. Relevance not clear yet...
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....
{random.cpp} 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
{entry-id.hpp} 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::meta::apply (FUN &&f, TUP &&tup) noexcept(can_nothrow_invoke_tup< FUN, TUP >)
6/2025 as a first step, this replicates the implementation from C++17; the second step would be to constrain this to a concept tuple_like
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. Anyone...?
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)
{time.cpp} Member lib::time::anonymous_namespace{time.cpp}::build_time_from (FSecs const &fractionalSeconds)
2022 this utility function could be factored out into a FSecs or RSec class /////////////////TICKET #1262
Member lib::time::calculate_ntsc_drop_frame_number (raw_time_64 time)
2011 I doubt this works correct for negative times!!
Member lib::time::getDefaultGridFallback ()
placeholder for accessing a current or default session grid. To be implemented later.
Member lib::time::raw_time_64
2025 a mere type alias is up to debate – very likely we'll use a wrapper soon /////////////////TICKET #1258
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. This seemed like a good idea at that time, but we should re-evaluate if libGAVL is maintained and in actual use, before we start really relying on it.

2025 this code is a kind of architecture placeholder — it is clear that a solution can can not be that simple, but any viable solution will rely onto an approach like outlined here: provide a façade interface, which has to be implemented by any plug-in component to provide access to the processing capabilities of a specific library. The access point functions exposed on the facade however must be shaped by the specific way how the builder and the render engine interacts with and delegates back to the media-handling library. Such an interface can not be based on first principles alone.

2025 I still retain the dependency on lib-GAVL for now, even while we never got into actually using it. Simply because I still consider this library exemplary, and would love to use it for real. Yet it remains to be seen if the project actually gets a chance to do so, simply because FFmpeg roughly covers the same ground. Presumably it turns out to be a basic requirement to ship a plug-in with FFmpeg binding. Furthermore, one especially tricky aspect is how to support displays with extended dynamic range – a requirement which has the potential to blur the notion of »raw video«...

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.
Struct 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.

Struct 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_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. Handlers do not need to obey the request and shall return LUMIERA_RESOURCE_NONE which will then continue with the next handler. This goes through all available handlers until one returns a higher or same value than the current iteration to indicate that it freed enough resources to continue the task. Then control is passed back to the calling loop which retries the resource allocation. LUMIERA_RESOURCE_PANIC is somewhat special since it will always call all registered handlers for all resources, not only the queried one and finally _exit() the application. The exact amounts of resources to be freed for ONE, SOME and MANY in intentionally kept vague the handlers are free to interpret this in some sensible way.
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
2023 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
do we need this abstract baseclass?
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?
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. Relevance not clear yet...
File mobject/session/effect.hpp
result of the very first code generation from UML in 2008. Relevance not clear yet...
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 multifact.hpp
2025 ...and still not fully convinced this is the way to go; admittedly we did not get to a point yet where fabricating lots of elements poses any kind of challenge — up to now a dedicated factory function within a service was enough to handle this task. Yet this may change, once we have stream types, various kinds of assets (notably effects and processors) and lots of queries.
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
Struct 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 1/2025 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.

as of 1/2025, the Layer-3 builder seems to be beyond the current integration scope. //////////////TICKET #1389 : develop a processing builder

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. In the end, it is highly likely we'll indeed need a node factory though...

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. In the end, it is highly likely we'll indeed need a node factory though...

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.
Member NodeBuilder_test::build_connectedNodes ()
12/24 ✔ define ⟶ ✔ implement
Member NodeBuilder_test::build_Node_adaptedParam ()
2/25 ✔ define ⟶ ✔ implement
Member NodeBuilder_test::build_Node_dynamicParam ()
12/24 ✔ define ⟶ ✔ implement
Member NodeBuilder_test::build_Node_fixedParam ()
12/24 ✔ define ⟶ ✔ implement
Member NodeBuilder_test::build_ParamNode ()
12/24 ✔ define ⟶ ✔ implement
Member NodeBuilder_test::build_simpleNode ()
12/24 ✔ define ⟶ ✔ implement
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 NodeFeed_test
2/2025 unfinished – add cases to cover media data feeds
Class NodeGraphAttachment
WIP-WIP as of 4/2023 – starting with a fake implementation /////////////////////TICKET #1306 : create an actual link to the low-level Model
Struct 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.

5/2025 meanwhile a new effort to define the processing nodes was successful, but it is still not clear if the »Render Nodes« will expose any runtime logic beyond the mere ability to be invoked. ** This is a placeholder** — we are using ProcID instead

Member NodeLink_test::build_connected_nodes ()
1/25 ✔ define ⟶ ✔ implement
Member NodeLink_test::build_simple_node ()
7/24 ✔ define ⟶ ✔ implement
Member NodeLink_test::trigger_node_port_invocation ()
2/25 ✔ define ⟶ ✔ implement
Class NodeMeta_test
2/2025 hash computation is not yet specified...
Member NodeMeta_test::verify_ID_connectivity ()
2/25 🔁 define ⟶ ✔ implement
Member NodeMeta_test::verify_ID_specification ()
1/25 ✔ define ⟶ ✔ implement
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-displayer.hpp

WIP as of 5/2025 attempt to accommodate to GTK-3 ////////////////////////////////////////////////TICKET #1403

WIP as of 5/2025 attempt to accommodate to GTK-3 ////////////////////////////////////////////////TICKET #1403

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 NullDisplayer
WIP as of 5/2025 attempt to accommodate to GTK-3 /////////////////////////////////////////////////TICKET #1403
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

Class OutputProxyProvider_test
WIP-WIP 12/2024 this turned out to be impossible, due to inconsistencies in the default implementation. /////////////////////////////////////////////TICKET #1387 : need to consolidate BufferProvider default implementation
File panel-bar.hpp
still not completely ported to GTK-3 and not used as of 5/2025 /////////////////////////////////TICKET #937 : complete Port to GTK-3
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 PanelBar::setupPanelButton ()
still not completely ported to GTK-3 and not used as of 5/2025 /////////////////////////////////TICKET #937 : complete Port to GTK-3
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 >
6/2025 while this is the core of this feature, the implementation is still confusing and bears traces from being the first attempt at solving this problem, with a pre-C++11 feature set. Driven by other requirements, over time several variations were added, so that now the main functionality is now implemented twice, in a very similar way in BindToArgument. Actually, the latter seems much clearer, and possibly PApply could be rewritten into a front-end and delegate to BindToArgument... ////////////////////////////////////TICKET #1394
Member PApply< SIG, VAL >::bindFront (SIG const &f, Tuple< ValTypes > arg)

2/2025 However, the LeftReplacedArgs could then possibly moved into the bind function, as could the functor, once we replace the Apply-template by STDLIB features.

5/2025 seems indeed we could perfect-forward everything into the binder object.

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
File pixbuf-displayer.cpp
WIP as of 5/2025 attempt to accommodate to GTK-3 ////////////////////////////////////////////////TICKET #1403
File pixbuf-displayer.hpp
WIP as of 5/2025 attempt to accommodate to GTK-3 ////////////////////////////////////////////////TICKET #1403
Class PixbufDisplayer
WIP as of 5/2025 attempt to accommodate to GTK-3 /////////////////////////////////////////////////TICKET #1403
Struct PixSpan
quick-n-dirty hack. Should consider the Range TS (C++20)
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 Placement< MObject, MObject >::operator= (Placement const &)=default
2025-4 what is the semantics of such an assignment? Shouldn't placement be treated with reference semantics? //////////////////////////////////TICKET #123 : (from 2009) "Find out about the correct meaning when assigning placements...."
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

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)

WIP-WIP-WIP 6/2011

File play-facade.hpp
in theory this could be an external interface mapped via Lumiera's interface system. This would be much work however, and not serve any tangible goal in the current stage of development (2018). I take this as just another confirmation that turning everything into a plug-in does not quality as good architecture: if you want to do it right, it creates a lot of additional cost. And to do it just superficially would be like cheating.
File play-panel.cpp
5/2025 This is an experiment or demo to find out if our XV-Widget is still usable. The actual solution obviously should not use a direct wired connection to the ViewerPanel, but rather communicate with the »Player« subsystem down in Steam-Layer ///////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1403 : try to port XvDisplayer to GTK-3
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 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!
Struct PlayTestFrames_Strategy
placeholder as of 6/23
File plug.cpp
result of the very first code generation from UML in 2008. Relevance not clear yet...
File plug.hpp
result of the very first code generation from UML in 2008. Relevance not clear yet...
Struct 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

Can we assume size_t == 64bit; is this enough to prevent collisions? Can we afford using a 128bit hash? What about portability of hash values?

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.hpp
WIP 2/2025 Node-Invocation is reworked from ground up for the »Playback Vertical Slice«
Struct ProcAttrib
if this grows beyond size_t, it should be deduplicated and stored in a registry, similar to the string spec. Storage matters!
Member ProcFactory::operator() (Asset::Ident &key)
actually define
Class ProcNode
WIP 2025 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.
Class RelativeCanvasHook< WID >
investigate real-live performance ////////////////////////////////////////////////////////////////TICKET #1254 : investigate impact of indirection
Class RelativeLocation
just a design sketch, nothing finished yet. possibly to be reworked or phased out completely. See Trac #100
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 RenderGraph
likely to be reworked into the engine backbone /////////////TODO WIP as of 12/2010
File rendergraph.hpp
5/2025 the »Playback Vertical Slice« was not yet helpful to clarify how the top-level of the low-level-model will be organised. Some considerations were made regarding ExitNode, but nothing implemented yet. Might become relevant for the next »Vertical Slice«, where we want to add a clip and then actually invoke a real Builder implementation. Future work!
Class RenderInvocation
write type comment
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

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
Struct ScriptRunnerFacade
build a suitable binding interface and a 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...
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.

{zoom-window.hpp} 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
{zoom-window.hpp} Member stage::model::anonymous_namespace{zoom-window.hpp}::isMicroGridAligned (FSecs duration)
should likewise be member of a FSecs wrapper type...
{zoom-window.hpp} 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)
{stave-bracket-widget.cpp} 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
{element-box-widget.cpp} 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
{error-log-display.hpp} Member stage::widget::anonymous_namespace{error-log-display.hpp}::populateStandardTextTags (Glib::RefPtr< Gtk::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

{config-resolver.cpp} 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
{clip.cpp} 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...
{preview.cpp} 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_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_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_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_blubb)
use this to enact a complex layout structure in the Timeline-UI //////////////////TICKET #1042 : further the DummySessionConnection
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_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 (scope_moveRelocateClip)
WIP-WIP 3/2021 – working on a prototype for dragging clips...
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::cmd::COMMAND_DEFINITION (test_meta_activateContentDiff)
used for preliminary integration testing ///////////////////////////////////////////TICKET #211 prefix test_ bypasses logging and immediately executes for now (2018)
{looper.hpp} Member steam::control::anonymous_namespace{looper.hpp}::STEAM_DISPATCHER_BUILDER_DELAY_ms
this value should be retrieved from configuration ////////////////////////////////TICKET #1052 : access application configuration
{looper.hpp} Member steam::control::anonymous_namespace{looper.hpp}::STEAM_DISPATCHER_BUSY_SLOWDOWN_FACTOR
this value should be retrieved from configuration ////////////////////////////////TICKET #1052 : access application configuration
{dispatcher-looper-test.cpp} 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
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. See Ticket #115
Struct 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 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-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. But it still seems like a good idea (as of 2016), while likely the implementation will be completely different, based on JSON to be injected via the diff system
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.cpp
2025 this code is here for later referral, but currently not used; a complete re-engineering is required to bring this code to current standards
  • magic constants all over the place
  • hard coded wiring instead of using an adapter layer
  • way to much pointer usage and pointer magic
  • direct handling of low-level keyboard events
  • repetitive code with switch-case fan
File timecode-widget.hpp

2016 needs extensive rework to get smooth integration with Lumiera's timecode handling functions

2023 this widget was used in the first GTK-2 based UI. While it still works with GTK-3, there are various fine points which you wouldn't do this way in a modern GTK UI, like directly checking for keyboard modifiers, or processing any kind of formatting directly in a event handler, instead of building a set of error-safe formatting helpers.

2025 ...rather we should invest in generic sub-widgets, and try to build some generic pattern how to work with numeric values with high precision (e.g. interactive nudging and spinning with a gear switch). Bottom line: this code is currently unused and should be re-engineered.

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.

2016 can confirm that we still want to go that route

we need some actual interface, beyond just creating timelines!

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

as of 03/2023 the backbone of the new structure is in place (see #1042)

as of 05/2025 we need actual editing functionality in the core to continue building here.... //////TICKET #305

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
2025 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
2025 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

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 ()

2023 / 2025 the remainder of the old GTK-2 Timeline UI was removed.

2025 much is broken and unclear on a design level here... 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 manage 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 )
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 ()
2025 unclear what to do and to return here ///////////////////////////////////////////////TICKET #1367 : 5/25 left in tree for now; purpose unclear, maybe relevant for the next »Vertical Slice« ?
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...

Struct 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 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 typed-allocation-manager.hpp

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

WIP WIP.

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. For now (as of 2016), efforts towards this important goal have been postponed, because we have to focus on a working engine first
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 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 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. And a fun fact is, even while Lumiera is a video editing application, we did not yet reach the state as to care for video display ourselves. Someone (TM) need to care for this!
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
WIP-WIP-WIP as of 10/2024 prototyping how to build and invoke render nodes /////////////////////////TICKET #1371
Struct WeavingBuilder< POL, PROT >
2/2025 nothing is implemented yet for specific buffer / type config. All type slots are filled with the default provider from EngineCtx.
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. Relevance not clear yet...
File wish.hpp

result of the very first code generation from UML in 2008. Relevance not clear yet...

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

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

The infrastructure for context sensitive help needs to be defined

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-function-result.hpp
2025 initially created by direct need, it was used for a while, but became largely obsoleted by the ''transforming'' functionality provided by iter-explorer.hpp (which is implemented by the same basic technique, but without the std::function baseclass).
File xv-displayer.hpp
WIP as of 5/2025 – attempt to port this component to GTK-3 ///////////////////////////////////////TICKET #1403
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