From 08f10c2a2e5c8cc1051f9ebae3845ab176e27985 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sat, 13 Oct 2007 05:13:28 +0200 Subject: [PATCH] WIP trying to get the Placement stuff right, but seemingly still having some design mismatch... --- doc/devel/uml/class128645.html | 10 +-- doc/devel/uml/class129285.html | 4 +- doc/devel/uml/class129413.html | 2 +- doc/devel/uml/class129541.html | 2 +- doc/devel/uml/class129797.html | 2 +- doc/devel/uml/class130053.html | 2 +- doc/devel/uml/class130181.html | 2 +- doc/devel/uml/class139909.html | 23 ++++++ doc/devel/uml/classes.html | 3 +- doc/devel/uml/classes_list.html | 1 + doc/devel/uml/fig128133.png | Bin 62232 -> 63861 bytes doc/devel/uml/index.html | 7 +- doc/devel/uml/index_66.html | 2 +- doc/devel/uml/index_67.html | 28 ++++---- doc/devel/uml/index_69.html | 4 +- doc/devel/uml/index_72.html | 2 +- doc/devel/uml/index_73.html | 2 +- doc/devel/uml/index_78.html | 1 + doc/devel/uml/index_79.html | 2 +- doc/devel/uml/index_80.html | 2 +- doc/devel/uml/index_84.html | 4 +- doc/devel/uml/index_86.html | 14 ++-- doc/devel/uml/public_operations.html | 1 + src/proc/mobject/placement.hpp | 36 ++-------- src/proc/mobject/session/chainplacement.cpp | 38 ++++++++++ src/proc/mobject/session/chainplacement.hpp | 55 ++++++++++++++ .../proc/mobject/placementbasictest.cpp | 4 +- uml/cinelerra3/128133.diagram | 55 ++++++++------ uml/cinelerra3/128261 | 67 ++++++++++++++---- uml/cinelerra3/129285 | 10 +-- uml/cinelerra3/130437 | 41 ++++++++++- uml/cinelerra3/5.session | 6 +- uml/cinelerra3/cinelerra3.prj | 2 +- wiki/renderengine.html | 13 +++- 34 files changed, 325 insertions(+), 122 deletions(-) create mode 100644 doc/devel/uml/class139909.html create mode 100644 src/proc/mobject/session/chainplacement.cpp create mode 100644 src/proc/mobject/session/chainplacement.hpp diff --git a/doc/devel/uml/class128645.html b/doc/devel/uml/class128645.html index 88a24bf13..0281acf2a 100644 --- a/doc/devel/uml/class128645.html +++ b/doc/devel/uml/class128645.html @@ -16,11 +16,13 @@ -

Declaration :

Directly inherited by : Allocation ExplicitPlacement FixedPlacement RelativePlacement

-

Artifact : placement

+

Declaration :

Directly inherited by : Allocation ExplicitPlacement RelativePlacement

+

used to specify the position of a MObject in the EDL. This can be done in various ways (absolute, relative).
Placement at the same time acts as (refcounting) smart pointer for accessing the MObject.

Artifact : placement

Operation resolve

Declaration :

  • Uml : + resolve() : ExplicitPlacement [ProcessingLayer::MObject]&
  • C++ : public: ExplicitPlacement [ProcessingLayer::MObject]& resolve ()

create an actual (explicit) placement while trying to satisfy the network of adjacent objects and placements.

-
Relation subject (<unidirectional association>)

Declaration :

  • Uml : # subject : MObject, multiplicity : 1
  • C++ : protected: MObject* subject

Placement acts as smart pointer

-

All public operations : resolve

+
Relation subject (<unidirectional association>)

Declaration :

Placement acts as smart pointer

+
Operation chain

Declaration :

create and add another Placement for this media object, thus increasingly constraining the (possible) position of this object.

+
Relation chain (<unidirectional association>)

Declaration :

Chain of additional Placements further constraining the position of this MObject

+

All public operations : chain , resolve

diff --git a/doc/devel/uml/class129285.html b/doc/devel/uml/class129285.html index 0091fcd2d..ab298c57b 100644 --- a/doc/devel/uml/class129285.html +++ b/doc/devel/uml/class129285.html @@ -16,8 +16,8 @@ -

Declaration :

Artifact : fixedplacement

+

Declaration :

Artifact : fixedplacement

-

All public operations : resolve

+

All public operations : chain , resolve

diff --git a/doc/devel/uml/class129413.html b/doc/devel/uml/class129413.html index eb05d79ba..8dd65f6f6 100644 --- a/doc/devel/uml/class129413.html +++ b/doc/devel/uml/class129413.html @@ -24,6 +24,6 @@
Attribut offset

Declaration :

Offset the actual position by this (time) value relative to the anchor point. TODO: Representation?

Class RelType
-

All public operations : resolve

+

All public operations : chain , resolve

diff --git a/doc/devel/uml/class129541.html b/doc/devel/uml/class129541.html index 43f614b48..98c845e4d 100644 --- a/doc/devel/uml/class129541.html +++ b/doc/devel/uml/class129541.html @@ -22,6 +22,6 @@
Attribut repr

Declaration :

human readable representation of the condition characterizing this allocaton, e.g. "t >= 10"

Operation get_repr

Declaration :

-

All public operations : get_repr , resolve

+

All public operations : chain , get_repr , resolve

diff --git a/doc/devel/uml/class129797.html b/doc/devel/uml/class129797.html index a68f76325..ed207461b 100644 --- a/doc/devel/uml/class129797.html +++ b/doc/devel/uml/class129797.html @@ -24,6 +24,6 @@
Attribut track

Declaration :

Relation <unidirectional association>

Declaration :

-

All public operations : resolve

+

All public operations : chain , resolve

diff --git a/doc/devel/uml/class130053.html b/doc/devel/uml/class130053.html index f88d2a19b..a754c6888 100644 --- a/doc/devel/uml/class130053.html +++ b/doc/devel/uml/class130053.html @@ -18,6 +18,6 @@

Declaration :

-

All public operations : get_repr , resolve

+

All public operations : chain , get_repr , resolve

diff --git a/doc/devel/uml/class130181.html b/doc/devel/uml/class130181.html index c1578a450..3ddc9b19f 100644 --- a/doc/devel/uml/class130181.html +++ b/doc/devel/uml/class130181.html @@ -18,6 +18,6 @@

Declaration :

-

All public operations : get_repr , resolve

+

All public operations : chain , get_repr , resolve

diff --git a/doc/devel/uml/class139909.html b/doc/devel/uml/class139909.html new file mode 100644 index 000000000..c1cacb0df --- /dev/null +++ b/doc/devel/uml/class139909.html @@ -0,0 +1,23 @@ + + + + + + +Class ChainPlacement + + + + + +
Class ChainPlacement
+

+ + + + +

Declaration :

Artifact : chainplacement

+ +
Relation next (<unidirectional association>)

Declaration :

next additional Placement, if any

+ + diff --git a/doc/devel/uml/classes.html b/doc/devel/uml/classes.html index 39a63ddb4..836be1c5b 100644 --- a/doc/devel/uml/classes.html +++ b/doc/devel/uml/classes.html @@ -29,6 +29,7 @@ BuilderFacadeboundaryProvides unified access to the builder functionality. While individual components of the builder subsystem may be called if necessary or suitable, it is usually better to do all extern invocations via the high level methods of this Facade BuildInstruct(Interface) building instructions to be executed by the Builder on the render node network under construction. Categorytree like classification of Assets +ChainPlacement Clipbookkeeping (asset) view of a media clip. Clip Codecdescription of some media data decoder or encoder facility @@ -89,7 +90,7 @@ ParameterDescriptor and access object for a plugin parameter. Parameters may be provided with values from the session, and this values may be automated. ParamProviderinterfaceA facility to get the actual value of a plugin/effect parameter PathManagerWhile building a render engine, this Strategy class decides on the actual render strategy in accordance to the current controller settings (system state) -Placementinterface +Placementinterfaceused to specify the position of a MObject in the EDL. This can be done in various ways (absolute, relative).
Placement at the same time acts as (refcounting) smart pointer for accessing the MObject. PluginAdapterAdapter used to integrage an effects processor in the render pipeline Prefetch Previewalternative version of the media data, probably with lower resolution diff --git a/doc/devel/uml/classes_list.html b/doc/devel/uml/classes_list.html index 44865f171..7dc49d02d 100644 --- a/doc/devel/uml/classes_list.html +++ b/doc/devel/uml/classes_list.html @@ -30,6 +30,7 @@ BuilderFacade
BuildInstruct
Category
+ChainPlacement
Clip
Clip
Codec
diff --git a/doc/devel/uml/fig128133.png b/doc/devel/uml/fig128133.png index 7a51ef88d6c0ebbcf5bf2eb214a92a95e6a196cd..f2238751adae5de38648b3e678036837e9fb0b42 100644 GIT binary patch literal 63861 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

9a@9G8c?^g05 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%0AAQJB#4nEawA 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 A<^TWy diff --git a/doc/devel/uml/index.html b/doc/devel/uml/index.html index dc0e8f165..e976b2222 100644 --- a/doc/devel/uml/index.html +++ b/doc/devel/uml/index.html @@ -112,7 +112,7 @@ Documentation
Artifact Cinelerra3

Depends on common

Depends on gui

Depends on proc

Depends on backend

the main executable to be built

-

executable associated with : main, conmanager, clip, meta, fixedplacement, relativeplacement, vrender, mobject, source, frame, placement, sessionimpl, builderfacade, controllerfacade, processor, pluginadapter, effect, tool, segmentationtool, aframe, assembler, trafo, explicitplacement, auto, glrender, link, parameter, renderengine, allocation, vframe, toolfactory, arender, renderstate, label, glbuf, procnode, stateproxy, hub, buildable, abstractmo, nodecreatertool, projector, interpolator, edl, fixture, glpipe, exitnode, pathmanager, track, paramprovider, mask

+

executable associated with : paramprovider, mask, main, conmanager, clip, meta, fixedplacement, relativeplacement, vrender, mobject, source, frame, placement, sessionimpl, builderfacade, controllerfacade, processor, pluginadapter, effect, tool, segmentationtool, aframe, assembler, trafo, explicitplacement, auto, glrender, link, parameter, renderengine, allocation, vframe, toolfactory, arender, renderstate, label, glbuf, procnode, stateproxy, hub, buildable, abstractmo, nodecreatertool, projector, interpolator, edl, fixture, glpipe, exitnode, pathmanager, track

Artifact main

Artifact source

@@ -378,6 +378,10 @@ Documentation
Artifact meta

abstract base class of all MObjects representing meta data or processing instructions

Artifact source associated with : Meta

+ +
Artifact chainplacement
+

Chaining and additionally constraining Placements

+

Artifact source associated with : ChainPlacement

Artifact fixedplacement

Artifact source associated with : FixedPlacement

@@ -642,6 +646,7 @@ Documentation
Class Parameter
+

2.2.2 Package Builder

diff --git a/doc/devel/uml/index_66.html b/doc/devel/uml/index_66.html index 5ed3d76c4..70cc864a7 100644 --- a/doc/devel/uml/index_66.html +++ b/doc/devel/uml/index_66.html @@ -34,8 +34,8 @@ buildableartifactmarker interface denoting any MObject able to be treated by Tools buildEngineoperationMain Operation of the Builder: create a render engine for a given part of the timeline Buildercomponent -builderpackagesourcecode package

The Builder creating the Render Engine,
located within the MObject Subsystem Builderpackage +builderpackagesourcecode package

The Builder creating the Render Engine,
located within the MObject Subsystem Builder Entitiesclass diagram Builder Workingsclass view BuilderFacadeclassProvides unified access to the builder functionality. While individual components of the builder subsystem may be called if necessary or suitable, it is usually better to do all extern invocations via the high level methods of this Facade diff --git a/doc/devel/uml/index_67.html b/doc/devel/uml/index_67.html index dc1b39579..2f29cffbf 100644 --- a/doc/devel/uml/index_67.html +++ b/doc/devel/uml/index_67.html @@ -23,32 +23,36 @@ Categoryclasstree like classification of Assets categoryartifacttree like classification of Assets causeattributea copy of the first exception encountered in this exception chain +chainrelationChain of additional Placements further constraining the position of this MObject +chainoperationcreate and add another Placement for this media object, thus increasingly constraining the (possible) position of this object. +chainplacementartifactChaining and additionally constraining Placements +ChainPlacementclass checked_inrelationchecked_in objects are subject of cache aging and must be not in use checked_outrelationthis list keeps all mappings which are in use, and thus prevents them from Cache aging Cinelerra3artifactthe main executable to be built cinelerra3package -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance -class instanceclass instance class instanceclass instance class instanceclass instance class instanceclass instance class instanceclass instance -class instanceclass instance class instanceclass instance -class instanceclass instance class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance class instanceclass instance +class instanceclass instance clearoperationclear current session contents
without resetting overall session config.
Afterwards, the session will contain only one
empty EDL, while all Assets are retained.
Clipclassbookkeeping (asset) view of a media clip. -clipartifacta Media Clip clipartifactbookkeeping (asset) view of a media clip. +clipartifacta Media Clip Clipclass clipsrelation Codecclassdescription of some media data decoder or encoder facility diff --git a/doc/devel/uml/index_69.html b/doc/devel/uml/index_69.html index 0c7bddcba..20380e20a 100644 --- a/doc/devel/uml/index_69.html +++ b/doc/devel/uml/index_69.html @@ -18,14 +18,14 @@ - + - + diff --git a/doc/devel/uml/index_72.html b/doc/devel/uml/index_72.html index 58b669cd2..a26e1439f 100644 --- a/doc/devel/uml/index_72.html +++ b/doc/devel/uml/index_72.html @@ -24,8 +24,8 @@ - +
NameKindDescription
edlartifactthe (high level) Edit Decision List within the current Session
EDLclass
EDLcomponent
EDLclass
EDL Example1object diagramA simple example showing how the actual objects are placed in the Fixture (=definitive playlist). It shows a Video and Audio clip placed on two tracks
EDL Example2object diagramMore complex example showing the Object graph in the EDL and how it is linked into the Fixture to yield the actual locations. In this example, an HUE Effect is applied on a part of the Clip
edlsrelation
EffectclassEffect or media processing component
effectartifactEffect or media processing component
effectartifactEDL representation of a pluggable and automatable effect.
effectartifactEffect or media processing component
Effectclass
elementsrelationrelevant MObjects comprising this segment. TODO: actually necessary??
enableoperationchange the enabled status of this asset. Note the corresponding #isActive predicate may depend on the enablement status of parent assets as well
howtoProcoperation@return descriptor how to build a render pipeline corresponding to this media
Hubclass
hubartifactspecial ProcNode used to build data distributing connections
HUEclass instance
HUEclass instance
HUEclass instance
diff --git a/doc/devel/uml/index_73.html b/doc/devel/uml/index_73.html index 0f82f3fd9..496421c53 100644 --- a/doc/devel/uml/index_73.html +++ b/doc/devel/uml/index_73.html @@ -20,8 +20,8 @@ idattributeAsset primary key. In Memory Databaseclass diagram inFixtureactivity action pin -inputclass instance inputclass instance +inputclass instance inputclass instance instanceoperation instructionsrelation diff --git a/doc/devel/uml/index_78.html b/doc/devel/uml/index_78.html index d4d5daa81..7a0c5e875 100644 --- a/doc/devel/uml/index_78.html +++ b/doc/devel/uml/index_78.html @@ -18,6 +18,7 @@ + diff --git a/doc/devel/uml/index_79.html b/doc/devel/uml/index_79.html index 863a630ae..b34c12000 100644 --- a/doc/devel/uml/index_79.html +++ b/doc/devel/uml/index_79.html @@ -19,9 +19,9 @@ + - diff --git a/doc/devel/uml/index_80.html b/doc/devel/uml/index_80.html index 20ee4971b..2e0da44b5 100644 --- a/doc/devel/uml/index_80.html +++ b/doc/devel/uml/index_80.html @@ -26,7 +26,7 @@ - + diff --git a/doc/devel/uml/index_84.html b/doc/devel/uml/index_84.html index 98fe8201c..1739030f8 100644 --- a/doc/devel/uml/index_84.html +++ b/doc/devel/uml/index_84.html @@ -40,13 +40,13 @@ - - + +
NameKindDescription
nameattributeelement ID, comprehensible but sanitized. The tuple (category, name, org) is unique.
nextrelationnext additional Placement, if any
nodecreatertoolartifactcentral Tool implementing the Renderengine building
NodeCreatorToolclassThis Tool implementation plays the central role in the buld process: given a MObject from Session, it is able to attach ProcNodes to the render engine under construction such as to reflect the properties of the MObject in the actual render.
nodesrelation
NameKindDescription
offsetattributeOffset the actual position by this (time) value relative to the anchor point. TODO: Representation?
orgattributeorigin or authorship id. Can be a project abbreviation, a package id or just the authors nickname or UID. This allows for the compnent name to be more generic (e.g. "blur"). Default for all assets provided by the core cinelerra-3 codebase is "cin3".
ouputclass instance
ouputclass instance
ouputclass instance
ouputclass instance
OutPortclassstructural asset corresponding to some port generating media output
outportartifactstructural asset corresponding to some port generating media output
outputrelation
PathManagerclassWhile building a render engine, this Strategy class decides on the actual render strategy in accordance to the current controller settings (system state)
pathmanagerartifactManager for deciding the actual render strategy
placementartifactKey Abstraction: a way to place and locate a Media Object
Placementclass
Placementclassused to specify the position of a MObject in the EDL. This can be done in various ways (absolute, relative).
Placement at the same time acts as (refcounting) smart pointer for accessing the MObject.
playoperationTODO: will probably be handled differently (see Cehteh)
playlistnode
plugIDattributeIdentifier of the Plugin to be used
tracksrelation
Trafoclass
trafoartifacttransforming processing Node
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperation
treatoperationThis operation is to be overloaded for the specific MObject subclasses to be treated.
diff --git a/doc/devel/uml/index_86.html b/doc/devel/uml/index_86.html index 4eb1f6d88..0ae05e4c3 100644 --- a/doc/devel/uml/index_86.html +++ b/doc/devel/uml/index_86.html @@ -22,20 +22,20 @@ vframeartifacta buffer and render process holding a Video frame vid1class instance vid1class instance -vid_Aclass instance -vid_Aclass instance -vid_aclass instance -vid_aclass instance vid_Aclass instance +vid_Aclass instance +vid_aclass instance +vid_Aclass instance +vid_aclass instance videoclass instance -videoclass instance videoclass instance +videoclass instance videoclass instance video1class instance -video1class instance -video1class instance video1class instance +video1class instance video1class instance +video1class instance video1class instance VRenderclassRepresentation of a Video render process. (Encapsulates the video buffers for the actual calculations) vrenderartifactRepresentation of a Video render process diff --git a/doc/devel/uml/public_operations.html b/doc/devel/uml/public_operations.html index 3143920e2..745c339b7 100644 --- a/doc/devel/uml/public_operations.html +++ b/doc/devel/uml/public_operations.html @@ -21,6 +21,7 @@ buildAssembler buildEngineBuilderFacadeMain Operation of the Builder: create a render engine for a given part of the timeline buildProcessorPathManager +chainPlacementcreate and add another Placement for this media object, thus increasingly constraining the (possible) position of this object. clearSessManagerclear current session contents
without resetting overall session config.
Afterwards, the session will contain only one
empty EDL, while all Assets are retained.
configureToolFactory createClipMediacreate a (possibly compound) Clip refering to this media, ready to be added to the EDL. diff --git a/src/proc/mobject/placement.hpp b/src/proc/mobject/placement.hpp index df67d54f4..c1e7fc022 100644 --- a/src/proc/mobject/placement.hpp +++ b/src/proc/mobject/placement.hpp @@ -27,6 +27,7 @@ #include "common/time.hpp" #include "common/factory.hpp" #include "proc/mobject/mobject.hpp" +#include "proc/mobject/session/chainplacement.hpp" #include "proc/mobject/session/track.hpp" @@ -34,12 +35,11 @@ namespace mobject { - class Placement; class ExplicitPlacement; - class PlacementFactory; - class Placement + template /////TODO: unsolved design problem here! + class Placement : public shared_ptr { protected: typedef cinelerra::Time Time; @@ -47,18 +47,7 @@ namespace mobject public: - MObject* subject; - - /** - * styles of placement. - */ - enum Style - { - FIXED, - RELATIVE - }; - - static PlacementFactory create; + ChainPlacement chain; /** resolve the network of placement and * provide the resulting (explicit) placement. @@ -67,28 +56,11 @@ namespace mobject protected: Placement (); - friend class PlacementFactory; }; - typedef shared_ptr PPla; - - - /** - * Factory specialized for creating Placement objects. - */ - class PlacementFactory : public cinelerra::Factory - { - public: - typedef shared_ptr PType; - typedef cinelerra::Time Time; - - PType operator() (Placement::Style, Time, PMO subject); - - }; - } // namespace mobject diff --git a/src/proc/mobject/session/chainplacement.cpp b/src/proc/mobject/session/chainplacement.cpp new file mode 100644 index 000000000..3c5393ddd --- /dev/null +++ b/src/proc/mobject/session/chainplacement.cpp @@ -0,0 +1,38 @@ +/* + ChainPlacement - Chaining and additionally constraining Placements + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/session/chainplacement.hpp" +#include "proc/mobject/placement.hpp" + +namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace mobject::session + +} // namespace mobject diff --git a/src/proc/mobject/session/chainplacement.hpp b/src/proc/mobject/session/chainplacement.hpp new file mode 100644 index 000000000..db71b8c1f --- /dev/null +++ b/src/proc/mobject/session/chainplacement.hpp @@ -0,0 +1,55 @@ +/* + CHAINPLACEMENT.hpp - Chaining and additionally constraining Placements + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_SESSION_CHAINPLACEMENT_H +#define MOBJECT_SESSION_CHAINPLACEMENT_H + + + + +namespace mobject + { + class Placement; + + namespace session + { + class FixedPlacement; + class RelativePlacement; + + + template + struct ChainPlacement + { + protected: + /** next additional Placement, if any */ + Placement * next; + public: + + FixedPlacement& operator() (Time); + + }; + + } // namespace mobject::session + +} // namespace mobject +#endif diff --git a/tests/components/proc/mobject/placementbasictest.cpp b/tests/components/proc/mobject/placementbasictest.cpp index 4fee8ba4c..75b87f269 100644 --- a/tests/components/proc/mobject/placementbasictest.cpp +++ b/tests/components/proc/mobject/placementbasictest.cpp @@ -72,7 +72,7 @@ namespace mobject // using the Placement interface // TODO: how to handle unterdetermined Placement? Throw? - FixedPlacement & fixpla = pc.addPlacement(Placement::FIXED, Time(1)); // TODO: the track?? + FixedPlacement & fixpla = pc.chain(Placement::FIXED, Time(1)); // TODO: the track?? ExplicitPlacement expla = pc.resolve(); ASSERT (expla.time == 1); ASSERT (!expla.isOverdetermined()); @@ -80,7 +80,7 @@ namespace mobject ASSERT (*fixpla == *pc); // now overconstraining with another Placement - pc.addPlacement(Placement::FIXED, Time(2)); + pc.chain(Placement::FIXED, Time(2)); expla = pc.resolve(); ASSERT (expla.time == 2); // the latest addition wins ASSERT (expla.isOverdetermined()); diff --git a/uml/cinelerra3/128133.diagram b/uml/cinelerra3/128133.diagram index a1d67d92a..a6da87c99 100644 --- a/uml/cinelerra3/128133.diagram +++ b/uml/cinelerra3/128133.diagram @@ -22,7 +22,7 @@ classcanvas 129413 class_ref 128517 // MObject end classcanvas 129669 class_ref 128645 // Placement draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 574 129 2000 + xyz 539 121 2000 end classcanvas 129925 class_ref 128389 // Track draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 @@ -46,15 +46,15 @@ classcanvas 131973 class_ref 129157 // Meta end classcanvas 132229 class_ref 129285 // FixedPlacement draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 665 373 2000 + xyz 678 374 2005 end classcanvas 132869 class_ref 129413 // RelativePlacement draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 479 276 2000 + xyz 477 342 2000 end classcanvas 134149 class_ref 129541 // Allocation draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 590 373 2000 + xyz 592 342 2000 end classcanvas 134405 class_ref 129669 // Label draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 @@ -62,7 +62,7 @@ classcanvas 134405 class_ref 129669 // Label end classcanvas 135429 class_ref 129797 // ExplicitPlacement draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 - xyz 660 233 2004 + xyz 673 258 2004 end classcanvas 135813 class_ref 129797 // ExplicitPlacement draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 @@ -73,7 +73,7 @@ classcanvas 136581 class_ref 129925 // Auto xyz 375 466 2005 end note 136837 "Placement \"locates\" a Media Object" - xyzwh 368 83 3005 207 36 + xyzwh 370 73 3005 207 36 textcanvas 136965 "the Timeline is a list of placements reduced to absolute coordinates (time, track)" xyzwh 464 925 2000 121 90 textcanvas 137093 "Fixture is the actual assembly of various Media Objects ready to be performed" @@ -102,6 +102,10 @@ classcanvas 139653 class_ref 139781 // SessManager draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 xyz 101 301 2000 end +classcanvas 141317 class_ref 139909 // ChainPlacement + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default 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 + xyz 677 148 2000 + end relationcanvas 128389 relation_ref 128005 // from ref 128005 z 1999 to ref 128133 role_a_pos 201 603 3000 no_role_b @@ -152,34 +156,29 @@ relationcanvas 132101 relation_ref 129669 // from ref 131973 z 1999 to ref 130949 no_role_a no_role_b no_multiplicity_a no_multiplicity_b -relationcanvas 132485 relation_ref 129797 // - from ref 132229 z 1999 to ref 129669 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b relationcanvas 132997 relation_ref 129925 // from ref 132869 z 1999 to point 529 240 line 133893 z 1999 to ref 129413 role_a_pos 413 204 3000 no_role_b - multiplicity_a_pos 401 197 3000 multiplicity_b_pos 515 251 3000 + multiplicity_a_pos 401 197 3000 multiplicity_b_pos 515 317 3000 relationcanvas 134533 relation_ref 130309 // from ref 134405 z 1999 to ref 131973 no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 135173 relation_ref 130565 // - from ref 134149 z 1999 to point 610 312 - line 140037 z 1999 to ref 129669 + from ref 134149 z 1999 to point 576 266 + line 142853 z 1999 to ref 129669 no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 135301 relation_ref 130693 // from ref 132869 z 1999 to ref 129669 no_role_a no_role_b no_multiplicity_a no_multiplicity_b -relationcanvas 135557 relation_ref 130821 // - from ref 132229 z 1999 to ref 135429 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b relationcanvas 135685 relation_ref 130949 // - from ref 135429 z 1999 to ref 129669 + geometry VHV + from ref 135429 z 1999 to point 724 236 + line 141445 z 1999 to point 576 236 + line 141573 z 1999 to ref 129669 no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 135941 relation_ref 131077 // @@ -209,7 +208,7 @@ relationcanvas 138757 relation_ref 137093 // geometry VHr from ref 138629 z 1999 stereotype "<>" xyz 479 716 3000 to point 517 714 line 138885 z 1999 to ref 135813 - role_a_pos 524 717 3000 no_role_b + role_a_pos 529 783 3000 no_role_b multiplicity_a_pos 505 783 3000 no_multiplicity_b relationcanvas 139141 relation_ref 140805 // from ref 139013 z 1999 to ref 131461 @@ -227,6 +226,20 @@ relationcanvas 139781 relation_ref 142853 // multiplicity_a_pos 126 426 3000 no_multiplicity_b relationcanvas 140165 relation_ref 142981 // from ref 129669 z 1999 to ref 129413 - role_a_pos 413 146 3000 no_role_b - multiplicity_a_pos 403 146 3000 multiplicity_b_pos 547 148 3000 + role_a_pos 401 145 3000 no_role_b + multiplicity_a_pos 401 178 3000 multiplicity_b_pos 512 178 3000 +relationcanvas 140293 relation_ref 143109 // + from ref 132229 z 1999 to ref 135429 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 142213 relation_ref 143237 // + from ref 129669 z 1999 to ref 141317 + role_a_pos 640 145 3000 no_role_b + multiplicity_a_pos 664 171 3000 no_multiplicity_b +relationcanvas 142341 relation_ref 143365 // + from ref 141317 z 1999 to point 724 207 + line 142597 z 1999 to point 637 207 + line 142725 z 1999 to ref 129669 + role_a_pos 640 191 3000 no_role_b + no_multiplicity_a no_multiplicity_b end diff --git a/uml/cinelerra3/128261 b/uml/cinelerra3/128261 index 60051e702..de4cec32a 100644 --- a/uml/cinelerra3/128261 +++ b/uml/cinelerra3/128261 @@ -1,6 +1,6 @@ format 40 "MObject" // ProcessingLayer::MObject - revision 23 + revision 24 modified_by 5 "hiv" // class settings //class diagram settings @@ -433,6 +433,8 @@ ${members}}; " explicit_switch_type "" + comment "used to specify the position of a MObject in the EDL. This can be done in various ways (absolute, relative). +Placement at the same time acts as (refcounting) smart pointer for accessing the MObject." operation 128005 "resolve" public explicit_return_type "ExplicitPlacement [ProcessingLayer::MObject]&" nparams 0 @@ -458,6 +460,33 @@ ${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl} classrelation_ref 144901 // subject () b multiplicity "1..*" parent class_ref 128517 // MObject end + + operation 134277 "chain" + public explicit_return_type "" + nparams 1 + param in name "style" explicit_type "" + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + +" + + + comment "create and add another Placement for this media object, thus increasingly constraining the (possible) position of this object." + end + + classrelation 145413 // chain () + relation 143237 ---> + a role_name "chain" multiplicity "1" protected + comment "Chain of additional Placements further constraining the position of this MObject" + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 145413 // chain () + b multiplicity "" parent class_ref 139909 // ChainPlacement + end end class 129797 "ExplicitPlacement" @@ -683,19 +712,11 @@ ${inlines} idl_decl "" explicit_switch_type "" - classrelation 130437 // - relation 129797 ---|> + classrelation 145285 // + relation 143109 ---|> a public cpp default "${type}" - classrelation_ref 130437 // - b multiplicity "" parent class_ref 128645 // Placement - end - - classrelation 131461 // - relation 130821 -_-|> - a public - cpp default "${type}" - classrelation_ref 131461 // + classrelation_ref 145285 // b multiplicity "" parent class_ref 129797 // ExplicitPlacement end end @@ -1058,6 +1079,28 @@ ${inlines} comment "Provides the implementation for getting the acutal value of a time varying or automated effect/plugin parameter" end + + class 139909 "ChainPlacement" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 145541 // next () + relation 143365 ---> + a role_name "next" multiplicity "" protected + comment "next additional Placement, if any" + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 145541 // next () + b multiplicity "" parent class_ref 128645 // Placement + end + end end package_ref 128901 // Builder diff --git a/uml/cinelerra3/129285 b/uml/cinelerra3/129285 index 724a630bd..1c121e419 100644 --- a/uml/cinelerra3/129285 +++ b/uml/cinelerra3/129285 @@ -1,6 +1,6 @@ format 40 "ProcessingLayer" // ProcessingLayer - revision 3 + revision 4 modified_by 5 "hiv" // class settings //class diagram settings @@ -26,7 +26,7 @@ format 40 package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default show_infonote default drawing_language default - package_ref 128133 // AssetManager + package_ref 128133 // Asset package_ref 128261 // MObject @@ -222,8 +222,6 @@ format 40 "100" end relations - relation_ref 128645 // - classinstance_ref 130053 // end end @@ -248,8 +246,6 @@ format 40 "\"Hue\"" end relations - relation_ref 128645 // - classinstance_ref 130309 // end end @@ -276,8 +272,6 @@ format 40 "\"Hue\"" end relations - relation_ref 128645 // - classinstance_ref 130309 // end end diff --git a/uml/cinelerra3/130437 b/uml/cinelerra3/130437 index 514cc634e..df17fa821 100644 --- a/uml/cinelerra3/130437 +++ b/uml/cinelerra3/130437 @@ -1,6 +1,6 @@ format 40 "session" // design::codegen::proc::mobject::session - revision 9 + revision 10 modified_by 5 "hiv" // class settings //class diagram settings @@ -511,6 +511,45 @@ ${namespace_end}" comment "abstract base class of all MObjects representing meta data or processing instructions" end + artifact 139013 "chainplacement" + stereotype "source" + cpp_h "/* + ${NAME}.hpp - ${description} +@{CopyrightClaim}@{GPLHeader} +*/ + + +#ifndef ${NAMESPACE}_${NAME}_H +#define ${NAMESPACE}_${NAME}_H + +${includes} +${declarations} + + +${namespace_start} + +${definition} +${namespace_end} +#endif +" + cpp_src "/* + ${Name} - ${description} +@{CopyrightClaim}@{GPLHeader} +* *****************************************************/ + + +${includes} +${namespace_start} + + +${members} +${namespace_end}" + associated_classes + class_ref 139909 // ChainPlacement + end + comment "Chaining and additionally constraining Placements" + end + artifact 129797 "fixedplacement" stereotype "source" cpp_h "/* diff --git a/uml/cinelerra3/5.session b/uml/cinelerra3/5.session index 7a80627f2..49af64898 100644 --- a/uml/cinelerra3/5.session +++ b/uml/cinelerra3/5.session @@ -3,16 +3,18 @@ diagrams classdiagram_ref 130309 // Asset Kinds 860 633 100 4 0 0 active classdiagram_ref 128133 // Session structure - 860 633 100 4 89 0 + 860 633 100 4 0 0 classdiagram_ref 130437 // Media-Asset Relations 860 633 100 4 0 0 classdiagram_ref 128389 // Render Entities 688 506 100 4 120 0 end show_stereotypes -selected attribute_ref 128133 // relType +selected class_ref 129285 // FixedPlacement open + deploymentview_ref 128133 // EXE Deployment deploymentview_ref 128773 // gen + deploymentview_ref 128901 // gen classview_ref 128901 // Assets class_ref 128517 // MObject class_ref 128645 // Placement diff --git a/uml/cinelerra3/cinelerra3.prj b/uml/cinelerra3/cinelerra3.prj index 4680e3711..efde6fe95 100644 --- a/uml/cinelerra3/cinelerra3.prj +++ b/uml/cinelerra3/cinelerra3.prj @@ -1,6 +1,6 @@ format 40 "cinelerra3" - revision 32 + revision 33 modified_by 5 "hiv" cpp_root_dir "../../src/" diff --git a/wiki/renderengine.html b/wiki/renderengine.html index af38318d3..eefa14ca2 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -2079,14 +2079,23 @@ DAMAGE. The fact of being placed in the [[Session|SessionOverview]]/[[EDL]]is constitutive for all sorts of [[MObject]]s, without Placement they make no sense. Thus &mdash; technically &mdash; Placements act as ''smart pointers''. Of course, there are several kinds of Placements and they are templated on the type of MObject they are refering to. Placements can be //aggregated// to increasingly constrain the resulting "location" of the refered ~MObject. See &rarr; [[handling of Placements|PlacementHandling]] for more details -
+
[[Placement]]s are at the very core of all [[editing operations|EditingOperations]], because they act as handles (smart pointers) to access the [[media objects|MObject]] to be manipulated. Moreover, Placements are the actual content of the EDL(s) and Fixture and thus are small objects with //value semantics//. Many editing tasks include finding some Placement in the EDL or directly take a ref to some Placement. By acting on the Placement object, we can in some cases change parameters of the way the media object is placed (e.g. adjust an offset), while by dereferencing the Placement object, we access the "real" media object (e.g. for trimming its length).
 
 Placements are ''templated'' on the type of the actual ~MObject they refer to, thus defining the interface/methods usable on this object. Each Placement has a ''kind'', which determines its actual placing and locating behaviour, but besides that, we don't stress the identity of a placement object (~MObjects on the other hand //do have// a distinguishable identity): initially, you create a Placement of some specific kind (fixed, relative,...), but later on, you treat the placement polymorphically and don't care about its kind. The sole purpose of the placement's kind is to select some virtual function implementing the desired behaviour.
 
 There is no limitation to one single Placement per ~MObject, indeed we can ''aggregate'' several Placements, resulting in their properties and constraints being combined to yield the actual position of the ~MObject refered by those Placements. 
 
-* {{red{to be worked out...}}} how to implement this, esp. the aggregation. Use a special "placement aggregation" subtype, or rather chain aggregated placements directly in the way a decorator works? And how to handle the case of a //over constrained// Placement?
+!design decisions
+* Placements can be aggregated in a sort of chain.
+* resolving into an ExplicitPlacement traverses this chain
+* //overconstraining// a placement is not an error, we just stop traversing the chain (ignoring the remaining additionla Placements) at the moment the position is completely defined. 
+* {{red{question...}}} how to implement this? externally, decorator-style or using the State pattern?
+* {{red{problem...}}} how to get at the individual MObject sub-Interfaces. Why is this a Problem?
+*# we want the EDL/Fixture to be a collection of Placements. This means, either we store pointers, or Placement needs to be //one// unique type!
+*# but if Placement is //a single type//, then we can get only MObjects from a Placement.
+*# then either we had to do everything by a visitor (which gets the concrete subtype dynamically), or we'd end up switching on type.
+