From a089e5ff15cffa1be6e7d521b8e2a1c5d0c995e2 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Thu, 18 Oct 2007 17:29:01 +0200 Subject: [PATCH] WIP maybe nailed down the design problem regarding placements now.... --- doc/devel/uml/class128645.html | 4 +- doc/devel/uml/class129285.html | 7 +- doc/devel/uml/class129413.html | 7 +- doc/devel/uml/class129541.html | 4 +- doc/devel/uml/class129797.html | 3 +- doc/devel/uml/class130053.html | 2 +- doc/devel/uml/class130181.html | 2 +- doc/devel/uml/class133893.html | 2 +- doc/devel/uml/class139909.html | 11 ++- doc/devel/uml/classes.html | 6 +- doc/devel/uml/classes_list.html | 6 +- doc/devel/uml/fig128133.png | Bin 63861 -> 64119 bytes doc/devel/uml/index.html | 27 +++--- doc/devel/uml/index_65.html | 4 +- doc/devel/uml/index_66.html | 2 +- doc/devel/uml/index_67.html | 12 +-- doc/devel/uml/index_70.html | 4 +- doc/devel/uml/index_72.html | 2 +- doc/devel/uml/index_73.html | 4 +- doc/devel/uml/index_76.html | 2 + doc/devel/uml/index_77.html | 2 +- doc/devel/uml/index_78.html | 2 +- doc/devel/uml/index_79.html | 2 +- doc/devel/uml/index_82.html | 6 +- doc/devel/uml/index_83.html | 4 +- doc/devel/uml/index_84.html | 4 +- doc/devel/uml/index_86.html | 18 ++-- src/proc/mobject/placement.hpp | 56 ++++++++++- src/proc/mobject/session/allocation.cpp | 2 +- src/proc/mobject/session/allocation.hpp | 9 +- src/proc/mobject/session/clip.hpp | 3 + .../{fixedplacement.cpp => fixedlocation.cpp} | 4 +- .../{fixedplacement.hpp => fixedlocation.hpp} | 17 ++-- .../{chainplacement.cpp => locatingpin.cpp} | 4 +- .../{chainplacement.hpp => locatingpin.hpp} | 13 ++- ...tiveplacement.cpp => relativelocation.cpp} | 0 ...tiveplacement.hpp => relativelocation.hpp} | 10 +- uml/cinelerra3/128133.diagram | 87 ++++++++++-------- uml/cinelerra3/128261 | 61 ++++++------ uml/cinelerra3/129285 | 6 +- uml/cinelerra3/130437 | 17 ++-- uml/cinelerra3/5.session | 14 +-- uml/cinelerra3/cinelerra3.prj | 2 +- wiki/renderengine.html | 23 +++-- 44 files changed, 270 insertions(+), 207 deletions(-) rename src/proc/mobject/session/{fixedplacement.cpp => fixedlocation.cpp} (88%) rename src/proc/mobject/session/{fixedplacement.hpp => fixedlocation.hpp} (70%) rename src/proc/mobject/session/{chainplacement.cpp => locatingpin.cpp} (89%) rename src/proc/mobject/session/{chainplacement.hpp => locatingpin.hpp} (79%) rename src/proc/mobject/session/{relativeplacement.cpp => relativelocation.cpp} (100%) rename src/proc/mobject/session/{relativeplacement.hpp => relativelocation.hpp} (84%) diff --git a/doc/devel/uml/class128645.html b/doc/devel/uml/class128645.html index 0281acf2a..7b271a2ee 100644 --- a/doc/devel/uml/class128645.html +++ b/doc/devel/uml/class128645.html @@ -16,13 +16,13 @@ -

Declaration :

Directly inherited by : Allocation ExplicitPlacement RelativePlacement

+

Declaration :

Directly inherited by : ExplicitPlacement

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 :

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

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

+
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 ab298c57b..8393d4269 100644 --- a/doc/devel/uml/class129285.html +++ b/doc/devel/uml/class129285.html @@ -4,20 +4,19 @@ -Class FixedPlacement +Class FixedLocation -
Class FixedPlacement
+
Class FixedLocation

-

Declaration :

Artifact : fixedplacement

+

Declaration :

Artifact : fixedlocation

-

All public operations : chain , resolve

diff --git a/doc/devel/uml/class129413.html b/doc/devel/uml/class129413.html index 8dd65f6f6..b8fa2c81b 100644 --- a/doc/devel/uml/class129413.html +++ b/doc/devel/uml/class129413.html @@ -4,19 +4,19 @@ -Class RelativePlacement +Class RelativeLocation -
Class RelativePlacement
+
Class RelativeLocation

-

Declaration :

Artifact : relativeplacement

+

Declaration :

Artifact : relativelocation

Relation anchor (<unidirectional association>)

Declaration :

  • Uml : # anchor : MObject, multiplicity : 1
  • C++ : protected: MObject* anchor
Attribut relType
@@ -24,6 +24,5 @@
Attribut offset

Declaration :

  • Uml : # offset : Time
  • C++ : protected: Time offset

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

Class RelType
-

All public operations : chain , resolve

diff --git a/doc/devel/uml/class129541.html b/doc/devel/uml/class129541.html index 98c845e4d..40d20683a 100644 --- a/doc/devel/uml/class129541.html +++ b/doc/devel/uml/class129541.html @@ -16,12 +16,12 @@ -

Declaration :

Directly inherited by : Constraint Wish

+

Declaration :

Directly inherited by : Constraint Wish

a directive to place a MObject in a specific way

Artifact : allocation

Attribut repr

Declaration :

  • Uml : # repr : string
  • C++ : protected: string repr

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

Operation get_repr

Declaration :

  • Uml : + get_repr() : string
  • C++ : public: inline const string getRepr () const
-

All public operations : chain , get_repr , resolve

+

All public operations : get_repr

diff --git a/doc/devel/uml/class129797.html b/doc/devel/uml/class129797.html index ed207461b..934410392 100644 --- a/doc/devel/uml/class129797.html +++ b/doc/devel/uml/class129797.html @@ -16,8 +16,7 @@ -

Declaration :

  • C++ : class ExplicitPlacement : public Placement
  • Java : public interface ExplicitPlacement

Directly inherited by : FixedPlacement

-

Artifact : explicitplacement

+

Declaration :

  • C++ : class ExplicitPlacement : public Placement
  • Java : public interface ExplicitPlacement

Artifact : explicitplacement

Attribut time

Declaration :

  • Uml : # time : Time
  • C++ : protected: Time time
diff --git a/doc/devel/uml/class130053.html b/doc/devel/uml/class130053.html index a754c6888..7df85e17a 100644 --- a/doc/devel/uml/class130053.html +++ b/doc/devel/uml/class130053.html @@ -18,6 +18,6 @@

Declaration :

-

All public operations : chain , get_repr , resolve

+

All public operations : get_repr

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

Declaration :

-

All public operations : chain , get_repr , resolve

+

All public operations : get_repr

diff --git a/doc/devel/uml/class133893.html b/doc/devel/uml/class133893.html index ed2c18147..ba0cbda57 100644 --- a/doc/devel/uml/class133893.html +++ b/doc/devel/uml/class133893.html @@ -16,7 +16,7 @@ -

Declaration :

  • C++ : enum RelType
  • Java : public enum RelType

the possible kinds of RelativePlacements

nested in RelativePlacement

+

Declaration :

  • C++ : enum RelType
  • Java : public enum RelType

the possible kinds of RelativePlacements

nested in RelativeLocation

Items :

  • SAMETIME
  • diff --git a/doc/devel/uml/class139909.html b/doc/devel/uml/class139909.html index c1cacb0df..210261f35 100644 --- a/doc/devel/uml/class139909.html +++ b/doc/devel/uml/class139909.html @@ -4,20 +4,21 @@ -Class ChainPlacement +Class LocatingPin -
    Class ChainPlacement
    +
    Class LocatingPin

    -

    Declaration :

    • C++ : class ChainPlacement

    Artifact : chainplacement

    - -
    Relation next (<unidirectional association>)

    Declaration :

    next additional Placement, if any

    +

    Declaration :

    • C++ : class LocatingPin

    Directly inherited by : Allocation FixedLocation RelativeLocation

    +

    An element with value semantics, which actually implements the placement of some MObject by positioning it in some way.

    Artifact : locatingpin

    + +
    Relation next (<unidirectional association>)

    Declaration :

    next additional LocatingPin, if any

    diff --git a/doc/devel/uml/classes.html b/doc/devel/uml/classes.html index 836be1c5b..a93cd61e0 100644 --- a/doc/devel/uml/classes.html +++ b/doc/devel/uml/classes.html @@ -29,7 +29,6 @@ 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 @@ -60,7 +59,7 @@ FileMapCache FileProviderThis is the Factory for Files, whenever something wants to use some file (or temporary storage), This Factory will hand out some smart/shared pointer to a File object which will be used to retrieve Frames. FileReference -FixedPlacement +FixedLocation Fixture FrameFrames are just a low level lump of continous memory, most parts are opaque. Frames are memory sensitive, they will be small constant sized structures which can be efficently managed in a pool. FrameinterfaceTODO: how to relate to Cehteh's Frame entity in the Backend?
    The latter is the fundamental Frame entity, wheras this Object rather represents a buffer set containing frame date @@ -74,6 +73,7 @@ Invalid Label Link +LocatingPinAn element with value semantics, which actually implements the placement of some MObject by positioning it in some way. Lock Lock Logic @@ -99,7 +99,7 @@ ProcNodeinterfaceKey abstraction of the Render Engine: A Data processing Node ProcPattspecial type of structural Asset representing information how to build some part of the render engine's processing nodes network. ProjectorSpecial video processing node used to scale and translate image data. -RelativePlacement +RelativeLocation RelTypeenumthe possible kinds of RelativePlacements RenderEngine RenderStateEncapsulates the logic used to get a "current render process" in accordance to the currentyl applicable controller settings. The provided StateProxy serves to hold any mutalbe state used in the render process, so the rest of the render engine can be stateless. diff --git a/doc/devel/uml/classes_list.html b/doc/devel/uml/classes_list.html index 7dc49d02d..d5c17b7d5 100644 --- a/doc/devel/uml/classes_list.html +++ b/doc/devel/uml/classes_list.html @@ -30,7 +30,6 @@ BuilderFacade
    BuildInstruct
    Category
    -ChainPlacement
    Clip
    Clip
    Codec
    @@ -61,7 +60,7 @@ FileMapCache
    FileProvider
    FileReference
    -FixedPlacement
    +FixedLocation
    Fixture
    Frame
    Frame
    @@ -75,6 +74,7 @@ Invalid
    Label
    Link
    +LocatingPin
    Lock
    Lock
    Logic
    @@ -100,7 +100,7 @@ ProcNode
    ProcPatt
    Projector
    -RelativePlacement
    +RelativeLocation
    RelType
    RenderEngine
    RenderState
    diff --git a/doc/devel/uml/fig128133.png b/doc/devel/uml/fig128133.png index f2238751adae5de38648b3e678036837e9fb0b42..ccbcf7d90466ac251af2c09560d08825f2e9fd7a 100644 GIT binary patch literal 64119 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%0DhbPc<*5 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,xP|x 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 Br#}Dy literal 63861 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

    9a@9G8c?^g05 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 p8O!*$IWPGCfBA*~=Sq0nu6^0_G%vjb^PeDg{
    Artifact Cinelerra3

    Depends on common

    Depends on gui

    Depends on proc

    Depends on backend

    the main executable to be built

    -

    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

    +

    executable associated with : 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, main, conmanager, clip, meta, fixedlocation, relativelocation, vrender, mobject, source, frame, placement, sessionimpl, builderfacade, controllerfacade, processor, pluginadapter, effect, tool, segmentationtool, aframe, assembler, trafo

    Artifact main

    Artifact source

    @@ -379,16 +379,17 @@ Documentation

    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 locatingpin
    +

    Chaining and constraining the Placement of a Media Object

    +

    Artifact source associated with : LocatingPin

    -
    Artifact fixedplacement
    -

    Artifact source associated with : FixedPlacement

    +
    Artifact fixedlocation
    +

    implements fixed placement of a MObject

    +

    Artifact source associated with : FixedLocation

    -
    Artifact relativeplacement
    +
    Artifact relativelocation

    Placement implemnetaion providing various ways of attaching a MObject to another one

    -

    Artifact source associated with : RelativePlacement

    +

    Artifact source associated with : RelativeLocation

    Artifact allocation

    Artifact source associated with : Allocation

    @@ -636,8 +637,8 @@ Documentation
    Class Effect
    Class Meta
    -
    -
    +
    +
    Class Label
    Class Auto
    @@ -646,7 +647,7 @@ Documentation
    Class Parameter
    -
    +

2.2.2 Package Builder

@@ -911,7 +912,7 @@ reuse exiting Engine

Selection :

    Transformation

  • length = 5
  • start = 100
  • -
    Class instance

    type :RelativePlacement

    attributes :

    -
    Class instance

    type :RelativePlacement

    attributes :

      +
      Class instance

      type :RelativeLocation

      attributes :

      relations :

        diff --git a/doc/devel/uml/index_65.html b/doc/devel/uml/index_65.html index 28aa29de6..5984e789e 100644 --- a/doc/devel/uml/index_65.html +++ b/doc/devel/uml/index_65.html @@ -49,12 +49,12 @@ Assetsclass view ATTACHattributeattach subject to anchor (e.g. an effect to a clip) au1class instance -aud_Aclass instance aud_aclass instance +aud_Aclass instance audioclass instance audio1class instance -audio1class instance audio1class instance +audio1class instance autoartifactMedia Object holding automation data AutoclassAutomation data for some parameter (i.e. a time varying function) Automation Entitiesclass diagram diff --git a/doc/devel/uml/index_66.html b/doc/devel/uml/index_66.html index 70cc864a7..5ed3d76c4 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 -Builderpackage builderpackagesourcecode package

        The Builder creating the Render Engine,
        located within the MObject Subsystem +Builderpackage 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 2f29cffbf..198d3e6c7 100644 --- a/doc/devel/uml/index_67.html +++ b/doc/devel/uml/index_67.html @@ -25,30 +25,28 @@ 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 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. clipartifactbookkeeping (asset) view of a media clip. diff --git a/doc/devel/uml/index_70.html b/doc/devel/uml/index_70.html index 94fe56f77..485f245e8 100644 --- a/doc/devel/uml/index_70.html +++ b/doc/devel/uml/index_70.html @@ -29,8 +29,8 @@ FileProviderclassThis is the Factory for Files, whenever something wants to use some file (or temporary storage), This Factory will hand out some smart/shared pointer to a File object which will be used to retrieve Frames. FileReferenceclass filesrelation -fixedplacementartifact -FixedPlacementclass +fixedlocationartifactimplements fixed placement of a MObject +FixedLocationclass Fixtureactivity object fixtureartifactthe (low level) representation of the EDL with concrete placement data Fixturecomponent diff --git a/doc/devel/uml/index_72.html b/doc/devel/uml/index_72.html index a26e1439f..58b669cd2 100644 --- a/doc/devel/uml/index_72.html +++ b/doc/devel/uml/index_72.html @@ -24,8 +24,8 @@ 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 496421c53..798945020 100644 --- a/doc/devel/uml/index_73.html +++ b/doc/devel/uml/index_73.html @@ -20,9 +20,9 @@ idattributeAsset primary key. In Memory Databaseclass diagram inFixtureactivity action pin -inputclass instance -inputclass instance inputclass instance +inputclass instance +inputclass instance instanceoperation instructionsrelation Interfaceclass view diff --git a/doc/devel/uml/index_76.html b/doc/devel/uml/index_76.html index 8fa1f472c..9b41469f0 100644 --- a/doc/devel/uml/index_76.html +++ b/doc/devel/uml/index_76.html @@ -25,6 +25,8 @@ linkartifactforwarding, adapting or connecting ProcNode loadoperationreplace the current session by a new
        session loaded from serialized state. load Mediause case +locatingpinartifactChaining and constraining the Placement of a Media Object +LocatingPinclassAn element with value semantics, which actually implements the placement of some MObject by positioning it in some way. Lockclass Lockclass Logicclass diff --git a/doc/devel/uml/index_77.html b/doc/devel/uml/index_77.html index d83661f51..997d703b9 100644 --- a/doc/devel/uml/index_77.html +++ b/doc/devel/uml/index_77.html @@ -32,8 +32,8 @@ MediaFactoryclassspecialized Asset Factory for configuring (new) media asset instances based on existing media files on disk; can create placeholder assets as well merge activity nodemerge activity node Metaclasskey abstraction: metadata and organisational asset -metaartifactkey abstraction: metadata and organisational asset metaartifactabstract base class of all MObjects representing meta data or processing instructions +metaartifactkey abstraction: metadata and organisational asset Metaclass mobjectartifactKey Abstraction: A Media Object in the Session mobjectpackagesourcecode package

        MObject Subsystem
        including the Session (EDL), Builder and Processing Controller diff --git a/doc/devel/uml/index_78.html b/doc/devel/uml/index_78.html index 7a0c5e875..eeaf4b78d 100644 --- a/doc/devel/uml/index_78.html +++ b/doc/devel/uml/index_78.html @@ -18,7 +18,7 @@ - + diff --git a/doc/devel/uml/index_79.html b/doc/devel/uml/index_79.html index b34c12000..2a52fbc5c 100644 --- a/doc/devel/uml/index_79.html +++ b/doc/devel/uml/index_79.html @@ -20,8 +20,8 @@ - + diff --git a/doc/devel/uml/index_82.html b/doc/devel/uml/index_82.html index 40cc37dd5..3a3a83808 100644 --- a/doc/devel/uml/index_82.html +++ b/doc/devel/uml/index_82.html @@ -20,10 +20,10 @@ - - - + + + diff --git a/doc/devel/uml/index_83.html b/doc/devel/uml/index_83.html index 5c1a18530..eb3719cf0 100644 --- a/doc/devel/uml/index_83.html +++ b/doc/devel/uml/index_83.html @@ -31,8 +31,8 @@ - + @@ -46,8 +46,8 @@ - + diff --git a/doc/devel/uml/index_84.html b/doc/devel/uml/index_84.html index 1739030f8..03ef3d02c 100644 --- a/doc/devel/uml/index_84.html +++ b/doc/devel/uml/index_84.html @@ -42,11 +42,11 @@ - + - +
        NameKindDescription
        nameattributeelement ID, comprehensible but sanitized. The tuple (category, name, org) is unique.
        nextrelationnext additional Placement, if any
        nextrelationnext additional LocatingPin, 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
        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
        refPointclass instance
        regoperationregisters an asset object in the internal DB, providing its unique key
        registryrelation@internal Table or DB holding all registered asset instances.
        relativeplacementartifactPlacement implemnetaion providing various ways of attaching a MObject to another one
        RelativePlacementclass
        relTypeattributethe kind of relation denoted by this Placement
        relativelocationartifactPlacement implemnetaion providing various ways of attaching a MObject to another one
        RelativeLocationclass
        RelTypeclassthe possible kinds of RelativePlacements
        relTypeattributethe kind of relation denoted by this Placement
        removeoperationremove the given asset <i>together with all its dependants</i> from the internal DB
        Render Entitiesclass diagram
        Render Requestactivity parameter
        Service Componentsclass view
        Sessioncomponent
        sessionartifactInterface: the session edited by the user
        sessionpackagesourcecode package

        Everything concerning the EDL and Session, within the MObject Subsystem
        Sessionclass view
        sessionpackagesourcecode package

        Everything concerning the EDL and Session, within the MObject Subsystem
        SessionclassPrimary Interface for all editing tasks.
        The session contains defaults, all the assets being edited, and a set of EDL with the individual MObjects to be manipulated and rendered.
        Session structureclass diagram
        sessionimplartifactholds the complete session data to be edited by the user
        SimpleClipclassElementary clip consisting of only one media stream
        SmartPointerclass
        SmartPointersclass view
        sourcerelationthe media source this clip referes to
        sourcerelationmedia source of this clip
        sourcerelationthe media source this clip referes to
        SourceclassSource Node: represents a media source to pull data from.
        sourceartifactRepresentation of a Media source
        Source Overviewdeployment diagram
        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 0ae05e4c3..ce992fef4 100644 --- a/doc/devel/uml/index_86.html +++ b/doc/devel/uml/index_86.html @@ -22,21 +22,21 @@ 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 +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 +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/src/proc/mobject/placement.hpp b/src/proc/mobject/placement.hpp index c1e7fc022..4c0504594 100644 --- a/src/proc/mobject/placement.hpp +++ b/src/proc/mobject/placement.hpp @@ -21,13 +21,36 @@ */ +/** @file placement.hpp + ** Placements are at the very core of all editing operations, + ** because they act as handles (smart pointers) to access the media objects + ** 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. + ** + ** Placements are smart pointers: By acting on the Placement object, we can 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). + ** + ** Placements are templated on the type of the actual MObject they refer to, so, sometimes + ** we rather use a Placement to be able to use the more specific methods of the + ** session::Clip interface. But please note the following detail: this type + ** labeling is the only difference between this subclasses, besides that, + ** they can be replaced by one another (no slicing). + ** + ** @see ExplicitPlacement + ** + */ + + + #ifndef MOBJECT_PLACEMENT_H #define MOBJECT_PLACEMENT_H #include "common/time.hpp" #include "common/factory.hpp" #include "proc/mobject/mobject.hpp" -#include "proc/mobject/session/chainplacement.hpp" +#include "proc/mobject/session/locatingpin.hpp" #include "proc/mobject/session/track.hpp" @@ -38,8 +61,8 @@ namespace mobject class ExplicitPlacement; - template /////TODO: unsolved design problem here! - class Placement : public shared_ptr + template + class Placement : public shared_ptr { protected: typedef cinelerra::Time Time; @@ -47,18 +70,41 @@ namespace mobject public: - ChainPlacement chain; + LocatingPin chain; /** resolve the network of placement and * provide the resulting (explicit) placement. */ - ExplicitPlacement resolve () ; + virtual ExplicitPlacement resolve () ; protected: Placement (); + virtual ~Placement() {}; }; + + /* === defining specialisations to be subclasses === */ + + namespace session + { + class Clip; + class Effect; + class Meta; + } + template<> + class Placement : public Placement + { + //TODO: overwirte shared_ptr's operator-> to return the correct subtype of MObject... + }; + + template<> + class Placement : public Placement + { }; + + template<> + class Placement : public Placement + { }; diff --git a/src/proc/mobject/session/allocation.cpp b/src/proc/mobject/session/allocation.cpp index e3ed4b701..a590756c3 100644 --- a/src/proc/mobject/session/allocation.cpp +++ b/src/proc/mobject/session/allocation.cpp @@ -1,5 +1,5 @@ /* - Allocation - directive to place a MObject in a specific way + Allocation - objective to place a MObject in a specific way Copyright (C) CinelerraCV 2007, Christian Thaeter diff --git a/src/proc/mobject/session/allocation.hpp b/src/proc/mobject/session/allocation.hpp index 88605572a..5bdd5b88c 100644 --- a/src/proc/mobject/session/allocation.hpp +++ b/src/proc/mobject/session/allocation.hpp @@ -1,5 +1,5 @@ /* - ALLOCATION.hpp - directive to place a MObject in a specific way + ALLOCATION.hpp - objective to place a MObject in a specific way Copyright (C) CinelerraCV 2007, Christian Thaeter @@ -26,7 +26,7 @@ #include -#include "proc/mobject/placement.hpp" +#include "proc/mobject/session/locatingpin.hpp" using std::string; @@ -39,9 +39,10 @@ namespace mobject /** - * a directive to place a MObject in a specific way + * Interface: any objective, constraint or wish of + * placeing a MObject in a specific way. */ - class Allocation : public Placement + class Allocation : public LocatingPin { protected: /** human readable representation of the condition diff --git a/src/proc/mobject/session/clip.hpp b/src/proc/mobject/session/clip.hpp index 83696c866..316cbc435 100644 --- a/src/proc/mobject/session/clip.hpp +++ b/src/proc/mobject/session/clip.hpp @@ -25,6 +25,7 @@ #define MOBJECT_SESSION_CLIP_H #include "proc/mobject/session/abstractmo.hpp" +#include "proc/mobject/placement.hpp" @@ -55,6 +56,8 @@ namespace mobject //TODO: where to put the duration ??? }; + + diff --git a/src/proc/mobject/session/fixedplacement.cpp b/src/proc/mobject/session/fixedlocation.cpp similarity index 88% rename from src/proc/mobject/session/fixedplacement.cpp rename to src/proc/mobject/session/fixedlocation.cpp index cfd370501..08c19aa24 100644 --- a/src/proc/mobject/session/fixedplacement.cpp +++ b/src/proc/mobject/session/fixedlocation.cpp @@ -1,5 +1,5 @@ /* - ${Name} - ???????????? needed any longer? + FixedLocation - directly positioning a MObject to a fixed location Copyright (C) CinelerraCV 2007, Christian Thaeter @@ -21,7 +21,7 @@ * *****************************************************/ -#include "proc/mobject/session/fixedplacement.hpp" +#include "proc/mobject/session/fixedlocation.hpp" namespace mobject { diff --git a/src/proc/mobject/session/fixedplacement.hpp b/src/proc/mobject/session/fixedlocation.hpp similarity index 70% rename from src/proc/mobject/session/fixedplacement.hpp rename to src/proc/mobject/session/fixedlocation.hpp index badf3e781..e3a51056b 100644 --- a/src/proc/mobject/session/fixedplacement.hpp +++ b/src/proc/mobject/session/fixedlocation.hpp @@ -1,5 +1,5 @@ /* - FIXEDPLACEMENT.hpp - TODO: didn't we plan to rename ExplicitPlacement to DirectPlacement?? + FIXEDLOCATION.hpp - directly positioning a MObject to a fixed location Copyright (C) CinelerraCV 2007, Christian Thaeter @@ -21,11 +21,10 @@ */ -#ifndef MOBJECT_SESSION_FIXEDPLACEMENT_H -#define MOBJECT_SESSION_FIXEDPLACEMENT_H +#ifndef MOBJECT_SESSION_FIXEDLOCATION_H +#define MOBJECT_SESSION_FIXEDLOCATION_H -#include "proc/mobject/placement.hpp" -#include "proc/mobject/explicitplacement.hpp" +#include "proc/mobject/session/locatingpin.hpp" @@ -34,9 +33,11 @@ namespace mobject namespace session { - // TODO: didn't we plan to rename ExplicitPlacement to DirectPlacement?? - - class DirectPlacement : public ExplicitPlacement + /** + * The most common case of positioning a MObject + * in the EDL: directly specifying a constant position. + */ + class FixedLocation : public LocatingPing { /////////// }; diff --git a/src/proc/mobject/session/chainplacement.cpp b/src/proc/mobject/session/locatingpin.cpp similarity index 89% rename from src/proc/mobject/session/chainplacement.cpp rename to src/proc/mobject/session/locatingpin.cpp index 3c5393ddd..be9b2863c 100644 --- a/src/proc/mobject/session/chainplacement.cpp +++ b/src/proc/mobject/session/locatingpin.cpp @@ -1,5 +1,5 @@ /* - ChainPlacement - Chaining and additionally constraining Placements + LocatingPin - Chaining and constraining the Placement of a Media Object Copyright (C) CinelerraCV 2007, Christian Thaeter @@ -21,7 +21,7 @@ * *****************************************************/ -#include "proc/mobject/session/chainplacement.hpp" +#include "proc/mobject/session/locatingpin.hpp" #include "proc/mobject/placement.hpp" namespace mobject diff --git a/src/proc/mobject/session/chainplacement.hpp b/src/proc/mobject/session/locatingpin.hpp similarity index 79% rename from src/proc/mobject/session/chainplacement.hpp rename to src/proc/mobject/session/locatingpin.hpp index db71b8c1f..ceb39c4c4 100644 --- a/src/proc/mobject/session/chainplacement.hpp +++ b/src/proc/mobject/session/locatingpin.hpp @@ -1,5 +1,5 @@ /* - CHAINPLACEMENT.hpp - Chaining and additionally constraining Placements + LOCATINGPIN.hpp - Chaining and constraining the Placement of a Media Object Copyright (C) CinelerraCV 2007, Christian Thaeter @@ -21,8 +21,8 @@ */ -#ifndef MOBJECT_SESSION_CHAINPLACEMENT_H -#define MOBJECT_SESSION_CHAINPLACEMENT_H +#ifndef MOBJECT_SESSION_LOCATINGPIN_H +#define MOBJECT_SESSION_LOCATINGPIN_H @@ -37,12 +37,11 @@ namespace mobject class RelativePlacement; - template - struct ChainPlacement + struct LocatingPin { protected: - /** next additional Placement, if any */ - Placement * next; + /** next additional Pin, if any */ + LocatingPin * next; public: FixedPlacement& operator() (Time); diff --git a/src/proc/mobject/session/relativeplacement.cpp b/src/proc/mobject/session/relativelocation.cpp similarity index 100% rename from src/proc/mobject/session/relativeplacement.cpp rename to src/proc/mobject/session/relativelocation.cpp diff --git a/src/proc/mobject/session/relativeplacement.hpp b/src/proc/mobject/session/relativelocation.hpp similarity index 84% rename from src/proc/mobject/session/relativeplacement.hpp rename to src/proc/mobject/session/relativelocation.hpp index 1836d689d..577c741f3 100644 --- a/src/proc/mobject/session/relativeplacement.hpp +++ b/src/proc/mobject/session/relativelocation.hpp @@ -1,5 +1,5 @@ /* - RELATIVEPLACEMENT.hpp - Placement implemnetaion providing various ways of attaching a MObject to another one + RELATIVELOCATION.hpp - Placement implementation attaching MObjects relative to another one Copyright (C) CinelerraCV 2007, Christian Thaeter @@ -21,10 +21,10 @@ */ -#ifndef MOBJECT_SESSION_RELATIVEPLACEMENT_H -#define MOBJECT_SESSION_RELATIVEPLACEMENT_H +#ifndef MOBJECT_SESSION_RELATIVELOCATION_H +#define MOBJECT_SESSION_RELATIVELOCATION_H -#include "proc/mobject/placement.hpp" +#include "proc/mobject/session/locatingpin.hpp" @@ -36,7 +36,7 @@ namespace mobject - class RelativePlacement : public Placement + class RelativeLocation : public LocatingPin { public: diff --git a/uml/cinelerra3/128133.diagram b/uml/cinelerra3/128133.diagram index a6da87c99..2df4f1453 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 539 121 2000 + xyz 634 120 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 @@ -44,17 +44,17 @@ classcanvas 131973 class_ref 129157 // Meta 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 389 368 2000 end -classcanvas 132229 class_ref 129285 // FixedPlacement +classcanvas 132229 class_ref 129285 // FixedLocation 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 678 374 2005 + xyz 608 332 2005 end -classcanvas 132869 class_ref 129413 // RelativePlacement +classcanvas 132869 class_ref 129413 // RelativeLocation 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 477 342 2000 + xyz 491 332 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 592 342 2000 + xyz 568 427 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 673 258 2004 + xyz 715 276 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 @@ -80,11 +80,11 @@ textcanvas 137093 "Fixture is the actual assembly of various Media Objects ready xyzwh 39 909 2000 147 108 classcanvas 137221 class_ref 130053 // Wish 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 573 485 2000 + xyz 561 532 2000 end classcanvas 137349 class_ref 130181 // Constraint 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 623 485 2000 + xyz 616 532 2000 end classcanvas 138629 class_ref 135173 // Segment 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 @@ -102,9 +102,9 @@ 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 +classcanvas 141317 class_ref 139909 // LocatingPin 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 + xyz 518 239 2000 end relationcanvas 128389 relation_ref 128005 // from ref 128005 z 1999 to ref 128133 @@ -157,27 +157,19 @@ relationcanvas 132101 relation_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 317 3000 + from ref 132869 z 1999 to point 455 329 + line 133893 z 1999 to point 430 252 + line 144389 z 1999 to ref 129413 + role_a_pos 417 223 3000 no_role_b + multiplicity_a_pos 406 208 3000 multiplicity_b_pos 474 359 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 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 135685 relation_ref 130949 // geometry VHV - from ref 135429 z 1999 to point 724 236 - line 141445 z 1999 to point 576 236 + from ref 135429 z 1999 to point 766 245 + line 141445 z 1999 to point 671 245 line 141573 z 1999 to ref 129669 no_role_a no_role_b no_multiplicity_a no_multiplicity_b @@ -226,20 +218,37 @@ 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 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 + role_a_pos 413 151 3000 no_role_b + multiplicity_a_pos 403 151 3000 multiplicity_b_pos 589 153 3000 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 + role_a_pos 578 200 3000 no_role_b + multiplicity_a_pos 599 233 3000 no_multiplicity_b +relationcanvas 142981 relation_ref 143493 // + geometry VHV + from ref 132869 z 1999 to point 539 304 + line 143493 z 1999 to point 554 304 + line 143621 z 1999 to ref 141317 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 143109 relation_ref 143621 // + geometry VHV + from ref 132229 z 1999 to point 650 304 + line 143749 z 1999 to point 554 304 + line 143877 z 1999 to ref 141317 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 143237 relation_ref 143749 // + geometry VHV unfixed + from ref 134149 z 1999 to point 599 304 + line 144005 z 1999 to point 554 304 + line 144133 z 1999 to ref 141317 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 144517 relation_ref 143877 // + from ref 141317 z 1999 to point 488 239 + line 144645 z 1999 to point 488 269 + line 144773 z 1999 to ref 141317 + role_a_pos 492 244 3000 no_role_b no_multiplicity_a no_multiplicity_b end diff --git a/uml/cinelerra3/128261 b/uml/cinelerra3/128261 index de4cec32a..9925728b7 100644 --- a/uml/cinelerra3/128261 +++ b/uml/cinelerra3/128261 @@ -1,6 +1,6 @@ format 40 "MObject" // ProcessingLayer::MObject - revision 24 + revision 26 modified_by 5 "hiv" // class settings //class diagram settings @@ -485,7 +485,7 @@ ${class}::${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${static cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; " classrelation_ref 145413 // chain () - b multiplicity "" parent class_ref 139909 // ChainPlacement + b multiplicity "" parent class_ref 139909 // LocatingPin end end @@ -701,7 +701,7 @@ ${inlines} end end - class 129285 "FixedPlacement" + class 129285 "FixedLocation" visibility package cpp_decl "${comment}${template}class ${name}${inherit} { @@ -712,16 +712,16 @@ ${inlines} idl_decl "" explicit_switch_type "" - classrelation 145285 // - relation 143109 ---|> + classrelation 145797 // + relation 143621 ---|> a public cpp default "${type}" - classrelation_ref 145285 // - b multiplicity "" parent class_ref 129797 // ExplicitPlacement + classrelation_ref 145797 // + b multiplicity "" parent class_ref 139909 // LocatingPin end end - class 129413 "RelativePlacement" + class 129413 "RelativeLocation" visibility package cpp_decl "${comment}${template}class ${name}${inherit} { @@ -751,14 +751,6 @@ ${inlines} comment "the kind of relation denoted by this Placement" end - classrelation 131333 // - relation 130693 ---|> - a public - cpp default "${type}" - classrelation_ref 131333 // - b multiplicity "" parent class_ref 128645 // Placement - end - attribute 129029 "offset" protected type class_ref 134917 // Time init_value "0" @@ -802,6 +794,14 @@ ${items}}; comment "attach subject to anchor (e.g. an effect to a clip)" end end + + classrelation 145669 // + relation 143493 ---|> + a public + cpp default "${type}" + classrelation_ref 145669 // + b multiplicity "" parent class_ref 139909 // LocatingPin + end end class 129541 "Allocation" @@ -816,14 +816,6 @@ ${inlines} explicit_switch_type "" comment "a directive to place a MObject in a specific way" - classrelation 131205 // - relation 130565 ---|> - a public - cpp default "${type}" - classrelation_ref 131205 // - b multiplicity "" parent class_ref 128645 // Placement - end - attribute 128773 "repr" protected explicit_type "string" cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; @@ -851,6 +843,14 @@ ${inlines} idl_name_spec "get_${name}" get_of_attribute attribute_ref 128773 // repr end + + classrelation 145925 // + relation 143749 ---|> + a public + cpp default "${type}" + classrelation_ref 145925 // + b multiplicity "" parent class_ref 139909 // LocatingPin + end end class 129669 "Label" @@ -1080,7 +1080,7 @@ ${inlines} comment "Provides the implementation for getting the acutal value of a time varying or automated effect/plugin parameter" end - class 139909 "ChainPlacement" + class 139909 "LocatingPin" visibility package cpp_decl "${comment}${template}class ${name}${inherit} { @@ -1091,14 +1091,15 @@ ${inlines} idl_decl "" explicit_switch_type "" - classrelation 145541 // next () - relation 143365 ---> + comment "An element with value semantics, which actually implements the placement of some MObject by positioning it in some way." + classrelation 146053 // next () + relation 143877 ---> a role_name "next" multiplicity "" protected - comment "next additional Placement, if any" + comment "next additional LocatingPin, if any" cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; " - classrelation_ref 145541 // next () - b multiplicity "" parent class_ref 128645 // Placement + classrelation_ref 146053 // next () + b multiplicity "" parent class_ref 139909 // LocatingPin end end end diff --git a/uml/cinelerra3/129285 b/uml/cinelerra3/129285 index 1c121e419..ec9e7d7fc 100644 --- a/uml/cinelerra3/129285 +++ b/uml/cinelerra3/129285 @@ -1,6 +1,6 @@ format 40 "ProcessingLayer" // ProcessingLayer - revision 4 + revision 5 modified_by 5 "hiv" // class settings //class diagram settings @@ -226,7 +226,7 @@ format 40 end classinstance 130053 "" - type class_ref 129413 // RelativePlacement + type class_ref 129413 // RelativeLocation attributes attribute_ref 128133 // relType "SAMETIME" @@ -250,7 +250,7 @@ format 40 end classinstance 130309 "" - type class_ref 129413 // RelativePlacement + type class_ref 129413 // RelativeLocation attributes attribute_ref 129029 // offset "+3" diff --git a/uml/cinelerra3/130437 b/uml/cinelerra3/130437 index df17fa821..b1c2021e8 100644 --- a/uml/cinelerra3/130437 +++ b/uml/cinelerra3/130437 @@ -1,6 +1,6 @@ format 40 "session" // design::codegen::proc::mobject::session - revision 10 + revision 11 modified_by 5 "hiv" // class settings //class diagram settings @@ -511,7 +511,7 @@ ${namespace_end}" comment "abstract base class of all MObjects representing meta data or processing instructions" end - artifact 139013 "chainplacement" + artifact 139013 "locatingpin" stereotype "source" cpp_h "/* ${NAME}.hpp - ${description} @@ -545,12 +545,12 @@ ${namespace_start} ${members} ${namespace_end}" associated_classes - class_ref 139909 // ChainPlacement + class_ref 139909 // LocatingPin end - comment "Chaining and additionally constraining Placements" + comment "Chaining and constraining the Placement of a Media Object" end - artifact 129797 "fixedplacement" + artifact 129797 "fixedlocation" stereotype "source" cpp_h "/* ${NAME}.hpp - ${description} @@ -584,11 +584,12 @@ ${namespace_start} ${members} ${namespace_end}" associated_classes - class_ref 129285 // FixedPlacement + class_ref 129285 // FixedLocation end + comment "implements fixed placement of a MObject" end - artifact 129925 "relativeplacement" + artifact 129925 "relativelocation" stereotype "source" cpp_h "/* ${NAME}.hpp - ${description} @@ -622,7 +623,7 @@ ${namespace_start} ${members} ${namespace_end}" associated_classes - class_ref 129413 // RelativePlacement + class_ref 129413 // RelativeLocation end comment "Placement implemnetaion providing various ways of attaching a MObject to another one" end diff --git a/uml/cinelerra3/5.session b/uml/cinelerra3/5.session index 49af64898..9440f200a 100644 --- a/uml/cinelerra3/5.session +++ b/uml/cinelerra3/5.session @@ -4,21 +4,17 @@ diagrams 860 633 100 4 0 0 active classdiagram_ref 128133 // Session structure 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 class_ref 129285 // FixedPlacement +selected + package_ref 129 // cinelerra3 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 - class_ref 129413 // RelativePlacement + class_ref 129413 // RelativeLocation + class_ref 129541 // Allocation + class_ref 139909 // LocatingPin classview_ref 129029 // Interface usecaseview_ref 128133 // usage end diff --git a/uml/cinelerra3/cinelerra3.prj b/uml/cinelerra3/cinelerra3.prj index efde6fe95..62217077f 100644 --- a/uml/cinelerra3/cinelerra3.prj +++ b/uml/cinelerra3/cinelerra3.prj @@ -1,6 +1,6 @@ format 40 "cinelerra3" - revision 33 + revision 35 modified_by 5 "hiv" cpp_root_dir "../../src/" diff --git a/wiki/renderengine.html b/wiki/renderengine.html index eefa14ca2..2aaac1a79 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -1359,6 +1359,12 @@ From experiences with other middle scale projects, I prefer having the test code {{red{how to create a test stub for this interface...?}}}
    +
    +
    Used to actually implement the various kinds of [[Placement]] of ~MObjects. ~LocationPin is the root of a hierarchy of different kinds of placing, constraining and locating a Media Object. Basically, this is an instance of the ''state pattern'': The user sees one Placement object with value semantics, but when the properties of the Placement are changed, actually a ~LocationPin object (or rather a chain of ~LocationPins) is changed within the Placement. Subclasses of ~LocationPin implement different placing/constraining behaviour:
    +* {{{FixedLocation}}} places a MObject to a fixed temporal position and track
    +* {{{RelativeLocation}}} is used to atach the MObject to some other anchor MObject
    +* //additional constraints, placement objectives, range restrictions, pattern rules will follow...//
    +
    All sorts of "things" to be placed and manipulated by the user in the EDL. This interface abstracts the details and just supposes
     * the media object has a duration
    @@ -2079,19 +2085,20 @@ 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).
    +
    +
    [[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.
     
    -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.
    +Actually, the way each Placement locates its subject is implemented by one or several small LocationPin objects, where subclasses of LocationPin implement the various differend methods of placing and resolving the final location. Notably, we can give a ~FixedLocation or we can atach to another ~MObject to get a ~RelativeLocation, etc.
     
    -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. 
    +Placements have //value semantics,// i.e. 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 parametrized to 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 have several different Placements of the same MObject (from a users point of view, this behaves like having clones). Besides, we can ''aggregate'' additional [[LocationPin]]a to one Placements, resulting in their properties and constraints being combined to yield the actual position of the referred ~MObject.
     
     !design decisions
    -* Placements can be aggregated in a sort of chain.
    +* the actual way of placing is implemented similar to the ''State Pattern'' by small embedded LoctionPin objects.
    +* these LocationPin objects form a ''decorator'' like 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?
    +* //overconstraining// a placement is not an error, we just stop traversing the chain (ignoring the remaining additional Placements) at the moment the position is completely defined. 
    +* we provide subclasses to be able to form collections of e.g. {{{Placement<Effect>}}}, but we don't stress polymorphism here. Instead we stick to value semantics and explicitly ''allow slicing'' (all subclasses have the same size and layout and differ only in their vtable contents). This is justified, because for the polymorphical treating of ~MObjects the visitor mechanism used by the builder and the EDL is sufficiant, and I don't want to add another layer of complexity by making Placement something like {{{boost::variant}}}.
    +* Why is the question how to access a ~MObject subinterface 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.