From 529d4bd45929b9d009e5bac71bab6d0855fc9df9 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Mon, 8 Jun 2009 03:50:02 +0200 Subject: [PATCH] Planning / Design: Session interface, Commands --- doc/devel/uml/class141957.html | 3 +- doc/devel/uml/class148485.html | 40 +++ doc/devel/uml/class148613.html | 24 ++ doc/devel/uml/class148741.html | 22 ++ doc/devel/uml/class148869.html | 25 ++ doc/devel/uml/class148997.html | 26 ++ doc/devel/uml/class149125.html | 22 ++ doc/devel/uml/class149253.html | 22 ++ doc/devel/uml/class149381.html | 22 ++ doc/devel/uml/class149509.html | 22 ++ doc/devel/uml/class149637.html | 20 ++ doc/devel/uml/classdiagrams.html | 1 + doc/devel/uml/classes.html | 12 +- doc/devel/uml/classes_list.html | 10 + doc/devel/uml/fig134021.png | Bin 0 -> 23301 bytes doc/devel/uml/index.html | 25 +- doc/devel/uml/index_67.html | 48 +-- doc/devel/uml/index_68.html | 5 +- doc/devel/uml/index_69.html | 1 + doc/devel/uml/index_72.html | 3 +- doc/devel/uml/index_73.html | 3 +- doc/devel/uml/index_77.html | 3 +- doc/devel/uml/index_78.html | 1 + doc/devel/uml/index_80.html | 1 + doc/devel/uml/index_82.html | 1 + doc/devel/uml/index_83.html | 4 +- doc/devel/uml/index_84.html | 8 +- doc/devel/uml/index_85.html | 4 + doc/devel/uml/packages.html | 2 +- doc/devel/uml/public_operations.html | 1 + doc/devel/uml/public_properties.html | 4 + uml/lumiera/128261 | 17 +- uml/lumiera/129029 | 433 +++++++++++++++++++++++++-- uml/lumiera/134021.diagram | 146 +++++++++ uml/lumiera/lumiera.prj | 4 +- wiki/renderengine.html | 60 +++- 36 files changed, 962 insertions(+), 83 deletions(-) create mode 100644 doc/devel/uml/class148485.html create mode 100644 doc/devel/uml/class148613.html create mode 100644 doc/devel/uml/class148741.html create mode 100644 doc/devel/uml/class148869.html create mode 100644 doc/devel/uml/class148997.html create mode 100644 doc/devel/uml/class149125.html create mode 100644 doc/devel/uml/class149253.html create mode 100644 doc/devel/uml/class149381.html create mode 100644 doc/devel/uml/class149509.html create mode 100644 doc/devel/uml/class149637.html create mode 100644 doc/devel/uml/fig134021.png create mode 100644 uml/lumiera/134021.diagram diff --git a/doc/devel/uml/class141957.html b/doc/devel/uml/class141957.html index 9158a22a5..6ad99d6c7 100644 --- a/doc/devel/uml/class141957.html +++ b/doc/devel/uml/class141957.html @@ -16,5 +16,6 @@ -

Declaration :

Component(s) : Dispatcher

+

Declaration :

Component(s) : Dispatcher

Stereotype: control

+ diff --git a/doc/devel/uml/class148485.html b/doc/devel/uml/class148485.html new file mode 100644 index 000000000..ea2fc33b3 --- /dev/null +++ b/doc/devel/uml/class148485.html @@ -0,0 +1,40 @@ + + + + + + +Class Command + + + + + +
Class Command
+

+ + + + +

Key abstraction for all proc/edit operations and UNDO management

Declaration :

Stereotype: interface

+
+ +
Attribut ID
+

Declaration :

+
Attribut name
+

Declaration :

+
Attribut do
+

Declaration :

+
Attribut undo
+

Declaration :

+
Attribut closure
+

Declaration :

+
Operation execute

Declaration :

+
Relation <unidirectional association>

Declaration :

Stereotype: has_a

+ +
Relation <unidirectional association>

Declaration :

Stereotype: has_a

+ +
Relation <unidirectional association>

Declaration :

+

All public operations : execute

+ + diff --git a/doc/devel/uml/class148613.html b/doc/devel/uml/class148613.html new file mode 100644 index 000000000..5af4f3e1d --- /dev/null +++ b/doc/devel/uml/class148613.html @@ -0,0 +1,24 @@ + + + + + + +Class HandlingPattern + + + + + +
Class HandlingPattern
+

+ + + + +

Declaration :

Directly inherited by : DoAsync DoSync RedoLast UndoSync

+

Stereotype: interface

+
+
+ + diff --git a/doc/devel/uml/class148741.html b/doc/devel/uml/class148741.html new file mode 100644 index 000000000..0026a259f --- /dev/null +++ b/doc/devel/uml/class148741.html @@ -0,0 +1,22 @@ + + + + + + +Class Mutation + + + + + +
Class Mutation
+

+ + + + +

Declaration :

Directly inherited by : UndoMutation

+

Stereotype: func

+ + diff --git a/doc/devel/uml/class148869.html b/doc/devel/uml/class148869.html new file mode 100644 index 000000000..7e0586b00 --- /dev/null +++ b/doc/devel/uml/class148869.html @@ -0,0 +1,25 @@ + + + + + + +Class UndoMutation + + + + + +
Class UndoMutation
+

+ + + + +

Declaration :

Stereotype: func

+
+ +
Relation capture (<unidirectional association>)

Declaration :

+
Relation undoOp (<unidirectional association>)

Declaration :

+ + diff --git a/doc/devel/uml/class148997.html b/doc/devel/uml/class148997.html new file mode 100644 index 000000000..85ab6a55d --- /dev/null +++ b/doc/devel/uml/class148997.html @@ -0,0 +1,26 @@ + + + + + + +Class CmdClosure + + + + + +
Class CmdClosure
+

+ + + + +

Declaration :

+ +
Relation targets (<directional composition>)

Declaration :

Stereotype: list

+ +
Relation params (<directional composition>)

Declaration :

Stereotype: list

+
+ + diff --git a/doc/devel/uml/class149125.html b/doc/devel/uml/class149125.html new file mode 100644 index 000000000..9426554d2 --- /dev/null +++ b/doc/devel/uml/class149125.html @@ -0,0 +1,22 @@ + + + + + + +Class DoSync + + + + + +
Class DoSync
+

+ + + + +

Declaration :

+
+ + diff --git a/doc/devel/uml/class149253.html b/doc/devel/uml/class149253.html new file mode 100644 index 000000000..0bc1f1ae6 --- /dev/null +++ b/doc/devel/uml/class149253.html @@ -0,0 +1,22 @@ + + + + + + +Class DoAsync + + + + + +
Class DoAsync
+

+ + + + +

Declaration :

+
+ + diff --git a/doc/devel/uml/class149381.html b/doc/devel/uml/class149381.html new file mode 100644 index 000000000..72a009390 --- /dev/null +++ b/doc/devel/uml/class149381.html @@ -0,0 +1,22 @@ + + + + + + +Class UndoSync + + + + + +
Class UndoSync
+

+ + + + +

Declaration :

+
+ + diff --git a/doc/devel/uml/class149509.html b/doc/devel/uml/class149509.html new file mode 100644 index 000000000..e5c2ee5ab --- /dev/null +++ b/doc/devel/uml/class149509.html @@ -0,0 +1,22 @@ + + + + + + +Class RedoLast + + + + + +
Class RedoLast
+

+ + + + +

Declaration :

+
+ + diff --git a/doc/devel/uml/class149637.html b/doc/devel/uml/class149637.html new file mode 100644 index 000000000..da4da6a27 --- /dev/null +++ b/doc/devel/uml/class149637.html @@ -0,0 +1,20 @@ + + + + + + +Class Target + + + + + +
Class Target
+

+ + + + +

Declaration :

+ diff --git a/doc/devel/uml/classdiagrams.html b/doc/devel/uml/classdiagrams.html index 8e9652413..bfd20dbab 100644 --- a/doc/devel/uml/classdiagrams.html +++ b/doc/devel/uml/classdiagrams.html @@ -20,6 +20,7 @@ Automation Entities Builder Entities Builder Tool (Visitor) +Command structure Controller Entities File MappingShows whats used to access Frames HierarchyLumiera Exception hierarchy diff --git a/doc/devel/uml/classes.html b/doc/devel/uml/classes.html index b30de8c8b..8c54eb58f 100644 --- a/doc/devel/uml/classes.html +++ b/doc/devel/uml/classes.html @@ -38,8 +38,10 @@ Categorytree like classification of Assets Clipbookkeeping (asset) view of a media clip. Clip +CmdClosure Codecdescription of some media data decoder or encoder facility CodecAdapter +CommandinterfaceKey abstraction for all proc/edit operations and UNDO management CompoundClipClip MObject which is actually a compound of several elementary clips,
e.g. the several streams found within multichannels media. CompoundMediacompound of several elementary media tracks,
e.g. the individual media streams found in one media file ConditionI provided a reworked Condition class in my Cinelerra2 repository @@ -52,8 +54,10 @@ DBImplementation of the registry holding all Asset instances known to the Asset Manager subsystem. As of 8/2007 implemented by a hashtable. DefaultsManager DefaultsRegistry +DoAsync DoAttach DoRecurse +DoSync EffectEffect or media processing component Effect Error @@ -77,6 +81,7 @@ FrameDescriptorinterfaceA FrameDescriptor implements the higher level interfaces for frames. Further refinements are made by subclassing and policy classes FrameReference GLBuf +HandlingPatterninterface ImplFacade InstanceHandle InterpolatorProvides the implementation for getting the acutal value of a time varying or automated effect/plugin parameter @@ -97,6 +102,7 @@ Meta MObjectinterface Monitor +Mutationfunc MutexI provided a reworked Mutex class in my Cinelerra2 repository NodeCreatorToolThis 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. NodeWiring @@ -113,7 +119,7 @@ Prefetch Previewalternative version of the media data, probably with lower resolution Prockey abstraction: data processing asset -ProcDispatcher +ProcDispatchercontrol ProcessData 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. @@ -126,6 +132,7 @@ QueryHandlerinterface QueryHandlerImpl ReadSource +RedoLast RelativeLocation RelTypeenumthe possible kinds of RelativePlacements RenderEngine @@ -157,6 +164,7 @@ StreamTypeID Structkey abstraction: structural asset STypeManager +Target ThreadWe can basically reuse the Thread class design from Cinelerra2, Thread becomes a baseclass for all Threads Timedenotes a temporal position (time point), based on timeline start.

investigate posix.4 realtime timers, wrap these here Timeline @@ -168,6 +176,8 @@ Trafo TypeHandlerinterface TypeHandler<Pipe> +UndoMutationfunc +UndoSync Unknownplaceholder for unknown or unavailable media source Useractor VFrame diff --git a/doc/devel/uml/classes_list.html b/doc/devel/uml/classes_list.html index 94c71e519..c9f7a4cd0 100644 --- a/doc/devel/uml/classes_list.html +++ b/doc/devel/uml/classes_list.html @@ -39,8 +39,10 @@ Category
Clip
Clip
+CmdClosure
Codec
CodecAdapter
+Command
CompoundClip
CompoundMedia
Condition
@@ -53,8 +55,10 @@ DB
DefaultsManager
DefaultsRegistry
+DoAsync
DoAttach
DoRecurse
+DoSync
Effect
Effect
Error
@@ -78,6 +82,7 @@ FrameDescriptor
FrameReference
GLBuf
+HandlingPattern
ImplFacade
InstanceHandle
Interpolator
@@ -98,6 +103,7 @@ Meta
MObject
Monitor
+Mutation
Mutex
NodeCreatorTool
NodeWiring
@@ -127,6 +133,7 @@ QueryHandler
QueryHandlerImpl
ReadSource
+RedoLast
RelativeLocation
RelType
RenderEngine
@@ -158,6 +165,7 @@ StreamTypeID
Struct
STypeManager
+Target
Thread
Time
Timeline
@@ -169,6 +177,8 @@ Trafo
TypeHandler
TypeHandler<Pipe>
+UndoMutation
+UndoSync
Unknown
User
VFrame
diff --git a/doc/devel/uml/fig134021.png b/doc/devel/uml/fig134021.png new file mode 100644 index 0000000000000000000000000000000000000000..c3acb367712339244e02e7d4a2162a58d493ae2c GIT binary patch literal 23301 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≶ILPD(VI#RXi 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 TkwY+I8gWM3P%BTv=8yjYlT|l% literal 0 HcmV?d00001 diff --git a/doc/devel/uml/index.html b/doc/devel/uml/index.html index 5257dd3f7..2e6e4c680 100644 --- a/doc/devel/uml/index.html +++ b/doc/devel/uml/index.html @@ -19,7 +19,7 @@ Documentation

Properties:

  • :

  • -
  • CopyrightClaim:

    Copyright (C) Lumiera.org
    2008, Christian Thaeter <ct@pipapo.org>

  • +
  • CopyrightClaim:

    Copyright (C) Lumiera.org
    2008, Hermann Vosseler <Ichthyostega@web.de>

  • GPLHeader:
    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.

  • html dir:
    /mnt/Lager/heim/devel/lumi/doc/devel/uml/

@@ -147,7 +147,7 @@ Documentation
Artifact Lumiera

the main executable to be built

Depends on common

Depends on gui

Depends on proc

Depends on backend

Stereotype: executable

-

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

+

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

Artifact main

Stereotype: source

@@ -774,7 +774,7 @@ Documentation

2.2 Package Control

-
+

Command handling, Proc-Layer dispatcher, controller and administrative facilities

2.2.1 Class View Controller Workings

@@ -829,6 +829,24 @@ reuse exiting Engine

Selection :

    Transformation

    + +

    2.2.2 Class View Command Handling

    +
    + +

    +

    Command structure



    +
    Class Command
    +
    +
    Class Mutation
    +
    +
    +
    Class DoSync
    +
    Class DoAsync
    +
    Class UndoSync
    +
    Class RedoLast
    +
    Class Target
    +
    +

    2.3 Package MObject

    @@ -870,7 +888,6 @@ reuse exiting Engine

    Selection :

      Transformation
      -

      2.3.2 Package Builder

      diff --git a/doc/devel/uml/index_67.html b/doc/devel/uml/index_67.html index a17989712..128becdac 100644 --- a/doc/devel/uml/index_67.html +++ b/doc/devel/uml/index_67.html @@ -24,54 +24,60 @@ callDownoperation callDownoperation Callerclass +capturerelation categoryrelationprimary tree like classification of the asset 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. +chainrelationChain of additional Placements further constraining the position of this MObject 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 -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 +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.
      client codecomponent Clipclassbookkeeping (asset) view of a media clip. -clipartifacta Media Clip clipartifactbookkeeping (asset) view of a media clip. +clipartifacta Media Clip Clipclass clipsrelation +closureattribute +CmdClosureclass Codecclassdescription of some media data decoder or encoder facility codecartifactdescription of some media data decoder or encoder facility CodecAdapterclass codecadapterartifactProcessing Node for (de)coding media data codegenpackageThis package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skeleton. +CommandclassKey abstraction for all proc/edit operations and UNDO management +Command Handlingclass view +Command structureclass diagram commonpackagesourcecode package

      Common library and helper classes CommonLibcomponent CommonLibpackage @@ -99,7 +105,7 @@ constraintartifactLocatingPin representing an directive by the user that
      must not be violated Constraintclass controlpackagesourcecode package

      The Processing and Render Controller,
      and the Proc-Layer dispatcher -Controlpackage +ControlpackageCommand handling, Proc-Layer dispatcher, controller and administrative facilities Controllercomponent Controller Entitiesclass diagram Controller Workingsclass view diff --git a/doc/devel/uml/index_68.html b/doc/devel/uml/index_68.html index e9e768a1e..40b7b291d 100644 --- a/doc/devel/uml/index_68.html +++ b/doc/devel/uml/index_68.html @@ -32,13 +32,16 @@ designpackage designpackageAll things concering the big picture.
      Not a real code package, rather a container for design drafts, specifications, decisions. detect Channelsuse case -determine Render Paramsopaque activity action determine Render Paramsexpansion region +determine Render Paramsopaque activity action devnullclass instance Dispatchercomponent dispatchOpoperation +doattribute +DoAsyncclass DoAttachclass DoRecurseclass +DoSyncclass diff --git a/doc/devel/uml/index_69.html b/doc/devel/uml/index_69.html index 37fab2669..0c6f365e7 100644 --- a/doc/devel/uml/index_69.html +++ b/doc/devel/uml/index_69.html @@ -43,6 +43,7 @@ errorartifactLumiera Exception Interface establish partitioningexpansion region EXE Deploymentdeployment viewdefines and lists how the Lumiera executable has to be created +executeoperation ExitNodeclassThe output of the render pipeline. Pulling from such exit nodes actually ivokes the render process exitnodeartifactspecial Processing Node providing "pullable" output explicitplacementartifactspecial Placement yielding an absolute location (Time,Track)-location for a MObject diff --git a/doc/devel/uml/index_72.html b/doc/devel/uml/index_72.html index 7e5b73a00..90532e3e5 100644 --- a/doc/devel/uml/index_72.html +++ b/doc/devel/uml/index_72.html @@ -20,11 +20,12 @@ handlerelationweak pointer handlesrelation handles_availableattributeinitialized to the maximum number of filehandles the backend may use for mapped files. When no handles are available, the handle which is last in the handles list is closed and (re-)used.
      Else this number is decremented for each new filehandle used and incremented for any one explicitly freed. +HandlingPatternclass Hierarchyclass diagramLumiera Exception hierarchy howtoProcoperation@return descriptor how to build a render pipeline corresponding to this media 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 844b1bf03..8dc64d64b 100644 --- a/doc/devel/uml/index_73.html +++ b/doc/devel/uml/index_73.html @@ -18,12 +18,13 @@ + - + diff --git a/doc/devel/uml/index_77.html b/doc/devel/uml/index_77.html index 56c268d60..bef78819f 100644 --- a/doc/devel/uml/index_77.html +++ b/doc/devel/uml/index_77.html @@ -34,8 +34,8 @@ - + @@ -43,6 +43,7 @@ +
      NameKindDescription
      idattributeAsset primary key.
      IDattribute
      ImplFacadeclass
      In Memory Databaseclass diagram
      inFixtureactivity action pin
      inputclass instance
      inputclass instance
      inputclass instance
      inputclass instance
      instanceoperation
      InstanceHandleclass
      instructionsrelation
      MediaKindclass
      merge activity nodemerge activity node
      Metaclasskey abstraction: metadata and organisational asset
      metaartifactabstract base class of all MObjects representing meta data or processing instructions
      metaartifactkey abstraction: metadata and organisational asset
      metaartifactabstract base class of all MObjects representing meta data or processing instructions
      Metaclass
      mobjectartifactKey Abstraction: A Media Object in the Session
      mobjectpackagesourcecode package

      MObject Subsystem
      including the Session (EDL), Builder and Processing Controller
      MObjectclass
      Monitorclass
      multichannel clipobject diagram
      Mutationclass
      MutexclassI provided a reworked Mutex class in my Cinelerra2 repository
      diff --git a/doc/devel/uml/index_78.html b/doc/devel/uml/index_78.html index 74fa8a9d8..2671839d3 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_80.html b/doc/devel/uml/index_80.html index 5f43290e4..a9a67427a 100644 --- a/doc/devel/uml/index_80.html +++ b/doc/devel/uml/index_80.html @@ -22,6 +22,7 @@ + diff --git a/doc/devel/uml/index_82.html b/doc/devel/uml/index_82.html index 8c7b345eb..3f9b13363 100644 --- a/doc/devel/uml/index_82.html +++ b/doc/devel/uml/index_82.html @@ -18,6 +18,7 @@
      NameKindDescription
      nameattributeelement ID, comprehensible but sanitized. The tuple (category, name, org) is unique.
      nameattribute
      need sub objectuse case
      nextrelationnext additional LocatingPin, if any
      node1class instance
      ParameterclassDescriptor and access object for a plugin parameter. Parameters may be provided with values from the session, and this values may be automated.
      paramproviderartifactinterface denoting a source for actual Parameter values
      ParamProviderclassA facility to get the actual value of a plugin/effect parameter
      paramsrelation
      paramsrelation
      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
      + diff --git a/doc/devel/uml/index_83.html b/doc/devel/uml/index_83.html index 028888285..ceab40c4a 100644 --- a/doc/devel/uml/index_83.html +++ b/doc/devel/uml/index_83.html @@ -36,8 +36,8 @@ - + @@ -51,8 +51,8 @@ - + diff --git a/doc/devel/uml/index_84.html b/doc/devel/uml/index_84.html index 361bf1d1f..58b8a6bf5 100644 --- a/doc/devel/uml/index_84.html +++ b/doc/devel/uml/index_84.html @@ -17,6 +17,8 @@
      NameKindDescription
      ReadSourceclass
      RedoLastclass
      refPointclass instance
      regoperationregisters an asset object in the internal DB, providing its unique key
      registryrelation@internal Table or DB holding all registered asset instances.
      ServiceImplclass
      Sessioncomponent
      sessionartifactInterface: the session edited by the user
      Sessionclass view
      sessionpackagesourcecode package

      Everything concerning the EDL and Session, within the MObject Subsystem
      Sessionclass view
      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
      + + @@ -34,8 +36,8 @@ - + @@ -45,12 +47,12 @@ - + - +
      NameKindDescription
      Targetclass
      targetsrelation
      the render configuration flowactivity diagram
      theApp_attributeholds the single instance and triggers initialization
      theFixturerelation
      Trackclassstructural asset holding the configuration of a track in the EDL
      trackattribute
      trackrelation
      trackartifactstructural asset holding the configuration of a track in the EDL
      trackartifactA grouping device within the EDL. The corresponding Placement
      by which this Track object is refered defines fallback placing
      properties to be used by all objects placed on this track in
      case they don't specify more concrete placements.
      Typically, tracks are used do make default Port connections,
      define a layer or pan for sound and for for disabling groups
      of clips. Note tracks are grouped in a tree like fashion.
      trackartifactstructural asset holding the configuration of a track in the EDL
      trackrelation
      Trackclass
      tracksrelationelementary media assets comprising this compound
      treatoperation
      treatoperationThis operation is to be overloaded for the specific MObject subclasses to be treated.
      treatoperation
      treatoperation
      treatoperation
      treatoperation
      treatoperation
      treatoperation
      treatoperation
      treatoperation
      treatoperation
      TypeHandlerclass
      TypeHandler<Pipe>class
      diff --git a/doc/devel/uml/index_85.html b/doc/devel/uml/index_85.html index dafc717cb..ce1f36dc0 100644 --- a/doc/devel/uml/index_85.html +++ b/doc/devel/uml/index_85.html @@ -17,6 +17,10 @@ + + + + diff --git a/doc/devel/uml/packages.html b/doc/devel/uml/packages.html index 25b52f427..7b039a400 100644 --- a/doc/devel/uml/packages.html +++ b/doc/devel/uml/packages.html @@ -27,7 +27,7 @@ - + diff --git a/doc/devel/uml/public_operations.html b/doc/devel/uml/public_operations.html index fe9b01e39..717b3562d 100644 --- a/doc/devel/uml/public_operations.html +++ b/doc/devel/uml/public_operations.html @@ -32,6 +32,7 @@ + diff --git a/doc/devel/uml/public_properties.html b/doc/devel/uml/public_properties.html index 6fa20439e..58690294f 100644 --- a/doc/devel/uml/public_properties.html +++ b/doc/devel/uml/public_properties.html @@ -19,12 +19,16 @@ + + + +
      NameKindDescription
      undoattribute
      UndoMutationclass
      undoOprelation
      UndoSyncclass
      Unknownclassplaceholder for unknown or unavailable media source
      unknownartifactplaceholder for unknown or unavailable media source
      usageuse case view
      CommonLib
      ConfigQuery
      controlsrcsourcecode package

      The Processing and Render Controller,
      and the Proc-Layer dispatcher
      Control
      ControlCommand handling, Proc-Layer dispatcher, controller and administrative facilities
      design
      designAll things concering the big picture.
      Not a real code package, rather a container for design drafts, specifications, decisions.
      enginesrcsourcecode package

      The Core Render Engine
      currEDLSessionThe EDL currently in focus. In most cases, Session and EDL are almost the same, just EDL emphasizes the collection aspect. But generally (for larger editing projects) one Session can contain several EDLs, which may even be nested. At any given time, only one of these EDLs has focus and recieves the editing commands.
      dispatchOpVisitable
      enableAssetchange the enabled status of this asset. Note the corresponding #isActive predicate may depend on the enablement status of parent assets as well
      executeCommand
      fetchState
      findTypeHandler
      getAppconfigaccess the configuation value for a given key.
      @return empty string for unknown keys, else the corresponding configuration value
      PropertyClassDescription
      categoryAssetprimary tree like classification of the asset
      currentSessionStandard access path to get at the current session via the Session Manager, which acts as a "PImpl" smart pointer
      doCommand
      idAssetAsset primary key.
      IDCommand
      nameAssetelement ID, comprehensible but sanitized. The tuple (category, name, org) is unique.
      nameCommand
      nodesDoAttach
      orgAssetorigin 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 Lumiera codebase is "lumi".
      pointDoAttachidentifying the point where the nodes should be attached
      subTracksTrackChild tracks in a tree structure
      undoCommand
      versionAssetversion number of the thing or concept represented by this asset. Of each unique tuple (name, category, org) there will be only one version in the whole system. Version 0 is reserved for internal purposes. Versions are considered to be ordered, and any higher version is supposed to be fully backwards compatible to all previous versions.
      diff --git a/uml/lumiera/128261 b/uml/lumiera/128261 index dc029b147..a6af8fb25 100644 --- a/uml/lumiera/128261 +++ b/uml/lumiera/128261 @@ -1,6 +1,6 @@ format 58 "MObject" // ProcessingLayer::MObject - revision 35 + revision 36 modified_by 5 "hiv" // class settings //class diagram settings @@ -1432,21 +1432,6 @@ ${inlines} b parent class_ref 139909 // LocatingPin end end - - class 141957 "ProcDispatcher" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} - { -${members} }; -${inlines} -" - java_decl "" - php_decl "" - python_2_2 python_decl "" - idl_decl "" - explicit_switch_type "" - - end end package_ref 128901 // Builder diff --git a/uml/lumiera/129029 b/uml/lumiera/129029 index e091ca09b..ffbb809fb 100644 --- a/uml/lumiera/129029 +++ b/uml/lumiera/129029 @@ -1,57 +1,57 @@ -format 40 +format 58 "Control" // ProcessingLayer::Control - revision 7 + revision 8 modified_by 5 "hiv" // class settings //class diagram settings - 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 + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default //use case diagram settings - package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default + package_name_in_tab default show_context default auto_label_position default draw_all_relations default class_drawing_mode default shadow default show_stereotype_properties default //sequence diagram settings - show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default + show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default show_stereotype_properties default //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default show_stereotype_properties default //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default + write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default show_stereotype_properties default //component diagram settings package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default + draw_component_as_icon default show_component_req_prov default show_component_rea default show_stereotype_properties default //deployment diagram settings package_name_in_tab default show_context default write_horizontally default auto_label_position default draw_all_relations default shadow default - draw_component_as_icon default show_component_req_prov default show_component_rea default + draw_component_as_icon default show_component_req_prov default show_component_rea default show_stereotype_properties default //state diagram settings package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default + show_activities default region_horizontally default drawing_language default show_stereotype_properties default //activity diagram settings 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 + show_infonote default drawing_language default show_stereotype_properties default + comment "Command handling, Proc-Layer dispatcher, controller and administrative facilities" classview 128389 "Controller Workings" //class diagram settings - 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 + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default //collaboration diagram settings - show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default show_stereotype_properties default //object diagram settings - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default + write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default show_stereotype_properties default //sequence diagram settings - show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default + show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default show_stereotype_properties default //state diagram settings package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default - show_activities default region_horizontally default drawing_language default + show_activities default region_horizontally default drawing_language default show_stereotype_properties default //class settings //activity diagram settings 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 - + show_infonote default drawing_language default show_stereotype_properties default classdiagram 128645 "Controller Entities" - 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 + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default size A4 end activity 128133 "configure Render" activitydiagram 129541 "the render configuration flow" 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 + show_infonote default drawing_language default show_stereotype_properties default size A4 end @@ -123,6 +123,8 @@ ${members} }; ${inlines} " java_decl "" + php_decl "" + python_2_2 python_decl "" idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { ${members}}; " @@ -139,12 +141,14 @@ ${members} }; ${inlines} " java_decl "" + php_decl "" + python_2_2 python_decl "" idl_decl "" explicit_switch_type "" comment "While building a render engine, this Strategy class decides on the actual render strategy in accordance to the current controller settings (system state)" operation 128261 "buildProcessor" - public return_type class_ref 131461 // Processor + public return_type class_ref 131461 // RenderGraph nparams 0 cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${)}${const}${volatile} ${throw}${abstract};" cpp_def "${comment}${inline}${type} @@ -156,6 +160,8 @@ ${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl} " + + end end @@ -167,6 +173,8 @@ ${members} }; ${inlines} " java_decl "" + php_decl "" + python_2_2 python_decl "" idl_decl "" explicit_switch_type "" @@ -184,6 +192,8 @@ ${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl} " + + end end @@ -195,6 +205,387 @@ ${members} }; ${inlines} " java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + end + end + + classview 130693 "Command Handling" + //class diagram settings + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + //collaboration diagram settings + show_full_operations_definition default show_hierarchical_rank default write_horizontally default drawing_language default package_name_in_tab default show_context default draw_all_relations default shadow default show_stereotype_properties default + //object diagram settings + write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default show_stereotype_properties default + //sequence diagram settings + show_full_operations_definition default write_horizontally default class_drawing_mode default drawing_language default draw_all_relations default shadow default show_stereotype_properties default + //state diagram settings + package_name_in_tab default show_context default auto_label_position default write_trans_label_horizontally default show_trans_definition default draw_all_relations default shadow default + show_activities default region_horizontally default drawing_language default show_stereotype_properties default + //class settings + //activity diagram settings + 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 show_stereotype_properties default + classdiagram 134021 "Command structure" + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + size A4 + end + + class 148485 "Command" + visibility public stereotype "interface" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "${comment}${@}${visibility}interface ${name}${extends} { +${members}} +" + php_decl "${comment}${visibility}interface ${name} { +${members}} +" + python_2_2 python_decl "" + idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { +${members}}; +" + explicit_switch_type "" + + comment "Key abstraction for all proc/edit operations and UNDO management" + attribute 132613 "ID" + const_attribute public explicit_type "" + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + php_decl "" + python_decl "" + idl_decl "" + end + + attribute 132741 "name" + const_attribute public explicit_type "Symbol" + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + php_decl "" + python_decl "" + idl_decl "" + end + + attribute 132869 "do" + public type class_ref 148741 // Mutation + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + php_decl "" + python_decl "" + idl_decl "" + end + + attribute 132997 "undo" + public type class_ref 148869 // UndoMutation + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + php_decl "" + python_decl "" + idl_decl "" + end + + attribute 133125 "closure" + private type class_ref 148997 // CmdClosure + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + php_decl "" + python_decl "" + idl_decl "" + end + + operation 137733 "execute" + public explicit_return_type "void" + nparams 1 + param in name "context" explicit_type "HandlingPattern" + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + +" + + + + + end + + classrelation 172805 // + relation 162821 ---> + stereotype "has_a" + a role_name "" multiplicity "1" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 172805 // + b multiplicity "1" parent class_ref 148997 // CmdClosure + end + + classrelation 173189 // + relation 163205 ---> + stereotype "has_a" + a role_name "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 173189 // + b parent class_ref 148741 // Mutation + end + + classrelation 173317 // + relation 163333 ---> + a role_name "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 173317 // + b parent class_ref 148869 // UndoMutation + end + + classrelation 173573 // + relation 163589 -_-> + stereotype "invokes" + a package + cpp default "#include in source" + classrelation_ref 173573 // + b parent class_ref 148613 // HandlingPattern + end + end + + class 148613 "HandlingPattern" + abstract visibility public stereotype "interface" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 173701 // + relation 163717 -_-> + stereotype "involves" + a package + cpp default "#include in source" + classrelation_ref 173701 // + b parent class_ref 141957 // ProcDispatcher + end + end + + class 148741 "Mutation" + visibility package stereotype "func" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + end + + class 148869 "UndoMutation" + visibility package stereotype "func" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 171909 // + relation 161925 ---|> + a public + cpp default "${type}" + classrelation_ref 171909 // + b parent class_ref 148741 // Mutation + end + + classrelation 172933 // capture () + relation 162949 ---> + a role_name "capture" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 172933 // capture () + b parent class_ref 148741 // Mutation + end + + classrelation 173061 // undoOp () + relation 163077 ---> + a role_name "undoOp" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 173061 // undoOp () + b parent class_ref 148741 // Mutation + end + end + + class 148997 "CmdClosure" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 172549 // targets () + relation 162565 *--> + stereotype "list" + a role_name "targets" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + classrelation_ref 172549 // targets () + b multiplicity "*" parent class_ref 149637 // Target + end + + classrelation 172677 // params () + relation 162693 *--> + stereotype "list" + a role_name "params" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + classrelation_ref 172677 // params () + b multiplicity "*" parent class_ref 134533 // Parameter + end + end + + class 149125 "DoSync" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 172037 // + relation 162053 ---|> + a public + cpp default "${type}" + classrelation_ref 172037 // + b parent class_ref 148613 // HandlingPattern + end + end + + class 149253 "DoAsync" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 172165 // + relation 162181 ---|> + a public + cpp default "${type}" + classrelation_ref 172165 // + b parent class_ref 148613 // HandlingPattern + end + end + + class 149381 "UndoSync" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 172293 // + relation 162309 ---|> + a public + cpp default "${type}" + classrelation_ref 172293 // + b parent class_ref 148613 // HandlingPattern + end + end + + class 149509 "RedoLast" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 172421 // + relation 162437 ---|> + a public + cpp default "${type}" + classrelation_ref 172421 // + b parent class_ref 148613 // HandlingPattern + end + end + + class 149637 "Target" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" + idl_decl "" + explicit_switch_type "" + + end + + class 141957 "ProcDispatcher" + visibility package stereotype "control" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + php_decl "" + python_2_2 python_decl "" idl_decl "" explicit_switch_type "" diff --git a/uml/lumiera/134021.diagram b/uml/lumiera/134021.diagram new file mode 100644 index 000000000..47e68f995 --- /dev/null +++ b/uml/lumiera/134021.diagram @@ -0,0 +1,146 @@ +format 58 + +classcanvas 128005 class_ref 148485 // Command + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + color verylightorange + xyz 177 87 1994 +end +classcanvas 128133 class_ref 148613 // HandlingPattern + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 424 293 2000 +end +classcanvas 128261 class_ref 148741 // Mutation + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 338 102 2000 +end +classcanvas 128389 class_ref 148869 // UndoMutation + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 327 173 2000 +end +classcanvas 128517 class_ref 148997 // CmdClosure + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 25 178 2000 +end +classcanvas 128773 class_ref 149125 // DoSync + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 488 371 2000 +end +classcanvas 128901 class_ref 149253 // DoAsync + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 488 416 2000 +end +classcanvas 129029 class_ref 149381 // UndoSync + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 488 462 2000 +end +classcanvas 129157 class_ref 149509 // RedoLast + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 488 507 2000 +end +classcanvas 130565 class_ref 134533 // Parameter + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 112 298 2005 +end +classcanvas 130693 class_ref 149637 // Target + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + xyz 112 249 2010 +end +classcanvas 133765 class_ref 141957 // ProcDispatcher + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_members_multiplicity default show_members_initialization default member_max_width 0 show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default show_stereotype_properties default + color lightred + xyz 279 401 2000 +end +relationcanvas 128645 relation_ref 161925 // + from ref 128389 z 1999 to ref 128261 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 129285 relation_ref 162053 // + geometry VHr + from ref 128773 z 1999 to point 467 388 + line 130309 z 1999 to ref 128133 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 129669 relation_ref 162181 // + geometry VHr + from ref 128901 z 1999 to point 467 433 + line 129797 z 1999 to ref 128133 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 129925 relation_ref 162309 // + geometry VHr + from ref 129029 z 1999 to point 467 479 + line 130053 z 1999 to ref 128133 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 130181 relation_ref 162437 // + geometry VHr + from ref 129157 z 1999 to point 467 524 + line 130437 z 1999 to ref 128133 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 130821 relation_ref 162565 // + geometry VH + from ref 128517 z 1999 stereotype "<>" xyz 67 239 3000 to point 59 266 + line 130949 z 1999 to ref 130693 + role_a_pos 69 251 3000 no_role_b + no_multiplicity_a multiplicity_b_pos 47 222 3000 +end +relationcanvas 131077 relation_ref 162693 // + geometry VH + from ref 128517 z 1999 stereotype "<>" xyz 66 300 3000 to point 59 327 + line 131205 z 1999 to ref 130565 + role_a_pos 67 312 3000 no_role_b + no_multiplicity_a multiplicity_b_pos 47 222 3000 +end +relationcanvas 131333 relation_ref 162821 // + decenter_begin 780 + from ref 128005 z 1999 stereotype "<>" xyz 110 184 3000 to ref 128517 + no_role_a no_role_b + multiplicity_a_pos 107 202 3000 multiplicity_b_pos 160 202 3000 +end +relationcanvas 131461 relation_ref 162949 // + decenter_begin 543 + from ref 128389 z 1999 to point 453 201 + line 132229 z 1999 to point 453 128 + line 131717 z 1999 to ref 128261 + role_a_pos 410 174 3000 no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 131845 relation_ref 163077 // + decenter_begin 280 + from ref 128389 z 1999 to point 453 186 + line 131973 z 1999 to point 453 128 + line 132101 z 1999 to ref 128261 + role_a_pos 409 203 3000 no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 132613 relation_ref 163205 // + from ref 128005 z 1999 stereotype "<>" xyz 255 165 3000 to point 246 162 + line 132741 z 1999 to ref 128261 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 132869 relation_ref 163333 // + from ref 128005 z 1999 to point 246 180 + line 133125 z 1999 to ref 128389 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 133509 relation_ref 163589 // + from ref 128005 z 1993 stereotype "<>" xyz 263 248 3000 to point 245 214 + line 133637 z 1993 to ref 128133 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +relationcanvas 133893 relation_ref 163717 // + from ref 128133 z 1999 stereotype "<>" xyz 314 370 3000 to ref 133765 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +end +preferred_whz 575 622 1 +end diff --git a/uml/lumiera/lumiera.prj b/uml/lumiera/lumiera.prj index a0b1cba7b..c978054a5 100644 --- a/uml/lumiera/lumiera.prj +++ b/uml/lumiera/lumiera.prj @@ -1,6 +1,6 @@ format 58 "lumiera" - revision 51 + revision 52 modified_by 5 "hiv" cpp_root_dir "../../src/" @@ -54,7 +54,7 @@ format 58 " key "CopyrightClaim" value " Copyright (C) Lumiera.org - 2008, Christian Thaeter + 2008, Hermann Vosseler " key "html dir" value "/mnt/Lager/heim/devel/lumi/doc/devel/uml/" diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 229003ee3..14914c15e 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -951,6 +951,34 @@ TertiaryMid: #99a TertiaryDark: #667 Error: #f88 +
      +
      Within Proc-Layer, a Command is the abstract representation of a single operation or a compound of operations mutating the HighLevelModel.
      +Thus, each command is a ''Functor'' and a ''Closure'' ([[command pattern|http://en.wikipedia.org/wiki/Command_pattern]]), allowing commands to be treated uniformly, enqueued in a [[dispatcher|ProcDispatcher]], logged to the SessionStorage and registered with the UndoManager.
      +
      +&rarr; see CommandHandling
      +
      +
      +
      Organising any ''mutating'' operations executable by the user (via GUI) by means of the [[command pattern|http://en.wikipedia.org/wiki/Command_pattern]] can be considered //state of the art//&nbsp; today. First of all, it allows to discern the specific implementation operations to be called on one or several objects within the HighLevelModel from the operation requested by the user, the latter being rather a concept. A command can be labeled clearly, executed under controlled circumstances, allowing transactional behaviour.
      +
      +
      +!Defining commands
      +[>img[Structure of Commands|uml/fig134021.png]] Basically, a command could contain arbitrary operations, but we'll assume that it causes a well defined mutation within the HighLevelModel, which can be ''undone''. Thus, when defining a command, we need to specify not only a function doing the mutation, but also another function which might be called later to reverse the effect of the action. Besides, the action operates on a number of ''target'' objects and additionally may require a set of ''parameter'' values. These are to be stored explicitly within the command object, thus creating a ''closure'' &mdash; the operation //must not//&nbsp; rely on other hidden parameters (maybe with the exception of very generic singleton system services?).
      +
      +Theoretically, defining the "undo" operation might utilise two different approaches:
      +* specifying an //inverse operation,// known to cancel out the effect of the command operation
      +* capturing a //state memento,// which can be played back to restore the state found prior to executing the command.
      +
      +while obviously the first solution is much simpler to implement on behalf of the command framework, the second solution has distinct advantages, especially in the context of an editing application: there might be rounding or calculation errors, the inverse might be difficult to define correctly, the effect of the operation might depend on circumstances, be random, or might even trigger a resolution operation to yield the final result. Thus the decision is within Lumiera to //favour state capturing// &mdash; but in a modified, semi-manual and not completely exclusive way.
      +
      +!Undo state
      +While the usual implementation might automatically capture the whole model (resulting in a lot of data to be stored and some uncertainty about the scope of the model to be captured), in Lumiera we rely instead on the client code to provide a ''capture function'' and a ''playback function'' alongside with the actual operation. To help with this task, we provide a set of standard handlers for common situations. This way, operations might capture very specific information, might provide an "intelligent undo" to restore a given semantic instead of just a fixed value &mdash; and moreover the client code is free actually to employ the "inverse operation" model in special cases where it just makes more sense.
      +
      +!Handling of commands
      +A command may be defined completely from scratch, or it might just instantiate a CommandPrototype with specific targets and parameters. The command could then be serialised and later be recovered and re-bound with the parameters, but usually it will be handed over to the ProcDispatcher, pending execution. When ''invoking'', the handling sequence is to [[log the command|SessionStorage]], then call the ''undo capture function'', followed from calling the actual ''operation function''. After success, the logging and [[undo registration|UndoManager]] is completed. In any case, finally the ''result signal'' (a functor previously stored within the command) is emitted.
      +
      +By design, commands are single-serving value objects; executing an operation repeatedly requires creating a collection of command objects, one for each invocation.
      +
      +
      The Connection Manager is a service for wiring connections and for querying information and deriving decisions regarding various aspects of data streams and the possibility of connections. The purpose of the Connection Manager is to isolate the [[Builder]], which is client of this information and decision services, from the often convoluted details of type information and organizing a connection.
       
      @@ -2978,7 +3006,7 @@ We need a way of addressing existing [[pipes|Pipe]]. Besides, as the Pipes and T
       <<tasksum end>>
       
      -
      +
      //This page is a scrapbook for working out the implementation of the [[Session Datastructure in Memory|SessionDataMem]]//
       This is a difficult untertaking, because there are several dependencies (most of which aren't fully designed yet as of 5/09)
       * the GUI uses an adapted version of the HighLevelModel; these datastructures are intended to be backed by the Session
      @@ -2998,6 +3026,8 @@ This is a difficult untertaking, because there are several dependencies (most of
       
       <<tasksum start>>
       <<taskadder below>>
      +<<task >> implement a system for defining parameters and targets
      +<<task >> implement a system for generating operations
       <<task >> define the general structure of operations
       <<task >> specify the editing operations
       
      @@ -3005,6 +3035,8 @@ This is a difficult untertaking, because there are several dependencies (most of
       <<task 1 1 1>> evaluate models for the [[reference problem|MObjectRef]]
       <<task 2 3 3>> implement an hash-ID
       <<task 1 2 2>> incorporate this ID into class Placement
      +<<task 2 2>> define PlacementRef and MObjectRef behaviour
      +<<task 1 0>> wire up [[Session]] interface as a LayerSeparationInterface
       <<task 1 1 0>> implement PlacementRef
       <<task 2 2 0>> implement MObjectRef
       
      @@ -3567,17 +3599,31 @@ Currently as of 5/09, this is an ongoing [[implementation and planning effort|Pl
       
       {{red{TODO...}}}
      -
      -
      {{red{WIP}}}
      +
      +
      "Session Interface", when used in a more general sense, denotes a compound of several interfaces and facilities, together forming the primary access point to the user visible contents and state of the editing project.
      +* the API of the session class
      +* the accompanying management interface (SessionManager API)
      +* an LayerSeparationInterfaces allowing to access these interfaces from outside the Proc-Layer
      +* the primary public ~APIs exposed on the objects to be queried and retrieved via the session class API
      +** Sequence
      +** Placement
      +** Clip
      +** Track
      +** Effect
      +** Automation
      +* the [[command|CommandHandling]] interface, including the [[undo|UndoManager]] facility
      +
      +{{red{WIP}}}
      -
      +
      The Session contains all informations, state and objects to be edited by the User (&rarr;[[def|Session]]).
       As such, the SessionInterface is the main entrance point to Proc-Layer functionality, both for the primary EditingOperations and for playback/rendering processes.
       
       Currently (as of 5/09), Ichthyo is [[targeting|PlanningSessionInMem]] a first preliminary implementation of the [[Session in Memory|SessionDataMem]]
       
       !Design and handling of Objects within the Session
      -Objects are attached and manipulated by [[placements|Placement]]; thus the organisation of these placements is part of the session data layout. Effectively, such a placement within the session behaves like an //instances// of a given object, and at the same time it defines the "non-substantial" properties of the object, e.g. its positions and relations. [[References|MObjectRef]] to these placement entries are handed out as parameters, both down to the [[Builder]] and from there to the render processes within the engine, but also to external parts within the GUI and in plugins. The actual implementation of these object references is built on top of the PlacementRef tags, thus relying on the PlacementIndex the session maintains to keep track of all placements and their relations.
      +Objects are attached and manipulated by [[placements|Placement]]; thus the organisation of these placements is part of the session data layout. Effectively, such a placement within the session behaves like an //instances// of a given object, and at the same time it defines the "non-substantial" properties of the object, e.g. its positions and relations. [[References|MObjectRef]] to these placement entries are handed out as parameters, both down to the [[Builder]] and from there to the render processes within the engine, but also to external parts within the GUI and in plugins. The actual implementation of these object references is built on top of the PlacementRef tags, thus relying on the PlacementIndex the session maintains to keep track of all placements and their relations. While &mdash; using these references &mdash; an external client can access the objects and structures within the session, any actual ''mutations'' should be done based on the CommandHandling: a single operation of a sequence of operations is defined as [[Command]], to be [[dispatched as mutation operation|ProcDispatcher]]. Following this policy ensures integration with the SessionStorage and provides (unlimited) [[UNDO|UndoManager]]. +
      <<<
      @@ -5232,13 +5278,13 @@ A good starting point for understanding our library implementation of the visito
       ** when creating a new "~Visitable-and-Tool" hierarchy, the user should derive (or typedef) and parametrize the {{{Visitable}}}, {{{Tool}}} and {{{Applicable}}} templates, typically into a new namespace. An example can be seen in {{{proc/mobject/builder/buildertool.hpp}}}
       
      -
      +
      Using the ''Visitor Design Pattern'' is somewhat controversial, mainly because this pattern is rather complicated, requires certain circumstances to be usefull, and &mdash; especially when used in the original form described by Gamma et al &mdash; puts quite some burden on the implementor. Contrary to some patterns commonly used today (like e.g. singleton or factory), visitor is by no way a popular pattern. Ichthyo thinks that until now it's potential stregths remain still to be discovered, due to obvious and well known weaknesses. This problems can be ameliorated a good deal by using template based library implementation techniques along the lines of the [[Loki library|http://loki-lib.sourceforge.net/]].
       &rarr; [[implementation deatails|VisitingToolImpl]]
       
       !why bothering with visitor?
       In the Lumiera Proc layer, Ichthyo uses the visitor pattern to overcome another notorious problem when dealing with more complex class hierarchies: either, the //interface// (root class) is so unspecific to be almost useless, or, in spite of having a useful contract, this contract will effectively be broken by some subclasses ("problem of elliptical circles"). Initially, when designing the classes, the problems aren't there (obviously, because they could be taken as design flaws). But then, under the pressure of real features, new types are added later on, which //need to be in this hierarchy// and at the same time //need to have this and that special behaviour// and here we go ...
      -Visitor helps us to circumvent this trap: the basic operations can be written against the top level interface, such, that they include visiting some object collection internally. Now, on a case-by-case base, local operations can utilize some sub interface or the given concrete type's public interface. So visitor helps to encapsulate cooperating specific technical details within some concrete visiting tool implementation, while forcing them to be implemented against some interface or sub-interface of the target objects.
      +Visitor helps us to circumvent this trap: the basic operations can be written against the top level interface, such as to include visiting some object collection internally. Now, on a case-by-case base, local operations can utilise a more specific sub interface or the given concrete type's public interface. So visitor helps to encapsulate specific technical details of cooperating objects within the concrete visiting tool implementation, while still forcing them to be implemented against some interface or sub-interface of the target objects.
       
       !!well suited for using visitors
       generally speaking, visitors are preferable when the underlying element type hierarchy is rather stable, but new operations are to be added frequently.