From ea56841389ee6027029680aa3664c72e6ed2c2e2 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Mon, 9 Feb 2009 05:20:58 +0100 Subject: [PATCH] DummyPlayer finished. General Documentation regarding Layer Interfaces and DummyPlayer --- doc/devel/draw/PlayerArch-1.svg | 580 ++++++++++++++++++++++++------- doc/devel/uml/class146565.html | 21 ++ doc/devel/uml/class146693.html | 23 ++ doc/devel/uml/class146821.html | 23 ++ doc/devel/uml/class146949.html | 21 ++ doc/devel/uml/class147077.html | 23 ++ doc/devel/uml/class147205.html | 22 ++ doc/devel/uml/classdiagrams.html | 1 + doc/devel/uml/classes.html | 6 + doc/devel/uml/classes_list.html | 6 + doc/devel/uml/fig132869.png | Bin 0 -> 13284 bytes doc/devel/uml/index.html | 45 ++- doc/devel/uml/index_67.html | 42 +-- doc/devel/uml/index_70.html | 1 + doc/devel/uml/index_73.html | 4 +- doc/devel/uml/index_76.html | 1 + doc/devel/uml/index_80.html | 1 + doc/devel/uml/index_83.html | 5 +- uml/lumiera/128517 | 182 +++++++++- uml/lumiera/129285 | 2 +- uml/lumiera/132869.diagram | 75 ++++ uml/lumiera/5.session | 5 +- uml/lumiera/lumiera.prj | 2 +- wiki/draw/PlayerArch1.png | Bin 56700 -> 61724 bytes wiki/renderengine.html | 115 +++++- 25 files changed, 1021 insertions(+), 185 deletions(-) create mode 100644 doc/devel/uml/class146565.html create mode 100644 doc/devel/uml/class146693.html create mode 100644 doc/devel/uml/class146821.html create mode 100644 doc/devel/uml/class146949.html create mode 100644 doc/devel/uml/class147077.html create mode 100644 doc/devel/uml/class147205.html create mode 100644 doc/devel/uml/fig132869.png create mode 100644 uml/lumiera/132869.diagram diff --git a/doc/devel/draw/PlayerArch-1.svg b/doc/devel/draw/PlayerArch-1.svg index a3799f876..14862c94a 100644 --- a/doc/devel/draw/PlayerArch-1.svg +++ b/doc/devel/draw/PlayerArch-1.svg @@ -29,7 +29,7 @@ inkscape:pageshadow="2" inkscape:zoom="2" inkscape:cx="419.63217" - inkscape:cy="331.20952" + inkscape:cy="291.20952" inkscape:document-units="px" inkscape:current-layer="svg2" inkscape:window-width="1668" @@ -38,7 +38,7 @@ inkscape:window-y="0" width="800px" height="600px" - showgrid="true" + showgrid="false" gridspacingx="2px" gridspacingy="2px" gridanglex="30px" @@ -56,6 +56,19 @@ guidetolerance="5" /> + + + + y="100" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + y="250" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + y="450" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#6c6c6c;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> start(...) + style="font-size:8px;font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">start( slot ) yields Proc (or Backend?) + style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> Displayer (Proxy) + sodipodi:role="line">Display::Sink (functor) PlayerFacade (Proxy) + style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans" + id="tspan2303">Proxy<Player> + sodipodi:nodetypes="ccc" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + y="389.93243" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + y="450" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + y="490" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> PlayContext + sodipodi:nodetypes="cc" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + y="190" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + id="path2241" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#4f4f4f;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#TriangleInL);stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + sodipodi:nodetypes="cc" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + sodipodi:nodetypes="ccc" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + y="250" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> DisplayFacade (Proxy) + sodipodi:role="line">Proxy<Display> + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#4f4f4f;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#TriangleInL);stroke-opacity:1;opacity:1;color:#000000;marker:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#6c6c6c;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> Displayer + id="tspan2294">DisplayerSlot + y="140.06757" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + y="180.06757" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> Displayer + sodipodi:role="line">DisplayerSlot Displayer + id="tspan2312">DisplayerSlot Displayer + sodipodi:role="line">DisplayerSlot + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + transform="translate(529.80198,-99.756098)" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + sodipodi:nodetypes="ccc" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> yields - ProcessImpl + style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + sodipodi:nodetypes="ccc" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + sodipodi:nodetypes="ccc" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> periodically + id="path3436" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2d2abd;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> attach_viewer() + style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">use_display (slot) + y="70" + inkscape:export-filename="/home/hiv/devel/lumi/wiki/draw/PlayerArch1.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + ProcessImpl + + dispatch toGTK main thread... + play(..) + play(..) + not yet implemented... + diff --git a/doc/devel/uml/class146565.html b/doc/devel/uml/class146565.html new file mode 100644 index 000000000..caadd3954 --- /dev/null +++ b/doc/devel/uml/class146565.html @@ -0,0 +1,21 @@ + + + + + + +Class Facade + + + + + +
Class Facade
+

+ + + + +

Declaration :

  • C++ : class Facade
  • Java : package interface Facade

Directly inherited by : Proxy ServiceImpl

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

+ + + + +

Declaration :

  • C++ : class Proxy : public Facade
+ +
Relation <unidirectional association>

Declaration :

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

+ + + + +

Declaration :

  • C++ : class ServiceImpl : public Facade
+ +
Relation <unidirectional association>

Declaration :

+ + diff --git a/doc/devel/uml/class146949.html b/doc/devel/uml/class146949.html new file mode 100644 index 000000000..875ffa2e8 --- /dev/null +++ b/doc/devel/uml/class146949.html @@ -0,0 +1,21 @@ + + + + + + +Class C_Interface + + + + + +
Class C_Interface
+

+ + + + +

Declaration :

  • C++ : class C_Interface

Directly inherited by : C_Instance

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

+ + + + +

Declaration :

+ +
Relation <unidirectional association>

Declaration :

+ + diff --git a/doc/devel/uml/class147205.html b/doc/devel/uml/class147205.html new file mode 100644 index 000000000..09e455a99 --- /dev/null +++ b/doc/devel/uml/class147205.html @@ -0,0 +1,22 @@ + + + + + + +Class InstanceHandle + + + + + +
Class InstanceHandle
+

+ + + + +

Declaration :

  • C++ : template<class C_Interface, class Facade> class InstanceHandle
+
+ + diff --git a/doc/devel/uml/classdiagrams.html b/doc/devel/uml/classdiagrams.html index f66c12462..8159cb541 100644 --- a/doc/devel/uml/classdiagrams.html +++ b/doc/devel/uml/classdiagrams.html @@ -24,6 +24,7 @@ HierarchyLumiera Exception hierarchy In Memory Database interface components +Layer Separation Interface Media-Asset Relations Proc-Asset Relations Render Entities diff --git a/doc/devel/uml/classes.html b/doc/devel/uml/classes.html index 63214df7b..637ca483e 100644 --- a/doc/devel/uml/classes.html +++ b/doc/devel/uml/classes.html @@ -32,6 +32,8 @@ 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 BuilderToolinterfaceUsed according to the visitor pattern: each Tool contains the concrete implementation for one task to be done to the various MObject classes BuildInstruct(Interface) building instructions to be executed by the Builder on the render node network under construction. +C_Instance +C_Interface Caller Categorytree like classification of Assets Clipbookkeeping (asset) view of a media clip. @@ -58,6 +60,7 @@ ExitNodeThe output of the render pipeline. Pulling from such exit nodes actually ivokes the render process ExplicitPlacementinterface External +Facadeinterface Factorya template for generating functor-like Factory objects, used to encapsulate object creation and providing access via smart-pointers only. FeedCache File @@ -75,6 +78,7 @@ FrameReference GLBuf ImplFacade +InstanceHandle InterpolatorProvides the implementation for getting the acutal value of a time varying or automated effect/plugin parameter Invalid Invocation @@ -117,6 +121,7 @@ Project ProjectorSpecial video processing node used to scale and translate image data. Prototype +Proxy PullInput QueryCache QueryHandlerinterface @@ -134,6 +139,7 @@ Seq Sequence Serializeractor +ServiceImpl SessionPrimary 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. SessionImplImplementation class for the Session interface SessManager diff --git a/doc/devel/uml/classes_list.html b/doc/devel/uml/classes_list.html index 96378253b..33f50cb20 100644 --- a/doc/devel/uml/classes_list.html +++ b/doc/devel/uml/classes_list.html @@ -33,6 +33,8 @@ BuilderFacade
BuilderTool
BuildInstruct
+C_Instance
+C_Interface
Caller
Category
Clip
@@ -59,6 +61,7 @@ ExitNode
ExplicitPlacement
External
+Facade
Factory
FeedCache
File
@@ -76,6 +79,7 @@ FrameReference
GLBuf
ImplFacade
+InstanceHandle
Interpolator
Invalid
Invocation
@@ -118,6 +122,7 @@ Project
Projector
Prototype
+Proxy
PullInput
QueryCache
QueryHandler
@@ -135,6 +140,7 @@ Seq
Sequence
Serializer
+ServiceImpl
Session
SessionImpl
SessManager
diff --git a/doc/devel/uml/fig132869.png b/doc/devel/uml/fig132869.png new file mode 100644 index 0000000000000000000000000000000000000000..5935bc63c86672bee9da2ce067594897ddd97f40 GIT binary patch literal 13284 zcmaib1ymK^8t>30As|SD&Cmq`Ra`x=~tMKpLbwq(xFn8fj_i?vA(hf8TrS z-gn=7XDt>SX3m_MJ$rxOuO?JkQ3?~C7#)HjOc`kj6$pYe20yx}@Zdk1!zoq}L#~8k{(iyqxya zdf$uUAX2_p{`#rP77~-jGEkv>FVT@Bf*Kkm$@Ipr?wX*VXxicI|sHm*W_U7V{fPjFTn>#l**JSkpvhiG_b5~cFcrX?-3rhx< z6#+CgJqX87L0N{HIi$OAIyskCwlCg$b{t*d>BmnoIb+Y_hTlapg(I!$g4 z<3(zM=N=v&YwPO>t>9S9OiUjlBKTYn%XtI^b@cUH%F4>Bs*VnSckc?iQcz^f&gwu6 z%*^AHlN5q(6%}Tvo-VV$a?;GDggG|_mNvw_W@cuhD1;|QMyOE14Ukb%QqtD`T2`j0 zuTKH#HMtqu+Rl%SeK%m$($)s&+Ka_~pIu#Dot%==%OC&oBltAr*Ji-U#kIMy(d2bG zIyH3xMrY|{$lbO=qeL$8S$tw*VnRY*PLBP8&Hc5Z zA&C-|J4IJpyYCADU0ko(m&?h!vt8|@pu|M=*RK;oLwk=_`z{H8j*Jiqd0phnB_16e znGL4)dK2Dz{F<5J6@Q>e?fzPdot5=5o6+|`48lL#htlU1Io>}P*t7YpjL!p`Z{lOF zxM}t0SQflV)E`Vt+>d(`-WVDer>dnz4B-fK zZv9jeo@;QThgR0skdcuc6Z(64C{c~p2h*^yuuRa1h~(*x!EFWasWFDqpOcV~Y;SF8 zX=zK)K>U`AZWDIw3-A0k|8K+=j>Wb7-{gGQcbC40Z>q6#fooQ~%gd`Mp4 zNJf#9C9^K!;o)^qi3>G4(#BJUT@)7;Or0N@3b__v$kpG&iS)NLHkTF^6_JvXf{9#O zS{fc6juzl{wlm$I#1ZlL_3hg?aJBbyIjJ^`i!aaj7bu>4RD+vU@G^UE{#&0WFAdE~ z2evScIVW1cV-Ccx}7HvU~uz;LuASp54HC@&te@#cQFSQ*b?AGoB0lAR4np)toxx?Y0T%v7mE*T^9xAQ$+ z5-62VwaRs03$k}2*Emc*U&(CbBl-h;O&zqO_y?{WWh4Vzk9-KYimKh z6McsaN>^_qGpb+0G5+-Qx{4|`Jq@Cil&?$>ye}Hho~sZ_%7Cq{kYwa*FmskaT3Ot# zkCCyI_mq@;p`#1xOB{M4r@_QM*}tG_s0L$XboUe>kwPRghG52WZ(NIt%F#2uo9qgE4qvo) zOASE_j* zehl4v-&{O=_;9|t*#VnEh?{j-K}p}#%Ib1a^tqDSR~NE@p_Zn%g>~7#S&uMV^^X?J z>ATIHT#4^pGP|3f=5M6p=hSj1R8^^5)6SJ-E2zBBSzLj?$C@70E%-HT{~`|MUO>5) zjj95U-A;vPQ7A3ueqg}|-QYzJ>1`amGshi1rCj~OE}6%=vAi-I9nu!Ag9pmR>wGwQ z^fB`EJrOA>%n)u?*sv$O6sDl)@IXT*@4{G)kUTn)BazJ8)N)-xV$yfjxx@G&H z-)y1^VM0o6PJw$-!nO6zR!W51)m6#rFJH?2)_){|Ej;X^C7sEiHKyDLkcjccJ|JWsQxtqM{^{dRB66GMmBSF%kwD z@K2vw@)<{aUq5l(6Lehtk+!m;464}lmzK+|;*T)Z7rRpqG=g4T-$S|m{bl+R^Fh1# zWKKkw_)_@x)yn?9nURr(vVB?!Guz=}mUzqB%J(ME$+OG#ZO?P=kZ_FX>0^lk3|3fc z`*H^!eQeLK7cVIK)1NP09QLV~C&bxZOqQo8rPjkk4i0dQjampOwpJGIRyK2q=1Fn% zBSdD}QWuzOpst5_AvmXoDhFX}+*DLp@7ewR_sGeO&vy9S*W}UG=_LaK1PPv753#UOwt9Dl zO;>qaehhR<8k34UUYcp(=D{4ko|$!1$a@I1240At3ceIoJjLfexdVaLxp3n&g= zhLHRy6XlAOHn%%V;(b9VolM(p;Uf|f#*PF^@~Ny$6jJYh;QMF*UeeouFA8bFPR_d> zyW;dy`5QDxHhvT-?FRD051Lcc+HSd9>kw5C!3Ng!H?8SNDu|!($*3z({0;rzV8?w% zm?3&&pkcr0l1WQy94^<-;}>A3P#*0vF#KB;WN5s^0 z?$#W!g!r>x3!H6i(;2@<^Dt<)>ng_38KT+979d~ar_n^&yf_L7@Fb*-h3}@3BA$YQUw%LFk(8Su^z1{s{Oi)_sQ zUcoCF^dedYTvTj#2Bsn!q*#o{cymFPDa3y{j|<&D9|=XGk8LCx=jQ!Og1~O$xcG;y zFN*@QWdQ@Kf61K8_JpgmqsbAPkS8)~ zv_i-oh1cpc&kHy@8DkQZE%T+)L`oU=p4hUZ>04wvWHMrqz0OV@3EB4Jd>DS)e#?T(Tb<8kLNeN(VPCJe1YC;(nR^X*H8ltD zTYj4RR7X6OBiDOS8dFPHPYl=2|Yh7G|4VO--30*2jto z3CCjMEonl}w^Hob2l~BUy`oD_y7W3$pbPH=7*7hhV{%l@G7+XCrS z+Mhq8&bP*Yf89@bYs4JllOv?`Qv27z&NQQ(oa)ig^*O~{i@xvnM90R)2PGjQ`<0%1 z@1tHn@XoGfK(le|SC^TA$qII{`hHavyLR1PI7{=Vo2_x-mOHK2s>df$!sHiMim@(M zg%&^ac0d=fuwcZ+C6JID==-6?W6~o9#<1p|0lA~M-6-M9F*{~NFA2{bDujg<4rPA+ zJkeo%`X4<3fD5ED2Ku4+qH?>FW4U^l($T?ZuXMd*lV@m1Qjpe%5^JiPFfnf@S`CVV zx=fUYYA`Wb5GR5*B*J7~zI@qdz?+nGSy1%U?pN(6CQi;VVRv>JeSH$h=fW_zczdI| z`VnNmFb z(=Ed6jK!2fKEjtc>^~+;lH{H>xbDw{gzT5;G~iKC)VuB{gPYfK^^{h~XCabI%FCPn z_QLoC%r(7cK{XAVf}aI0JK|yMsu~(zZp#w5alNb@+ofe?vIJY37HmoTze7E>E2ga> zxAU?HO4I<#o`=DCd5v{-s(SN*TU+$1`7_&_7Bb~EuewawdGB4N7n)y$6AsNbKR@4_ z7%2|SY6jAxD=tKr9%yUtf0UpC-+mp^(^-OY)@A%!AXh_#_RU8+9IZ? z=!c0E0yJd}e@AlCZYf?(m2wPwUGj;H?0HLlz1P+l7r2$TYb5vO&B>>}_pXZ*rNJcJ zOw#fXd=4^&*pE=4$2@~G?aSic-Ztu!BkUHIJUG)sI<@^$3JRS=EL3!6LqV7*@Cb1; zGa6V}6KUGIs;bBDP)_&ujQ8d|-~R5J6TUC0s?n|Ry|*yz)BpM!4!XT2$>3Le03pH+ z4st^kMxBvOP2pHrOAEdk^gcGy@~;HWs7gnITlYmB(c?dUVq-ftHd=F9=+hN@CWG^R z!M9~(SUE+|JtsLi>|^p%Cq&U|Up9EF?PesT6!r4?q-c8)P0e1=!5xp<2O~Py22xVv zon6L@(onE{yw?>^1CV;<={Wvr-tFYLk4`(=15?DsnlUksN5@{37kdIJ=Ue5W8h`@* z{c*OoE;2H00Q?wD1g(5DDNATGV9hyvwApg+lb!v$sI=5!bM$;-!W*e{5(c+_5lJ&c#G zDw)OT zjT;6A1_?>Z=%|W+->cWJn>|j$zWUtZl7k~qjJu#A$%Z8)Bz*YrA%{$I1zKqXg)6>&H*-J`FdiLyD zY7CMRTKBIyyIvALKEC+)_?FukOFB+`d(AE47-VUzBI}#@>ceT+HEkz20cP#m*+yqZUS7Ao*#=@_ z;u~67Sy^XiXCAxxRCZHzQJi-u*v}XkSlQW&N=mA0YHTbm9f9=X>>LpiafA9&n*4m%hle%}~rY3`(2%tf;&H>gtKej;9zh6{J9hc6o? z)YFtX<8PYWCg)G>pv+k3$0&R68E?6xFO4+xqKo;%`>fX)VpD^%IEX%bGNcQ+tqvH} zSqvv^0T~u^GE);>>TqZhr9wzsJUExa?*_#AQ{4<&a3r8REU;T1Hg<-kNqSMgw zst5kBEp9u10R9;aM-lofqJMr;)LC~!i!@$KDHbMj7Yi>#I;ch!0~o@eEj;Ace*m^O z`g>L3zv_EIh~*)3qKs%wLY^Fj=l1NkVuxsjq-r=ykq#BOV+^qY}UDcGuK9 z#FFK@zbPw=_W(10An8kU*`6l-)~0fa>j{U5N)&CctBRk|`_4RtX=Y}-pQEp7XqZC6 zk`v==YWZzCl zEglmhAfT8STjAx^KoD_s+=vqP!GvmS6W|#`!;(=Tplcl+Eqk7g0e8aj?THr|*}(5^ zJZy@{$+1^aA5y!2rhoG7^$2%)wEn2Fb`JyM;^JG$(5?&W?nL6`$v8T88lRXL9vOM? z;H@1H+=OlcB&mlvNb*mNP*>hY(dzpk;SVPn$E~;)l1?PHy< zPuQ@pic`%CKk73S(raRWw;$c?9YMg7ZeccYJzne!W$L#GK^2zcgT~!H3r&1GSErmn z8HO_R@{BBJwr3ldgR#3oLv}S=gF$Y$jhY6u^olxge)aW!7C*bvgg#Xz<{G!Q^1qlVKoCLrfKlc0?{lE$e4lh3jS_wV*w^lApK735XBHSIfe9@c z8JLhyMsW9IQ`6k{@0kX_si`Twh#)@cBzz_nr56^pKp&IObS@)`4d4(SK}Ya8ir>$C zxgO!;W0sUpUI`h#nkF@}vhs^zpPqZZ)^ASb_r3cFkXf<-&tMx>s^`+;qQcKS$)cjC z<(eFIX|jLuqD^wLC9q6f_jYLScjvyoKEX?HGBo^IT>RzdPxa|(Z?D5;3a9lhch7EA zIeBsM+c^3-N2lM_HC#u>zQW#(5|WbBeSQ9_+Vt(`*-;+|n3HXdj8Gw~iGD6_?iKPA z?~5$aw6oxdxVrW5qC4 zdb*XBC2?$=xQ#Wk&)wyfRMfmuI~Nz1u$!{)t`-smCb`$vD>evqyO>Yl*KECmYiAf4 z5IWIOrIUrcQ@>t+Iyflhv7J>@RlQsezt{d^W@}=SNH$s{)hsbE z{+$G-L6YF~#ONp|3ro7r3vuy?rmXz@P7`)6&apft3fG&9N5;R?!NIpi#Di5+Dh^i5 z!`^+cJ9;Qjr@EN`K+}-E@iY8LmXc_SjDq2FjDH|%@PkVRswEMx8zGVue@RJgAfWMU z-Cv!;fh7y>fMQzX1mMK4C-|XHU z`m({yH0}20*e*3Sh@KV+1<9RBXQReIv?@d2NW||t?9ms2!`Z^T+qA9uZ&KQI`ZHIT zS~$N)j4msyx^L}K!R!=_QLEVpI$QH4ozvyfE9jG;yGbxPKh+)7t89KP+x#L3 z|0(D`qDY7haocDWgvU}MKk7xhfAw{z6AI>=SPlBvUgp;`8{1T z<15J!&}Ls%&ACeBDG=_w;hZI&A+~1N{Z06=TZ&$GCS#F?k5@z0w>;i;_nZkIoh(*t zt^S%8uzWxBO~YTPgapiV*`Bfmp{5yB=Fb zqeIFaS^SjRQ-OhveSh*(sm^-3%66`CadEN1Y5gdXmyZub3nV2ZfNfi*_pPzM{$gkP z3o!J*d7Sb)Z{Z)LdGNR$ECvL?3k$aZ{sP?a*g#rZTEK70OG+M~p-s2=wzS5U36nK~ zu*KVT9sEI0neP>b9qjDv>4NUDv9Zg0dwLogJ*u%WF-zOqDXFQ}1_mO7${@u6js;kZ zViLP4;2C`h%)iqobs8L3Kd~7@BD%V1sTWf?R=(|kbFfV^wZ@8ZqCt=q{#(K1?R0I zh@s^CO{ru%sl4rAjZ&eOd7l$J2slhE{$E*_QwbgU9o2XT9>Ci$)MR?3L262xhv2{O zqa}ugVL3CUtwI>!o4`MmC;!G+R6}y2=O3aAp84ay7o$NED+tGb0<)ignDtBrY$5Nb z%%S`%+rwm4q_3-O-)|_qj1`mZK$NG*p~R;J@~>`|h>ZW2C{*WUc-lZtgDXlT|3926 zLaPNvY4hqD6KTwOC5L_8bhV$&IP?>(kxGec;t5?KqTz<}K(qICNlD2GaQ7o3fQ=sbP2}q8s@?Jc#BR(bIm`!1Sq((! zwPC35+J@Jkv|0XYs6!B7^^cxip7sZ(qTt(&;jl3D0Ls0&uYcw#2xe$5BAlL_d@uQu z)(IvU|ER{p84DG4>8;y_oY+lk4^vLRRfCajME zT?P{~oR9_CPxFfzoL^d+uCDIf#o=!dLb0~CmX(v^!?2sF?wy%Q*0J81ssv>VR2dEs z^{A+rYI5g*#wI6~Qh7%J6`q;7+8Qs0C@Y>igsAe}vkzqmpC2A>ju$5u7Fw8?n5YvU zP~i5GxYNX}E55^=>b(sjc1sTjp`q|j+;vSSp;oxXmEJf&@4?be#SNg$Q%G^SJTeWS z1n;eFZ1`MlrYf>(YU004g*>FjBIOmqk+88T1%n}qqo=3W+uMsMN-E&eKRBqUp|;zC zGcqz_^m?!bWGIxRrKN!w0akEFM+aPH8uEdixFP;Ih9d5zBOzupRhI!P>SyVR(hW|j zJ>j>`&ic(>y(Z23urC@V6BDmNI^`~Sb9=kR>k{`*V9Cm=7(l!ATpGJK78YDQJaHI| zFc_#=F|N0_=L=d|TB)5HOcNkz@}sX$4v63?DyRX&6B9l+7nPBbSfV)Kcp&QoUu>B# zL%RG5oFFKr;5z*M;UGcZyC(CY^yK8^c4EH;96W{jg(cLB7coHQX!g2fUmpU0C}s%h zn$Z5yF9QEP{sN;n4(RCXV`OCP1Ayf6Xw?KQymMJX4Sb(~S}2X;>P?@$9o~^kK1r*B zL!8(XR$B(s)gSTx{{A3Qg6xNaO%7m$;e3;OT0!uDneWwRKG2&G{Xhb$wN=DWF8#SD zNM%iokJnUH;eyPRy`v+T90-2x?P5SAf^am(DSU6Js)+tx5{SY8A_oQ>By5a~jRU#- zXzs8|nARMtCEiscEOQ%oeNZpgbNBEN@;sAQQnCZNDW~mSxna+h_DQ^f#P8v=q zXS7l;v-^&dlEGpe!1Auoc16RCg}=rRdl2PK8R%y|>`Wpb_AKTc3rWQuY!6Gvzv$~i z4HXBjwg8eNrhc<+_J+)ejtN$+%|@@ zK+|e(&iQ^Dk+-w61ELp6DJkc>zY+yo^)xjvx5gRwxQ-HsANz1aW4bD&!>|4dNc{w7m8(L?6XVlFN& z4$zODUOGr&+1pqA3rM)=>XNy)#R7oxDJ6x6iwoeyygWKGvb01NePR+41iw}mn1gS2 zFUT~Nx7-~a98}cRQSdp^Ts|C`m`F%T`RaY`@{b$|0*H69_d&6 zOYrosAW6ahR$5Y$7I1k3G%+$TNhmivj+T~|K>i8<8geenF>K+RgS7#YJ6v`3$%_j& zkV*qgb9s4oZmzf6%)|r-vC?T>5d{Usp*e@s?Z5yG3V;xpB;2XOzUfR%Fj$hX?_IUU zPeDOJpnkwA5VNq_zBJ?-{TIy<2C5kd60-5|pg=$?b$o&V0R{9=6bxt&t1EwEU?Dd~ zLqFmfyFU;iKwDc|02CtofeOF6z7F8o*vLqXyvQByd;TyjV=AJp*$U-UDNv*S0S)oo zZ#|rK7@4=0Wi1faVei{Ux;;ld)h-rtcbn{1ZJnh>4OHHePsb%1_};Y#V#F4qQ}wpz zL__}OwQoO@gA45CLZ^~x_u0IE>tVuh@X|!Xes9@CN`MyiB>|n}dd)G`dW&2tuEQwe zF;Xug9a3OO1`E6t|L!^lo!lhs$n1O01qI&>T7Ak>#pYJubH|-eZv&omBQAc(3s}4{ zz(3CrgYWG9QG}r0jQwEt@uM1Tcm?Y^A~Kst!SUmQz^V<8_iOJ)G*HQWHuFv3emLui zW}R3gD;*RUfRet`-v(S$jebWLy}T?o_upLo(8cvv@7vSF`{v|(PfK|9?%NaNyVL!yn1OJynp+%m&R;(pIuedF zo+$sjcegQFK9nn0_que3&taK9g(p}c&9Xc@8|{Dkd1=2KZ!T7g)%!5e%Me<(CkNme z!H($A_fDjZElW(&`qJFhU3LB3CZD;Twc0QpFpbXjoogyC4!(!d9Gzu~>O+2?ih13S z&>^6nD=R5kbw^SIpS3bN(M2p~`+xQ8Fmaq7#nDZ}w;rv+Dl3ze z(r-GQ$}fuF`F4CxL&|v{a7}dvi>{w2$JS_a`vuHKkn;4tsg!hdWPtipc=#B%cZ$>m zvOhO#)Z05r_tY60>H)s*>CyMn4eZ5+K)v&$~A`|23zrDggp z&3SoiAmv^Bx)dI`W&duM5!4ghNsW($O-M+Xn3S}+ye!sie?!~K zl`S*>iQl>CAEF%}uLi`2-mjn+`d;tW0Z*`|wif*XhJVzP=bmQ(9P9w8;tyVt<(Gk9 zcOUJnwfW_7y5+q59gRDMxkN%&_jbSKo(?r&z-*z(J&tL``UODpgLapIAK)Q^Hu?}3 z7u1YH05k0gsO=6|u)Xgv#9sJGzjEW zSHHcxxdhP9!op&Ou}>e~>$(-pG_(LvJ!qhc=|8wBMnGIr66wmAqtU43hd_~FCD zK9-i9`ELTk!usOk*^P~j0JQ?hkPOVnlmWW(`d*_-9bH{_0&+n&dr?vUn3$J9QZ6mE zQB}qJ@0O#k`;V#o#fj76i#Xv;NATDKfX{ch=|Yk!Dx+t+zc4W|^W~FbGctq$T`=qj ziopb~F?h(~TU{N`{nHByt~bM!7WX|Ebb-)r(-d$jo12>fDdc2jl~z)!tEoXM%K@CQ zEtSs+6fB9m1f~1C+e`hiffSyo$84X0f+Q@QVZH=z=)n%{+yRI1C;VBOQ%?%A+wu5k zTS4Q7DyZWFEVU&well$l{4Ec@Qym;AdCr|8$ z!~L92E#JQfVLZQXAzoI_z_yV;@v{H>!zofS56OuofP%unzsEue((FGfXhVMdu?+w9 qaEo3q@;|QJe}AUs|MT$6*}bN`*`cjg`=94|AQ?$Ti83*Rfd2vUAIWk6 literal 0 HcmV?d00001 diff --git a/doc/devel/uml/index.html b/doc/devel/uml/index.html index c05d6f597..55bbadb38 100644 --- a/doc/devel/uml/index.html +++ b/doc/devel/uml/index.html @@ -129,7 +129,7 @@ Documentation
Artifact Lumiera

Depends on common

Depends on gui

Depends on proc

Depends on backend

the main executable to be built

-

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

+

executable associated with : controllerfacade, processor, pluginadapter, effect, buildertool, 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, vrender, exitnode, pathmanager, track, paramprovider, mask, main, conmanager, clip, meta, fixedlocation, relativelocation, mobject, source, frame, placement, sessionimpl, builderfacade

Artifact main

Artifact source

@@ -1180,8 +1180,21 @@ reuse exiting Engine

Selection :

    Transformation

    GUI is here just a container to hold any entities considered to be User Interface related, which is not in focus for this Design draft

    5 Package CommonLib

    + +

    5.1 Class View InterfaceSystem

    +
    + +

    +

    Layer Separation Interface



    +
    Class Facade
    +
    Class Proxy
    +
    +
    +
    +
    +
    -

    5.1 Class View StreamType

    +

    5.2 Class View StreamType

    @@ -1193,10 +1206,10 @@ reuse exiting Engine

    Selection :

      Transformation
      Class MediaKind

      -

      5.2 Package ConfigQuery

      +

      5.3 Package ConfigQuery

      -

      5.2.1 Component View Query System overview

      +

      5.3.1 Component View Query System overview

      @@ -1212,7 +1225,7 @@ reuse exiting Engine

      Selection :

        Transformation
        Component DefaultsManager

        -

        5.2.2 Class View query

        +

        5.3.2 Class View query

        @@ -1228,27 +1241,27 @@ reuse exiting Engine

        Selection :

          Transformation

          -

          5.2.3 Use Case View query use

          +

          5.3.3 Use Case View query use

          when to query



          -

          5.2.3.1 Use Case create specific object

          +

          5.3.3.1 Use Case create specific object

          -

          5.2.3.2 Use Case use "default" object

          +

          5.3.3.2 Use Case use "default" object

          -

          5.2.3.3 Use Case load object from session

          +

          5.3.3.3 Use Case load object from session

          -

          5.2.3.4 Use Case add new object to session

          +

          5.3.3.4 Use Case add new object to session

          Class User
          -

          5.2.3.5 Use Case ConfigQuery

          +

          5.3.3.5 Use Case ConfigQuery

          -

          5.2.3.6 Use Case need sub object

          +

          5.3.3.6 Use Case need sub object

          "default" object



          @@ -1256,7 +1269,7 @@ reuse exiting Engine

          Selection :

            Transformation
            Class instance predicate impl

            type :TypeHandler

            -

            5.3 Class View error

            +

            5.4 Class View error

            @@ -1270,7 +1283,7 @@ reuse exiting Engine

            Selection :

              Transformation

              -

              5.4 Class View Service Components

              +

              5.5 Class View Service Components

              Class Tool
              @@ -1280,7 +1293,7 @@ reuse exiting Engine

              Selection :

                Transformation
                Class Appconfig

                -

                5.5 Class View Posix Threads Abstraction

                +

                5.6 Class View Posix Threads Abstraction

                C++ wrapers for pthreads

                Class Thread
                @@ -1288,7 +1301,7 @@ reuse exiting Engine

                Selection :

                  Transformation
                  Class Mutex

                  -

                  5.6 Class View SmartPointers

                  +

                  5.7 Class View SmartPointers

                  diff --git a/doc/devel/uml/index_67.html b/doc/devel/uml/index_67.html index 81d96139c..b906f4d25 100644 --- a/doc/devel/uml/index_67.html +++ b/doc/devel/uml/index_67.html @@ -17,6 +17,8 @@ + + @@ -30,39 +32,39 @@ - + + + + + - - - + - - - - - - - - - - - + + + + + - + + - - - + + + + + + - + diff --git a/doc/devel/uml/index_70.html b/doc/devel/uml/index_70.html index 77ab812da..5f2c83e88 100644 --- a/doc/devel/uml/index_70.html +++ b/doc/devel/uml/index_70.html @@ -17,6 +17,7 @@
                  NameKindDescription
                  C_Instanceclass
                  C_Interfaceclass
                  Cachecomponent
                  Cachecomponent view
                  callDownoperation
                  chainoperationcreate and add another Placement for this media object, thus increasingly constraining the (possible) position of this object.
                  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
                  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
                  Codecclassdescription of some media data decoder or encoder facility
                  + diff --git a/doc/devel/uml/index_73.html b/doc/devel/uml/index_73.html index 963294360..7f152ccfe 100644 --- a/doc/devel/uml/index_73.html +++ b/doc/devel/uml/index_73.html @@ -22,13 +22,15 @@ - + + + diff --git a/doc/devel/uml/index_76.html b/doc/devel/uml/index_76.html index 75cbabe50..0689ba659 100644 --- a/doc/devel/uml/index_76.html +++ b/doc/devel/uml/index_76.html @@ -19,6 +19,7 @@ + diff --git a/doc/devel/uml/index_80.html b/doc/devel/uml/index_80.html index 85ccb15d9..d024e3dca 100644 --- a/doc/devel/uml/index_80.html +++ b/doc/devel/uml/index_80.html @@ -71,6 +71,7 @@ +
                  NameKindDescription
                  Facadeclass
                  Factoryclassa template for generating functor-like Factory objects, used to encapsulate object creation and providing access via smart-pointers only.
                  FeedCacheclass
                  fetchoperation
                  In Memory Databaseclass diagram
                  inFixtureactivity action pin
                  inputclass instance
                  inputclass instance
                  inputclass instance
                  inputclass instance
                  instanceoperation
                  InstanceHandleclass
                  instructionsrelation
                  Interfaceclass view
                  interface componentsclass diagram
                  interfacescomponent view
                  InterfaceSystemclass view
                  interpolatorartifactdenotes a facility to get (continuously interpolated) parameter values
                  InterpolatorclassProvides the implementation for getting the acutal value of a time varying or automated effect/plugin parameter
                  Invalidclass
                  NameKindDescription
                  labelartifact
                  Labelclass
                  Layer Separation Interfaceclass diagram
                  lengthattributeTODO: how to represent time intervals?
                  lengthattributeduration (span) of this timeline segment.
                  Linkclass
                  projectorartifactvideo ProcNode for scaling and translating image data
                  Prototypeclass
                  providerrelation
                  Proxyclass
                  pulloperation
                  PullInputclass
                  diff --git a/doc/devel/uml/index_83.html b/doc/devel/uml/index_83.html index e92c87510..9c9ebb223 100644 --- a/doc/devel/uml/index_83.html +++ b/doc/devel/uml/index_83.html @@ -32,10 +32,11 @@ Sequenceclass Serializerclass Service Componentsclass view +ServiceImplclass 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 @@ -49,8 +50,8 @@ 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 diff --git a/uml/lumiera/128517 b/uml/lumiera/128517 index 6feb7ce56..6f5c8ce9d 100644 --- a/uml/lumiera/128517 +++ b/uml/lumiera/128517 @@ -1,6 +1,6 @@ format 40 "CommonLib" // CommonLib - revision 13 + revision 14 modified_by 5 "hiv" // class settings //class diagram settings @@ -26,6 +26,184 @@ format 40 package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default show_infonote default drawing_language default + classview 129541 "InterfaceSystem" + //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 + //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 + //object diagram settings + write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow 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 + //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 + //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 + + classdiagram 132869 "Layer Separation Interface" + 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 + size A4 + end + + class 146565 "Facade" + visibility package stereotype "interface" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "${comment}${@}${visibility}interface ${name}${extends} { +${members}} +" + idl_decl "${comment}${abstract}${local}interface ${name}${inherit} { +${members}}; +" + explicit_switch_type "" + + end + + class 146693 "Proxy" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 161797 // + relation 157189 -_-|> + a public + cpp default "${type}" + classrelation_ref 161797 // + b multiplicity "" parent class_ref 146565 // Facade + end + + classrelation 162181 // + relation 157573 ---> + stereotype "uses" + a role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 162181 // + b multiplicity "" parent class_ref 146949 // C_Interface + end + end + + class 146821 "ServiceImpl" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 161925 // + relation 157317 -_-|> + a public + cpp default "${type}" + classrelation_ref 161925 // + b multiplicity "" parent class_ref 146565 // Facade + end + + classrelation 162437 // + relation 157829 ---> + stereotype "has_a" + a role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 162437 // + b multiplicity "" parent class_ref 147205 // InstanceHandle + end + end + + class 146949 "C_Interface" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + end + + class 147077 "C_Instance" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 162053 // + relation 157445 -_-|> + a public + cpp default "${type}" + classrelation_ref 162053 // + b multiplicity "" parent class_ref 146949 // C_Interface + end + + classrelation 162309 // + relation 157701 ---> + stereotype "calls" + a role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 162309 // + b multiplicity "" parent class_ref 146821 // ServiceImpl + end + end + + class 147205 "InstanceHandle" + visibility package + nformals 2 + formal name "C_Interface" type "class" explicit_default_value "" + explicit_extends "" + formal name "Facade" type "class" explicit_default_value "" + explicit_extends "" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + classrelation 162565 // + relation 157957 -_-> + stereotype "opens" + a package + cpp default "#include in source" + classrelation_ref 162565 // + b multiplicity "" parent class_ref 147077 // C_Instance + end + + classrelation 162693 // + relation 158085 -_-> + stereotype "creates" + a package + cpp default "#include in source" + classrelation_ref 162693 // + b multiplicity "" parent class_ref 146693 // Proxy + end + end + end + classview 129285 "StreamType" //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 @@ -127,7 +305,7 @@ ${inlines} classrelation 158341 // relation 154245 -_-> a default - cpp default "Generated" + cpp default "#include in header" classrelation_ref 158341 // b multiplicity "" parent class_ref 144773 // StreamType end diff --git a/uml/lumiera/129285 b/uml/lumiera/129285 index 4089706c0..96ad397a7 100644 --- a/uml/lumiera/129285 +++ b/uml/lumiera/129285 @@ -1,6 +1,6 @@ format 40 "ProcessingLayer" // ProcessingLayer - revision 24 + revision 25 modified_by 5 "hiv" // class settings //class diagram settings diff --git a/uml/lumiera/132869.diagram b/uml/lumiera/132869.diagram new file mode 100644 index 000000000..654d09664 --- /dev/null +++ b/uml/lumiera/132869.diagram @@ -0,0 +1,75 @@ +format 40 + +classcanvas 128005 class_ref 146565 // Facade + 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 66 14 2000 + end +classcanvas 128133 class_ref 146693 // Proxy + 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 23 116 2000 + end +classcanvas 128261 class_ref 146821 // ServiceImpl + 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 271 198 2000 + end +classcanvas 128389 class_ref 146949 // C_Interface + 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 136 117 2000 + end +classcanvas 128517 class_ref 147077 // C_Instance + 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 137 197 2000 + end +classcanvas 128645 class_ref 147205 // InstanceHandle + 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 171 277 2000 + end +textcanvas 130309 "conceptually equivalent" + xyzwh 165 11 2000 115 18 +relationcanvas 128773 relation_ref 157189 // + geometry VHV + from ref 128133 z 1999 to point 43 95 + line 129157 z 1999 to point 103 95 + line 129285 z 1999 to ref 128005 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 128901 relation_ref 157317 // + geometry VHV unfixed + from ref 128261 z 1999 to point 305 95 + line 129413 z 1999 to point 103 95 + line 129541 z 1999 to ref 128005 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 129029 relation_ref 157445 // + from ref 128517 z 1999 to ref 128389 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 129669 relation_ref 157573 // + from ref 128133 z 1999 stereotype "<>" xyz 75 135 3000 to ref 128389 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 129797 relation_ref 157701 // + from ref 128517 z 1999 stereotype "<>" xyz 213 216 3000 to ref 128261 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 130437 relation_ref 157829 // + geometry HVr + from ref 128261 z 1999 stereotype "<>" xyz 279 305 3000 to point 305 305 + line 130565 z 1999 to ref 128645 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 130693 relation_ref 157957 // + from ref 128645 z 1999 stereotype "<>" xyz 112 281 3000 to point 104 296 + line 130821 z 1999 to point 104 213 + line 130949 z 1999 to ref 128517 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +relationcanvas 131077 relation_ref 158085 // + from ref 128645 z 1999 stereotype "<>" xyz 88 306 3000 to point 89 305 + line 131205 z 1999 to ref 128133 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b +line 130053 -_-_ + from ref 128005 z 1999 to point 224 27 + line 130181 z 1999 to ref 128389 +end diff --git a/uml/lumiera/5.session b/uml/lumiera/5.session index d04da5e91..83fe86cc6 100644 --- a/uml/lumiera/5.session +++ b/uml/lumiera/5.session @@ -2,8 +2,10 @@ window_sizes 1302 1004 270 1022 854 71 diagrams classdiagram_ref 128133 // Session structure 853 742 100 4 120 0 - active classdiagram_ref 132741 // TimelineSequences + classdiagram_ref 132741 // TimelineSequences 585 732 100 4 0 0 + active classdiagram_ref 132869 // Layer Separation Interface + 373 417 100 4 0 0 end show_stereotypes selected @@ -38,6 +40,7 @@ open class_ref 144517 // Strategy class_ref 144005 // BuffTable class_ref 144261 // Invocation + classview_ref 129541 // InterfaceSystem classview_ref 129285 // StreamType classview_ref 128773 // error class_ref 140165 // Visitable diff --git a/uml/lumiera/lumiera.prj b/uml/lumiera/lumiera.prj index 1017e01e2..212f6ce25 100644 --- a/uml/lumiera/lumiera.prj +++ b/uml/lumiera/lumiera.prj @@ -1,6 +1,6 @@ format 40 "lumiera" - revision 49 + revision 50 modified_by 5 "hiv" cpp_root_dir "../../src/" diff --git a/wiki/draw/PlayerArch1.png b/wiki/draw/PlayerArch1.png index 2a8e24e3540819a51cb60c763ba20ec3fc6c1dae..5d3b947d4e2b7c768d979f1e1deb7f1fc7c434bb 100644 GIT binary patch literal 61724 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 Q8z7)z3@y;*mt7zH54nQsv;Y7A literal 56700 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 diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 68eee94a7..cdc7d9ac7 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -1121,6 +1121,21 @@ The main tool used to implement this separation is the [[Builder Pattern|http:// Another pertinent theme is to make the basic building blocks simpler, while on the other hand gaining much more flexibility for combining these building blocks. For example we try to unfold any "internal-multi" effects into separate instances (e.g. the possibility of having an arbitrary number of single masks at any point of the pipeline instead of having one special masking facility encompassing multiple sub-masks. Similarly, we treat the Objects in the EDL in a more uniform manner and gain the possibility to [[place|Placement]] them in various ways.
                  +
                  +
                  LayerSeparationInterface provided by the GUI.
                  +Access point especially for the playback. A render- or playback process uses the DisplayFacade to push media date up to the GUI for display within a viewer widget of full-screen display. This can be thought off as a callback mechanism. In order to use the DisplayFacade, client code needs a DisplayerSlot (handle), which needs to be set up by the UI first and will be provided when starting the render or playback process.
                  +
                  +
                  +
                  +
                  A service within the GUI to manage output of frames generated by the lower layers of the application.
                  +*providing the actual implementation of the DisplayFacade
                  +*creating and maintaining of [[displayer slots|DisplayerSlot]], connected to viewer widgets or similar
                  +
                  +
                  +
                  +
                  An output port wired up to some display facility or viewer widget within the UI. For the client code, each slot is represented by a handle, which can be used to lock into this slot for an continuous output process. Managed by the DisplayService
                  +
                  +
                  <<<
                   {{red{WARNING: Naming is currently being discussed (11/08)}}}
                  @@ -1373,15 +1388,24 @@ Thus, the Proc-Layer exposes (one or several) facade interfaces for the GUI to u
                   * GuiFacade is implemented by a class //in core// and exposes a notification proxy implementing GuiNotificationFacade, which actually is wired through the InterfaceSystem to forward to the corresponding implementation facade object within the GUI
                   * similarly, starting the fundamental subsystems within proc installs Interfaces into the InterfaceSystem and exposes them through proxy objects
                   
                  +
                  +
                  +
                  +
                  special LayerSeparationInterface which serves the main purpose to load the GuiStarterPlugin, thus bringing up the Lumiera GTK UI at application start.
                   
                  Considering how to interface to and integrate with the GUI Layer. Running the GUI is //optional,// but it requires to be [[started up|GuiStart]], installing the necessary LayerSeparationInterfaces. As an example how to integrate the GUI with the lower layers, in 1/2009 we created an PlayerDummy, which "pulls" dummy frames from the (not yet existing) engine and displays them within an XV viewer widget.
                   
                  -
                  +
                  +
                  LayerSeparationInterface provided by the GUI.
                  +Access point for the lower layers to push information and state changes (aynchronously) to the GUI. Actually, most operations within Lumiera are initiated by the user through the GUI. In the course of such actions, the GUI uses the services of the lower layer and typically recieves an synchronous response. In some exceptional cases, these operations may cause additional changes to happen asynchronously from the GUI's perspective. For example, an edit operation might trigger a re-build of the low-level model, which then detects an error.
                  +
                  +
                  +
                  Starting up the GUI is optional and is considered part of the Application start/stop and lifecycle.
                  -* main and AppState activate the lifecyle methods on the ~GuiSubsysDescriptor
                  +* main and AppState activate the lifecyle methods on the ~GuiSubsysDescriptor, accessible via the GuiFacade
                   * loading a GuiStarterPlugin actually
                   ** loads the GUI (shared lib)
                   ** creates instances of all the GUI services available through LayerSeparationInterfaces
                  @@ -1400,6 +1424,10 @@ Note that we retain strict isolation in the other direction: no part of the lowe
                   Now, when invoking an operation on some public interface, the code in the lower layers actually executes an implementation of this operation //on the facade proxy,// which in turn forwards the call through the CL interface into the GUI, where it is actually implemented by the corresponding service object instance.
                   
                  +
                  +
                  A specially configured LumieraPlugin, which actually contains or loads the complete code of the (GTK)GUI, and additionally is linked dynamically against the application core lib. During the [[UI startup process|GuiStart]], loading of this Plugin is triggered from {{{main()}}}. Actually this causes spawning of the GTK event thread and execution of the GTK main loop.
                  +
                  +
                  While the low-level model holds the data used for carrying out the actual media data processing (=rendering), the high-level model is what the user works upon when performing edit operations through the GUI (or script driven in &raquo;headless mode&laquo;). Its building blocks and combination rules determine largely what structures can be created within the [[Session]].
                   On the whole, it is a collection of [[media objects|MObjects]] stuck together and arranged by [[placements|Placement]].
                  @@ -1437,7 +1465,7 @@ Besides routing to a global pipe, wiring plugs can also connect to the source po
                   Finally, this example shows an ''automation'' data set controlling some parameter of an effect contained in one of the global pipes. From the effect's POV, the automation is simply a ParamProvider, i.e a function yielding a scalar value over time. The automation data set may be implemented as a bézier curve, or by a mathematical function (e.g. sine or fractal pseudo random) or by some captured and interpolated data values. Interestingly, in this example the automation data set has been placed relatively to the meta clip (albeit on another track), thus it will follow and adjust when the latter is moved.
                   
                  -
                  +
                  This wiki page is the entry point to detail notes covering some technical decisions, details and problems encountered in the course of the implementation of the Lumiera Renderengine, the Builder and the related parts.
                   
                   * [[Packages, Interfaces and Namespaces|InterfaceNamespaces]]
                  @@ -1458,6 +1486,7 @@ Finally, this example shows an ''automation'' data set controlling some paramete
                   * how to classify and [[describe media stream types|StreamType]] and how to [[use them|StreamTypeUse]]
                   * the relation of [[Project, Timelines and Sequences|TimelineSequences]]
                   * how to [[start the GUI|GuiStart]] and how to [[communicate|GuiCommunication]]
                  +* build the first LayerSeparationInterfaces
                   
                  @@ -1782,6 +1811,16 @@ config.formatters.push( { } ) //}}}
                  +
                  +
                  An RAII class, used to manage a [[facade interface between layers|LayerSeparationInterface]].
                  +The InstanceHandle is created by the service implementation and will automatically
                  +* either register and open a ''C Language Interface'', using Lumiera's InterfaceSystem
                  +* or load and open a LumieraPlugin, also by using the InterfaceSystem
                  +* and optionally also create and manage a facade proxy to allow transparent access for client code
                  +
                  +&rarr; see [[detailed description here|LayerSeparationInterfaces]]
                  +
                  +
                  Because we rely on strong decoupling and separation into self contained components, there is not much need for a common quasi-global namespace. Operations needing the cooperation of another subsystem will be delegated or even dispatched, consequently implementation code needs only the service acces points from "direct cooperation partner" subsystems. Hierarchical scopes besides classes are needed only when multiple subsystems share a set of common abstractions. Interface and Implementation use separate namespaces.
                   
                  @@ -1814,18 +1853,41 @@ From experiences with other middle scale projects, I prefer having the test code
                   [img[Example: Interfaces/Namespaces of the ~Session-Subsystems|uml/fig130053.png]]
                   
                  -
                  -
                  Lumiera uses a 3-layered architecture. Separation between layers is crucial. Any communication between the layers regarding the normal operation of the application should //at least be initiated// through ''Layer abstraction interfaces''. This is a low-impact version of layering, because, aside from this triggering, direct cooperation of parts within the single Lumiera process is allowed, under the condition that is is implemented using additional abstractions (interfaces with implementation level granularity). We stick to the policy of //disallowing direct coupling of implementations located in different layers.//
                  +
                  +
                  A major //business interfaces// &mdash; used by the layers for interfacing to each other; also to be invoked externally by scripts.
                  +&rarr; [[overfiew and technical details|LayerSeparationInterfaces]]
                  +
                  +
                  +
                  +
                  Lumiera uses a 3-layered architecture. Separation between layers is crucial. Any communication between the layers regarding the normal operation of the application should //at least be initiated// through ''Layer abstraction interfaces'' (Facade Interfaces). This is a low-impact version of layering, because, aside from this triggering, direct cooperation of parts within the single Lumiera process is allowed, under the condition that is is implemented using additional abstractions (interfaces with implementation level granularity). We stick to the policy of //disallowing direct coupling of implementations located in different layers.//
                   
                  +[>img[Anatomy of a Layer Separation Interface|uml/fig132869.png]]
                  +The goal is for the interface to remain fairly transparent for the client and to get an automatic lifecycle management. 
                   To implement such a structure, each layer separation interface actually is comprised of several parts:
                  -* an C Language Interface ("CL Interface") to be installed into the InterfaceSystem
                  -* a facade interface defining the respective abstractions in terms of the implementation language (C or C++)
                  -* a implementation object on the service proiding side which is directly addressed by the implementation instantiated within the InterfaceSystem
                  -* a proxy object on the client side, which usually is given inline alongside with the CLI interface definition.
                  +* an C Language Interface ("''CL Interface''") to be installed into the InterfaceSystem
                  +* a ''facade interface'' defining the respective abstractions in terms of the client side impl. language (C or C++)
                  +* a ''service implementation'' directly addressed by the implementation instantiated within the InterfaceSystem
                  +* a ''facade proxy'' object on the client side, which usually is given inline alongside with the CL interface definition.
                   
                   !opening and closing
                   Handling the lifecycle can be tricky, because client- and service-side need to carry out the opening and closing operations in sync and observing a specific call order to ensure calls get blocked already on the client side unless the whole interface compound is really up and running. To add to this complexity, plugins and built-in interfaces are handled differently regarding the question who is in charge of the lifecycle: interfaces are installed on the service side, whereas the loading of plugins is triggered from client side by requesting the plugin from the loader.
                  -Anyway, interfaces are resources which best should be managed automatically. At least within the C++ part of the application we can ensure this by using a handle class. This way the handling of plugins and interfaces can be unified; the only remaining difference is on what side (client or service provider side) the handle is instantiated, with the appropriate ctor parameters.
                  +Anyway, interfaces are resources which best should be managed automatically. At least within the C++ part of the application we can ensure this by using the InstanceHandle template. This way the handling of plugins and interfaces can be unified and the opening and closing of the facade proxy happens automatically.
                  +
                  +The general idea is, that each facade interface actually provides access to a specific service; there will always be a single implementation object somewhere, which can be thought of as acting as "the" service. This service-providing object will then contain the mentioned InstanceHandle; thus, its lifecycle becomes identical with the service lifecycle.
                  +* when the service relies on a [[plugin|LumieraPlugin]], this service providing object (containing the InstanceHandle) needs to sit at the service accessing side (as the plugin may not yet be loaded and someone has to pull it up).
                  +* otherwise, when the service is just an interface to an already loaded facility, the service providing object (containing the InstanceHandle) will live on the service providing side, not the client side. Then the ctor of the service providing object needs to be able to access an interface instance definition (&rarr; InterfaceSystem); the only difference to the plugin case is to create the InstanceHandle with a different ctor, passing the interface and the implementing instance.
                  +
                  +!outline of the major interfaces
                  +|!Layer|>|!Interface |
                  +|GUI|GuiFacade|UI lifecycle &rarr; GuiStart|
                  +|~|GuiNotificationFacade|status/error messages, asynchronous object status change notifications, trigger shutdown|
                  +|~|DisplayFacade|pushing frames to a display/viewer|
                  +|Proc|SessionFacade|session lifecycle|
                  +|~|EditFacade|edit operations, object mutations|
                  +|~|PlayerDummy|player mockup, maybe move to backend?|
                  +|//Lumiera's major interfaces//|c
                  +
                  +
                   
                  @@ -2797,25 +2859,29 @@ We need a way of addressing existing [[pipes|Pipe]]. Besides, as the Pipes and T <<tasksum end>>
                  -
                  -
                  Joelholdsworth and Ichthyo created this player mockup in 1/2009 to find out about the implementation details regarding integration and colaboration between the layers. There is no working render engine yet, thus we use a ~DummyImageGenerator for creating faked yuv frames to display. Within the GUI, there is a ~PlaybackController hooked up with the transport controls on the timeline pane.
                  +
                  +
                  __Joelholdsworth__ and __Ichthyo__ created this player mockup in 1/2009 to find out about the implementation details regarding integration and colaboration between the layers. There is no working render engine yet, thus we use a ~DummyImageGenerator for creating faked yuv frames to display. Within the GUI, there is a ~PlaybackController hooked up with the transport controls on the timeline pane.
                   # first everything was contained within ~PlaybackController, which spawns a thread for periodically creating those dummy frames
                   # then, a ~PlayerService was factored out, now implemented within Proc-Layer (probably to be relocated into the backend for the final version). A new LayerSeparationInterface called ''~DummyPlayer'' was created and set up as a [[Subsystem]] within main().
                   # the next step was to support multiple playback processes going on in parallel. Now, the ~PlaybackController holds an smart-handle to the ~PlayProcess currently generating output for this viewer, and invokes the transport control functions and the pull frame call on this handle.
                  -# then, also the tick generation (and thus the handling of the thread which pulls the frames) was factored out and pushed down into the mentioned ~PlayProcess. For this to work, the ~PlaybackController now makes a display slot available on the public GUI DisplayFacade interface.
                  +# then, also the tick generation (and thus the handling of the thread which pulls the frames) was factored out and pushed down into the mentioned ~PlayProcess. For this to work, the ~PlaybackController now makes a display slot available on the public GUI DisplayFacade interface, so the ~PlayProcessImpl can push up the frames for display within the GUI
                   [img[Overview to the dummy player operation|draw/PlayerArch1.png]]
                   
                   !when playing...
                  -As a prerequisite, a viewer has to be prepared within the GUI. A XV video display widget is wired up to a sigc++ signal slot, using the Glib::Dispatcher to forward calls from the play process thread to the GTK main event loop thread. When doing so, additionally a Displayer slot is created with the DisplayService.
                  +As a prerequisite, a viewer has to be prepared within the GUI. A XV video display widget is wired up to a sigc++ signal slot, using the Glib::Dispatcher to forward calls from the play process thread to the GTK main event loop thread. All of this wiring actually is encapsulated as a DisplayerSlot, created and registered with the DisplayService.
                   
                  -When starting playback, the slot handle created by these preparations is used to create a ~PlayProcess on the ~DummyPlayer interface. Actually
                  +When starting playback, the display slot handle created by these preparations is used to create a ~PlayProcess on the ~DummyPlayer interface. Actually
                   * a ~PlayProcessImpl object is created down within the player implementation
                  -* this uses the slot handle to actually allocate the display slot via the Display facade
                  -* moreover, it aquires an TickService instance, which is still trotteling (not calling the periodic callback)
                  +* this uses the provided slot handle to actually //allocate// the display slot via the Display facade. Here, //allocating// means registering and preparing it for output by //one single// ~PlayProcess. For the latter, this allocation yields an actually opened display handle.
                  +* moreover, the ~PlayProcessImpl aquires an TickService instance, which is still trotteling (not calling the periodic callback)
                  +* probably, a real player at this point would initiate a rendering process, so he can fetch the actual output frames periodically.
                   * on the "upper" side of the ~DummyPlayer facade, an lib::Handle object is created to track and manage this ~PlayProcesImpl instance
                  -The handle is returned to the ~PlaybackController within the GUI, which uses this handle for all further interactions with the Player. The handle is ref counting and has value semantics, so it can be stored away, passed as parameter and so on. All such handles corresponding to one ~PlayProcess form a family; when the last goes out of scope, the ~PlayProcess terminates and deallocates any resources. Conceptually, this corresponds to pushing the "stop" button. Handles can be deliberately disconnected by calling {{{handle.close()}}} &mdash; this has the same effect as deleting a handle (when all are closed or deleted the process ends).
                  +The mentioned handle is returned to the ~PlaybackController within the GUI, which uses this handle for all further interactions with the Player. The handle is ref counting and has value semantics, so it can be stored away, passed as parameter and so on. All such handles corresponding to one ~PlayProcess form a family; when the last goes out of scope, the ~PlayProcess terminates and deallocates any resources. Conceptually, this corresponds to pushing the "stop" button. Handles can be deliberately disconnected by calling {{{handle.close()}}} &mdash; this has the same effect as deleting a handle (when all are closed or deleted the process ends).
                   
                  -All the other play control operations are simply forwarded via the handle and the ~PlayProcessImpl. For example, "pause" corresponds to setting the tick frequency to 0 (thus temporarily discontinuing the tick callbacks). When allocating the display slot in the course of creating the ~PlayProcessImpl, the latter only accesses the Display facade. It can't access the display or viewer directly, because the GUI lives within an plugin; lower layers can't call directly into GUI functions. Thus, within the Display facade a functor (proxy) is created to represent the output sink. This (proxy) Displayer can be used within the implementation of the perodic callback function. As usual, the implementation of the (proxy) Displayer can be inlined and doesn't create an indirection at runtime. Thus, each frame output call has to pass though two indirections: the function pointer in the Display facade interface, and the Glib::Dispatcher.
                  +All the other play control operations are simply forwarded via the handle and the ~PlayProcessImpl. For example, "pause" corresponds to setting the tick frequency to 0 (thus temporarily discontinuing the tick callbacks). When allocating the display slot in the course of creating the ~PlayProcessImpl, the latter only accesses the Display facade. It can't access the display or viewer directly, because the GUI lives within an plugin; lower layers aren't allowed to call GUI implementation functions directly. Thus, within the Display facade a functor (proxy) is created to represent the output sink. This (proxy) Displayer can be used within the implementation of the perodic callback function. As usual, the implementation of the (proxy) Displayer can be inlined and doesn't create runtime overhead. Thus, each frame output call has to pass though two indirections: the function pointer in the Display facade interface, and the Glib::Dispatcher.
                  +
                  +!rationale
                  +There can be multiple viewer widgets, to be connected dynamically to multiple play-controllers. (the latter are associated with the timeline(s)). Any playback can require multiple playback processes to work in parallel. The playback controller(s) should not be concerned with managing the play processes, which in turn should neither care for the actual rendering, nor manage the display frequency and synchronisation issues. Moreover, the mentioned parts live in different layers and especially the GUI needs to remain separated from the core. And finally, in case of a problem within one play process, it should be able to unwind automatically, without interfering with other ongoing play processes.
                   
                  @@ -4823,6 +4889,14 @@ function addKeyDownHandlers(e) } //}}}
                  +
                  +
                  A service generating //periodic ticks// &mdash; repetedly invoking a callback with a given frequency.
                  +* defined 1/2009 as part of the PlayerDummy (design sketch)
                  +* probably to be implemented later on based on Posix timers
                  +* will probably be later on integrated into a synchronisation framework (display sync, audio sync, MTC master/slave...)
                  +
                  +
                  +
                  http://tiddlywiki.com/
                  @@ -5075,6 +5149,9 @@ Wiring requests are small stateful value objects. They will be collected, sorted [[Automation]] is treated as a function over time. Everything beyond this definition is considered an implementation detail of the [[parameter provider|ParamProvider]] used to yield the value. Thus automation is closely tied to the concept of a [[Parameter]], which also plays an important role in the communication with the GUI and while [[setting up and wiring the render nodes|BuildRenderNode]] in the course of the build process (&rarr; see [[tag:Builder|Builder]])
                  +
                  +
                  Definition of commonly used terms and facilities...
                  +