From d58174db4daa364d830d06fc83dc96b2de729016 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Tue, 25 Apr 2023 18:27:16 +0200 Subject: [PATCH] Segmentation: reorganise namespaces The Fixture and the low-level model backbone deserve a distinct namespace on their own. Since it's built by the Builder from the Session contents, and also used by the frame dispatch, we can expect dependence on some types from Steam-Layer, and thus this namespace needs to reside in Steam-Layer rather, while the actual low-level Model might become part of Vault-Layer, creating a hierarchy of data structures. (Remark: likely also the session related namespaces will need a reorganisation) --- src/doxygen.dox | 4 ++++ src/steam/common.hpp | 13 ++++++++++ .../{mobject/session => fixture}/fixture.cpp | 7 +++--- .../{mobject/session => fixture}/fixture.hpp | 24 ++++++++++--------- .../{mobject/session => fixture}/segment.cpp | 7 +++--- .../{mobject/session => fixture}/segment.hpp | 13 +++++----- .../session => fixture}/segmentation.cpp | 11 ++++----- .../session => fixture}/segmentation.hpp | 14 +++++------ .../mobject/builder/segmentation-tool.cpp | 2 +- .../mobject/builder/segmentation-tool.hpp | 8 +++---- src/steam/mobject/builder/toolfactory.cpp | 6 ++--- src/steam/mobject/builder/toolfactory.hpp | 4 ++-- src/steam/mobject/builderfacade.cpp | 2 +- src/steam/mobject/explicitplacement.hpp | 1 + src/steam/mobject/session.hpp | 8 ++++--- src/steam/mobject/session/session-impl.cpp | 4 ++-- src/steam/mobject/session/session-impl.hpp | 11 +++++---- tests/core/steam/engine/mock-dispatcher.hpp | 4 ++-- .../steam/mobject/session/deletecliptest.cpp | 4 ++-- .../session/session-modify-parts-test.cpp | 2 +- .../session/session-structure-test.cpp | 2 +- 21 files changed, 86 insertions(+), 65 deletions(-) rename src/steam/{mobject/session => fixture}/fixture.cpp (93%) rename src/steam/{mobject/session => fixture}/fixture.hpp (89%) rename src/steam/{mobject/session => fixture}/segment.cpp (90%) rename src/steam/{mobject/session => fixture}/segment.hpp (91%) rename src/steam/{mobject/session => fixture}/segmentation.cpp (88%) rename src/steam/{mobject/session => fixture}/segmentation.hpp (93%) diff --git a/src/doxygen.dox b/src/doxygen.dox index e794bd331..4a7746672 100644 --- a/src/doxygen.dox +++ b/src/doxygen.dox @@ -72,6 +72,10 @@ with the *ASCIIDOC* tool and published at the [Lumiera website](http://Lumiera.o @ingroup steam */ +/** @defgroup fixture Fixture and low-level-Model + @ingroup steam +*/ + /** @defgroup player Playback and Render Control @ingroup steam */ diff --git a/src/steam/common.hpp b/src/steam/common.hpp index cd474c660..62bb5ba28 100644 --- a/src/steam/common.hpp +++ b/src/steam/common.hpp @@ -126,6 +126,19 @@ namespace steam { }//(End)namespace mobject + + + /** + * Fixture and low-level-Model. + * The shared data structure used as render nodes network. + * It is created or updated by the [Builder](\ref session::builder) + * after any relevant change of \ref Session contents, while used + * by the engine as work data structure for the render jobs. + */ + namespace fixture { + + } + } //(End)namespace steam #endif /*STEAM_COMMON_H*/ diff --git a/src/steam/mobject/session/fixture.cpp b/src/steam/fixture/fixture.cpp similarity index 93% rename from src/steam/mobject/session/fixture.cpp rename to src/steam/fixture/fixture.cpp index fb1578308..78373f297 100644 --- a/src/steam/mobject/session/fixture.cpp +++ b/src/steam/fixture/fixture.cpp @@ -28,12 +28,11 @@ */ -#include "steam/mobject/session/fixture.hpp" +#include "steam/fixture/fixture.hpp" #include "include/logging.h" namespace steam { -namespace mobject { -namespace session { +namespace fixture { @@ -66,4 +65,4 @@ namespace session { -}}} // namespace steam::mobject::session +}} // namespace steam::fixture diff --git a/src/steam/mobject/session/fixture.hpp b/src/steam/fixture/fixture.hpp similarity index 89% rename from src/steam/mobject/session/fixture.hpp rename to src/steam/fixture/fixture.hpp index dc579eabf..28a931c51 100644 --- a/src/steam/mobject/session/fixture.hpp +++ b/src/steam/fixture/fixture.hpp @@ -35,15 +35,17 @@ ** of a more recent builder run. Ongoing render processes are also tracked per segment, ** which allows the individual calculation steps just to assume the data is "there". ** + ** @ingroup fixture + ** ** @todo WIP implementation of session core from 2010 ** @todo as of 2016, this effort is considered stalled but basically valid */ -#ifndef MOBJECT_SESSION_FIXTURE_H -#define MOBJECT_SESSION_FIXTURE_H +#ifndef STEAM_FIXTURE_FIXTURE_H +#define STEAM_FIXTURE_FIXTURE_H -#include "steam/mobject/session/segmentation.hpp" +#include "steam/fixture/segmentation.hpp" #include "steam/mobject/session/fork.hpp" #include "steam/mobject/explicitplacement.hpp" #include "steam/mobject/session/auto.hpp" @@ -60,12 +62,14 @@ using std::unique_ptr; namespace steam { -namespace mobject { -namespace session { +namespace fixture { + using mobject::session::Auto; + using mobject::ExplicitPlacement; /** + * @ingroup fixture * @todo 1/2012 Just a Placeholder. The real thing is not yet implemented. * @see http://lumiera.org/wiki/renderengine.html#Fixture */ @@ -86,7 +90,7 @@ namespace session { bool isValid() const; private: - virtual bool validate() + virtual bool validate() { TODO ("how to validate a Fixture?"); return false; @@ -94,11 +98,9 @@ namespace session { }; - - - typedef shared_ptr PFix; + using PFixture = shared_ptr; -}}} // namespace steam::mobject::session -#endif +}} // namespace steam::fixture +#endif /*STEAM_FIXTURE_FIXTURE_H*/ diff --git a/src/steam/mobject/session/segment.cpp b/src/steam/fixture/segment.cpp similarity index 90% rename from src/steam/mobject/session/segment.cpp rename to src/steam/fixture/segment.cpp index b977c41c3..b852145dc 100644 --- a/src/steam/mobject/session/segment.cpp +++ b/src/steam/fixture/segment.cpp @@ -26,17 +26,16 @@ ** @todo 2016 likely to stay, but expect some extensive rework */ -#include "steam/mobject/session/segment.hpp" +#include "steam/fixture/segment.hpp" #include "steam/mobject/explicitplacement.hpp" namespace steam { -namespace mobject { -namespace session { +namespace fixture { /** */ -}}} // namespace steam::mobject::session +}} // namespace steam::fixture diff --git a/src/steam/mobject/session/segment.hpp b/src/steam/fixture/segment.hpp similarity index 91% rename from src/steam/mobject/session/segment.hpp rename to src/steam/fixture/segment.hpp index b288da305..a6dd17cb3 100644 --- a/src/steam/mobject/session/segment.hpp +++ b/src/steam/fixture/segment.hpp @@ -28,8 +28,8 @@ */ -#ifndef MOBJECT_SESSION_SEGMENT_H -#define MOBJECT_SESSION_SEGMENT_H +#ifndef STEAM_FIXTURE_SEGMENT_H +#define STEAM_FIXTURE_SEGMENT_H #include @@ -40,9 +40,9 @@ using std::list; namespace steam { -namespace mobject { -namespace session { +namespace fixture { + using mobject::ExplicitPlacement; /** * For the purpose of building and rendering, the fixture (for each timeline) @@ -50,6 +50,7 @@ namespace session { * For each segment there is a RenderGraph (unit of the render engine) which * is able to render all ExitNodes for this segment. * + * @ingroup fixture * @todo 1/2012 Just a Placeholder. The real thing is not yet implemented. * @see http://lumiera.org/wiki/renderengine.html#Fixture */ @@ -71,5 +72,5 @@ namespace session { -}}} // namespace steam::mobject::session -#endif +}} // namespace steam::fixture +#endif /*STEAM_FIXTURE_SEGMENT_H*/ diff --git a/src/steam/mobject/session/segmentation.cpp b/src/steam/fixture/segmentation.cpp similarity index 88% rename from src/steam/mobject/session/segmentation.cpp rename to src/steam/fixture/segmentation.cpp index 9f5fd0608..1258e0674 100644 --- a/src/steam/mobject/session/segmentation.cpp +++ b/src/steam/fixture/segmentation.cpp @@ -1,5 +1,5 @@ /* - Segementation - Partitioning of a timeline for organising the render graph. + Segmentation - Partitioning of a timeline for organising the render graph. Copyright (C) Lumiera.org 2008, Hermann Vosseler @@ -27,14 +27,13 @@ */ #include "lib/error.hpp" -#include "steam/mobject/session/segmentation.hpp" -#include "steam/mobject/builder/fixture-change-detector.hpp" +#include "steam/fixture/segmentation.hpp" +//#include "steam/mobject/builder/fixture-change-detector.hpp" ///////////TODO namespace steam { -namespace mobject { -namespace session { +namespace fixture { namespace error = lumiera::error; @@ -79,4 +78,4 @@ namespace session { -}}} // namespace steam::mobject::session +}} // namespace steam::fixture diff --git a/src/steam/mobject/session/segmentation.hpp b/src/steam/fixture/segmentation.hpp similarity index 93% rename from src/steam/mobject/session/segmentation.hpp rename to src/steam/fixture/segmentation.hpp index 32bcf0e71..fb6a4d087 100644 --- a/src/steam/mobject/session/segmentation.hpp +++ b/src/steam/fixture/segmentation.hpp @@ -43,11 +43,11 @@ */ -#ifndef MOBJECT_SESSION_SEGMENTATION_H -#define MOBJECT_SESSION_SEGMENTATION_H +#ifndef STEAM_FIXTURE_SEGMENTATION_H +#define STEAM_FIXTURE_SEGMENTATION_H -#include "steam/mobject/session/segment.hpp" +#include "steam/fixture/segment.hpp" #include @@ -55,8 +55,7 @@ using std::list; namespace steam { -namespace mobject { -namespace session { +namespace fixture { /** @@ -65,6 +64,7 @@ namespace session { * The Segmentation defines and maintains this partitioning. Furthermore, * it is the general entry point for accessing the correct part of the engine * responsible for a given timeline time point. + * @ingroup fixture * @see SegmentationTool actually calculating the Segmentation * * @todo 1/2012 Just a Placeholder. The real thing is not yet implemented. @@ -84,5 +84,5 @@ namespace session { -}}} // namespace steam::mobject::session -#endif +}} // namespace steam::fixture +#endif /*STEAM_FIXTURE_SEGMENTATION_H*/ diff --git a/src/steam/mobject/builder/segmentation-tool.cpp b/src/steam/mobject/builder/segmentation-tool.cpp index 11840742d..10a030c36 100644 --- a/src/steam/mobject/builder/segmentation-tool.cpp +++ b/src/steam/mobject/builder/segmentation-tool.cpp @@ -37,7 +37,7 @@ namespace builder { using mobject::Buildable; using session::Clip; using session::Effect; - using session::Fixture; + using fixture::Fixture; /////////////////////////////////TICKET #414 diff --git a/src/steam/mobject/builder/segmentation-tool.hpp b/src/steam/mobject/builder/segmentation-tool.hpp index fd70efa17..28d176e41 100644 --- a/src/steam/mobject/builder/segmentation-tool.hpp +++ b/src/steam/mobject/builder/segmentation-tool.hpp @@ -37,8 +37,8 @@ #include "steam/mobject/builder/applicable-builder-target-types.hpp" -#include "steam/mobject/session/segmentation.hpp" -#include "steam/mobject/session/fixture.hpp" //////TODO really on the header?? +#include "steam/fixture/segmentation.hpp" +#include "steam/fixture/fixture.hpp" //////TODO really on the header?? #include @@ -63,7 +63,7 @@ namespace builder { { public: - SegmentationTool (session::Fixture &) ; + SegmentationTool (fixture::Fixture &) ; void treat (mobject::session::Clip& clip) ; void treat (mobject::session::Effect& effect) ; @@ -75,7 +75,7 @@ namespace builder { bool empty() const; private: - typedef mobject::session::Segment Segment; + using Segment = fixture::Segment; /** Partitioning of the Timeline to be created by this tool. */ //session::Segmentation& segments_; diff --git a/src/steam/mobject/builder/toolfactory.cpp b/src/steam/mobject/builder/toolfactory.cpp index 2f54cd953..b1b532dca 100644 --- a/src/steam/mobject/builder/toolfactory.cpp +++ b/src/steam/mobject/builder/toolfactory.cpp @@ -43,21 +43,21 @@ namespace builder { struct BuildProcessState { - session::Fixture & fixedTimeline_; + fixture::Fixture & fixedTimeline_; unique_ptr procSegment_; unique_ptr segmentation_; unique_ptr fabrication_; - BuildProcessState (session::Fixture& theTimeline) + BuildProcessState (fixture::Fixture& theTimeline) : fixedTimeline_(theTimeline), procSegment_(new engine::RenderGraph()) { } }; - ToolFactory::ToolFactory (session::Fixture& theFixture) + ToolFactory::ToolFactory (fixture::Fixture& theFixture) : state_(new BuildProcessState (theFixture)) { ENSURE (state_->fixedTimeline_.isValid()); diff --git a/src/steam/mobject/builder/toolfactory.hpp b/src/steam/mobject/builder/toolfactory.hpp index e86778549..ddab9e901 100644 --- a/src/steam/mobject/builder/toolfactory.hpp +++ b/src/steam/mobject/builder/toolfactory.hpp @@ -33,7 +33,7 @@ #ifndef MOBJECT_BUILDER_TOOLFACTORY_H #define MOBJECT_BUILDER_TOOLFACTORY_H -#include "steam/mobject/session/fixture.hpp" +#include "steam/fixture/fixture.hpp" #include "steam/mobject/builder/segmentation-tool.hpp" #include "steam/mobject/builder/nodecreatortool.hpp" #include "steam/mobject/builder/mould.hpp" @@ -63,7 +63,7 @@ namespace builder { public: /** prepare a builder tool kit for dealing with the given Fixture, * which is a snapshot of some timeline made explicit. */ - ToolFactory (session::Fixture&); + ToolFactory (fixture::Fixture&); /** prepare a tool for properly segmenting the Fixture */ SegmentationTool & configureSegmentation (); diff --git a/src/steam/mobject/builderfacade.cpp b/src/steam/mobject/builderfacade.cpp index 2b83410b2..593e4b7df 100644 --- a/src/steam/mobject/builderfacade.cpp +++ b/src/steam/mobject/builderfacade.cpp @@ -28,7 +28,7 @@ #include "steam/mobject/builder/common.hpp" #include "steam/mobject/builderfacade.hpp" -#include "steam/mobject/session/fixture.hpp" +#include "steam/fixture/fixture.hpp" namespace steam { namespace mobject { diff --git a/src/steam/mobject/explicitplacement.hpp b/src/steam/mobject/explicitplacement.hpp index 800da48e2..608bc3bfb 100644 --- a/src/steam/mobject/explicitplacement.hpp +++ b/src/steam/mobject/explicitplacement.hpp @@ -57,6 +57,7 @@ namespace mobject { * contains only ExplicitPlacement objects and is processed * by the Builder to create the render engine node network. * + * @ingroup fixture * @see Placement#resolve factory method for deriving an ExplicitPlacement */ class ExplicitPlacement : public Placement diff --git a/src/steam/mobject/session.hpp b/src/steam/mobject/session.hpp index 8ef74aa5b..0f2bb6564 100644 --- a/src/steam/mobject/session.hpp +++ b/src/steam/mobject/session.hpp @@ -67,14 +67,16 @@ namespace asset { class Timeline; typedef lib::P PTimeline; class Sequence; typedef lib::P PSequence; } +namespace fixture { + class Fixture; + using PFixture = std::shared_ptr; +} namespace mobject { namespace session { class SessManager; class ElementQuery; - class Fixture; - typedef std::shared_ptr PFix; } typedef session::SessManager& PSess; ///< acts as a "PImpl" smart ptr @@ -137,7 +139,7 @@ namespace mobject { virtual MObjectRef getRoot() = 0; - virtual session::PFix& getFixture () = 0; + virtual fixture::PFixture& getFixture () = 0; virtual void rebuildFixture () = 0; }; diff --git a/src/steam/mobject/session/session-impl.cpp b/src/steam/mobject/session/session-impl.cpp index 431b8aa2d..4242c1710 100644 --- a/src/steam/mobject/session/session-impl.cpp +++ b/src/steam/mobject/session/session-impl.cpp @@ -54,7 +54,7 @@ namespace session { , timelineRegistry_ , sequenceRegistry_ ) , contents_( MObject::create (defaultsManager_)) - , fixture_(new Fixture) + , fixture_(new fixture::Fixture) { INFO (session, "new Session created."); } @@ -141,7 +141,7 @@ namespace session { - PFix& + PFixture& SessionImpl::getFixture () { return fixture_; diff --git a/src/steam/mobject/session/session-impl.hpp b/src/steam/mobject/session/session-impl.hpp index 4528a2856..b90175e82 100644 --- a/src/steam/mobject/session/session-impl.hpp +++ b/src/steam/mobject/session/session-impl.hpp @@ -47,7 +47,7 @@ #define STEAM_MOBJECT_SESSION_SESSIONIMPL_H #include "steam/mobject/session.hpp" -#include "steam/mobject/session/fixture.hpp" +#include "steam/fixture/fixture.hpp" #include "steam/mobject/session/placement-index.hpp" #include "steam/mobject/session/session-services.hpp" #include "steam/mobject/session/session-interface-modules.hpp" @@ -67,6 +67,7 @@ namespace steam { namespace mobject { namespace session { + using fixture::PFixture; /** @@ -78,7 +79,7 @@ namespace session { { PlacementIndex contents_; - PFix fixture_; + PFixture fixture_; @@ -88,10 +89,10 @@ namespace session { virtual MObjectRef attach (PMO const& placement) override; virtual bool detach (PMO const& placement) override; - virtual MObjectRef getRoot() override; + virtual MObjectRef getRoot() override; - virtual PFix& getFixture() override; - virtual void rebuildFixture() override; + virtual PFixture& getFixture() override; + virtual void rebuildFixture() override; protected: /* == management API === */ SessionImpl (); diff --git a/tests/core/steam/engine/mock-dispatcher.hpp b/tests/core/steam/engine/mock-dispatcher.hpp index e71c058ec..f36588e41 100644 --- a/tests/core/steam/engine/mock-dispatcher.hpp +++ b/tests/core/steam/engine/mock-dispatcher.hpp @@ -31,7 +31,7 @@ ////#include "steam/engine/procnode.hpp" //#include "steam/play/dummy-play-connection.hpp" -#include "steam/mobject/session/segmentation.hpp" +#include "steam/fixture/segmentation.hpp" #include "steam/mobject/model-port.hpp" #include "steam/engine/dispatcher.hpp" #include "steam/engine/job-ticket.hpp" @@ -82,7 +82,7 @@ namespace test { using std::make_tuple; using std::deque; ///////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1294 : organisation of namespaces / includes?? - using steam::mobject::session::Segmentation; + using fixture::Segmentation; namespace { // used internally diff --git a/tests/core/steam/mobject/session/deletecliptest.cpp b/tests/core/steam/mobject/session/deletecliptest.cpp index a3e126a24..f84b6af8f 100644 --- a/tests/core/steam/mobject/session/deletecliptest.cpp +++ b/tests/core/steam/mobject/session/deletecliptest.cpp @@ -35,15 +35,15 @@ //using std::string; +using std::dynamic_pointer_cast; //////////////////// TODO only temp using proc_interface::AssetManager; using proc_interface::PAsset; using proc_interface::IDA; -using std::dynamic_pointer_cast; /// TODO only temp -namespace steam { +namespace steam { namespace mobject { namespace session { namespace test { diff --git a/tests/core/steam/mobject/session/session-modify-parts-test.cpp b/tests/core/steam/mobject/session/session-modify-parts-test.cpp index ba71723cc..b32ceea58 100644 --- a/tests/core/steam/mobject/session/session-modify-parts-test.cpp +++ b/tests/core/steam/mobject/session/session-modify-parts-test.cpp @@ -27,7 +27,7 @@ #include "lib/test/run.hpp" #include "steam/mobject/session.hpp" -#include "steam/mobject/session/fixture.hpp" // TODO only temporarily needed +#include "steam/fixture/fixture.hpp" // TODO only temporarily needed //#include "steam/assetmanager.hpp" //////?? //#include "steam/asset/timeline.hpp" #include "steam/asset/sequence.hpp" diff --git a/tests/core/steam/mobject/session/session-structure-test.cpp b/tests/core/steam/mobject/session/session-structure-test.cpp index 3f0f636f9..8c8c83f8b 100644 --- a/tests/core/steam/mobject/session/session-structure-test.cpp +++ b/tests/core/steam/mobject/session/session-structure-test.cpp @@ -27,7 +27,7 @@ #include "lib/test/run.hpp" #include "steam/mobject/session.hpp" -#include "steam/mobject/session/fixture.hpp" // TODO only temporarily needed +#include "steam/fixture/fixture.hpp" // TODO only temporarily needed #include "steam/assetmanager.hpp" //////?? #include "steam/asset/timeline.hpp" #include "steam/asset/sequence.hpp"