From cfc17e75ba9dc6783a903d3f965f55617747591c Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Fri, 16 Oct 2009 21:20:30 +0200 Subject: [PATCH] refined and clarified planning of Scope and QueryFocus --- doc/devel/uml/class153349.html | 4 +++- doc/devel/uml/class153605.html | 2 +- doc/devel/uml/class153861.html | 2 +- doc/devel/uml/fig136325.png | Bin 21713 -> 23017 bytes doc/devel/uml/index_71.html | 1 + doc/devel/uml/public_operations.html | 1 + src/proc/mobject/session/scope.cpp | 2 ++ src/proc/mobject/session/scope.hpp | 8 ++++++++ uml/lumiera/132357 | 23 ++++++++++++++++++++--- uml/lumiera/136325.diagram | 24 ++++++++++++------------ uml/lumiera/lumiera.prj | 2 +- wiki/renderengine.html | 8 +++++--- 12 files changed, 55 insertions(+), 22 deletions(-) diff --git a/doc/devel/uml/class153349.html b/doc/devel/uml/class153349.html index 48617516d..845e35a8d 100644 --- a/doc/devel/uml/class153349.html +++ b/doc/devel/uml/class153349.html @@ -19,6 +19,8 @@

Declaration :

Relation <unidirectional association>

Declaration :

Stereotype: holds

-
+ +
Operation getParent

Declaration :

+

All public operations : getParent

diff --git a/doc/devel/uml/class153605.html b/doc/devel/uml/class153605.html index 3978922a5..abd092454 100644 --- a/doc/devel/uml/class153605.html +++ b/doc/devel/uml/class153605.html @@ -18,7 +18,7 @@

Declaration :

-
Relation scopes (<unidirectional association>)

Declaration :

Stereotype: has_a

+
Relation scopes (<unidirectional association>)

Declaration :

Stereotype: owns

diff --git a/doc/devel/uml/class153861.html b/doc/devel/uml/class153861.html index 1ef4ad515..70c14570f 100644 --- a/doc/devel/uml/class153861.html +++ b/doc/devel/uml/class153861.html @@ -20,7 +20,7 @@
Relation <unidirectional association>

Declaration :

-
Relation <unidirectional association>

Declaration :

Stereotype: use

+
Relation <unidirectional association>

Declaration :

Stereotype: uses

diff --git a/doc/devel/uml/fig136325.png b/doc/devel/uml/fig136325.png index 32668374dbb1f9ba3c7570c8617e463b2eb4f81b..7aa5b52890c63f554d7a00ddc8078b462693409a 100644 GIT binary patch literal 23017 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 literal 21713 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 the session can be comprised of several EDLs,
there is only one Fixture, which represents the actual
configuration of all Objects to be rendered getFrameoperationmode = READ, WRITE, ... getIDoperation +getParentoperation getParentsoperationList of entities this asset depends on or requires to be functional. May be empty. The head of this list can be considered the primary prerequisite getPlaylistForRenderoperation getStateProxyoperation diff --git a/doc/devel/uml/public_operations.html b/doc/devel/uml/public_operations.html index 717b3562d..4e6395642 100644 --- a/doc/devel/uml/public_operations.html +++ b/doc/devel/uml/public_operations.html @@ -44,6 +44,7 @@ getFixtureSessionWhile the session can be comprised of several EDLs,
there is only one Fixture, which represents the actual
configuration of all Objects to be rendered getFrameFilemode = READ, WRITE, ... getIDAssetManager +getParentScope getParentsAssetList of entities this asset depends on or requires to be functional. May be empty. The head of this list can be considered the primary prerequisite getPlaylistForRenderFixture getStateProxyRenderState diff --git a/src/proc/mobject/session/scope.cpp b/src/proc/mobject/session/scope.cpp index 570fe90ff..fe5f60bcb 100644 --- a/src/proc/mobject/session/scope.cpp +++ b/src/proc/mobject/session/scope.cpp @@ -22,6 +22,7 @@ #include "proc/mobject/session/scope.hpp" +#include "proc/mobject/session/query-focus-stack.hpp" #include "proc/mobject/mobject.hpp" //#include "proc/mobject/session/track.hpp" //#include "proc/mobject/placement.hpp" @@ -42,6 +43,7 @@ namespace session { ScopeLocator::ScopeLocator() + : focusStack_(new QueryFocusStack) { } diff --git a/src/proc/mobject/session/scope.hpp b/src/proc/mobject/session/scope.hpp index 05ff245fd..fa7a0a0a7 100644 --- a/src/proc/mobject/session/scope.hpp +++ b/src/proc/mobject/session/scope.hpp @@ -30,6 +30,7 @@ #include "proc/mobject/placement-ref.hpp" #include "lib/singleton.hpp" +#include //#include //#include @@ -39,8 +40,10 @@ namespace mobject { namespace session { + using boost::scoped_ptr; class ScopeLocator; + class QueryFocusStack; /** @@ -53,11 +56,16 @@ namespace session { public: Scope (PlacementMO const& constitutingPlacement); + static Scope const& containing (PlacementMO const& aPlacement); + static Scope const& containing (RefPlacement const& refPlacement); + + Scope const& getParent() const; }; class ScopeLocator { + scoped_ptr focusStack_; public: ScopeLocator(); diff --git a/uml/lumiera/132357 b/uml/lumiera/132357 index ef09856d3..fa75cd0cd 100644 --- a/uml/lumiera/132357 +++ b/uml/lumiera/132357 @@ -1,6 +1,6 @@ format 58 "Placement" // ProcessingLayer::MObject::Placement - revision 1 + revision 2 modified_by 5 "hiv" // class settings //class diagram settings @@ -68,6 +68,23 @@ ${inlines} " classrelation_ref 177541 // b multiplicity "1" parent class_ref 152453 // PlacementRef + end + + operation 138885 "getParent" + public return_type class_ref 153349 // Scope + nparams 0 + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + +" + + + + end end @@ -110,7 +127,7 @@ ${inlines} classrelation 177797 // scopes () relation 167813 ---> - stereotype "has_a" + stereotype "owns" a role_name "scopes" protected cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; " @@ -176,7 +193,7 @@ ${inlines} classrelation 178565 // relation 168581 ---> - stereotype "use" + stereotype "uses" a role_name "" protected cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; " diff --git a/uml/lumiera/136325.diagram b/uml/lumiera/136325.diagram index 5b265342a..80ebfe88a 100644 --- a/uml/lumiera/136325.diagram +++ b/uml/lumiera/136325.diagram @@ -10,7 +10,7 @@ classcanvas 128133 class_ref 152453 // PlacementRef end classcanvas 128261 class_ref 153349 // Scope draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default - xyz 214 212 2000 + xyz 204 208 2000 end classcanvas 128517 class_ref 153477 // ScopePath draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default @@ -29,8 +29,8 @@ classcanvas 129413 class_ref 152069 // PlacementIndex xyz 340 345 2004 end note 129669 "actually -implemented through" - xyzwh 250 303 2000 131 50 +implemented through the:" + xyzwh 241 308 2000 140 45 classcanvas 129797 class_ref 153861 // ScopeLocator draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default xyz 196 17 2000 @@ -42,18 +42,18 @@ end note 131333 "this connection is established by the current session" xyzwh 361 39 2000 158 47 relationcanvas 128389 relation_ref 167557 // - from ref 128261 z 1999 stereotype "<>" xyz 277 231 3000 to ref 128133 + from ref 128261 z 1999 stereotype "<>" xyz 281 219 3000 to ref 128133 no_role_a no_role_b - multiplicity_a_pos 328 237 3000 multiplicity_b_pos 268 237 3000 + multiplicity_a_pos 328 237 3000 multiplicity_b_pos 278 237 3000 end relationcanvas 128645 relation_ref 167685 // - from ref 128517 z 1999 stereotype "<>" xyz 135 231 3000 to ref 128261 - role_a_pos 176 214 3000 no_role_b + from ref 128517 z 1999 stereotype "<>" xyz 130 231 3000 to ref 128261 + role_a_pos 166 214 3000 no_role_b no_multiplicity_a no_multiplicity_b end relationcanvas 128901 relation_ref 167813 // - from ref 128773 z 1999 stereotype "<>" xyz 49 181 3000 to ref 128517 - role_a_pos 86 195 3000 no_role_b + from ref 128773 z 1999 stereotype "<>" xyz 54 182 3000 to ref 128517 + role_a_pos 88 194 3000 no_role_b no_multiplicity_a no_multiplicity_b end relationcanvas 129157 relation_ref 167941 // @@ -64,7 +64,7 @@ relationcanvas 129157 relation_ref 167941 // no_multiplicity_a no_multiplicity_b end relationcanvas 129285 relation_ref 168069 // - from ref 128005 z 1999 stereotype "<>" xyz 193 286 3000 to ref 128261 + from ref 128005 z 1999 stereotype "<>" xyz 193 289 3000 to ref 128261 no_role_a no_role_b no_multiplicity_a no_multiplicity_b end @@ -81,7 +81,7 @@ relationcanvas 130053 relation_ref 168197 // no_multiplicity_a no_multiplicity_b end relationcanvas 130309 relation_ref 168325 // - from ref 129797 z 1999 stereotype "<>" xyz 237 141 3000 to ref 128261 + from ref 129797 z 1999 stereotype "<>" xyz 237 139 3000 to ref 128261 no_role_a no_role_b no_multiplicity_a no_multiplicity_b end @@ -92,7 +92,7 @@ relationcanvas 130949 relation_ref 168453 // no_multiplicity_a no_multiplicity_b end relationcanvas 131205 relation_ref 168581 // - from ref 129797 z 1999 stereotype "<>" xyz 339 91 3000 to ref 130437 + from ref 129797 z 1999 stereotype "<>" xyz 338 92 3000 to ref 130437 no_role_a no_role_b no_multiplicity_a no_multiplicity_b end diff --git a/uml/lumiera/lumiera.prj b/uml/lumiera/lumiera.prj index 98d69abad..890574f20 100644 --- a/uml/lumiera/lumiera.prj +++ b/uml/lumiera/lumiera.prj @@ -1,6 +1,6 @@ format 58 "lumiera" - revision 54 + revision 55 modified_by 5 "hiv" cpp_root_dir "../../src/" diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 6663337cb..2c9abe508 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -3051,10 +3051,10 @@ Placement references mimic the behaviour of a real placement, i.e. they proxy th {{red{WIP}}} -
+
MObjects are attached into the [[Session]] by adding a [[Placement]]. Because this especially includes the case of //grouping or container objects,// e.g. tracks or [[meta-clips|VirtualClip]], any placement may optionally define and root a scope, and every placement is at least contained in one encompassing scope &mdash; of course with the exception of the absolute top level, which can be thought off as being contained in a scope of handling rules.
 
-Thus, while the [[sequences (former called EDL)|EDL]] act as generic container holding a pile of placments, actually there is a more fine grained structure based on the nesting of the tracks, which especially in Lumiera's HighLevelModel belong to the sequence (they aren't a property of the top level timeline as one might expect). Building upon these observations, we actually require each addition of a placement to specify a scope. The implementation of this tie-to-scope is provided by the same mechanism as utilised for relative placements, i.e. an directional placement relation. This relation actually is implemented by the PlacementIndex
+Thus, while the [[sequences (former called EDL)|EDL]] act as generic container holding a pile of placments, actually there is a more fine grained structure based on the nesting of the tracks, which especially in Lumiera's HighLevelModel belong to the sequence (they aren't a property of the top level timeline as one might expect). Building upon these observations, we actually require each addition of a placement to specify a scope. Consequently, for each Placement at hand it is possible to determine an //containing scope,// which in turn is associated with some Placement of a top-level ~MObject for this scope. An example would be the {{{Placement<Track>}}} acting as scope of all the clips placed onto this track. The //implementation//&nbsp; of this tie-to-scope is provided by the same mechanism as utilised for relative placements, i.e. an directional placement relation. Actually, this relation is implemented by the PlacementIndex within the current [[Session]].
 
 
 [>img[Structure of Placment Scopes|draw/ScopeStructure1.png]]
@@ -3382,7 +3382,7 @@ Viewed as a micro program, the processing patterns are ''weak typed'' &mdash
 
a given Render Engine configuration is a list of Processors. Each Processor in turn contains a Graph of ProcNode.s to do the acutal data processing. In order to cary out any calculations, the Processor needs to be called with a StateProxy containing the state information for this RenderProcess
 
-
+
When querying contents of the session or sub-containers within the session, the QueryFocus follows the current point-of-query. As such queries can be issued to explore the content of container-like objects holding other MObjects, the focus is always attached to a container, which also acts as [[scope|PlacementScope]] for the contained objects. QueryFocus is an implicit state (the current point of interrest). This sate especially remembers the path down from the root of the HighLevelModel, which was used to access the current scope. Because this path constitutes a hierarchy of scopes, it can be relevant for querying and resolving placement properties. (&rarr; SessionStructureQuery)
 
 !provided operations
@@ -3392,6 +3392,8 @@ Viewed as a micro program, the processing patterns are ''weak typed'' &mdash
 * get the current scope, which is implemented as Placement
 * get the current ScopePath from root (session globals) down to the current scope
 [>img[Scope Locating|uml/fig136325.png]]
+!!!relation to Scope
+There is a tight integration with PlacementScope through the ScopeLocator, which establishes the //current scope.// But QueryFocus is more of a //binding// &mdash; it links or focusses the current state and into a specific scope with a ScopePath depending on the current state. Thus, while Scope is just a passive container allowing locate and navigate, QueryFocus by virtue of this binding allows to query this current location.
 
 !implementation notes
 we provide a static access API, meaning that there is a singleton behind the scenes, which manages the mentioned scope stack. Moreover, there is an link to the current session. This link works by the current session grabbing the query focus and attaching to it. This attachment is shallow, i.e. the QueryFocus doesn't have knowledge about the session, which allows the focus to be unit tested.