diff --git a/admin/git_hooks/post-commit b/admin/git_hooks/post-commit index 413bc0431..cf0dd5ec1 100755 --- a/admin/git_hooks/post-commit +++ b/admin/git_hooks/post-commit @@ -7,6 +7,6 @@ # see wiki/index.html#GitNotes%20GitAliases for information -git sign "$(git-symbolic-ref HEAD | cut -d/ -f 3-)_signature" -git publish - +git tag -s -f -m "signature generated by $(git config user.email)" "$(git config user.email)/$(git-symbolic-ref HEAD | cut -d/ -f 3-)_signature" +git push --all public +git push public "refs/tags/$(git config user.email)/*" diff --git a/admin/scons/Buildhelper.py b/admin/scons/Buildhelper.py index dce5e8dc7..99b84c997 100644 --- a/admin/scons/Buildhelper.py +++ b/admin/scons/Buildhelper.py @@ -60,7 +60,7 @@ def srcSubtree(env,tree,isShared=False, **args): -SRCPATTERNS = ['*.c','*.Cpp','*.cc'] +SRCPATTERNS = ['*.c','*.cpp','*.cc'] def scanSrcSubtree(root): """ scan the given subtree for source filesnames diff --git a/doc/devel/uml/activities.html b/doc/devel/uml/activities.html index 67f7d6748..79376b2f9 100644 --- a/doc/devel/uml/activities.html +++ b/doc/devel/uml/activities.html @@ -18,6 +18,7 @@ +
building the Engine
configure Render
get frame
diff --git a/doc/devel/uml/class128005.html b/doc/devel/uml/class128005.html index 3ab068c87..9ee1b55a0 100644 --- a/doc/devel/uml/class128005.html +++ b/doc/devel/uml/class128005.html @@ -16,7 +16,7 @@ -

Declaration :

+

Declaration :

Artifact : session, Component(s) : Session

Relation edls (<directional aggregation>)

Declaration :

Relation fixture (<unidirectional association>)

Declaration :

diff --git a/doc/devel/uml/class128133.html b/doc/devel/uml/class128133.html index 5077b9780..cbf83e3ea 100644 --- a/doc/devel/uml/class128133.html +++ b/doc/devel/uml/class128133.html @@ -17,9 +17,9 @@

Declaration :

Directly inherited by : Fixture

-
+

Artifact : edl, Component(s) : Session

-
Relation tracks (<directional aggregation by value>)

Declaration :

  • Uml : # tracks : Track, multiplicity : *
  • C++ : protected: Track tracks
-
Relation clips (<directional aggregation>)

Declaration :

  • Uml : # clips : MObject, multiplicity : *
  • C++ : protected: MObject * clips
+
Relation tracks (<directional aggregation by value>)

Declaration :

+
Relation clips (<directional aggregation>)

Declaration :

diff --git a/doc/devel/uml/class128181.html b/doc/devel/uml/class128181.html index 392b566e7..0a87b01fd 100644 --- a/doc/devel/uml/class128181.html +++ b/doc/devel/uml/class128181.html @@ -19,10 +19,9 @@

Declaration :

Relation descriptor (descriptor)

Declaration :

type of this frame

-
Operation getFrame

Declaration :

+
Operation getFrame

Declaration :

mode = READ, WRITE, ...

Relation handle (<directional aggregation>)

Declaration :

weak pointer

-
Relation mappings (<directional aggregation>)

Declaration :

weak pointers

-
Relation <aggregation>

Declaration :

+
Relation mappings (<directional aggregation>)

Declaration :

weak pointers

Relation <aggregation>

Declaration :

All public operations : getFrame

diff --git a/doc/devel/uml/class128225.html b/doc/devel/uml/class128225.html index e4fc4ec67..0b6e60921 100644 --- a/doc/devel/uml/class128225.html +++ b/doc/devel/uml/class128225.html @@ -18,6 +18,6 @@

Declaration :

-
Relation frame (<aggregation>)

Declaration :

maybe weak reference

+
Relation frame (<unidirectional association>)

Declaration :

maybe weak reference

diff --git a/doc/devel/uml/class128261.html b/doc/devel/uml/class128261.html index 57cb19580..9cb960678 100644 --- a/doc/devel/uml/class128261.html +++ b/doc/devel/uml/class128261.html @@ -16,12 +16,12 @@ -

Declaration :

+

Declaration :

Artifact : fixture, Component(s) : Session

Relation tracks (<directional aggregation by value>)

Declaration :

Relation timeline (<directional aggregation by value>)

Declaration :

-
Operation getPlaylistForRender

Declaration :

-
Operation getAutomation

Declaration :

+
Operation getPlaylistForRender

Declaration :

+
Operation getAutomation

Declaration :

All public operations : getAutomation , getPlaylistForRender

diff --git a/doc/devel/uml/class128389.html b/doc/devel/uml/class128389.html index 371a6f292..aeb25e07f 100644 --- a/doc/devel/uml/class128389.html +++ b/doc/devel/uml/class128389.html @@ -16,5 +16,5 @@ -

Declaration :

+

Declaration :

Artifact : track

diff --git a/doc/devel/uml/class128517.html b/doc/devel/uml/class128517.html index 9400bd2a2..31e491fce 100644 --- a/doc/devel/uml/class128517.html +++ b/doc/devel/uml/class128517.html @@ -17,9 +17,11 @@

Declaration :

Directly inherited by : AbstractMO

-
- -
Relation placement (<association>)

Declaration :

+

Artifact : mobject, Component(s) : Session

+ +
Attribut length
+

Declaration :

TODO: how to represent time intervals?

+
Relation placement (<association>)

Declaration :

All public operations : apply

diff --git a/doc/devel/uml/class128645.html b/doc/devel/uml/class128645.html index 975e79097..a00dfada6 100644 --- a/doc/devel/uml/class128645.html +++ b/doc/devel/uml/class128645.html @@ -17,10 +17,10 @@

Declaration :

Directly inherited by : Allocation DirectPlacement ExplicitPlacement RelativePlacement

-
+

Artifact : placement

-
Relation subject (<association>)

Declaration :

-
Operation resolve

Declaration :

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

+
Relation subject (<association>)

Declaration :

+
Operation resolve

Declaration :

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

All public operations : resolve

diff --git a/doc/devel/uml/class128773.html b/doc/devel/uml/class128773.html index 06b704954..81c885f5b 100644 --- a/doc/devel/uml/class128773.html +++ b/doc/devel/uml/class128773.html @@ -17,10 +17,8 @@

Declaration :

Directly inherited by : Clip Effect Meta

-
- -
Attribut length
-

Declaration :

+

Artifact : abstractmo

+

All public operations : apply

diff --git a/doc/devel/uml/class128778.html b/doc/devel/uml/class128778.html index f341dae13..7c5f5ed68 100644 --- a/doc/devel/uml/class128778.html +++ b/doc/devel/uml/class128778.html @@ -18,6 +18,6 @@

Declaration :

-
Relation <aggregation>

Declaration :

+
Relation file (<unidirectional association>)

Declaration :

diff --git a/doc/devel/uml/class128821.html b/doc/devel/uml/class128821.html index 874f76462..9468da4e5 100644 --- a/doc/devel/uml/class128821.html +++ b/doc/devel/uml/class128821.html @@ -24,8 +24,7 @@
Relation <directional aggregation>

Declaration :

Relation <directional aggregation>

Declaration :

Relation descriptor (<directional aggregation>)

Declaration :

-
Relation <association>

Declaration :

-
Relation <aggregation>

Declaration :

+
Relation <association>

Declaration :

Relation mapping (<aggregation>)

Declaration :

diff --git a/doc/devel/uml/class128901.html b/doc/devel/uml/class128901.html index 55bbf84fc..ca133c971 100644 --- a/doc/devel/uml/class128901.html +++ b/doc/devel/uml/class128901.html @@ -16,10 +16,10 @@ -

Declaration :

+

Declaration :

Artifact : clip

Attribut start
-

Declaration :

startpos in source

+

Declaration :

startpos in source

All public operations : apply

diff --git a/doc/devel/uml/class129029.html b/doc/devel/uml/class129029.html index 811d9192d..e6ec7aa31 100644 --- a/doc/devel/uml/class129029.html +++ b/doc/devel/uml/class129029.html @@ -16,7 +16,7 @@ -

Declaration :

+

Declaration :

Artifact : effect

Attribut plugID

Declaration :

Identifier of the Plugin to be used

diff --git a/doc/devel/uml/class129157.html b/doc/devel/uml/class129157.html index 38006b2eb..b29f58556 100644 --- a/doc/devel/uml/class129157.html +++ b/doc/devel/uml/class129157.html @@ -17,7 +17,7 @@

Declaration :

Directly inherited by : Auto Label

-
+

Artifact : meta

All public operations : apply

diff --git a/doc/devel/uml/class129285.html b/doc/devel/uml/class129285.html index a4f213f9c..9278b48ae 100644 --- a/doc/devel/uml/class129285.html +++ b/doc/devel/uml/class129285.html @@ -16,7 +16,7 @@ -

Declaration :

+

Declaration :

Artifact : fixedplacement

All public operations : resolve

diff --git a/doc/devel/uml/class129333.html b/doc/devel/uml/class129333.html index 9b2e41db6..1425f3c9b 100644 --- a/doc/devel/uml/class129333.html +++ b/doc/devel/uml/class129333.html @@ -18,6 +18,9 @@

Declaration :

  • C++ : class FileProvider

This is the Factory for Files, whenever something wants to use some file (or temporary storage), This Factory will hand out some smart/shared pointer to a File object which will be used to retrieve Frames.

-
Relation files (<aggregation>)

Declaration :

  • Uml : # files : File, multiplicity : *
  • C++ : protected: File * files
+
Relation files (<aggregation>)

Declaration :

  • Uml : # files : File, multiplicity : *
  • C++ : protected: File * files
+
Operation useFile

Declaration :

Announces that the application intends to use this file with mode (READ|WRITE|READWRITE)

+
Operation useTemporaryStorage

Declaration :

Provides a pool for interminate frames

+

All public operations : useFile , useTemporaryStorage

diff --git a/doc/devel/uml/class129413.html b/doc/devel/uml/class129413.html index 83b5a411f..eb05d79ba 100644 --- a/doc/devel/uml/class129413.html +++ b/doc/devel/uml/class129413.html @@ -16,13 +16,13 @@ -

Declaration :

+

Declaration :

  • C++ : class RelativePlacement : public Placement

Artifact : relativeplacement

-
Relation anchor (<unidirectional association>)

Declaration :

  • Uml : # anchor : MObject, multiplicity : 1
  • C++ : protected: MObject * anchor
+
Relation anchor (<unidirectional association>)

Declaration :

  • Uml : # anchor : MObject, multiplicity : 1
  • C++ : protected: MObject* anchor
Attribut relType
-

Declaration :

  • Uml : # relType :
  • C++ : protected: relType
+

Declaration :

the kind of relation denoted by this Placement

Attribut offset
-

Declaration :

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

Offset the actual position by this (time) value relative to the anchor point

Class RelType
+

Declaration :

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

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

Class RelType

All public operations : resolve

diff --git a/doc/devel/uml/class129541.html b/doc/devel/uml/class129541.html index ac45fdb3b..43f614b48 100644 --- a/doc/devel/uml/class129541.html +++ b/doc/devel/uml/class129541.html @@ -17,10 +17,11 @@

Declaration :

Directly inherited by : Constraint Wish

-

a directive to place a MObject in a specific way

+

a directive to place a MObject in a specific way

Artifact : allocation

Attribut repr
-

Declaration :

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

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

-

All public operations : resolve

+

Declaration :

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

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

+
Operation get_repr

Declaration :

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

All public operations : get_repr , resolve

diff --git a/doc/devel/uml/class129669.html b/doc/devel/uml/class129669.html index 430cf3861..832aed5e2 100644 --- a/doc/devel/uml/class129669.html +++ b/doc/devel/uml/class129669.html @@ -16,7 +16,7 @@ -

Declaration :

  • C++ : class Label : public Meta
+

Declaration :

  • C++ : class Label : public Meta

Artifact : label

All public operations : apply

diff --git a/doc/devel/uml/class129797.html b/doc/devel/uml/class129797.html index d0cefbcfe..7af02f3ea 100644 --- a/doc/devel/uml/class129797.html +++ b/doc/devel/uml/class129797.html @@ -17,13 +17,13 @@

Declaration :

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

Directly inherited by : DirectPlacement

-
+

Artifact : explicitplacement

Attribut time
-

Declaration :

  • Uml : # time : long
  • C++ : protected: long time
+

Declaration :

  • Uml : # time : Time
  • C++ : protected: Time time
Attribut track
-

Declaration :

-
Relation <unidirectional association>

Declaration :

+

Declaration :

  • Uml : # track : Track [ProcessingLayer::MObject] *
  • C++ : protected: Track [ProcessingLayer::MObject] * track
+
Relation <unidirectional association>

Declaration :

All public operations : resolve

diff --git a/doc/devel/uml/class129925.html b/doc/devel/uml/class129925.html index dc7d2a83c..ee1a92f29 100644 --- a/doc/devel/uml/class129925.html +++ b/doc/devel/uml/class129925.html @@ -16,9 +16,9 @@ -

Declaration :

+

Declaration :

Automation data for some parameter (i.e. a time varying function)

Artifact : auto

-
Operation getValue

Declaration :

  • Uml : + getValue() : VAL
  • C++ : public: VAL getValue()
+
Operation getValue

Declaration :

  • Uml : + getValue() : VAL
  • C++ : public: VAL getValue () const

All public operations : apply , getValue , getValue

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

Declaration :

-

All public operations : resolve

+

All public operations : get_repr , resolve

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

Declaration :

-

All public operations : resolve

+

All public operations : get_repr , resolve

diff --git a/doc/devel/uml/class130309.html b/doc/devel/uml/class130309.html index f9c5d9cc3..5c515d659 100644 --- a/doc/devel/uml/class130309.html +++ b/doc/devel/uml/class130309.html @@ -16,5 +16,5 @@ -

Declaration :

  • C++ : class ControllerFacade
+

Declaration :

  • C++ : class ControllerFacade

Provides unified access to the Proc-Subsystem Controller. Especially, this Facade class provides the functions to get a render engine to carry out actual renderings.

Artifact : controllerfacade, Component(s) : ControllerFacade

diff --git a/doc/devel/uml/class130437.html b/doc/devel/uml/class130437.html index 9d856b1c4..f70da5140 100644 --- a/doc/devel/uml/class130437.html +++ b/doc/devel/uml/class130437.html @@ -16,9 +16,9 @@ -

Declaration :

  • C++ : class PathManager
+

Declaration :

  • C++ : class PathManager

While building a render engine, this Strategy class decides on the actual render strategy in accordance to the current controller settings (system state)

Artifact : pathmanager, Component(s) : RenderPathManager

-
Operation buildProcessor

Declaration :

  • Uml : + buildProcessor() :
  • C++ : public: buildProcessor()
+
Operation buildProcessor

Declaration :

All public operations : buildProcessor

diff --git a/doc/devel/uml/class130565.html b/doc/devel/uml/class130565.html index c86f64a35..9e783f8e1 100644 --- a/doc/devel/uml/class130565.html +++ b/doc/devel/uml/class130565.html @@ -16,9 +16,9 @@ -

Declaration :

  • C++ : class BuilderFacade
+

Declaration :

  • C++ : class BuilderFacade

Provides 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

Artifact : builderfacade, Component(s) : Controller

-
Operation buildEngine

Declaration :

  • Uml : + buildEngine() :
  • C++ : public: buildEngine()
+
Operation buildEngine

Declaration :

Main Operation of the Builder: create a render engine for a given part of the timeline

All public operations : buildEngine

diff --git a/doc/devel/uml/class130693.html b/doc/devel/uml/class130693.html index 8490b9d1c..aaf7fd304 100644 --- a/doc/devel/uml/class130693.html +++ b/doc/devel/uml/class130693.html @@ -16,9 +16,9 @@ -

Declaration :

  • C++ : class ToolFactory
+

Declaration :

  • C++ : class ToolFactory

Artifact : toolfactory

-
Operation configure

Declaration :

  • Uml : + configure() :
  • C++ : public: configure()
+
Operation configure

Declaration :

  • Uml : + configure() : Tool
  • C++ : public: Tool configure ()

All public operations : configure

diff --git a/doc/devel/uml/class130821.html b/doc/devel/uml/class130821.html index ef9aa5db3..f5856aaab 100644 --- a/doc/devel/uml/class130821.html +++ b/doc/devel/uml/class130821.html @@ -16,9 +16,9 @@ -

Declaration :

  • C++ : class ConManager
+

Declaration :

  • C++ : class ConManager

Connection Manager, used to build the connections between render engine nodes, if these nodes need to cooperate besides the normal "data pull" operation. Esp., the Connection Manager knows how to wire up the effect's parameters with the corresponding ParamProviders (autmation) in the Session

Artifact : conmanager

-
Operation getConnection

Declaration :

  • Uml : + getConnection() :
  • C++ : public: getConnection()
+
Operation getConnection

Declaration :

  • Uml : + getConnection() : int
  • C++ : public: int getConnection ()

TODO

All public operations : getConnection

diff --git a/doc/devel/uml/class130949.html b/doc/devel/uml/class130949.html index 817452178..774585ac5 100644 --- a/doc/devel/uml/class130949.html +++ b/doc/devel/uml/class130949.html @@ -16,9 +16,9 @@ -

Declaration :

  • C++ : class RenderState
+

Declaration :

  • C++ : class RenderState

Encapsulates the logic used to get a "current render process" in accordance to the currentyl applicable controller settings. The provided StateProxy serves to hold any mutalbe state used in the render process, so the rest of the render engine can be stateless.

Artifact : renderstate

-
Operation getStateProxy

Declaration :

  • Uml : + getStateProxy() :
  • C++ : public: getStateProxy()
+
Operation getStateProxy

Declaration :

All public operations : getStateProxy

diff --git a/doc/devel/uml/class131077.html b/doc/devel/uml/class131077.html index bc9da61ed..a5d40eab9 100644 --- a/doc/devel/uml/class131077.html +++ b/doc/devel/uml/class131077.html @@ -16,9 +16,9 @@ -

Declaration :

  • C++ : class Assembler
+

Declaration :

  • C++ : class Assembler

This is the actual building facility: provided the correct tools and associations, it serves to build and connect the individual ProcNode objects

Artifact : assembler

-
Operation build

Declaration :

  • Uml : + build() :
  • C++ : public: build()
+
Operation build

Declaration :

All public operations : build

diff --git a/doc/devel/uml/class131333.html b/doc/devel/uml/class131333.html index 9bc358f9b..70d8c0609 100644 --- a/doc/devel/uml/class131333.html +++ b/doc/devel/uml/class131333.html @@ -16,10 +16,10 @@ -

Declaration :

+

Declaration :

Artifact : renderengine

-
Operation play

Declaration :

  • Uml : + play() :
  • C++ : public: play()
-
Relation renderSegments (<directional aggregation by value>)

Declaration :

  • Uml : - renderSegments : Processor, multiplicity : 0..*
  • C++ : private: Processor renderSegments
+
Operation play

Declaration :

  • Uml : + play() : void
  • C++ : public: void play ()

TODO: will probably be handled differently (see Cehteh)

+
Relation renderSegments (<directional aggregation by value>)

Declaration :

  • Uml : - renderSegments : Processor, multiplicity : 0..*
  • C++ : private: list<Processor> renderSegments

All public operations : play

diff --git a/doc/devel/uml/class131461.html b/doc/devel/uml/class131461.html index 513987a76..da8373b8e 100644 --- a/doc/devel/uml/class131461.html +++ b/doc/devel/uml/class131461.html @@ -17,12 +17,12 @@

Declaration :

  • C++ : class Processor

Directly inherited by : RenderEngine

-
+

Artifact : processor

Relation output (<unidirectional association>)

Declaration :

Attribut start
-

Declaration :

  • Uml : # start : long
  • C++ : protected: long start

begin of the timerange covered by this processor

+

Declaration :

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

begin of the timerange covered by this processor

Attribut end
-

Declaration :

  • Uml : # end : long
  • C++ : protected: long end

end of the timerange (excl)

+

Declaration :

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

end of the timerange (excl)

diff --git a/doc/devel/uml/class131589.html b/doc/devel/uml/class131589.html index adc44aa34..c65bef7fb 100644 --- a/doc/devel/uml/class131589.html +++ b/doc/devel/uml/class131589.html @@ -16,7 +16,7 @@ -

Declaration :

+

Declaration :

The output of the render pipeline. Pulling from such exit nodes actually ivokes the render process

Artifact : exitnode

diff --git a/doc/devel/uml/class131717.html b/doc/devel/uml/class131717.html index d7ee8a997..d03898369 100644 --- a/doc/devel/uml/class131717.html +++ b/doc/devel/uml/class131717.html @@ -17,9 +17,9 @@

Declaration :

  • C++ : class ProcNode
  • Java : public interface ProcNode

Directly inherited by : ExitNode Hub Link Source Trafo

-
+

Key abstraction of the Render Engine: A Data processing Node

Artifact : procnode

Relation datasrc (<unidirectional association>)

Declaration :

The predecessor in a processing pipeline, i.e. a source to get data to be processed

-
Relation <directional aggregation by value>

Declaration :

+
Relation params (<directional aggregation by value>)

Declaration :

diff --git a/doc/devel/uml/class131845.html b/doc/devel/uml/class131845.html index 633730e60..278d1cdb1 100644 --- a/doc/devel/uml/class131845.html +++ b/doc/devel/uml/class131845.html @@ -16,8 +16,8 @@ -

Declaration :

Directly inherited by : Mask PluginAdapter Projector

-
+

Declaration :

Directly inherited by : CodecAdapter Mask PluginAdapter Projector

+

Artifact : trafo

diff --git a/doc/devel/uml/class131973.html b/doc/devel/uml/class131973.html index 46e8e0177..68e7e24de 100644 --- a/doc/devel/uml/class131973.html +++ b/doc/devel/uml/class131973.html @@ -16,8 +16,8 @@ -

Declaration :

Directly inherited by : OpenGLPipe

-
+

Declaration :

Directly inherited by : GLPipe

+

Artifact : link

diff --git a/doc/devel/uml/class132101.html b/doc/devel/uml/class132101.html index 1a472b7c5..ca7d5ac7e 100644 --- a/doc/devel/uml/class132101.html +++ b/doc/devel/uml/class132101.html @@ -16,7 +16,7 @@ -

Declaration :

+

Declaration :

Artifact : hub

diff --git a/doc/devel/uml/class132229.html b/doc/devel/uml/class132229.html index 7a9da8c44..f0ba8e9d7 100644 --- a/doc/devel/uml/class132229.html +++ b/doc/devel/uml/class132229.html @@ -16,7 +16,7 @@ -

Declaration :

  • C++ : class Projector : public Trafo
+

Declaration :

  • C++ : class Projector : public Trafo

Special video processing node used to scale and translate image data.

Artifact : projector

diff --git a/doc/devel/uml/class132357.html b/doc/devel/uml/class132357.html index 3afe9414d..0d94f52bc 100644 --- a/doc/devel/uml/class132357.html +++ b/doc/devel/uml/class132357.html @@ -16,7 +16,7 @@ -

Declaration :

  • C++ : class Mask : public Trafo
+

Declaration :

  • C++ : class Mask : public Trafo

Artifact : mask

diff --git a/doc/devel/uml/class132485.html b/doc/devel/uml/class132485.html index 26afb58f3..b6389bd12 100644 --- a/doc/devel/uml/class132485.html +++ b/doc/devel/uml/class132485.html @@ -16,7 +16,7 @@ -

Declaration :

  • C++ : class PluginAdapter : public Trafo
+

Declaration :

  • C++ : class PluginAdapter : public Trafo

Adapter used to integrage an effects processor in the render pipeline

Artifact : pluginadapter

diff --git a/doc/devel/uml/class132613.html b/doc/devel/uml/class132613.html index 8e3a8c0aa..0134205d1 100644 --- a/doc/devel/uml/class132613.html +++ b/doc/devel/uml/class132613.html @@ -4,19 +4,19 @@ -Class OpenGLPipe +Class GLPipe -
Class OpenGLPipe
+
Class GLPipe

-

Declaration :

  • C++ : class OpenGLPipe : public Link
+

Declaration :

  • C++ : class GLPipe : public Link

specialized connection node used to handle the transfer of OpenGL data from a image bitmap into texture form

Artifact : glpipe

diff --git a/doc/devel/uml/class132741.html b/doc/devel/uml/class132741.html index 7ff05cf4c..f0a749926 100644 --- a/doc/devel/uml/class132741.html +++ b/doc/devel/uml/class132741.html @@ -16,8 +16,8 @@ -

Declaration :

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

Directly inherited by : ARender GLRender VRender

-
+

Declaration :

  • C++ : class StateProxy
  • Java : public interface StateProxy

Directly inherited by : ARender GLRender VRender

+

Artifact : stateproxy, Component(s) : Builder

Relation currFrame (<unidirectional association>)

Declaration :

  • Uml : # currFrame : Frame
  • C++ : protected: Frame * currFrame
diff --git a/doc/devel/uml/class132869.html b/doc/devel/uml/class132869.html index 101fec842..743378103 100644 --- a/doc/devel/uml/class132869.html +++ b/doc/devel/uml/class132869.html @@ -16,7 +16,7 @@ -

Declaration :

+

Declaration :

Representation of a Audio render process

Artifact : arender

diff --git a/doc/devel/uml/class132997.html b/doc/devel/uml/class132997.html index d4598994f..7680639be 100644 --- a/doc/devel/uml/class132997.html +++ b/doc/devel/uml/class132997.html @@ -16,7 +16,7 @@ -

Declaration :

+

Declaration :

Representation of a Video render process. (Encapsulates the video buffers for the actual calculations)

Artifact : vrender

diff --git a/doc/devel/uml/class133125.html b/doc/devel/uml/class133125.html index d99951fd3..140cc4b67 100644 --- a/doc/devel/uml/class133125.html +++ b/doc/devel/uml/class133125.html @@ -16,7 +16,7 @@ -

Declaration :

+

Declaration :

Representation of a OpenGL accelerated Video render process

Artifact : glrender

diff --git a/doc/devel/uml/class133253.html b/doc/devel/uml/class133253.html index 38d63c3b7..d34dc0fb5 100644 --- a/doc/devel/uml/class133253.html +++ b/doc/devel/uml/class133253.html @@ -16,6 +16,6 @@ -

Declaration :

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

Directly inherited by : AFrame GLBuf VFrame

- +

Declaration :

  • C++ : class Frame
  • Java : public interface Frame

Directly inherited by : AFrame GLBuf VFrame

+

TODO: how to relate to Cehteh's Frame entity in the Backend?
The latter is the fundamental Frame entity, wheras this Object rather represents a buffer set containing frame date

Artifact : frame

diff --git a/doc/devel/uml/class133381.html b/doc/devel/uml/class133381.html index 6295fcfbc..76a750487 100644 --- a/doc/devel/uml/class133381.html +++ b/doc/devel/uml/class133381.html @@ -16,7 +16,7 @@ -

Declaration :

  • C++ : class AFrame : public Frame
+

Declaration :

  • C++ : class AFrame : public Frame

Artifact : aframe

diff --git a/doc/devel/uml/class133509.html b/doc/devel/uml/class133509.html index c20293bd3..d8af98f71 100644 --- a/doc/devel/uml/class133509.html +++ b/doc/devel/uml/class133509.html @@ -16,7 +16,7 @@ -

Declaration :

  • C++ : class VFrame : public Frame
+

Declaration :

  • C++ : class VFrame : public Frame

Artifact : vframe

diff --git a/doc/devel/uml/class133637.html b/doc/devel/uml/class133637.html index 5c26105a0..a35f1eb48 100644 --- a/doc/devel/uml/class133637.html +++ b/doc/devel/uml/class133637.html @@ -16,7 +16,7 @@ -

Declaration :

  • C++ : class GLBuf : public Frame
+

Declaration :

  • C++ : class GLBuf : public Frame

Artifact : glbuf

diff --git a/doc/devel/uml/class133765.html b/doc/devel/uml/class133765.html index 9737e327a..af0e6bfb1 100644 --- a/doc/devel/uml/class133765.html +++ b/doc/devel/uml/class133765.html @@ -16,7 +16,7 @@ -

Declaration :

+

Declaration :

Source Node: represents a media source to pull data from.

Artifact : source

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

Declaration :

  • C++ : enum RelType
  • Java : protected enum RelType

nested in RelativePlacement

+

Declaration :

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

the possible kinds of RelativePlacements

nested in RelativePlacement

Items :

  • SAMETIME
  • diff --git a/doc/devel/uml/class134021.html b/doc/devel/uml/class134021.html index 06869373d..0f4c8e720 100644 --- a/doc/devel/uml/class134021.html +++ b/doc/devel/uml/class134021.html @@ -17,9 +17,9 @@

    Declaration :

    • C++ : class Buildable
    • Java : public interface Buildable

    Directly inherited by : MObject

    -
    +

    Artifact : buildable

    -
    Operation apply

    Declaration :

    • Uml : + apply(inout provided_tool : Tool) :
    • C++ : public: apply()
    +
    Operation apply

    Declaration :

    • Uml : + apply(inout provided_tool : Tool) : void
    • C++ : public: void apply (Tool& provided_tool)

    All public operations : apply

    diff --git a/doc/devel/uml/class134149.html b/doc/devel/uml/class134149.html index f35403102..d405b1b3f 100644 --- a/doc/devel/uml/class134149.html +++ b/doc/devel/uml/class134149.html @@ -17,9 +17,9 @@

    Declaration :

    • C++ : class Tool
    • Java : public interface Tool

    Directly inherited by : NodeCreatorTool SegmentationTool

    -
    +

    Used according to the visitor pattern: each Tool contains the concrete implementation for one task to be done to the various MObject classes

    Artifact : tool

    -
    Operation treat

    Declaration :

    • Uml : + treat(inout mElement : Buildable) :
    • C++ : public: treat()
    +
    Operation treat

    Declaration :

    • Uml : + treat(in mElement : Buildable) : void
    • C++ : public: void treat (const Buildable& mElement)

    This operation is to be overloaded for the specific MObject subclasses to be treated.

    All public operations : treat

    diff --git a/doc/devel/uml/class134277.html b/doc/devel/uml/class134277.html index 5e5428d3b..ca5d2bff7 100644 --- a/doc/devel/uml/class134277.html +++ b/doc/devel/uml/class134277.html @@ -16,13 +16,12 @@ -

    Declaration :

    • C++ : class SegmentationTool : public Tool
    +

    Declaration :

    • C++ : class SegmentationTool : public Tool

    Tool implementation for deriving a partitioning of the current timeline such, that each segement has a constant configuration. "Constant" means here, that any remaining changes over time can be represented by automation solely, without the need to change the node connections.

    Artifact : segmentationtool

    -
    Operation treat

    Declaration :

    • Uml : + treat(inout something : Buildable) :
    • C++ : public: treat()
    -
    Operation treat

    Declaration :

    • Uml : + treat(inout clip : Clip) :
    • C++ : public: treat()
    -
    Operation treat

    Declaration :

    • Uml : + treat(inout effect : Effect) :
    • C++ : public: treat()
    -
    Attribut segments
    -

    Declaration :

    • Uml : - segments :
    • C++ : private: segments

    holds the segemntation to be constructed

    +
    Operation treat

    Declaration :

    • Uml : + treat(in something : Buildable) : void
    • C++ : public: void treat (const Buildable& something)
    +
    Operation treat

    Declaration :

    • Uml : + treat(in clip : Clip) : void
    • C++ : public: void treat (const Clip& clip)
    +
    Operation treat

    Declaration :

    • Uml : + treat(in effect : Effect) : void
    • C++ : public: void treat (const Effect& effect)
    +
    Relation segments (<directional aggregation by value>)

    Declaration :

    • Uml : # segments : Segment, multiplicity : *
    • C++ : protected: list<Segment> segments

    the partitioning of the Timeline to be created by this tool.

    All public operations : treat , treat , treat , treat

    diff --git a/doc/devel/uml/class134405.html b/doc/devel/uml/class134405.html index f53a95dd7..3233a3151 100644 --- a/doc/devel/uml/class134405.html +++ b/doc/devel/uml/class134405.html @@ -16,12 +16,12 @@ -

    Declaration :

    • C++ : class NodeCreatorTool : public Tool
    +

    Declaration :

    • C++ : class NodeCreatorTool : public Tool

    This 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.

    Artifact : nodecreatertool

    -
    Operation treat

    Declaration :

    • Uml : + treat(inout something : Buildable) :
    • C++ : public: treat()
    -
    Operation treat

    Declaration :

    • Uml : + treat(inout clip : Clip) :
    • C++ : public: treat()
    -
    Operation treat

    Declaration :

    • Uml : + treat(inout effect : Effect) :
    • C++ : public: treat()
    -
    Operation treat

    Declaration :

    • Uml : + treat(inout auto : Auto) :
    • C++ : public: treat()
    +
    Operation treat

    Declaration :

    • Uml : + treat(inout something : Buildable) : void
    • C++ : public: void treat (Buildable& something)
    +
    Operation treat

    Declaration :

    • Uml : + treat(inout clip : Clip) : void
    • C++ : public: void treat (Clip& clip)
    +
    Operation treat

    Declaration :

    • Uml : + treat(inout effect : Effect) : void
    • C++ : public: void treat (Effect& effect)
    +
    Operation treat

    Declaration :

    • Uml : + treat(inout auto : Auto) : void
    • C++ : public: void treat (Auto& auto)
    Attribut proc

    Declaration :

    holds the Processor (Render Engine Element) to be built by the current build step

    All public operations : treat , treat , treat , treat , treat

    diff --git a/doc/devel/uml/class134533.html b/doc/devel/uml/class134533.html index bb4da0bb8..cc2ba0f55 100644 --- a/doc/devel/uml/class134533.html +++ b/doc/devel/uml/class134533.html @@ -16,10 +16,10 @@ -

    Declaration :

    • C++ : template<class VAL> class Parameter
    +

    Declaration :

    • C++ : template<class VAL> class Parameter

    Descriptor and access object for a plugin parameter. Parameters may be provided with values from the session, and this values may be automated.

    Artifact : parameter, Component(s) : ProcNode

    -
    Operation getValue

    Declaration :

    • Uml : + getValue() : VAL
    • C++ : public: VAL getValue()
    -
    Relation <association>

    Declaration :

    +
    Operation getValue

    Declaration :

    • Uml : + getValue() : VAL
    • C++ : public: VAL getValue () const
    +
    Relation <association>

    Declaration :

    All public operations : getValue

    diff --git a/doc/devel/uml/class134661.html b/doc/devel/uml/class134661.html index 63e26346e..1933e5d2e 100644 --- a/doc/devel/uml/class134661.html +++ b/doc/devel/uml/class134661.html @@ -17,11 +17,11 @@

    Declaration :

    • C++ : template<class VAL> class ParamProvider
    • Java : public interface ParamProvider<VAL>

    Directly inherited by : Auto

    -
    +

    A facility to get the actual value of a plugin/effect parameter

    Artifact : paramprovider, Component(s) : Session

    -
    Relation param (<association>)

    Declaration :

    -
    Relation <unidirectional association>

    Declaration :

    -
    Operation getValue

    Declaration :

    • Uml : + getValue() : VAL
    • C++ : public: VAL getValue()
    +
    Relation param (<association>)

    Declaration :

    +
    Relation ipo (<unidirectional association>)

    Declaration :

    +
    Operation getValue

    Declaration :

    • Uml : + getValue() : VAL
    • C++ : public: VAL getValue () const

    All public operations : getValue

    diff --git a/doc/devel/uml/class134789.html b/doc/devel/uml/class134789.html index 496a5058b..5da6a8542 100644 --- a/doc/devel/uml/class134789.html +++ b/doc/devel/uml/class134789.html @@ -16,5 +16,5 @@ -

    Declaration :

    • C++ : template<class VAL> class Interpolator
    +

    Declaration :

    • C++ : template<class VAL> class Interpolator

    Provides the implementation for getting the acutal value of a time varying or automated effect/plugin parameter

    Artifact : interpolator

    diff --git a/doc/devel/uml/class134917.html b/doc/devel/uml/class134917.html index 3392911cc..c2d5f5781 100644 --- a/doc/devel/uml/class134917.html +++ b/doc/devel/uml/class134917.html @@ -16,5 +16,5 @@ -

    Declaration :

    • C++ : class Time

    denotes a temporal position (time point), based on timeline start.

    investigate posix.4 realtime timers, wrap these here

    +

    Declaration :

    • C++ : class Time

    denotes a temporal position (time point), based on timeline start.

    investigate posix.4 realtime timers, wrap these here

    Artifact : time, Component(s) : CommonLib

    diff --git a/doc/devel/uml/sequencediagrams.html b/doc/devel/uml/class135045.html similarity index 58% rename from doc/devel/uml/sequencediagrams.html rename to doc/devel/uml/class135045.html index 8896468bf..16259137b 100644 --- a/doc/devel/uml/sequencediagrams.html +++ b/doc/devel/uml/class135045.html @@ -4,19 +4,19 @@ -Sequence Diagram Index +Class CodecAdapter -
    Sequence Diagram Index
    +
    Class CodecAdapter

    - - -
    QueryFrame
    + +

    Declaration :

    • C++ : class CodecAdapter : public Trafo

    Artifact : codecadapter

    +
    diff --git a/doc/devel/uml/class135173.html b/doc/devel/uml/class135173.html new file mode 100644 index 000000000..d4c848734 --- /dev/null +++ b/doc/devel/uml/class135173.html @@ -0,0 +1,27 @@ + + + + + + +Class Segment + + + + + +
    Class Segment
    +

    + + + + +

    Declaration :

    • C++ : class Segment

    Artifact : segment

    + +
    Attribut start
    +

    Declaration :

    • Uml : # start : Time
    • C++ : protected: Time start
    +
    Attribut length
    +

    Declaration :

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

    duration (span) of this timeline segment.

    +
    Relation elements (<directional aggregation>)

    Declaration :

    relevant MObjects comprising this segment. TODO: actually necessary??

    + + diff --git a/doc/devel/uml/classes.html b/doc/devel/uml/classes.html index e4692eb80..3f80fa110 100644 --- a/doc/devel/uml/classes.html +++ b/doc/devel/uml/classes.html @@ -19,20 +19,21 @@ AbstractMO AFrame Allocationa directive to place a MObject in a specific way -ARender -Assembler -Auto +ARenderRepresentation of a Audio render process +AssemblerThis is the actual building facility: provided the correct tools and associations, it serves to build and connect the individual ProcNode objects +AutoAutomation data for some parameter (i.e. a time varying function) Buildableinterface -BuilderFacadeboundary +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 Clip +CodecAdapter ConditionI provided a reworked Condition class in my cinelerra2 repository -ConManager +ConManagerConnection Manager, used to build the connections between render engine nodes, if these nodes need to cooperate besides the normal "data pull" operation. Esp., the Connection Manager knows how to wire up the effect's parameters with the corresponding ParamProviders (autmation) in the Session Constraint -ControllerFacadeboundary +ControllerFacadeboundaryProvides unified access to the Proc-Subsystem Controller. Especially, this Facade class provides the functions to get a render engine to carry out actual renderings. DirectPlacement EDL Effect -ExitNode +ExitNodeThe output of the render pipeline. Pulling from such exit nodes actually ivokes the render process ExplicitPlacementinterface File FileHandle @@ -43,13 +44,14 @@ FileReference Fixture FrameFrames are just a low level lump of continous memory, most parts are opaque. Frames are memory sensitive, they will be small constant sized structures which can be efficently managed in a pool. -Frameinterface +FrameinterfaceTODO: how to relate to Cehteh's Frame entity in the Backend?
    The latter is the fundamental Frame entity, wheras this Object rather represents a buffer set containing frame date FrameDescriptorinterfaceA FrameDescriptor implements the higher level interfaces for frames. Further refinements are made by subclassing and policy classes FrameReference GLBuf -GLRender +GLPipespecialized connection node used to handle the transfer of OpenGL data from a image bitmap into texture form +GLRenderRepresentation of a OpenGL accelerated Video render process Hub -Interpolator +InterpolatorProvides the implementation for getting the acutal value of a time varying or automated effect/plugin parameter Label Link Lock @@ -58,35 +60,35 @@ Meta MObjectinterface MutexI provided a reworked Mutex class in my cinelerra2 repository -NodeCreatorTool -OpenGLPipe -Parameter -ParamProviderinterface -PathManager +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. +ParameterDescriptor and access object for a plugin parameter. Parameters may be provided with values from the session, and this values may be automated. +ParamProviderinterfaceA facility to get the actual value of a plugin/effect parameter +PathManagerWhile building a render engine, this Strategy class decides on the actual render strategy in accordance to the current controller settings (system state) Placementinterface -PluginAdapter +PluginAdapterAdapter used to integrage an effects processor in the render pipeline Prefetch Processor -ProcNodeinterface -Projector +ProcNodeinterfaceKey abstraction of the Render Engine: A Data processing Node +ProjectorSpecial video processing node used to scale and translate image data. RelativePlacement -RelTypeenum +RelTypeenumthe possible kinds of RelativePlacements RenderEngine -RenderState +RenderStateEncapsulates the logic used to get a "current render process" in accordance to the currentyl applicable controller settings. The provided StateProxy serves to hold any mutalbe state used in the render process, so the rest of the render engine can be stateless. Scheduler -SegmentationTool +Segment +SegmentationToolTool implementation for deriving a partitioning of the current timeline such, that each segement has a constant configuration. "Constant" means here, that any remaining changes over time can be represented by automation solely, without the need to change the node connections. Session SmartPointerauxiliary -Source +SourceSource Node: represents a media source to pull data from. StateProxyinterface 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 -Toolinterface +ToolinterfaceUsed according to the visitor pattern: each Tool contains the concrete implementation for one task to be done to the various MObject classes ToolFactory Track Trafo VFrame -VRender +VRenderRepresentation of a Video render process. (Encapsulates the video buffers for the actual calculations) Wish diff --git a/doc/devel/uml/classes_list.html b/doc/devel/uml/classes_list.html index 5c4f434ab..aee95f532 100644 --- a/doc/devel/uml/classes_list.html +++ b/doc/devel/uml/classes_list.html @@ -26,6 +26,7 @@ Buildable
    BuilderFacade
    Clip
    +CodecAdapter
    Condition
    ConManager
    Constraint
    @@ -48,6 +49,7 @@ FrameDescriptor
    FrameReference
    GLBuf
    +GLPipe
    GLRender
    Hub
    Interpolator
    @@ -60,7 +62,6 @@ MObject
    Mutex
    NodeCreatorTool
    -OpenGLPipe
    Parameter
    ParamProvider
    PathManager
    @@ -75,6 +76,7 @@ RenderEngine
    RenderState
    Scheduler
    +Segment
    SegmentationTool
    Session
    SmartPointer
    diff --git a/doc/devel/uml/componentdiagrams.html b/doc/devel/uml/componentdiagrams.html index 49939b439..15a1086a2 100644 --- a/doc/devel/uml/componentdiagrams.html +++ b/doc/devel/uml/componentdiagrams.html @@ -17,6 +17,7 @@ +
    OverviewThis drawing shows the top level compoents and relations
    proc-components
    diff --git a/doc/devel/uml/deploymentdiagrams.html b/doc/devel/uml/deploymentdiagrams.html index 1587aaecd..895e8fc05 100644 --- a/doc/devel/uml/deploymentdiagrams.html +++ b/doc/devel/uml/deploymentdiagrams.html @@ -17,6 +17,7 @@ +
    Overview Render Engine
    Source Overview
    diff --git a/doc/devel/uml/fig128005.png b/doc/devel/uml/fig128005.png index 36a096e65..68d6a056f 100644 Binary files a/doc/devel/uml/fig128005.png and b/doc/devel/uml/fig128005.png differ diff --git a/doc/devel/uml/fig128133.png b/doc/devel/uml/fig128133.png index e4a7e4d48..9a1680254 100644 Binary files a/doc/devel/uml/fig128133.png and b/doc/devel/uml/fig128133.png differ diff --git a/doc/devel/uml/fig128181.png b/doc/devel/uml/fig128181.png index 1cbd87816..fbd727164 100644 Binary files a/doc/devel/uml/fig128181.png and b/doc/devel/uml/fig128181.png differ diff --git a/doc/devel/uml/fig128261.png b/doc/devel/uml/fig128261.png index a92d6ec83..265fa442b 100644 Binary files a/doc/devel/uml/fig128261.png and b/doc/devel/uml/fig128261.png differ diff --git a/doc/devel/uml/fig128389.png b/doc/devel/uml/fig128389.png index 8e01954ba..36521dc8a 100644 Binary files a/doc/devel/uml/fig128389.png and b/doc/devel/uml/fig128389.png differ diff --git a/doc/devel/uml/fig128517.png b/doc/devel/uml/fig128517.png index 66e38300e..61f1341a4 100644 Binary files a/doc/devel/uml/fig128517.png and b/doc/devel/uml/fig128517.png differ diff --git a/doc/devel/uml/fig128773.png b/doc/devel/uml/fig128773.png index 3a3fd15e7..282e0e7b1 100644 Binary files a/doc/devel/uml/fig128773.png and b/doc/devel/uml/fig128773.png differ diff --git a/doc/devel/uml/fig128901.png b/doc/devel/uml/fig128901.png index 1ae03c3a2..6bb94e8cc 100644 Binary files a/doc/devel/uml/fig128901.png and b/doc/devel/uml/fig128901.png differ diff --git a/doc/devel/uml/fig129029.png b/doc/devel/uml/fig129029.png index 522c3c363..6313cb7fb 100644 Binary files a/doc/devel/uml/fig129029.png and b/doc/devel/uml/fig129029.png differ diff --git a/doc/devel/uml/fig129157.png b/doc/devel/uml/fig129157.png index dcaf4449a..4629abad9 100644 Binary files a/doc/devel/uml/fig129157.png and b/doc/devel/uml/fig129157.png differ diff --git a/doc/devel/uml/fig129285.png b/doc/devel/uml/fig129285.png index 7dc65311b..2c6a4ba97 100644 Binary files a/doc/devel/uml/fig129285.png and b/doc/devel/uml/fig129285.png differ diff --git a/doc/devel/uml/fig129413.png b/doc/devel/uml/fig129413.png index 0227cf31a..2d44734a8 100644 Binary files a/doc/devel/uml/fig129413.png and b/doc/devel/uml/fig129413.png differ diff --git a/doc/devel/uml/fig129541.png b/doc/devel/uml/fig129541.png index 247b63f02..731ebdf44 100644 Binary files a/doc/devel/uml/fig129541.png and b/doc/devel/uml/fig129541.png differ diff --git a/doc/devel/uml/fig129669.png b/doc/devel/uml/fig129669.png index 6ef03f035..36073fe33 100644 Binary files a/doc/devel/uml/fig129669.png and b/doc/devel/uml/fig129669.png differ diff --git a/doc/devel/uml/fig129797.png b/doc/devel/uml/fig129797.png new file mode 100644 index 000000000..e38a4cb77 Binary files /dev/null and b/doc/devel/uml/fig129797.png differ diff --git a/doc/devel/uml/fig130053.png b/doc/devel/uml/fig130053.png new file mode 100644 index 000000000..9e6810f94 Binary files /dev/null and b/doc/devel/uml/fig130053.png differ diff --git a/doc/devel/uml/index-withframe.html b/doc/devel/uml/index-withframe.html index 84edf1322..cf6c2c73f 100644 --- a/doc/devel/uml/index-withframe.html +++ b/doc/devel/uml/index-withframe.html @@ -4,7 +4,7 @@ -/home/ct/src/cinelerra3/doc/devel/uml/index-withframe +/mnt/Lager/heim/devel/cin3/doc/devel/uml/index-withframe diff --git a/doc/devel/uml/index.html b/doc/devel/uml/index.html index 3c87012a6..2450fdd12 100644 --- a/doc/devel/uml/index.html +++ b/doc/devel/uml/index.html @@ -27,10 +27,16 @@ Documentation

    Overview



    -

    This drawing shows the top level compoents and relations

    +

    This drawing shows the top level compoents and relations

    +
    Component CommonLib
    +

    provided classes : Time

    +
    Component Builder
    +

    provided classes : StateProxy

    +

    required classes : Fixture, Session

    Component Session
    +

    provided classes : EDL, Fixture, MObject, ParamProvider, Session

    Component EDL
    @@ -41,7 +47,8 @@ Documentation
    Component Controller
    -

    Depends on Builder

    +

    Depends on Builder

    provided classes : BuilderFacade

    +
    Component AssetManagement
    @@ -49,7 +56,13 @@ Documentation
    Component Dispatcher
    Component Engine
    -

    Depends on Frame (Stream) Provider

    +

    Depends on Frame (Stream) Provider

    required classes : StateProxy

    +
    + +
    Component ProcNode
    +

    nested in Engine

    +

    provided classes : Parameter

    +

    required classes : ParamProvider

    Component Frame (Stream) Provider
    @@ -59,12 +72,370 @@ Documentation
    Component Cache
    Component RenderPathManager
    +

    provided classes : PathManager

    +
    + +

    1.2 Component View interfaces

    +
    + +

    +

    proc-components



    + +
    Component ControllerFacade
    +

    provided classes : ControllerFacade

    +

    required classes : BuilderFacade, PathManager

    + +
    Component ConManager
    +

    required classes : ParamProvider

    -

    1.2 Package codegen

    -

    This package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skelleton.

    +

    1.3 Package codegen

    +

    This package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skeleton.

    -

    1.2.1 Deployment View Codegen Deployment

    +

    1.3.1 Deployment View EXE Deployment

    +

    defines and lists how the Cinelerra executable has to be created

    + + +

    1.3.2 Package common

    +

      +
    • C++ namespace : cinelerra
    • +
    +

    sourcecode package

    Common library and helper classes

    Diagram : Source Overview

    +
    + +

    1.3.2.1 Deployment View gen

    +

    defines source files to be generated by BOUML

    +
    + +
    Artifact time
    +

    unified representation of a time point, including conversion functions

    +

    Artifact source associated with : Time

    +
    +
    + +

    1.3.3 Package backend

    +

      +
    • C++ namespace : data
    • +
    +

    sourcecode package

    Data backend classes here...

    + +

    1.3.3.1 Deployment View gen

    +
    + +

    1.3.4 Package proc

    +

      +
    • C++ namespace : proc_interface
    • +
    +

    sourcecode package

    All classes belonging to the (middle) processing layer

    + +

    1.3.4.1 Deployment View gen

    +

    defines source files to be generated by BOUML

    +
    + +
    Artifact stateproxy
    +

    Key Interface representing a render process and encapsulating state

    +

    Artifact source associated with : StateProxy

    + +
    Artifact controllerfacade
    +

    Facade and service access point for the Proc Layer Controller

    +

    Artifact source associated with : ControllerFacade

    + +
    Artifact frame
    +

    Key Abstraction: render process and buffer holding frame data.

    +

    Artifact source associated with : Frame

    +
    + +

    1.3.4.2 Package asset

    +

      +
    • C++ namespace : asset
    • +
    +

    sourcecode package

    Asset Management

    + +

    1.3.4.2.1 Deployment View gen

    +

    defines source files to be generated by BOUML

    +
    + +

    1.3.4.3 Package mobject

    +

      +
    • C++ namespace : mobject
    • +
    +

    sourcecode package

    MObject Subsystem
    including the Session (EDL), Builder and Processing Controller

    + +

    1.3.4.3.1 Deployment View gen

    +

    defines source files to be generated by BOUML

    +
    + +
    Artifact mobject
    +

    Key Abstraction: A Media Object in the Session

    +

    Artifact source associated with : MObject

    + +
    Artifact placement
    +

    Key Abstraction: a way to place and locate a Media Object

    +

    Artifact source associated with : Placement

    + +
    Artifact explicitplacement
    +

    special Placement yielding an absolute location (Time,Track)-location for a MObject

    +

    Artifact source associated with : ExplicitPlacement

    + +
    Artifact builderfacade
    +

    Facade and service access point for the Builder Subsystem

    +

    Artifact source associated with : BuilderFacade

    + +
    Artifact buildable
    +

    marker interface denoting any MObject able to be treated by Tools

    +

    Artifact source associated with : Buildable

    + +
    Artifact parameter
    +

    representation of an automatable effect/plugin parameter

    +

    Artifact source associated with : Parameter

    + +
    Artifact paramprovider
    +

    interface denoting a source for actual Parameter values

    +

    Artifact source associated with : ParamProvider

    + +
    Artifact interpolator
    +

    denotes a facility to get (continuously interpolated) parameter values

    +

    Artifact source associated with : Interpolator

    +
    + +

    1.3.4.3.2 Package session

    +

      +
    • C++ namespace : mobject::session
    • +
    +

    sourcecode package

    Everything concerning the EDL and Session, within the MObject Subsystem

    + +

    1.3.4.3.2.1 Deployment View gen

    +

    defines source files to be generated by BOUML

    +
    + +
    Artifact session
    +

    holds the complete session to be edited by the user

    +

    Artifact source associated with : Session

    + +
    Artifact edl
    +

    the (high level) Edit Decision List within the current Session

    +

    Artifact source associated with : EDL

    + +
    Artifact fixture
    +

    the (low level) representation of the EDL with concrete placement data

    +

    Artifact source associated with : Fixture

    + +
    Artifact segment
    +

    Segment of the Timeline.
    Used at the moment (7/07) for partitioning the timeline/fixture into segments
    to be rendered by a specialized render node network for each, without the need
    to change any connections within a given segment.
    Note this concept may be superfluos alltogether; is a draft and the real
    use still needs to be worked out...

    +

    Artifact source associated with : Segment

    + +
    Artifact track
    +

    descriptor for one track in the Session

    +

    Artifact source associated with : Track

    + +
    Artifact abstractmo
    +

    abstract base class for all Media Objects

    +

    Artifact source associated with : AbstractMO

    + +
    Artifact clip
    +

    a Media Clip

    +

    Artifact source associated with : Clip

    + +
    Artifact effect
    +

    EDL representation of a pluggable and automatable effect.

    +

    Artifact source associated with : Effect

    + +
    Artifact meta
    +

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

    +

    Artifact source associated with : Meta

    + +
    Artifact fixedplacement
    +

    Artifact source associated with : DirectPlacement

    + +
    Artifact relativeplacement
    +

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

    +

    Artifact source associated with : RelativePlacement

    + +
    Artifact allocation
    +

    Artifact source associated with : Allocation

    + +
    Artifact label
    +

    Artifact source associated with : Label

    + +
    Artifact auto
    +

    Media Object holding automation data

    +

    Artifact source associated with : Auto

    +
    +
    + +

    1.3.4.3.3 Package builder

    +

      +
    • C++ namespace : mobject::builder
    • +
    +

    sourcecode package

    The Builder creating the Render Engine,
    located within the MObject Subsystem

    + +

    1.3.4.3.3.1 Deployment View gen

    +

    defines source files to be generated by BOUML

    +
    + +
    Artifact toolfactory
    +

    supply of Tool implementations for the Builder

    +

    Artifact source associated with : ToolFactory

    + +
    Artifact conmanager
    +

    manages the creation of additional ProcNode connections for the Renderengine

    +

    Artifact source associated with : ConManager

    + +
    Artifact assembler
    +

    building facility (implementation of the build process)

    +

    Artifact source associated with : Assembler

    + +
    Artifact tool
    +

    Interface, any tool for processing MObjects

    +

    Artifact source associated with : Tool

    + +
    Artifact segmentationtool
    +

    Tool for creating a partitioning of the current timeline

    +

    Artifact source associated with : SegmentationTool

    + +
    Artifact nodecreatertool
    +

    central Tool implementing the Renderengine building

    +

    Artifact source associated with : NodeCreatorTool

    +
    +
    + +

    1.3.4.3.4 Package controller

    +

      +
    • C++ namespace : mobject::controller
    • +
    +

    sourcecode package

    The Processing and Render Controller,
    located within the MObject Subsystem

    + +

    1.3.4.3.4.1 Deployment View gen

    +

    defines source files to be generated by BOUML

    +
    + +
    Artifact pathmanager
    +

    Manager for deciding the actual render strategy

    +

    Artifact source associated with : PathManager

    + +
    Artifact renderstate
    +

    renderengine state manager

    +

    Artifact source associated with : RenderState

    +
    +
    +
    + +

    1.3.4.4 Package engine

    +

      +
    • C++ namespace : engine
    • +
    +

    sourcecode package

    The Core Render Engine

    + +

    1.3.4.4.1 Deployment View gen

    +

    defines source files to be generated by BOUML

    +
    + +
    Artifact renderengine
    +

    a complete network of processing nodes usable for rendering

    +

    Artifact source associated with : RenderEngine

    + +
    Artifact processor
    +

    a single render pipeline for one segment of the timeline

    +

    Artifact source associated with : Processor

    + +
    Artifact exitnode
    +

    special Processing Node providing "pullable" output

    +

    Artifact source associated with : ExitNode

    + +
    Artifact procnode
    +

    Key abstraction of the Render Engine: a Processing Node

    +

    Artifact source associated with : ProcNode

    + +
    Artifact trafo
    +

    transforming processing Node

    +

    Artifact source associated with : Trafo

    + +
    Artifact link
    +

    forwarding, adapting or connecting ProcNode

    +

    Artifact source associated with : Link

    + +
    Artifact hub
    +

    special ProcNode used to build data distributing connections

    +

    Artifact source associated with : Hub

    + +
    Artifact projector
    +

    video ProcNode for scaling and translating image data

    +

    Artifact source associated with : Projector

    + +
    Artifact mask
    +

    Video ProcNode for masking regions of the image (automatable)

    +

    Artifact source associated with : Mask

    + +
    Artifact pluginadapter
    +

    Adapter for integrating various Effect processors in the render pipeline

    +

    Artifact source associated with : PluginAdapter

    + +
    Artifact codecadapter
    +

    Processing Node for (de)coding media data

    +

    Artifact source associated with : CodecAdapter

    + +
    Artifact glpipe
    +

    specialized connection element for handling OpenGL implementation details

    +

    Artifact source associated with : GLPipe

    + +
    Artifact arender
    +

    Representation of a Audio Render process

    +

    Artifact source associated with : ARender

    + +
    Artifact vrender
    +

    Representation of a Video render process

    +

    Artifact source associated with : VRender

    + +
    Artifact glrender
    +

    Representation of a OpenGL accellerated Video render process

    +

    Artifact source associated with : GLRender

    + +
    Artifact aframe
    +

    a buffer and render process holding a Audio frame

    +

    Artifact source associated with : AFrame

    + +
    Artifact vframe
    +

    a buffer and render process holding a Video frame

    +

    Artifact source associated with : VFrame

    + +
    Artifact glbuf
    +

    a buffer and render process holding a Video frame for OpenGL rendering

    +

    Artifact source associated with : GLBuf

    + +
    Artifact source
    +

    Representation of a Media source

    +

    Artifact source associated with : Source

    +
    +
    +
    + +

    1.3.5 Package gui

    +

      +
    • C++ namespace : gui
    • +
    +

    sourcecode package

    User Interface classes go here

    + +

    1.3.5.1 Deployment View gen

    +

    defines source files to be generated by BOUML

    +
    + +

    1.3.6 Package tool

    +

    sourcecode package

    Tools and Utilities
    (separate from the main cinelrra binary)

    + +

    1.3.6.1 Deployment View gen

    +

    defines source files to be generated by BOUML

    +
    @@ -81,18 +452,14 @@ Documentation

    Session structure



    - -

    -

    EDL Example1



    -

    A simple example showing how the actual objects are placed in the Fixture (=definitive playlist). It shows a Video and Audio clip placed on two tracks

    -

    -

    EDL Example2



    -

    More complex example showing the Object graph in the EDL and how it is linked into the Fixture to yield the actual locations. In this example, an HUE Effect is applied on a part of the Clip

    Class Session
    +
    Class Session
    Class EDL
    Class Fixture
    +
    Class Segment
    Class Track
    Class MObject
    Class Placement
    +
    Class Clip
    Class Effect
    @@ -101,10 +468,12 @@ Documentation
    Class Label
    -
    Class Auto
    Class Wish
    +
    Class Parameter
    +
    +

    2.2.2 Package Builder

    @@ -287,13 +656,7 @@ reuse exiting Engine

Selection :

    Transformation

    Render Entities



    - -

    -

    Engine Example1



    -

    Example1 (from EDL) continued: here the RenderEngine to be created by the Builder from the Input shown in Example1

    -

    -

    Engine Example2



    -

    Example2 (from EDL) continued: notably in this RenderEngine the Effect has been partitioned into 2 segments with constant configuration.

    +

    Automation Entities



    @@ -306,7 +669,8 @@ reuse exiting Engine

    Selection :

      Transformation
      Class Projector
      Class Mask
      -
      +
      +
      Class GLPipe
      Class ARender
      Class VRender
      Class GLRender
      @@ -315,11 +679,191 @@ reuse exiting Engine

      Selection :

        Transformation
        Class VFrame
        Class GLBuf
        Class Source
        -
        Class Parameter
        -
        -

        + +

        2.4 Use Case View Renderengine Use

        +
        + +

        +

        EDL Example1



        +

        A simple example showing how the actual objects are placed in the Fixture (=definitive playlist). It shows a Video and Audio clip placed on two tracks

        +

        +

        EDL Example2



        +

        More complex example showing the Object graph in the EDL and how it is linked into the Fixture to yield the actual locations. In this example, an HUE Effect is applied on a part of the Clip

        +

        +

        Engine Example1



        +

        Example1 (from EDL) continued: here the RenderEngine to be created by the Builder from the Input shown in Example1

        +

        +

        Engine Example2



        +

        Example2 (from EDL) continued: notably in this RenderEngine the Effect has been partitioned into 2 segments with constant configuration.

        +
        Class instance

        type :Fixture

        +
        Class instance

        type :ExplicitPlacement

        attributes :

        +
        Class instance

        type :ExplicitPlacement

        attributes :

        +
        Class instance audio1

        type :Track

        +
        Class instance video1

        type :Track

        +
        Class instance vid_A

        type :Clip

        attributes :

        +
        Class instance aud_A

        type :Clip

        attributes :

        +
        Class instance audio1

        type :Track

        +
        Class instance

        type :ExplicitPlacement

        attributes :

        +
        Class instance video1

        type :Track

        +
        Class instance

        type :Fixture

        +
        Class instance vid_A

        type :Clip

        attributes :

        +
        Class instance

        type :EDL

        +
        Class instance refPoint

        type :Label

        attributes :

        +
        Class instance

        type :Allocation

        attributes :

        +
        Class instance vid_A

        type :Clip

        attributes :

        relations :

        +
        Class instance

        type :RelativePlacement

        attributes :

        relations :

        +
        Class instance

        type :Effect

        attributes :

        relations :

        +
        Class instance

        type :RelativePlacement

        attributes :

        relations :

        +
        Class instance

        type :Effect

        attributes :

        relations :

        +
        Class instance

        type :ExplicitPlacement

        attributes :

        +
        Class instance

        type :RenderEngine

        relations :

        +
        Class instance audio1

        type :Processor

        attributes :

        relations :

        +
        Class instance video1

        type :Processor

        attributes :

        relations :

        +
        Class instance video

        type :ExitNode

        relations :

        +
        Class instance audio

        type :ExitNode

        relations :

        +
        Class instance ouput

        type :Projector

        relations :

        +
        Class instance input

        type :Projector

        relations :

        +
        Class instance

        type :Mask

        relations :

        +
        Class instance vid_a

        type :Source

        +
        Class instance aud_a

        type :Source

        +
        Class instance vid1

        type :VRender

        relations :

        +
        Class instance au1

        type :ARender

        relations :

        +
        Class instance

        type :VFrame

        +
        Class instance

        type :AFrame

        +
        Class instance

        type :RenderEngine

        relations :

        +
        Class instance devnull

        type :Source

        +
        Class instance video

        type :ExitNode

        relations :

        +
        Class instance input

        type :Projector

        relations :

        +
        Class instance video1

        type :Processor

        attributes :

        relations :

        +
        Class instance ouput

        type :Projector

        relations :

        +
        Class instance HUE

        type :PluginAdapter

        relations :

        +
        Class instance vid1

        type :VRender

        relations :

        +
        Class instance

        type :VFrame

        +
        Class instance video1

        type :Processor

        attributes :

        relations :

        +
        Class instance video

        type :ExitNode

        relations :

        +
        Class instance HUE

        type :PluginAdapter

        relations :

        +
        Class instance vid_a

        type :Source

        +
        Class instance input

        type :Projector

        relations :

        +
        Class instance video1

        type :Processor

        attributes :

        relations :

        +
        Class instance ouput

        type :Projector

        relations :

        +
        Class instance video

        type :ExitNode

        relations :

        3 Package BackendLayer

        @@ -345,13 +889,12 @@ reuse exiting Engine

        Selection :

          Transformation
          Class Prefetch
          Class Scheduler
          - -

          -

          QueryFrame



          -
          + +

          3.1.1.1 Activity get frame

          +

          Pre Condition :

            Post Condition :

              3.2 Component View Cache

              diff --git a/doc/devel/uml/index_60.html b/doc/devel/uml/index_60.html index 8712d7074..0a78be5d0 100644 --- a/doc/devel/uml/index_60.html +++ b/doc/devel/uml/index_60.html @@ -17,8 +17,8 @@ - + diff --git a/doc/devel/uml/index_65.html b/doc/devel/uml/index_65.html index f2ddaea9d..fb3771d6c 100644 --- a/doc/devel/uml/index_65.html +++ b/doc/devel/uml/index_65.html @@ -17,20 +17,34 @@
              NameKindDescription
              <flow>transition
              <flow>transition
              <flow>transition
              <flow>transition
              <flow>transition
              <flow>transition
              + + + - - + + + + + - + + + + + + + + +
              NameKindDescription
              abstractmoartifactabstract base class for all Media Objects
              AbstractMOclass
              activity finalactivity final
              activity finalactivity final
              AFrameclass
              aframeartifacta buffer and render process holding a Audio frame
              allocationartifact
              Allocationclassa directive to place a MObject in a specific way
              anchorrelation
              applyoperation
              Architecturecomponent viewThe various Components comprising the Cinelerra3 Video editing Application
              ARenderclass
              Assemblerclass
              ARenderclassRepresentation of a Audio render process
              arenderartifactRepresentation of a Audio Render process
              AssemblerclassThis is the actual building facility: provided the correct tools and associations, it serves to build and connect the individual ProcNode objects
              assemblerartifactbuilding facility (implementation of the build process)
              assetpackagesourcecode package

              Asset Management
              AssetManagementcomponent
              AssetManagerpackage
              ATTACHattributeattach subject to anchor (e.g. an effect to a clip)
              Autoclass
              au1class instance
              aud_Aclass instance
              aud_aclass instance
              audioclass instance
              audio1class instance
              audio1class instance
              audio1class instance
              autoartifactMedia Object holding automation data
              AutoclassAutomation data for some parameter (i.e. a time varying function)
              Automation Entitiesclass diagram
              diff --git a/doc/devel/uml/index_66.html b/doc/devel/uml/index_66.html index 2921c0798..ee9c7dde3 100644 --- a/doc/devel/uml/index_66.html +++ b/doc/devel/uml/index_66.html @@ -17,6 +17,7 @@ + @@ -28,12 +29,15 @@ - + + + - + +
              NameKindDescription
              backendpackagesourcecode package

              Data backend classes here...
              Backend Componentsclass view
              BackendLayerpackage
              buildoperation
              build Requestactivity parameter
              build Toolactivity object
              Buildableclass
              buildEngineoperation
              buildableartifactmarker interface denoting any MObject able to be treated by Tools
              buildEngineoperationMain Operation of the Builder: create a render engine for a given part of the timeline
              Buildercomponent
              Builderpackage
              builderpackagesourcecode package

              The Builder creating the Render Engine,
              located within the MObject Subsystem
              Builder Entitiesclass diagram
              Builder Workingsclass view
              BuilderFacadeclass
              BuilderFacadeclassProvides unified access to the builder functionality. While individual components of the builder subsystem may be called if necessary or suitable, it is usually better to do all extern invocations via the high level methods of this Facade
              builderfacadeartifactFacade and service access point for the Builder Subsystem
              building the Engineactivity
              buildProcessoroperation
              diff --git a/doc/devel/uml/index_67.html b/doc/devel/uml/index_67.html index 1bc2d0be9..d3fce2569 100644 --- a/doc/devel/uml/index_67.html +++ b/doc/devel/uml/index_67.html @@ -21,25 +21,53 @@ Cachecomponent view checked_inrelationchecked_in objects are subject of cache aging and must be not in use checked_outrelationthis list keeps all mappings which are in use, and thus prevents them from Cache aging +Cinelerra3artifactthe main executable to be built cinelerra3package +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +class instanceclass instance +clipartifacta Media Clip Clipclass clipsrelation -codegenpackageThis package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skelleton. -Codegen Deploymentdeployment view +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. +commonpackagesourcecode package

              Common library and helper classes +CommonLibcomponent CommonLibpackage complete Render Engineactivity object ConditionclassI provided a reworked Condition class in my cinelerra2 repository configureoperation configure Renderactivity configure Toolsopaque activity action -ConManagerclass +ConManagerclassConnection Manager, used to build the connections between render engine nodes, if these nodes need to cooperate besides the normal "data pull" operation. Esp., the Connection Manager knows how to wire up the effect's parameters with the corresponding ParamProviders (autmation) in the Session +conmanagerartifactmanages the creation of additional ProcNode connections for the Renderengine +ConManagercomponent connectopaque activity action Constraintclass Controllercomponent Controllerpackage +controllerpackagesourcecode package

              The Processing and Render Controller,
              located within the MObject Subsystem Controller Entitiesclass diagram Controller Workingsclass view -ControllerFacadeclass +ControllerFacadeclassProvides unified access to the Proc-Subsystem Controller. Especially, this Facade class provides the functions to get a render engine to carry out actual renderings. +controllerfacadeartifactFacade and service access point for the Proc Layer Controller +ControllerFacadecomponent create ProcNodeopaque activity action currFramerelation diff --git a/doc/devel/uml/index_68.html b/doc/devel/uml/index_68.html index b7834de4a..015d073f6 100644 --- a/doc/devel/uml/index_68.html +++ b/doc/devel/uml/index_68.html @@ -23,8 +23,9 @@ descriptorrelation designpackage designpackageAll things concering the big picture.
              Not a real code package, rather a container for design drafts, specifications, decisions. -determine Render Paramsexpansion region determine Render Paramsopaque activity action +determine Render Paramsexpansion region +devnullclass instance DirectPlacementclass Dispatchercomponent diff --git a/doc/devel/uml/index_69.html b/doc/devel/uml/index_69.html index ab6f13363..9d52d03bb 100644 --- a/doc/devel/uml/index_69.html +++ b/doc/devel/uml/index_69.html @@ -17,20 +17,27 @@ - + + + + + - + + + +
              NameKindDescription
              EDLcomponent
              edlartifactthe (high level) Edit Decision List within the current Session
              EDLclass
              EDLcomponent
              EDL Example1object diagramA simple example showing how the actual objects are placed in the Fixture (=definitive playlist). It shows a Video and Audio clip placed on two tracks
              EDL Example2object diagramMore complex example showing the Object graph in the EDL and how it is linked into the Fixture to yield the actual locations. In this example, an HUE Effect is applied on a part of the Clip
              edlsrelation
              effectartifactEDL representation of a pluggable and automatable effect.
              Effectclass
              elementsrelationrelevant MObjects comprising this segment. TODO: actually necessary??
              endattributeend of the timerange (excl)
              Enginecomponent
              enginepackagesourcecode package

              The Core Render Engine
              Engine Example1object diagramExample1 (from EDL) continued: here the RenderEngine to be created by the Builder from the Input shown in Example1
              Engine Example2object diagramExample2 (from EDL) continued: notably in this RenderEngine the Effect has been partitioned into 2 segments with constant configuration.
              Engine Partsdeployment view
              Engine Workingsclass view
              establish partitioningexpansion region
              ExitNodeclass
              EXE Deploymentdeployment viewdefines and lists how the Cinelerra executable has to be created
              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
              ExplicitPlacementclass
              diff --git a/doc/devel/uml/index_70.html b/doc/devel/uml/index_70.html index 8eee4f792..a2c4b9eea 100644 --- a/doc/devel/uml/index_70.html +++ b/doc/devel/uml/index_70.html @@ -18,6 +18,7 @@ + @@ -27,15 +28,18 @@ + - + + - + + diff --git a/doc/devel/uml/index_71.html b/doc/devel/uml/index_71.html index 6a0d8d1d3..62a9306fc 100644 --- a/doc/devel/uml/index_71.html +++ b/doc/devel/uml/index_71.html @@ -17,17 +17,35 @@
              NameKindDescription
              Fileclass
              filerelation
              File Mappingclass diagramShows whats used to access Frames
              FileHandleclass
              FileHandleCacheclass
              FileProviderclassThis is the Factory for Files, whenever something wants to use some file (or temporary storage), This Factory will hand out some smart/shared pointer to a File object which will be used to retrieve Frames.
              FileReferenceclass
              filesrelation
              fixedplacementartifact
              Fixtureactivity object
              Fixtureclass
              fixtureartifactthe (low level) representation of the EDL with concrete placement data
              fixturerelation
              Fixtureclass
              Fixturecomponent
              fork activity nodefork activity node
              FrameclassFrames are just a low level lump of continous memory, most parts are opaque. Frames are memory sensitive, they will be small constant sized structures which can be efficently managed in a pool.
              Framenode
              Frameclass
              FrameclassTODO: how to relate to Cehteh's Frame entity in the Backend?
              The latter is the fundamental Frame entity, wheras this Object rather represents a buffer set containing frame date
              framerelationmaybe weak reference
              frameartifactKey Abstraction: render process and buffer holding frame data.
              Frame (Stream) Providercomponent
              FrameDescriptorclassA FrameDescriptor implements the higher level interfaces for frames. Further refinements are made by subclassing and policy classes
              FrameReferenceclass
              + + + + + + + + + + + + + - - + + - + + + + + +
              NameKindDescription
              gendeployment viewdefines source files to be generated by BOUML
              gendeployment view
              gendeployment viewdefines source files to be generated by BOUML
              gendeployment viewdefines source files to be generated by BOUML
              gendeployment viewdefines source files to be generated by BOUML
              gendeployment viewdefines source files to be generated by BOUML
              gendeployment viewdefines source files to be generated by BOUML
              gendeployment viewdefines source files to be generated by BOUML
              gendeployment viewdefines source files to be generated by BOUML
              gendeployment viewdefines source files to be generated by BOUML
              gendeployment viewdefines source files to be generated by BOUML
              get frameactivity
              get_reproperation
              getAutomationoperation
              getConnectionoperation
              getFrameoperation
              getConnectionoperationTODO
              getFrameoperationmode = READ, WRITE, ...
              getPlaylistForRenderoperation
              getStateProxyoperation
              getValueoperation
              getValueoperation
              getValueoperation
              GLBufclass
              GLRenderclass
              glbufartifacta buffer and render process holding a Video frame for OpenGL rendering
              GLPipeclassspecialized connection node used to handle the transfer of OpenGL data from a image bitmap into texture form
              glpipeartifactspecialized connection element for handling OpenGL implementation details
              GLRenderclassRepresentation of a OpenGL accelerated Video render process
              glrenderartifactRepresentation of a OpenGL accellerated Video render process
              GUIpackageGUI is here just a container to hold any entities considered to be User Interface related, which is not in focus for this Design draft
              guipackagesourcecode package

              User Interface classes go here
              diff --git a/doc/devel/uml/index_72.html b/doc/devel/uml/index_72.html index 1ee557ed6..3b76fe797 100644 --- a/doc/devel/uml/index_72.html +++ b/doc/devel/uml/index_72.html @@ -21,6 +21,9 @@ 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. Hubclass +hubartifactspecial ProcNode used to build data distributing connections +HUEclass instance +HUEclass instance diff --git a/doc/devel/uml/index_73.html b/doc/devel/uml/index_73.html index eb7f59b49..a97f05ce5 100644 --- a/doc/devel/uml/index_73.html +++ b/doc/devel/uml/index_73.html @@ -19,7 +19,13 @@ NameKindDescription In Memory Databaseclass diagram inFixtureactivity action pin -Interpolatorclass +inputclass instance +inputclass instance +inputclass instance +interfacescomponent 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 +iporelation diff --git a/doc/devel/uml/index_76.html b/doc/devel/uml/index_76.html index 30a001baa..680ae56c6 100644 --- a/doc/devel/uml/index_76.html +++ b/doc/devel/uml/index_76.html @@ -17,9 +17,12 @@ + - + + +
              NameKindDescription
              labelartifact
              Labelclass
              lengthattribute
              lengthattributeTODO: how to represent time intervals?
              lengthattributeduration (span) of this timeline segment.
              Linkclass
              linkartifactforwarding, adapting or connecting ProcNode
              Lockclass
              Lockclass
              diff --git a/doc/devel/uml/index_77.html b/doc/devel/uml/index_77.html index ab99f6fba..6c4e61932 100644 --- a/doc/devel/uml/index_77.html +++ b/doc/devel/uml/index_77.html @@ -17,11 +17,16 @@ + + + + + diff --git a/doc/devel/uml/index_78.html b/doc/devel/uml/index_78.html index 046bbfb3c..4cc3eff75 100644 --- a/doc/devel/uml/index_78.html +++ b/doc/devel/uml/index_78.html @@ -17,7 +17,8 @@
              NameKindDescription
              mainartifact
              mappingrelation
              mappingsrelationweak pointers
              Maskclass
              maskartifactVideo ProcNode for masking regions of the image (automatable)
              merge activity nodemerge activity node
              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
              MObjectpackage
              MObjectclass
              MutexclassI provided a reworked Mutex class in my cinelerra2 repository
              - + +
              NameKindDescription
              NodeCreatorToolclass
              nodecreatertoolartifactcentral Tool implementing the Renderengine building
              NodeCreatorToolclassThis Tool implementation plays the central role in the buld process: given a MObject from Session, it is able to attach ProcNodes to the render engine under construction such as to reflect the properties of the MObject in the actual render.
              diff --git a/doc/devel/uml/index_79.html b/doc/devel/uml/index_79.html index c61c32505..edbb2994f 100644 --- a/doc/devel/uml/index_79.html +++ b/doc/devel/uml/index_79.html @@ -17,8 +17,10 @@ - - + + + + diff --git a/doc/devel/uml/index_80.html b/doc/devel/uml/index_80.html index 069cf7d8c..639db95d5 100644 --- a/doc/devel/uml/index_80.html +++ b/doc/devel/uml/index_80.html @@ -18,24 +18,36 @@
              NameKindDescription
              offsetattributeOffset the actual position by this (time) value relative to the anchor point
              OpenGLPipeclass
              offsetattributeOffset the actual position by this (time) value relative to the anchor point. TODO: Representation?
              ouputclass instance
              ouputclass instance
              ouputclass instance
              outputrelation
              Overviewcomponent diagramThis drawing shows the top level compoents and relations
              Overview Render Enginedeployment diagram
              - - - + + + + + + + + - + - + + + + - - + + + + + +
              NameKindDescription
              paramrelation
              Parameterclass
              ParamProviderclass
              PathManagerclass
              parameterartifactrepresentation of an automatable effect/plugin parameter
              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
              PathManagerclassWhile building a render engine, this Strategy class decides on the actual render strategy in accordance to the current controller settings (system state)
              pathmanagerartifactManager for deciding the actual render strategy
              placementartifactKey Abstraction: a way to place and locate a Media Object
              placementrelation
              Placementclass
              playoperation
              playoperationTODO: will probably be handled differently (see Cehteh)
              playlistnode
              plugIDattributeIdentifier of the Plugin to be used
              PluginAdapterclass
              PluginAdapterclassAdapter used to integrage an effects processor in the render pipeline
              pluginadapterartifactAdapter for integrating various Effect processors in the render pipeline
              pnodenode
              Posix Threads Abstractionclass viewC++ wrapers for pthreads
              Prefetchclass
              procpackagesourcecode package

              All classes belonging to the (middle) processing layer
              procnode
              procattributeholds the Processor (Render Engine Element) to be built by the current build step
              proc-componentscomponent diagram
              ProcessingLayerpackage
              Processorclass
              ProcNodeclass
              Projectorclass
              processorartifacta single render pipeline for one segment of the timeline
              ProcNodecomponent
              ProcNodeclassKey abstraction of the Render Engine: A Data processing Node
              procnodeartifactKey abstraction of the Render Engine: a Processing Node
              ProjectorclassSpecial video processing node used to scale and translate image data.
              projectorartifactvideo ProcNode for scaling and translating image data
              providerrelation
              diff --git a/doc/devel/uml/index_82.html b/doc/devel/uml/index_82.html index 3bdd947c8..59b762e4c 100644 --- a/doc/devel/uml/index_82.html +++ b/doc/devel/uml/index_82.html @@ -17,18 +17,23 @@ + + - - + + + + - + + - +
              NameKindDescription
              refPointclass instance
              relativeplacementartifactPlacement implemnetaion providing various ways of attaching a MObject to another one
              RelativePlacementclass
              RelTypeclass
              relTypeattribute
              RelTypeclassthe possible kinds of RelativePlacements
              relTypeattributethe kind of relation denoted by this Placement
              Render Entitiesclass diagram
              Render Requestactivity parameter
              RenderEngineclass
              renderengineartifacta complete network of processing nodes usable for rendering
              RenderEnginepackage
              Renderengine Useuse case view
              RenderPathManagercomponent
              renderSegmentsrelation
              RenderStateclass
              RenderStateclassEncapsulates the logic used to get a "current render process" in accordance to the currentyl applicable controller settings. The provided StateProxy serves to hold any mutalbe state used in the render process, so the rest of the render engine can be stateless.
              renderstateartifactrenderengine state manager
              reprattributehuman readable representation of the condition characterizing this allocaton, e.g. "t >= 10"
              resolveoperationcreate an actual (explicite) placement while trying to satisfy the network of adjacent objects and placements.
              resolveoperationcreate an actual (explicit) placement while trying to satisfy the network of adjacent objects and placements.
              diff --git a/doc/devel/uml/index_83.html b/doc/devel/uml/index_83.html index 04d5e3649..b930aa453 100644 --- a/doc/devel/uml/index_83.html +++ b/doc/devel/uml/index_83.html @@ -17,15 +17,20 @@ - + + + - + + - + + + @@ -33,11 +38,15 @@ - + + + + +
              NameKindDescription
              SAMETIMEattributeplace subject at the sime time then the anchor
              SAMETIMEattributeplace subject at the sime time as the anchor
              Schedulerclass
              segmentartifactSegment of the Timeline.
              Used at the moment (7/07) for partitioning the timeline/fixture into segments
              to be rendered by a specialized render node network for each, without the need
              to change any connections within a given segment.
              Note this concept may be superfluos alltogether; is a draft and the real
              use still needs to be worked out...
              Segmentclass
              segment Toolactivity object
              SegmentationToolclass
              SegmentationToolclassTool implementation for deriving a partitioning of the current timeline such, that each segement has a constant configuration. "Constant" means here, that any remaining changes over time can be represented by automation solely, without the need to change the node connections.
              segmentationtoolartifactTool for creating a partitioning of the current timeline
              segmentsactivity object
              segmentsactivity object
              segmentsattributeholds the segemntation to be constructed
              segmentsrelationthe partitioning of the Timeline to be created by this tool.
              Service Componentsclass view
              Sessioncomponent
              sessionartifactholds the complete session to be edited by the user
              sessionpackagesourcecode package

              Everything concerning the EDL and Session, within the MObject Subsystem
              Sessionclass view
              Sessionclass
              Session structureclass diagram
              setup StateProxyopaque activity action
              SmartPointerclass
              SmartPointersclass view
              Sourceclass
              SourceclassSource Node: represents a media source to pull data from.
              sourceartifactRepresentation of a Media source
              Source Overviewdeployment diagram
              startattributestartpos in source
              startattributebegin of the timerange covered by this processor
              startattribute
              Statenode
              StateProxyclass
              stateproxyartifactKey Interface representing a render process and encapsulating state
              subjectrelation
              diff --git a/doc/devel/uml/index_84.html b/doc/devel/uml/index_84.html index b92dacb67..26fad698a 100644 --- a/doc/devel/uml/index_84.html +++ b/doc/devel/uml/index_84.html @@ -20,24 +20,30 @@ the render configuration flowactivity diagram ThreadclassWe can basically reuse the Thread class design from cinelerra2, Thread becomes a baseclass for all Threads timeattribute +timeartifactunified representation of a time point, including conversion functions Timeclassdenotes a temporal position (time point), based on timeline start.

              investigate posix.4 realtime timers, wrap these here timelinenode timelinerelation -Toolclass +ToolclassUsed according to the visitor pattern: each Tool contains the concrete implementation for one task to be done to the various MObject classes +toolpackagesourcecode package

              Tools and Utilities
              (separate from the main cinelrra binary) +toolartifactInterface, any tool for processing MObjects ToolFactoryclass +toolfactoryartifactsupply of Tool implementations for the Builder trackattribute +trackartifactdescriptor for one track in the Session Trackclass tracksrelation tracksrelation Trafoclass -treatoperation -treatoperation +trafoartifacttransforming processing Node treatoperation +treatoperation treatoperation -treatoperation +treatoperation treatoperation +treatoperation treatoperation -treatoperation +treatoperationThis operation is to be overloaded for the specific MObject subclasses to be treated. diff --git a/doc/devel/uml/index_81.html b/doc/devel/uml/index_85.html similarity index 57% rename from doc/devel/uml/index_81.html rename to doc/devel/uml/index_85.html index 8b6ebec10..38f4965d4 100644 --- a/doc/devel/uml/index_81.html +++ b/doc/devel/uml/index_85.html @@ -4,20 +4,21 @@ -Q +U -
              Q
              +
              U

              - + +
              NameKindDescription
              QueryFramesequence diagram
              useFileoperationAnnounces that the application intends to use this file with mode (READ|WRITE|READWRITE)
              useTemporaryStorageoperationProvides a pool for interminate frames
              diff --git a/doc/devel/uml/index_86.html b/doc/devel/uml/index_86.html index 865b0103d..092c278b0 100644 --- a/doc/devel/uml/index_86.html +++ b/doc/devel/uml/index_86.html @@ -18,7 +18,26 @@ - + + + + + + + + + + + + + + + + + + + +
              NameKindDescription
              VFrameclass
              VRenderclass
              vframeartifacta buffer and render process holding a Video frame
              vid1class instance
              vid1class instance
              vid_aclass instance
              vid_Aclass instance
              vid_Aclass instance
              vid_Aclass instance
              vid_aclass instance
              videoclass instance
              videoclass instance
              videoclass instance
              videoclass instance
              video1class instance
              video1class instance
              video1class instance
              video1class instance
              video1class instance
              video1class instance
              VRenderclassRepresentation of a Video render process. (Encapsulates the video buffers for the actual calculations)
              vrenderartifactRepresentation of a Video render process
              diff --git a/doc/devel/uml/navig.html b/doc/devel/uml/navig.html index 5f9b1d858..90304f3d6 100644 --- a/doc/devel/uml/navig.html +++ b/doc/devel/uml/navig.html @@ -4,14 +4,14 @@ -/home/ct/src/cinelerra3/doc/devel/uml/navig +/mnt/Lager/heim/devel/cin3/doc/devel/uml/navig


              -

              -Top- -Classes- -Public Operations- -Packages- -Activities- -Class Diagrams- -Object Diagrams- -Activity Diagrams- -Sequence Diagrams- -Collaboration Diagrams- -Component Diagrams- -Deployment Diagrams-

              +

              -Top- -Classes- -Public Operations- -Packages- -Activities- -Class Diagrams- -Object Diagrams- -Activity Diagrams- -Collaboration Diagrams- -Component Diagrams- -Deployment Diagrams-

              -

              < A B C D E F G H I L M N O P Q R S T V W

              +

              < A B C D E F G H I L M N O P R S T U V W

              diff --git a/doc/devel/uml/packages.html b/doc/devel/uml/packages.html index a81fe73bc..438978748 100644 --- a/doc/devel/uml/packages.html +++ b/doc/devel/uml/packages.html @@ -16,19 +16,30 @@ + + + - + + + + + + + + +
              assetsrcsourcecode package

              Asset Management
              AssetManager
              backendsrcsourcecode package

              Data backend classes here...
              BackendLayer
              buildersrcsourcecode package

              The Builder creating the Render Engine,
              located within the MObject Subsystem
              Builder
              cinelerra3
              codegenThis package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skelleton.
              codegenThis package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skeleton.
              commonsrcsourcecode package

              Common library and helper classes
              CommonLib
              Controller
              controllersrcsourcecode package

              The Processing and Render Controller,
              located within the MObject Subsystem
              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
              GUIGUI is here just a container to hold any entities considered to be User Interface related, which is not in focus for this Design draft
              guisrcsourcecode package

              User Interface classes go here
              mobjectsrcsourcecode package

              MObject Subsystem
              including the Session (EDL), Builder and Processing Controller
              MObject
              procsrcsourcecode package

              All classes belonging to the (middle) processing layer
              ProcessingLayer
              RenderEngine
              sessionsrcsourcecode package

              Everything concerning the EDL and Session, within the MObject Subsystem
              toolsrcsourcecode package

              Tools and Utilities
              (separate from the main cinelrra binary)
              diff --git a/doc/devel/uml/public_operations.html b/doc/devel/uml/public_operations.html index a61cad017..fea74ca91 100644 --- a/doc/devel/uml/public_operations.html +++ b/doc/devel/uml/public_operations.html @@ -19,27 +19,30 @@ OperationClassDescription applyBuildable buildAssembler -buildEngineBuilderFacade +buildEngineBuilderFacadeMain Operation of the Builder: create a render engine for a given part of the timeline buildProcessorPathManager configureToolFactory +get_reprAllocation getAutomationFixture -getConnectionConManager -getFrameFile +getConnectionConManagerTODO +getFrameFilemode = READ, WRITE, ... getPlaylistForRenderFixture getStateProxyRenderState getValueAuto getValueParameter getValueParamProvider -playRenderEngine -resolvePlacementcreate an actual (explicite) placement while trying to satisfy the network of adjacent objects and placements. -treatNodeCreatorTool +playRenderEngineTODO: will probably be handled differently (see Cehteh) +resolvePlacementcreate an actual (explicit) placement while trying to satisfy the network of adjacent objects and placements. treatNodeCreatorTool -treatNodeCreatorTool treatNodeCreatorTool -treatSegmentationTool +treatNodeCreatorTool +treatNodeCreatorTool treatSegmentationTool treatSegmentationTool -treatTool +treatSegmentationTool +treatToolThis operation is to be overloaded for the specific MObject subclasses to be treated. +useFileFileProviderAnnounces that the application intends to use this file with mode (READ|WRITE|READWRITE) +useTemporaryStorageFileProviderProvides a pool for interminate frames diff --git a/src/cinelerra.h b/src/cinelerra.h new file mode 100644 index 000000000..d9a813952 --- /dev/null +++ b/src/cinelerra.h @@ -0,0 +1,61 @@ +/* + CINELERRA.h - global definitions and common types + + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + Hermann Vosseler + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#ifndef CINELERRA_H +#define CINELERRA_H + + + +#ifdef __cplusplus +extern "C" { +#endif /* ========================== common C Part ============ */ + + +#ifdef __cplusplus +} +#endif /* ==================== (End) common C Part ============ */ + + + + + + +#ifdef __cplusplus /* ============== C++-Part ================= */ + + + /* common types frequently used... */ + +#include "common/time.hpp" + + +namespace cinelerra + { + /* additional global configuration goes here... */ + + +} // namespace cinelerra + +#endif /* ===================== (End) C++-Part ================= */ + +#endif /*CINELERRA_H*/ diff --git a/src/common/time.cpp b/src/common/time.cpp new file mode 100644 index 000000000..9161140e2 --- /dev/null +++ b/src/common/time.cpp @@ -0,0 +1,31 @@ +/* + Time - unified representation of a time point, including conversion functions + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "common/time.hpp" + +namespace cinelerra + { + + + +} // namespace cinelerra diff --git a/src/common/time.hpp b/src/common/time.hpp new file mode 100644 index 000000000..3b8db7cfb --- /dev/null +++ b/src/common/time.hpp @@ -0,0 +1,42 @@ +/* + TIME.hpp - unified representation of a time point, including conversion functions + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef CINELERRA_TIME_H +#define CINELERRA_TIME_H + + + +namespace cinelerra + { + + + /** + * denotes a temporal position (time point), based on timeline start. + * + * investigate posix.4 realtime timers, wrap these here + */ + class Time + {}; + +} // namespace cinelerra +#endif diff --git a/src/main.cpp b/src/main.cpp index 382a2e953..3d4c1ef20 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -21,11 +21,14 @@ */ +#include -#include +#include "cinelerra.h" -int main(int argc, char* argv[]) +using std::cout; + +int main (int argc, char* argv[]) { - printf("hello cinelerra again\n"); + cout << "hello cinelerra again\n"; return 0; } diff --git a/src/plugin/.gitignore b/src/plugin/.gitignore new file mode 100644 index 000000000..1e2cde283 --- /dev/null +++ b/src/plugin/.gitignore @@ -0,0 +1,2 @@ +*.os + diff --git a/src/proc/controllerfacade.cpp b/src/proc/controllerfacade.cpp new file mode 100644 index 000000000..92dca2864 --- /dev/null +++ b/src/proc/controllerfacade.cpp @@ -0,0 +1,33 @@ +/* + ControllerFacade - Facade and service access point for the Proc Layer Controller + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/controllerfacade.hpp" + +namespace proc_interface + { + + /** */ + + + +} // namespace proc_interface diff --git a/src/proc/controllerfacade.hpp b/src/proc/controllerfacade.hpp new file mode 100644 index 000000000..1d32d9488 --- /dev/null +++ b/src/proc/controllerfacade.hpp @@ -0,0 +1,46 @@ +/* + CONTROLLERFACADE.hpp - Facade and service access point for the Proc Layer Controller + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef PROC_INTERFACE_CONTROLLERFACADE_H +#define PROC_INTERFACE_CONTROLLERFACADE_H + + + +namespace proc_interface + { + + + /** + * Interface providing unified access to the Proc-Subsystem Controller. + * Especially, this Facade class exports the functions to get a render + * engine for carrying out actual renderings. + */ + class ControllerFacade + { + ////////// + }; + + + +} // namespace proc_interface +#endif diff --git a/src/proc/engine/aframe.cpp b/src/proc/engine/aframe.cpp new file mode 100644 index 000000000..53109fffd --- /dev/null +++ b/src/proc/engine/aframe.cpp @@ -0,0 +1,34 @@ +/* + AFrame - buffer holding a Audio samples for the render process + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/aframe.hpp" + +namespace engine + { + + /** */ + + + + +} // namespace engine diff --git a/src/proc/engine/aframe.hpp b/src/proc/engine/aframe.hpp new file mode 100644 index 000000000..37e920e6f --- /dev/null +++ b/src/proc/engine/aframe.hpp @@ -0,0 +1,41 @@ +/* + AFRAME.hpp - buffer holding a Audio samples for the render process + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_AFRAME_H +#define ENGINE_AFRAME_H + +#include "proc/frame.hpp" + + + +namespace engine + { + + + class AFrame : public proc_interface::Frame + {}; + + + +} // namespace engine +#endif diff --git a/src/proc/engine/arender.cpp b/src/proc/engine/arender.cpp new file mode 100644 index 000000000..95db74706 --- /dev/null +++ b/src/proc/engine/arender.cpp @@ -0,0 +1,34 @@ +/* + ARender - Representation of a Audio Render process + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/arender.hpp" + +namespace engine + { + + /** */ + + + + +} // namespace engine diff --git a/src/proc/engine/arender.hpp b/src/proc/engine/arender.hpp new file mode 100644 index 000000000..0ac62282e --- /dev/null +++ b/src/proc/engine/arender.hpp @@ -0,0 +1,44 @@ +/* + ARENDER.hpp - Representation of a Audio Render process + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_ARENDER_H +#define ENGINE_ARENDER_H + +#include "proc/stateproxy.hpp" + + + +namespace engine + { + + + /** + * Representation of a Audio render process + */ + class ARender : public proc_interface::StateProxy + {}; + + + +} // namespace engine +#endif diff --git a/src/proc/engine/codecadapter.cpp b/src/proc/engine/codecadapter.cpp new file mode 100644 index 000000000..104008d2a --- /dev/null +++ b/src/proc/engine/codecadapter.cpp @@ -0,0 +1,30 @@ +/* + CodecAdapter - Processing Node for (de)coding media data + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/codecadapter.hpp" + +namespace engine + { + + +} // namespace engine diff --git a/src/proc/engine/codecadapter.hpp b/src/proc/engine/codecadapter.hpp new file mode 100644 index 000000000..a82692697 --- /dev/null +++ b/src/proc/engine/codecadapter.hpp @@ -0,0 +1,49 @@ +/* + CODECADAPTER.hpp - Processing Node for (de)coding media data + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_CODECADAPTER_H +#define ENGINE_CODECADAPTER_H + +#include "proc/engine/trafo.hpp" + + + +namespace engine + { + + + /** + * Adapter for wiring an externally loaded + * codec into the render pipeline. The decoding + * process thus is integrated into the framework + * of the Renderengine, while the actual implementation + * can be delegated to an external library accessed + * through Cinelerra's datat backend. + */ + class CodecAdapter : public Trafo + {}; + + + +} // namespace engine +#endif diff --git a/src/proc/engine/exitnode.cpp b/src/proc/engine/exitnode.cpp new file mode 100644 index 000000000..f0ecaae36 --- /dev/null +++ b/src/proc/engine/exitnode.cpp @@ -0,0 +1,33 @@ +/* + ExitNode - special Processing Node providing "pullable" output + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/exitnode.hpp" + +namespace engine + { + + /** */ + + + +} // namespace engine diff --git a/src/proc/engine/exitnode.hpp b/src/proc/engine/exitnode.hpp new file mode 100644 index 000000000..43d26756b --- /dev/null +++ b/src/proc/engine/exitnode.hpp @@ -0,0 +1,45 @@ +/* + EXITNODE.hpp - special Processing Node providing "pullable" output + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_EXITNODE_H +#define ENGINE_EXITNODE_H + +#include "proc/engine/procnode.hpp" + + + +namespace engine + { + + + /** + * The output end of each render pipeline. + * Pulling from such exit nodes actually ivokes the render process + */ + class ExitNode : public ProcNode + {}; + + + +} // namespace engine +#endif diff --git a/src/proc/engine/glbuf.cpp b/src/proc/engine/glbuf.cpp new file mode 100644 index 000000000..856fea223 --- /dev/null +++ b/src/proc/engine/glbuf.cpp @@ -0,0 +1,34 @@ +/* + GLBuf - a buffer and render process holding a Video frame for OpenGL rendering + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/glbuf.hpp" + +namespace engine + { + + /** */ + + + + +} // namespace engine diff --git a/src/proc/engine/glbuf.hpp b/src/proc/engine/glbuf.hpp new file mode 100644 index 000000000..d48da3985 --- /dev/null +++ b/src/proc/engine/glbuf.hpp @@ -0,0 +1,39 @@ +/* + GLBUF.hpp - a buffer and render process holding a Video frame for OpenGL rendering + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_GLBUF_H +#define ENGINE_GLBUF_H + +#include "proc/frame.hpp" + + + +namespace engine + { + + + class GLBuf : public proc_interface::Frame + {}; + +} // namespace engine +#endif diff --git a/src/proc/engine/glpipe.cpp b/src/proc/engine/glpipe.cpp new file mode 100644 index 000000000..8abd008a9 --- /dev/null +++ b/src/proc/engine/glpipe.cpp @@ -0,0 +1,34 @@ +/* + GLPipe - specialized connection element for handling OpenGL implementation details + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/glpipe.hpp" + +namespace engine + { + + /** */ + + + + +} // namespace engine diff --git a/src/proc/engine/glpipe.hpp b/src/proc/engine/glpipe.hpp new file mode 100644 index 000000000..06f21474f --- /dev/null +++ b/src/proc/engine/glpipe.hpp @@ -0,0 +1,46 @@ +/* + GLPIPE.hpp - specialized connection element for handling OpenGL implementation details + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_GLPIPE_H +#define ENGINE_GLPIPE_H + +#include "proc/engine/link.hpp" + + + +namespace engine + { + + + /** + * specialized connection node used to handle the transfer of OpenGL data + * from a image bitmap into texture form. + */ + class GLPipe : public Link + {}; + + + + +} // namespace engine +#endif diff --git a/src/proc/engine/glrender.cpp b/src/proc/engine/glrender.cpp new file mode 100644 index 000000000..e27899935 --- /dev/null +++ b/src/proc/engine/glrender.cpp @@ -0,0 +1,33 @@ +/* + GLRender - Representation of a OpenGL accellerated Video render process + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/glrender.hpp" + +namespace engine + { + + /** */ + + + +} // namespace engine diff --git a/src/proc/engine/glrender.hpp b/src/proc/engine/glrender.hpp new file mode 100644 index 000000000..a0eb79c4e --- /dev/null +++ b/src/proc/engine/glrender.hpp @@ -0,0 +1,42 @@ +/* + GLRENDER.hpp - Representation of a OpenGL accellerated Video render process + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_GLRENDER_H +#define ENGINE_GLRENDER_H + +#include "proc/stateproxy.hpp" + + + +namespace engine + { + + + /** + * Representation of a OpenGL accelerated Video render process + */ + class GLRender : public proc_interface::StateProxy + {}; + +} // namespace engine +#endif diff --git a/src/proc/engine/hub.cpp b/src/proc/engine/hub.cpp new file mode 100644 index 000000000..14c847aed --- /dev/null +++ b/src/proc/engine/hub.cpp @@ -0,0 +1,34 @@ +/* + Hub - special ProcNode used to build data distributing connections + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/hub.hpp" + +namespace engine + { + + /** */ + + + + +} // namespace engine diff --git a/src/proc/engine/hub.hpp b/src/proc/engine/hub.hpp new file mode 100644 index 000000000..d7961db36 --- /dev/null +++ b/src/proc/engine/hub.hpp @@ -0,0 +1,44 @@ +/* + HUB.hpp - special ProcNode used to build data distributing connections + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_HUB_H +#define ENGINE_HUB_H + +#include "proc/engine/procnode.hpp" + + + +namespace engine + { + + + class Hub : public ProcNode + {}; + ///TODO: seems rather we don't need this one anymore?? + //////// to be decided after the implementing the basic render engine.... + + + + +} // namespace engine +#endif diff --git a/src/proc/engine/link.cpp b/src/proc/engine/link.cpp new file mode 100644 index 000000000..b447accbd --- /dev/null +++ b/src/proc/engine/link.cpp @@ -0,0 +1,34 @@ +/* + Link - forwarding, adapting or connecting ProcNode + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/link.hpp" + +namespace engine + { + + /** */ + + + + +} // namespace engine diff --git a/src/proc/engine/link.hpp b/src/proc/engine/link.hpp new file mode 100644 index 000000000..42127f86c --- /dev/null +++ b/src/proc/engine/link.hpp @@ -0,0 +1,50 @@ +/* + LINK.hpp - forwarding, adapting or connecting ProcNode + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_LINK_H +#define ENGINE_LINK_H + +#include "proc/engine/procnode.hpp" + + + +namespace engine + { + + + /** + * Abstraction of all sorts of connecting Elements with + * special functionality. For example the coneections enabling + * to mix OpenGL implemented Effects/Previews with normal CPU based + * processing in one render pipeline. + */ + class Link : public ProcNode + { + ///////TODO: flatten hierarchy if we don't have common functionallity for all Link-Subclasses + ///////TODO: can be decdiede when we know more how to handle OpenGL rendering + }; + + + +} // namespace engine +#endif diff --git a/src/proc/engine/mask.cpp b/src/proc/engine/mask.cpp new file mode 100644 index 000000000..b1b292557 --- /dev/null +++ b/src/proc/engine/mask.cpp @@ -0,0 +1,34 @@ +/* + Mask - Video ProcNode for masking regions of the image (automatable) + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/mask.hpp" + +namespace engine + { + + /** */ + + + + +} // namespace engine diff --git a/src/proc/engine/mask.hpp b/src/proc/engine/mask.hpp new file mode 100644 index 000000000..89fc22af0 --- /dev/null +++ b/src/proc/engine/mask.hpp @@ -0,0 +1,42 @@ +/* + MASK.hpp - Video ProcNode for masking regions of the image (automatable) + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_MASK_H +#define ENGINE_MASK_H + +#include "proc/engine/trafo.hpp" + + + +namespace engine + { + + + class Mask : public Trafo + {}; + + + + +} // namespace engine +#endif diff --git a/src/proc/engine/pluginadapter.cpp b/src/proc/engine/pluginadapter.cpp new file mode 100644 index 000000000..909271133 --- /dev/null +++ b/src/proc/engine/pluginadapter.cpp @@ -0,0 +1,34 @@ +/* + PluginAdapter - Adapter for integrating various Effect processors in the render pipeline + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/pluginadapter.hpp" + +namespace engine + { + + /** */ + + + + +} // namespace engine diff --git a/src/proc/engine/pluginadapter.hpp b/src/proc/engine/pluginadapter.hpp new file mode 100644 index 000000000..8c0a850a7 --- /dev/null +++ b/src/proc/engine/pluginadapter.hpp @@ -0,0 +1,48 @@ +/* + PLUGINADAPTER.hpp - Adapter for integrating various Effect processors in the render pipeline + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_PLUGINADAPTER_H +#define ENGINE_PLUGINADAPTER_H + +#include "proc/engine/trafo.hpp" + + + +namespace engine + { + + + /** + * Adapter used to integrate an effects processor in the render pipeline. + * Effects processors are typically defined in a separate library and + * will be loaded at runtime using Cinelerra's plugin interface. + */ + class PluginAdapter : public Trafo + { + ///////////// + }; + + + +} // namespace engine +#endif diff --git a/src/proc/engine/processor.cpp b/src/proc/engine/processor.cpp new file mode 100644 index 000000000..a81589342 --- /dev/null +++ b/src/proc/engine/processor.cpp @@ -0,0 +1,36 @@ +/* + Processor - a single render pipeline for one segment of the timeline + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/processor.hpp" +#include "proc/engine/exitnode.hpp" +#include "proc/stateproxy.hpp" + +namespace engine + { + + /** */ + + + + +} // namespace engine diff --git a/src/proc/engine/processor.hpp b/src/proc/engine/processor.hpp new file mode 100644 index 000000000..0794d7285 --- /dev/null +++ b/src/proc/engine/processor.hpp @@ -0,0 +1,53 @@ +/* + PROCESSOR.hpp - a single render pipeline for one segment of the timeline + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_PROCESSOR_H +#define ENGINE_PROCESSOR_H + +#include "cinelerra.h" +#include "proc/stateproxy.hpp" + + + +namespace engine + { + + class ExitNode; + + class Processor + { + protected: + ExitNode * output; + + /** begin of the timerange covered by this processor */ + cinelerra::Time start; + + /**end (exclusive) of the timerange */ + cinelerra::Time end; + + }; + + + +} // namespace engine +#endif diff --git a/src/proc/engine/procnode.cpp b/src/proc/engine/procnode.cpp new file mode 100644 index 000000000..81a1dd22d --- /dev/null +++ b/src/proc/engine/procnode.cpp @@ -0,0 +1,33 @@ +/* + ProcNode - Key abstraction of the Render Engine: a Processing Node + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/procnode.hpp" + +namespace engine + { + + + /** */ + + +} // namespace engine diff --git a/src/proc/engine/procnode.hpp b/src/proc/engine/procnode.hpp new file mode 100644 index 000000000..dbf983f3c --- /dev/null +++ b/src/proc/engine/procnode.hpp @@ -0,0 +1,58 @@ +/* + PROCNODE.hpp - Key abstraction of the Render Engine: a Processing Node + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_PROCNODE_H +#define ENGINE_PROCNODE_H + +#include + +#include "proc/mobject/parameter.hpp" + + +using std::vector; + + + +namespace engine + { + + + /** + * Key abstraction of the Render Engine: A Data processing Node + */ + class ProcNode + { + protected: + typedef mobject::Parameter Param; + + /** The predecessor in a processing pipeline. + * I.e. a source to get data to be processed + */ + ProcNode * datasrc; + + vector params; + + }; + +} // namespace engine +#endif diff --git a/src/proc/engine/projector.cpp b/src/proc/engine/projector.cpp new file mode 100644 index 000000000..15eef8c8a --- /dev/null +++ b/src/proc/engine/projector.cpp @@ -0,0 +1,34 @@ +/* + Projector - video ProcNode for scaling and translating image data + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/projector.hpp" + +namespace engine + { + + /** */ + + + + +} // namespace engine diff --git a/src/proc/engine/projector.hpp b/src/proc/engine/projector.hpp new file mode 100644 index 000000000..881a988b1 --- /dev/null +++ b/src/proc/engine/projector.hpp @@ -0,0 +1,46 @@ +/* + PROJECTOR.hpp - video ProcNode for scaling and translating image data + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_PROJECTOR_H +#define ENGINE_PROJECTOR_H + +#include "proc/engine/trafo.hpp" + + + +namespace engine + { + + + /** + * Special video processing node used to scale and translate image data. + */ + class Projector : public Trafo + { + //////////// + }; + + + +} // namespace engine +#endif diff --git a/src/proc/engine/renderengine.cpp b/src/proc/engine/renderengine.cpp new file mode 100644 index 000000000..50ba3b68b --- /dev/null +++ b/src/proc/engine/renderengine.cpp @@ -0,0 +1,40 @@ +/* + RenderEngine - a complete network of processing nodes usable for rendering + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/renderengine.hpp" + +namespace engine + { + + + + /** + * TODO: will probably be handled differently (see Cehteh) + */ + void + RenderEngine::play () + {} + + + +} // namespace engine diff --git a/src/proc/engine/renderengine.hpp b/src/proc/engine/renderengine.hpp new file mode 100644 index 000000000..a05a1f596 --- /dev/null +++ b/src/proc/engine/renderengine.hpp @@ -0,0 +1,53 @@ +/* + RENDERENGINE.hpp - a complete network of processing nodes usable for rendering + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_RENDERENGINE_H +#define ENGINE_RENDERENGINE_H + +#include + +#include "proc/engine/processor.hpp" + + +using std::list; + + +namespace engine + { + + + class RenderEngine : public Processor + { + public: + /** + * TODO: will probably be handled differently (see Cehteh) + */ + void play () ; + + private: + list renderSegments; + + }; + +} // namespace engine +#endif diff --git a/src/proc/engine/source.cpp b/src/proc/engine/source.cpp new file mode 100644 index 000000000..801da289e --- /dev/null +++ b/src/proc/engine/source.cpp @@ -0,0 +1,34 @@ +/* + Source - Representation of a Media source + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/source.hpp" + +namespace engine + { + + /** */ + + + + +} // namespace engine diff --git a/src/proc/engine/source.hpp b/src/proc/engine/source.hpp new file mode 100644 index 000000000..9241b7998 --- /dev/null +++ b/src/proc/engine/source.hpp @@ -0,0 +1,49 @@ +/* + SOURCE.hpp - Representation of a Media source + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_SOURCE_H +#define ENGINE_SOURCE_H + +#include "proc/engine/procnode.hpp" + + + +namespace engine + { + + + /** + * Source Node: represents a media source to pull data from. + * Source is special, because it has no predecessor nodes, + * but rather makes calls down to the data backend internally + * to get at the raw data. + */ + class Source : public ProcNode + { + /////////////////TODO + }; + + + +} // namespace engine +#endif diff --git a/src/proc/engine/trafo.cpp b/src/proc/engine/trafo.cpp new file mode 100644 index 000000000..c570e999e --- /dev/null +++ b/src/proc/engine/trafo.cpp @@ -0,0 +1,33 @@ +/* + Trafo - transforming processing Node + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/trafo.hpp" + +namespace engine + { + + /** */ + + + +} // namespace engine diff --git a/src/proc/engine/trafo.hpp b/src/proc/engine/trafo.hpp new file mode 100644 index 000000000..6aa327beb --- /dev/null +++ b/src/proc/engine/trafo.hpp @@ -0,0 +1,51 @@ +/* + TRAFO.hpp - transforming processing Node + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_TRAFO_H +#define ENGINE_TRAFO_H + +#include "proc/engine/procnode.hpp" + + + +namespace engine + { + + + /** + * abstraction of the most important kind of Processing node, + * which really works on the media data and transforms input + * into ouput. Subclasses include the (Video) Projector + * for scaling/translating, all sorts of effects (Plugins), + * as well as the low level codecs used to decode the raw + * media at the source end of the render pipeline(s) + */ + class Trafo : public ProcNode + { + /////////// + }; + + + +} // namespace engine +#endif diff --git a/src/proc/engine/vframe.cpp b/src/proc/engine/vframe.cpp new file mode 100644 index 000000000..9fe88d7a1 --- /dev/null +++ b/src/proc/engine/vframe.cpp @@ -0,0 +1,33 @@ +/* + VFrame - a buffer holding a Video frame for the render process + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/vframe.hpp" + +namespace engine + { + + /** */ + + + +} // namespace engine diff --git a/src/proc/engine/vframe.hpp b/src/proc/engine/vframe.hpp new file mode 100644 index 000000000..350b7d26a --- /dev/null +++ b/src/proc/engine/vframe.hpp @@ -0,0 +1,41 @@ +/* + VFRAME.hpp - a buffer holding a Video frame for the render process + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_VFRAME_H +#define ENGINE_VFRAME_H + +#include "proc/frame.hpp" + + + +namespace engine + { + + + class VFrame : public proc_interface::Frame + { + /////////////////////// + }; + +} // namespace engine +#endif diff --git a/src/proc/engine/vrender.cpp b/src/proc/engine/vrender.cpp new file mode 100644 index 000000000..1fbd6b6b3 --- /dev/null +++ b/src/proc/engine/vrender.cpp @@ -0,0 +1,33 @@ +/* + VRender - Representation of a Video render process + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/engine/vrender.hpp" + +namespace engine + { + + /** */ + + + + } // namespace engine diff --git a/src/proc/engine/vrender.hpp b/src/proc/engine/vrender.hpp new file mode 100644 index 000000000..5a9f16179 --- /dev/null +++ b/src/proc/engine/vrender.hpp @@ -0,0 +1,47 @@ +/* + VRENDER.hpp - Representation of a Video render process + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef ENGINE_VRENDER_H +#define ENGINE_VRENDER_H + +#include "proc/stateproxy.hpp" + + + +namespace engine + { + + + /** + * Representation of a Video render process. + * (Encapsulates the video buffers for the actual calculations) + */ + class VRender : public proc_interface::StateProxy + { + ///////////// + }; + + + +} // namespace engine +#endif diff --git a/src/proc/frame.cpp b/src/proc/frame.cpp new file mode 100644 index 000000000..9443b46e7 --- /dev/null +++ b/src/proc/frame.cpp @@ -0,0 +1,33 @@ +/* + Frame - Key Abstraction: render process and buffer holding frame data. + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/frame.hpp" + +namespace proc_interface + { + + /** */ + + + +} // namespace proc_interface diff --git a/src/proc/frame.hpp b/src/proc/frame.hpp new file mode 100644 index 000000000..072f57a2d --- /dev/null +++ b/src/proc/frame.hpp @@ -0,0 +1,46 @@ +/* + FRAME.hpp - Key Abstraction: render process and buffer holding frame data. + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef PROC_INTERFACE_FRAME_H +#define PROC_INTERFACE_FRAME_H + + + +namespace proc_interface + { + + + /** + * TODO: how to relate to Cehteh's Frame entity in the Backend? + * The latter is the fundamental Frame entity, wheras this Object + * rather represents a buffer set containing frame date. + */ + class Frame + { + ///////////////// + }; + + + +} // namespace proc_interface +#endif diff --git a/src/proc/mobject/buildable.cpp b/src/proc/mobject/buildable.cpp new file mode 100644 index 000000000..1b9d335de --- /dev/null +++ b/src/proc/mobject/buildable.cpp @@ -0,0 +1,43 @@ +/* + Buildable - marker interface denoting any MObject able to be treated by Tools + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/buildable.hpp" +#include "proc/mobject/builder/tool.hpp" + +namespace mobject + { + + + /** typically the provided actual Tool class will + * contain overloaded fuctions for treating + * different Buildable subclasses specifically + */ + void + Buildable::apply (builder::Tool& provided_tool) + { + provided_tool.treat( *this); //// TODO: how to call??? (ref or pointer??) + } + + + +} // namespace mobject diff --git a/src/proc/mobject/buildable.hpp b/src/proc/mobject/buildable.hpp new file mode 100644 index 000000000..145c3496b --- /dev/null +++ b/src/proc/mobject/buildable.hpp @@ -0,0 +1,51 @@ +/* + BUILDABLE.hpp - marker interface denoting any (M)Object able to be treated by Tools + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_BUILDABLE_H +#define MOBJECT_BUILDABLE_H + + + + +namespace mobject + { + + + namespace builder{ class Tool; } + + + /** + * All Buidables support double-dispatch of given Tool operations. + * The actual operation is thus selected at runtime based both on the + * actual type of the Tool class /and/ the actual type of the Buildabele. + */ + class Buildable + { + public: + void apply (builder::Tool& provided_tool) ; + }; + + + +} // namespace mobject +#endif diff --git a/src/proc/mobject/builder/assembler.cpp b/src/proc/mobject/builder/assembler.cpp new file mode 100644 index 000000000..1be4f8957 --- /dev/null +++ b/src/proc/mobject/builder/assembler.cpp @@ -0,0 +1,42 @@ +/* + Assembler - building facility (implementation of the build process) + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/builder/assembler.hpp" + +namespace mobject + { + namespace builder + { + + + + engine::RenderEngine & + Assembler::build () + { + } + + + + } // namespace mobject::builder + +} // namespace mobject diff --git a/src/proc/mobject/builder/assembler.hpp b/src/proc/mobject/builder/assembler.hpp new file mode 100644 index 000000000..238071f79 --- /dev/null +++ b/src/proc/mobject/builder/assembler.hpp @@ -0,0 +1,54 @@ +/* + ASSEMBLER.hpp - building facility (implementation of the build process) + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_BUILDER_ASSEMBLER_H +#define MOBJECT_BUILDER_ASSEMBLER_H + +#include "proc/engine/renderengine.hpp" + + + +namespace mobject + { + namespace builder + { + + + /** + * This is the actual building facility: + * provided the correct tools and associations, + * it serves to build and connect the individual ProcNode objects + */ + class Assembler + { + public: + engine::RenderEngine & build () ; + // TODO: allocation, GC??? + }; + + + + } // namespace mobject::builder + +} // namespace mobject +#endif diff --git a/src/proc/mobject/builder/conmanager.cpp b/src/proc/mobject/builder/conmanager.cpp new file mode 100644 index 000000000..c159c24e8 --- /dev/null +++ b/src/proc/mobject/builder/conmanager.cpp @@ -0,0 +1,46 @@ +/* + ConManager - manages the creation of additional ProcNode connections for the Renderengine + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/builder/conmanager.hpp" + +namespace mobject + { + + namespace builder + { + + + + /** + * TODO !!!!!!!!!!!!!!!!!! + */ + int + ConManager::getConnection () + { + } + + + + } // namespace mobject::builder + +} // namespace mobject diff --git a/src/proc/mobject/builder/conmanager.hpp b/src/proc/mobject/builder/conmanager.hpp new file mode 100644 index 000000000..bd390e96b --- /dev/null +++ b/src/proc/mobject/builder/conmanager.hpp @@ -0,0 +1,55 @@ +/* + CONMANAGER.hpp - manages the creation of additional ProcNode connections for the Renderengine + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_BUILDER_CONMANAGER_H +#define MOBJECT_BUILDER_CONMANAGER_H + + + +namespace mobject + { + namespace builder + { + + + /** + * Connection Manager: used to build the connections between render engine nodes + * if these nodes need to cooperate besides the normal "data pull" operation. + * Esp. the Connection Manager knows how to wire up the effect's parameters + * with the corresponding ParamProviders (autmation) in the Session. + */ + class ConManager + { + public: + /** + * TODO just a design sketch, work out signatures etc... + */ + int getConnection () ; + }; + + + + } // namespace mobject::builder + +} // namespace mobject +#endif diff --git a/src/proc/mobject/builder/nodecreatertool.cpp b/src/proc/mobject/builder/nodecreatertool.cpp new file mode 100644 index 000000000..81f0281b5 --- /dev/null +++ b/src/proc/mobject/builder/nodecreatertool.cpp @@ -0,0 +1,70 @@ +/* + NodeCreaterTool - central Tool implementing the Renderengine building + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/builder/nodecreatertool.hpp" +#include "proc/mobject/buildable.hpp" +#include "proc/mobject/session/clip.hpp" +#include "proc/mobject/session/effect.hpp" +#include "proc/mobject/session/auto.hpp" + +using mobject::Buildable; +using mobject::session::Clip; +using mobject::session::Effect; +using mobject::session::Auto; + +namespace mobject + { + + namespace builder + { + + + + void + NodeCreatorTool::treat (Buildable& something) + { + } + + + void + NodeCreatorTool::treat (Clip& clip) + { + } + + + void + NodeCreatorTool::treat (Effect& effect) + { + } + + + void + NodeCreatorTool::treat (Auto& automation) + { + } + + + + } // namespace mobject::builder + +} // namespace mobject diff --git a/src/proc/mobject/builder/nodecreatertool.hpp b/src/proc/mobject/builder/nodecreatertool.hpp new file mode 100644 index 000000000..ea1c5f26d --- /dev/null +++ b/src/proc/mobject/builder/nodecreatertool.hpp @@ -0,0 +1,76 @@ +/* + NODECREATERTOOL.hpp - central Tool implementing the Renderengine building + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_BUILDER_NODECREATERTOOL_H +#define MOBJECT_BUILDER_NODECREATERTOOL_H + +#include "proc/mobject/builder/tool.hpp" +#include "proc/mobject/buildable.hpp" +#include "proc/engine/processor.hpp" + + + +namespace mobject + { + namespace session + { + // Forward declarations + class Effect; + class Clip; + template class Auto; + } + + namespace builder + { + + + + // TODO: define Lifecycle... + + /** + * This 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. + */ + class NodeCreatorTool : public Tool + { + public: + virtual void treat (mobject::session::Clip& clip) ; + virtual void treat (mobject::session::Effect& effect) ; + virtual void treat (mobject::session::Auto& automation) ; //TODO: the automation-type-problem + virtual void treat (mobject::Buildable& something) ; + + + protected: + /** holds the Processor (Render Engine Element) + * to be built by the current build step + */ + engine::Processor* proc; + + }; + + } // namespace mobject::builder + +} // namespace mobject +#endif diff --git a/src/proc/mobject/builder/segmentationtool.cpp b/src/proc/mobject/builder/segmentationtool.cpp new file mode 100644 index 000000000..65965fec4 --- /dev/null +++ b/src/proc/mobject/builder/segmentationtool.cpp @@ -0,0 +1,63 @@ +/* + SegmentationTool - Tool for creating a partitioning of the current timeline + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/builder/segmentationtool.hpp" +#include "proc/mobject/buildable.hpp" +#include "proc/mobject/session/clip.hpp" +#include "proc/mobject/session/effect.hpp" +#include "proc/mobject/session/segment.hpp" + +using mobject::Buildable; +using mobject::session::Clip; +using mobject::session::Effect; + + +namespace mobject + { + namespace builder + { + + + + void + SegmentationTool::treat (Buildable& something) + { + } + + + void + SegmentationTool::treat (Clip& clip) + { + } + + + void + SegmentationTool::treat (Effect& effect) + { + } + + + + } // namespace mobject::builder + +} // namespace mobject diff --git a/src/proc/mobject/builder/segmentationtool.hpp b/src/proc/mobject/builder/segmentationtool.hpp new file mode 100644 index 000000000..5f666ea78 --- /dev/null +++ b/src/proc/mobject/builder/segmentationtool.hpp @@ -0,0 +1,79 @@ +/* + SEGMENTATIONTOOL.hpp - Tool for creating a partitioning of the current timeline + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_BUILDER_SEGMENTATIONTOOL_H +#define MOBJECT_BUILDER_SEGMENTATIONTOOL_H + +#include + +#include "proc/mobject/buildable.hpp" +#include "proc/mobject/builder/tool.hpp" +#include "proc/mobject/session/segment.hpp" + +using std::list; + + + +namespace mobject + { + namespace session + { + // Forward declarations + class Clip; + class Effect; + } + + namespace builder + { + + + /** + * Tool implementation for deriving a partitioning of the current + * timeline, such that each segement has a constant configuration. + * "Constant" means here, that any remaining changes over time + * can be represented by automation solely, without the need + * to change the node connections. + */ + class SegmentationTool : public Tool + { + public: + void treat (mobject::session::Clip& clip) ; + void treat (mobject::session::Effect& effect) ; + + void treat (mobject::Buildable& something) ; + + protected: + typedef mobject::session::Segment Segment; + + /** Partitioning of the Timeline to be created by this tool. */ + list segments; + // TODO handle alloc!!!! + + }; + + + + } // namespace mobject::builder + +} // namespace mobject +#endif diff --git a/src/proc/mobject/builder/tool.cpp b/src/proc/mobject/builder/tool.cpp new file mode 100644 index 000000000..784692485 --- /dev/null +++ b/src/proc/mobject/builder/tool.cpp @@ -0,0 +1,40 @@ +/* + Tool - Interface, any tool for processing MObjects + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/builder/tool.hpp" + + +namespace mobject + { + namespace builder + { + + + + /** */ + + + + } // namespace mobject::builder + +} // namespace mobject diff --git a/src/proc/mobject/builder/tool.hpp b/src/proc/mobject/builder/tool.hpp new file mode 100644 index 000000000..e6ca43f07 --- /dev/null +++ b/src/proc/mobject/builder/tool.hpp @@ -0,0 +1,55 @@ +/* + TOOL.hpp - Interface, any tool for processing MObjects + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_BUILDER_TOOL_H +#define MOBJECT_BUILDER_TOOL_H + +#include "proc/mobject/buildable.hpp" + + + +namespace mobject + { + namespace builder + { + + + /** + * Used according to the visitor pattern: each Tool contains + * the concrete implementation for one task to be done to the various MObject classes + */ + class Tool + { + protected: + typedef mobject::Buildable Buildable; + + public: + /** This operation is to be overloaded for specific MObject subclasses to be treated. + */ + virtual void treat (Buildable& mElement) = 0; + }; + + } // namespace mobject::builder + +} // namespace mobject +#endif diff --git a/src/proc/mobject/builder/toolfactory.cpp b/src/proc/mobject/builder/toolfactory.cpp new file mode 100644 index 000000000..1297d15b4 --- /dev/null +++ b/src/proc/mobject/builder/toolfactory.cpp @@ -0,0 +1,42 @@ +/* + ToolFactory - supply of Tool implementations for the Builder + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/builder/toolfactory.hpp" + +namespace mobject + { + namespace builder + { + + + + Tool & + ToolFactory::configure () + { + } + + + + } // namespace mobject::builder + +} // namespace mobject diff --git a/src/proc/mobject/builder/toolfactory.hpp b/src/proc/mobject/builder/toolfactory.hpp new file mode 100644 index 000000000..65c74913e --- /dev/null +++ b/src/proc/mobject/builder/toolfactory.hpp @@ -0,0 +1,48 @@ +/* + TOOLFACTORY.hpp - supply of Tool implementations for the Builder + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_BUILDER_TOOLFACTORY_H +#define MOBJECT_BUILDER_TOOLFACTORY_H + +#include "proc/mobject/builder/tool.hpp" + + + +namespace mobject + { + namespace builder + { + + + class ToolFactory + { + public: + Tool & configure () ; + }; + + + + } // namespace mobject::builder + +} // namespace mobject +#endif diff --git a/src/proc/mobject/builderfacade.cpp b/src/proc/mobject/builderfacade.cpp new file mode 100644 index 000000000..6113ad857 --- /dev/null +++ b/src/proc/mobject/builderfacade.cpp @@ -0,0 +1,42 @@ +/* + BuilderFacade - Facade and service access point for the Builder Subsystem + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/builderfacade.hpp" + +namespace mobject + { + + + /** + * Main Operation of the Builder: + * create a render engine for a given part of the timeline + */ + engine::RenderEngine & + BuilderFacade::buildEngine () + { + //////////////////////TODO + } + + + +} // namespace mobject diff --git a/src/proc/mobject/builderfacade.hpp b/src/proc/mobject/builderfacade.hpp new file mode 100644 index 000000000..72c884e20 --- /dev/null +++ b/src/proc/mobject/builderfacade.hpp @@ -0,0 +1,55 @@ +/* + BUILDERFACADE.hpp - Facade and service access point for the Builder Subsystem + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_BUILDERFACADE_H +#define MOBJECT_BUILDERFACADE_H + +#include "proc/engine/renderengine.hpp" + + + +namespace mobject + { + + + /** + * Provides 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. + */ + class BuilderFacade + { + public: + /** + * Main Operation of the Builder: + * create a render engine for a given part of the timeline + */ + engine::RenderEngine & buildEngine () ; + // TODO: allocation, GC?????? + }; + + + +} // namespace mobject +#endif diff --git a/src/proc/mobject/controller/pathmanager.cpp b/src/proc/mobject/controller/pathmanager.cpp new file mode 100644 index 000000000..674fb6847 --- /dev/null +++ b/src/proc/mobject/controller/pathmanager.cpp @@ -0,0 +1,43 @@ +/* + PathManager - Manager for deciding the actual render strategy + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/controller/pathmanager.hpp" + +namespace mobject + { + namespace controller + { + + + + engine::Processor * + PathManager::buildProcessor () + { + return 0;//////////////////TODO + } + + + + } // namespace mobject::controller + +} // namespace mobject diff --git a/src/proc/mobject/controller/pathmanager.hpp b/src/proc/mobject/controller/pathmanager.hpp new file mode 100644 index 000000000..786297360 --- /dev/null +++ b/src/proc/mobject/controller/pathmanager.hpp @@ -0,0 +1,54 @@ +/* + PATHMANAGER.hpp - Manager for deciding the actual render strategy + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_CONTROLLER_PATHMANAGER_H +#define MOBJECT_CONTROLLER_PATHMANAGER_H + +#include "proc/engine/processor.hpp" + + + +namespace mobject + { + namespace controller + { + + + /** + * While building a render engine, this Strategy class + * decides on the actual render strategy in accordance + * to the current controller settings (system state) + */ + class PathManager + { + public: + engine::Processor* buildProcessor () ; + // TODO: allocation, GC?? + }; + + + + } // namespace mobject::controller + +} // namespace mobject +#endif diff --git a/src/proc/mobject/controller/renderstate.cpp b/src/proc/mobject/controller/renderstate.cpp new file mode 100644 index 000000000..5a1c52e7b --- /dev/null +++ b/src/proc/mobject/controller/renderstate.cpp @@ -0,0 +1,44 @@ +/* + RenderState - renderengine state manager + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/controller/renderstate.hpp" + + +namespace mobject + { + namespace controller + { + + + + StateProxy& + RenderState::getStateProxy () + { + //////////////TODO + } + + + + } // namespace mobject::controller + +} // namespace mobject diff --git a/src/proc/mobject/controller/renderstate.hpp b/src/proc/mobject/controller/renderstate.hpp new file mode 100644 index 000000000..b9cf195e0 --- /dev/null +++ b/src/proc/mobject/controller/renderstate.hpp @@ -0,0 +1,57 @@ +/* + RENDERSTATE.hpp - renderengine state manager + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_CONTROLLER_RENDERSTATE_H +#define MOBJECT_CONTROLLER_RENDERSTATE_H + +#include "proc/stateproxy.hpp" + + + +namespace mobject + { + namespace controller + { + + typedef proc_interface::StateProxy StateProxy; + + + /** + * Encapsulates the logic used to get a "current render process" + * in accordance to the currently applicable controller settings. + * The provided StateProxy serves to hold any mutalbe state used + * in the render process, so the rest of the render engine + * can be stateless. + */ + class RenderState + { + public: + StateProxy& getStateProxy () ; + }; + + + + } // namespace mobject::controller + +} // namespace mobject +#endif diff --git a/src/proc/mobject/explicitplacement.cpp b/src/proc/mobject/explicitplacement.cpp new file mode 100644 index 000000000..a81777501 --- /dev/null +++ b/src/proc/mobject/explicitplacement.cpp @@ -0,0 +1,33 @@ +/* + ExplicitPlacement - special Placement yielding an absolute location (Time,Track)-location for a MObject + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/explicitplacement.hpp" + +namespace mobject + { + + /** */ + + + +} // namespace mobject diff --git a/src/proc/mobject/explicitplacement.hpp b/src/proc/mobject/explicitplacement.hpp new file mode 100644 index 000000000..00e77812b --- /dev/null +++ b/src/proc/mobject/explicitplacement.hpp @@ -0,0 +1,51 @@ +/* + EXPLICITPLACEMENT.hpp - special Placement yielding an absolute location (Time,Track)-location for a MObject + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_EXPLICITPLACEMENT_H +#define MOBJECT_EXPLICITPLACEMENT_H + +#include "proc/mobject/placement.hpp" + + + +namespace mobject + { + + namespace session{ class Track; } + + + // TODO: need Garbage Collector for this class!!!!! + + class ExplicitPlacement : public Placement + { + protected: + + Time time; + Track* track; + + }; + + + +} // namespace mobject +#endif diff --git a/src/proc/mobject/interpolator.cpp b/src/proc/mobject/interpolator.cpp new file mode 100644 index 000000000..36bf6e8c3 --- /dev/null +++ b/src/proc/mobject/interpolator.cpp @@ -0,0 +1,33 @@ +/* + Interpolator - denotes a facility to get (continuously interpolated) parameter values + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/interpolator.hpp" + +namespace mobject + { + + /** */ + + + +} // namespace mobject diff --git a/src/proc/mobject/interpolator.hpp b/src/proc/mobject/interpolator.hpp new file mode 100644 index 000000000..7c1c4e9cb --- /dev/null +++ b/src/proc/mobject/interpolator.hpp @@ -0,0 +1,46 @@ +/* + INTERPOLATOR.hpp - denotes a facility to get (continuously interpolated) parameter values + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_INTERPOLATOR_H +#define MOBJECT_INTERPOLATOR_H + + + +namespace mobject + { + + + /** + * Provides the implementation for getting the acutal value + * of a time varying or automated effect/plugin parameter + */ + template + class Interpolator + { + /////////////// + }; + + + +} // namespace mobject +#endif diff --git a/src/proc/mobject/mobject.cpp b/src/proc/mobject/mobject.cpp new file mode 100644 index 000000000..47b47a943 --- /dev/null +++ b/src/proc/mobject/mobject.cpp @@ -0,0 +1,33 @@ +/* + MObject - Key Abstraction: A Media Object in the Session + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/mobject.hpp" +#include "proc/mobject/placement.hpp" + +namespace mobject + { + + /** */ + + +} // namespace mobject diff --git a/src/proc/mobject/mobject.hpp b/src/proc/mobject/mobject.hpp new file mode 100644 index 000000000..02a3345bc --- /dev/null +++ b/src/proc/mobject/mobject.hpp @@ -0,0 +1,63 @@ +/* + MOBJECT.hpp - Key Abstraction: A Media Object in the Session + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_MOBJECT_H +#define MOBJECT_MOBJECT_H + +#include + +#include "cinelerra.h" +#include "proc/mobject/buildable.hpp" + + +using std::list; + + +namespace mobject + { + + class Placement; + + + /** + * MObject is the interface class for all "Media Objects". + * All the contents and elements that can be placed and + * manipulated and finally rendered within Cinelerra's EDL + * are MObjects. + */ + class MObject : public Buildable + { + protected: + typedef cinelerra::Time Time; + + // TODO: how to represent time intervals best? + Time length; + + list placement; + + }; + + + +} // namespace mobject +#endif diff --git a/src/proc/mobject/parameter.cpp b/src/proc/mobject/parameter.cpp new file mode 100644 index 000000000..93345f05a --- /dev/null +++ b/src/proc/mobject/parameter.cpp @@ -0,0 +1,39 @@ +/* + Parameter - representation of an automatable effect/plugin parameter + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/parameter.hpp" +#include "proc/mobject/paramprovider.hpp" + +namespace mobject + { + + template + VAL + Parameter::getValue () + { + ////////////TODO + } + + + +} // namespace mobject diff --git a/src/proc/mobject/parameter.hpp b/src/proc/mobject/parameter.hpp new file mode 100644 index 000000000..59832fa26 --- /dev/null +++ b/src/proc/mobject/parameter.hpp @@ -0,0 +1,55 @@ +/* + PARAMETER.hpp - representation of an automatable effect/plugin parameter + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_PARAMETER_H +#define MOBJECT_PARAMETER_H + + + + +namespace mobject + { + + template class ParamProvider; + + + /** + * Descriptor and access object for a plugin parameter. + * Parameters may be provided with values from the session, + * and this values may be automated. + */ + template + class Parameter + { + public: + VAL getValue () ; + + protected: + ParamProvider* provider; + + }; + + + +} // namespace mobject +#endif diff --git a/src/proc/mobject/paramprovider.cpp b/src/proc/mobject/paramprovider.cpp new file mode 100644 index 000000000..d90c91493 --- /dev/null +++ b/src/proc/mobject/paramprovider.cpp @@ -0,0 +1,39 @@ +/* + ParamProvider - interface denoting a source for actual Parameter values + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/paramprovider.hpp" +#include "proc/mobject/parameter.hpp" +#include "proc/mobject/interpolator.hpp" + +namespace mobject + { + + + template + VAL + ParamProvider::getValue () + {} + + + +} // namespace mobject diff --git a/src/proc/mobject/paramprovider.hpp b/src/proc/mobject/paramprovider.hpp new file mode 100644 index 000000000..4ac155e81 --- /dev/null +++ b/src/proc/mobject/paramprovider.hpp @@ -0,0 +1,55 @@ +/* + PARAMPROVIDER.hpp - interface denoting a source for actual Parameter values + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_PARAMPROVIDER_H +#define MOBJECT_PARAMPROVIDER_H + + + +namespace mobject + { + + template class Parameter; + template class Interpolator; + + + + /** + * A facility to get the actual value of a plugin/effect parameter + */ + template + class ParamProvider + { + protected: + Parameter* param; + Interpolator* ipo; + + + public: + virtual VAL getValue () ; + }; + + + +} // namespace mobject +#endif diff --git a/src/proc/mobject/placement.cpp b/src/proc/mobject/placement.cpp new file mode 100644 index 000000000..eccd34e80 --- /dev/null +++ b/src/proc/mobject/placement.cpp @@ -0,0 +1,43 @@ +/* + Placement - Key Abstraction: a way to place and locate a Media Object + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/placement.hpp" +#include "proc/mobject/explicitplacement.hpp" + +namespace mobject + { + + + + /** create an actual (explicit) placement while trying to + * satisfy the network of adjacent objects and placements. + * TODO: need GC!!!!!!!!!!! + */ + ExplicitPlacement& + Placement::resolve () + { + } + + + +} // namespace mobject diff --git a/src/proc/mobject/placement.hpp b/src/proc/mobject/placement.hpp new file mode 100644 index 000000000..c486c9573 --- /dev/null +++ b/src/proc/mobject/placement.hpp @@ -0,0 +1,57 @@ +/* + PLACEMENT.hpp - Key Abstraction: a way to place and locate a Media Object + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_PLACEMENT_H +#define MOBJECT_PLACEMENT_H + +#include "proc/mobject/mobject.hpp" +#include "proc/mobject/session/track.hpp" + + +namespace mobject + { + + + class ExplicitPlacement; + + + class Placement + { + protected: + typedef cinelerra::Time Time; + typedef session::Track Track; + + MObject* subject; + + + public: + /** resolve the network of placement and + * provide the resulting (explicit) placement. + */ + ExplicitPlacement& resolve () ; + }; + + + +} // namespace mobject +#endif diff --git a/src/proc/mobject/session/abstractmo.cpp b/src/proc/mobject/session/abstractmo.cpp new file mode 100644 index 000000000..b2ec01b0f --- /dev/null +++ b/src/proc/mobject/session/abstractmo.cpp @@ -0,0 +1,37 @@ +/* + AbstractMO - abstract base class for all Media Objects + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/session/abstractmo.hpp" + +namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace mobject::session + +} // namespace mobject diff --git a/src/proc/mobject/session/abstractmo.hpp b/src/proc/mobject/session/abstractmo.hpp new file mode 100644 index 000000000..560e4e7b6 --- /dev/null +++ b/src/proc/mobject/session/abstractmo.hpp @@ -0,0 +1,47 @@ +/* + ABSTRACTMO.hpp - abstract base class for all Media Objects + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_SESSION_ABSTRACTMO_H +#define MOBJECT_SESSION_ABSTRACTMO_H + +#include "proc/mobject/mobject.hpp" + + + +namespace mobject + { + namespace session + { + + + class AbstractMO : public MObject + { + ////////////// TODO: work out common services to provide!!!! + }; + + + + } // namespace mobject::session + +} // namespace mobject +#endif diff --git a/src/proc/mobject/session/allocation.cpp b/src/proc/mobject/session/allocation.cpp new file mode 100644 index 000000000..e3ed4b701 --- /dev/null +++ b/src/proc/mobject/session/allocation.cpp @@ -0,0 +1,37 @@ +/* + Allocation - directive to place a MObject in a specific way + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/session/allocation.hpp" + +namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace mobject::session + +} // namespace mobject diff --git a/src/proc/mobject/session/allocation.hpp b/src/proc/mobject/session/allocation.hpp new file mode 100644 index 000000000..88605572a --- /dev/null +++ b/src/proc/mobject/session/allocation.hpp @@ -0,0 +1,61 @@ +/* + ALLOCATION.hpp - directive to place a MObject in a specific way + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_SESSION_ALLOCATION_H +#define MOBJECT_SESSION_ALLOCATION_H + +#include + +#include "proc/mobject/placement.hpp" + + +using std::string; + + +namespace mobject + { + namespace session + { + + + /** + * a directive to place a MObject in a specific way + */ + class Allocation : public Placement + { + protected: + /** human readable representation of the condition + * characterizing this allocaton, e.g. "t >= 10" + */ + string repr; + + public: + const string& getRepr () const { return repr; } + }; + + + + } // namespace mobject::session + +} // namespace mobject +#endif diff --git a/src/proc/mobject/session/auto.cpp b/src/proc/mobject/session/auto.cpp new file mode 100644 index 000000000..2911b39f1 --- /dev/null +++ b/src/proc/mobject/session/auto.cpp @@ -0,0 +1,44 @@ +/* + Auto - Media Object holding automation data + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/session/auto.hpp" + +namespace mobject + { + namespace session + { + + + template + VAL + Auto::getValue () + { + return 0; //////////////TODO + } + + + + + } // namespace mobject::session + +} // namespace mobject diff --git a/src/proc/mobject/session/auto.hpp b/src/proc/mobject/session/auto.hpp new file mode 100644 index 000000000..2bc12e8ae --- /dev/null +++ b/src/proc/mobject/session/auto.hpp @@ -0,0 +1,54 @@ +/* + AUTO.hpp - Media Object holding automation data + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_SESSION_AUTO_H +#define MOBJECT_SESSION_AUTO_H + +#include "proc/mobject/session/meta.hpp" +#include "proc/mobject/paramprovider.hpp" + + + +namespace mobject + { + namespace session + { + + + /** + * Automation data for some parameter + * (i.e. the parameter is a time varying function) + */ + template + class Auto : public Meta, public ParamProvider + { + public: + virtual VAL getValue () ; + }; + + + + } // namespace mobject::session + +} // namespace mobject +#endif diff --git a/src/proc/mobject/session/clip.cpp b/src/proc/mobject/session/clip.cpp new file mode 100644 index 000000000..7fbb30dcb --- /dev/null +++ b/src/proc/mobject/session/clip.cpp @@ -0,0 +1,37 @@ +/* + Clip - a Media Clip + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/session/clip.hpp" + +namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace mobject::session + +} // namespace mobject diff --git a/src/proc/mobject/session/clip.hpp b/src/proc/mobject/session/clip.hpp new file mode 100644 index 000000000..83696c866 --- /dev/null +++ b/src/proc/mobject/session/clip.hpp @@ -0,0 +1,64 @@ +/* + CLIP.hpp - a Media Clip + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_SESSION_CLIP_H +#define MOBJECT_SESSION_CLIP_H + +#include "proc/mobject/session/abstractmo.hpp" + + + +namespace mobject + { + namespace session + { + + + /** + * A user visible/editable Clip is a reference to a contiguous + * sequence of media data loaded as Asset into the current Session. + * As such, it is a virtual (non destructive) cut or edit of the + * source material and can be placed into the EDL to be rendered + * into the ouput. The actual media type of a clip will be derived + * at runtime by resolving this reference to the underlying Asset. + * + * TODO: define how to denote Time positions /lengths. This is tricky, + * because it depends on the actual media type, and we wand to encapsulate + * all these details as much as possible. + */ + class Clip : public AbstractMO + { + protected: + /** startpos in source */ + Time start; + + //TODO: where to put the duration ??? + + }; + + + + } // namespace mobject::session + +} // namespace mobject +#endif diff --git a/src/proc/mobject/session/edl.cpp b/src/proc/mobject/session/edl.cpp new file mode 100644 index 000000000..8fc76bb0c --- /dev/null +++ b/src/proc/mobject/session/edl.cpp @@ -0,0 +1,39 @@ +/* + EDL - the (high level) Edit Decision List within the current Session + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/session/edl.hpp" +#include "proc/mobject/session/track.hpp" +#include "proc/mobject/mobject.hpp" + +namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace mobject::session + +} // namespace mobject diff --git a/src/proc/mobject/session/edl.hpp b/src/proc/mobject/session/edl.hpp new file mode 100644 index 000000000..31b0319a4 --- /dev/null +++ b/src/proc/mobject/session/edl.hpp @@ -0,0 +1,54 @@ +/* + EDL.hpp - the (high level) Edit Decision List within the current Session + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_SESSION_EDL_H +#define MOBJECT_SESSION_EDL_H + +#include + +#include "proc/mobject/mobject.hpp" +#include "proc/mobject/session/track.hpp" + + +using std::list; + +namespace mobject + { + namespace session + { + + + class EDL + { + protected: + list tracks; + list clips; + + }; + + + + } // namespace mobject::session + +} // namespace mobject +#endif diff --git a/src/proc/mobject/session/effect.cpp b/src/proc/mobject/session/effect.cpp new file mode 100644 index 000000000..36e5835b5 --- /dev/null +++ b/src/proc/mobject/session/effect.cpp @@ -0,0 +1,37 @@ +/* + Effect - EDL representation of a pluggable and automatable effect. + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/session/effect.hpp" + +namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace mobject::session + +} // namespace mobject diff --git a/src/proc/mobject/session/effect.hpp b/src/proc/mobject/session/effect.hpp new file mode 100644 index 000000000..09ed321bf --- /dev/null +++ b/src/proc/mobject/session/effect.hpp @@ -0,0 +1,54 @@ +/* + EFFECT.hpp - EDL representation of a pluggable and automatable effect. + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_SESSION_EFFECT_H +#define MOBJECT_SESSION_EFFECT_H + +#include + +#include "proc/mobject/session/abstractmo.hpp" + + +using std::string; + + +namespace mobject + { + namespace session + { + + + class Effect : public AbstractMO + { + protected: + /** Identifier of the Plugin to be used */ + string plugID; + + }; + + + + } // namespace mobject::session + +} // namespace mobject +#endif diff --git a/src/proc/mobject/session/fixedplacement.cpp b/src/proc/mobject/session/fixedplacement.cpp new file mode 100644 index 000000000..cfd370501 --- /dev/null +++ b/src/proc/mobject/session/fixedplacement.cpp @@ -0,0 +1,37 @@ +/* + ${Name} - ???????????? needed any longer? + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/session/fixedplacement.hpp" + +namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace mobject::session + +} // namespace mobject diff --git a/src/proc/mobject/session/fixedplacement.hpp b/src/proc/mobject/session/fixedplacement.hpp new file mode 100644 index 000000000..badf3e781 --- /dev/null +++ b/src/proc/mobject/session/fixedplacement.hpp @@ -0,0 +1,49 @@ +/* + FIXEDPLACEMENT.hpp - TODO: didn't we plan to rename ExplicitPlacement to DirectPlacement?? + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_SESSION_FIXEDPLACEMENT_H +#define MOBJECT_SESSION_FIXEDPLACEMENT_H + +#include "proc/mobject/placement.hpp" +#include "proc/mobject/explicitplacement.hpp" + + + +namespace mobject + { + namespace session + { + + // TODO: didn't we plan to rename ExplicitPlacement to DirectPlacement?? + + class DirectPlacement : public ExplicitPlacement + { + /////////// + }; + + + + } // namespace mobject::session + +} // namespace mobject +#endif diff --git a/src/proc/mobject/session/fixture.cpp b/src/proc/mobject/session/fixture.cpp new file mode 100644 index 000000000..73fa72e7e --- /dev/null +++ b/src/proc/mobject/session/fixture.cpp @@ -0,0 +1,53 @@ +/* + Fixture - the (low level) representation of the EDL with concrete placement data + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/session/fixture.hpp" + +namespace mobject + { + namespace session + { + + + + list & + Fixture::getPlaylistForRender () + { + abort();/////////////////////TODO + } + + + /** TODO: a placeholder for the Operation needed for + * wiring the Automation providers in the Build process + */ + Auto* + Fixture::getAutomation () + { + return 0;/////////////////////TODO + } + + + + } // namespace mobject::session + +} // namespace mobject diff --git a/src/proc/mobject/session/fixture.hpp b/src/proc/mobject/session/fixture.hpp new file mode 100644 index 000000000..eebdc87af --- /dev/null +++ b/src/proc/mobject/session/fixture.hpp @@ -0,0 +1,63 @@ +/* + FIXTURE.hpp - the (low level) representation of the EDL with concrete placement data + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_SESSION_FIXTURE_H +#define MOBJECT_SESSION_FIXTURE_H + +#include + +#include "proc/mobject/session/edl.hpp" +#include "proc/mobject/session/track.hpp" +#include "proc/mobject/explicitplacement.hpp" +#include "proc/mobject/session/auto.hpp" + + +using std::list; + + + +namespace mobject + { + namespace session + { + + + + class Fixture : public EDL + { + protected: + Track tracks; + list timeline; + + + public: + list & getPlaylistForRender () ; + Auto* getAutomation () ; /////TODO: just a placeholder at the moment!!! + }; + + + + } // namespace mobject::session + +} // namespace mobject +#endif diff --git a/src/proc/mobject/session/label.cpp b/src/proc/mobject/session/label.cpp new file mode 100644 index 000000000..3fd9f283b --- /dev/null +++ b/src/proc/mobject/session/label.cpp @@ -0,0 +1,37 @@ +/* + Label - a user visible Marker or Tag + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/session/label.hpp" + +namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace mobject::session + +} // namespace mobject diff --git a/src/proc/mobject/session/label.hpp b/src/proc/mobject/session/label.hpp new file mode 100644 index 000000000..2998b923c --- /dev/null +++ b/src/proc/mobject/session/label.hpp @@ -0,0 +1,52 @@ +/* + LABEL.hpp - a user visible Marker or Tag + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_SESSION_LABEL_H +#define MOBJECT_SESSION_LABEL_H + +#include "proc/mobject/session/meta.hpp" + + + +namespace mobject + { + namespace session + { + + + /** + * Any sort of User visible Marker or Tag, used + * to mark time positions and ranges, or specific + * locations to attach other MObjects to. + */ + class Label : public Meta + { + ///////////TODO: timespan fields here or already in class Meta?? + }; + + + + } // namespace mobject::session + +} // namespace mobject +#endif diff --git a/src/proc/mobject/session/meta.cpp b/src/proc/mobject/session/meta.cpp new file mode 100644 index 000000000..35c1cc7af --- /dev/null +++ b/src/proc/mobject/session/meta.cpp @@ -0,0 +1,37 @@ +/* + Meta - abstract base class of all MObjects representing meta data or processing instructions + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/session/meta.hpp" + +namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace mobject::session + +} // namespace mobject diff --git a/src/proc/mobject/session/meta.hpp b/src/proc/mobject/session/meta.hpp new file mode 100644 index 000000000..8c141f516 --- /dev/null +++ b/src/proc/mobject/session/meta.hpp @@ -0,0 +1,53 @@ +/* + META.hpp - abstract base class of all MObjects representing meta data or processing instructions + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_SESSION_META_H +#define MOBJECT_SESSION_META_H + +#include "proc/mobject/session/abstractmo.hpp" + + + +namespace mobject + { + namespace session + { + + + /** + * Meta-MObject doesn't represent real Media Content, + * but rather all sorts of Processing Instructions + * and other metadata, which can be placed and + * attached within the EDL/Session. + */ + class Meta : public AbstractMO + { + /////////// + }; + + + + } // namespace mobject::session + +} // namespace mobject +#endif diff --git a/src/proc/mobject/session/relativeplacement.cpp b/src/proc/mobject/session/relativeplacement.cpp new file mode 100644 index 000000000..6fd934f12 --- /dev/null +++ b/src/proc/mobject/session/relativeplacement.cpp @@ -0,0 +1,35 @@ +/* + RelativePlacement - Placement implemnetaion providing various ways of attaching a MObject to another one + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/session/relativeplacement.hpp" +#include "proc/mobject/mobject.hpp" + +namespace mobject + { + namespace session + { + + + } // namespace mobject::session + +} // namespace mobject diff --git a/src/proc/mobject/session/relativeplacement.hpp b/src/proc/mobject/session/relativeplacement.hpp new file mode 100644 index 000000000..ca3041928 --- /dev/null +++ b/src/proc/mobject/session/relativeplacement.hpp @@ -0,0 +1,68 @@ +/* + RELATIVEPLACEMENT.hpp - Placement implemnetaion providing various ways of attaching a MObject to another one + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_SESSION_RELATIVEPLACEMENT_H +#define MOBJECT_SESSION_RELATIVEPLACEMENT_H + +#include "proc/mobject/placement.hpp" + + + + +namespace mobject + { + namespace session + { + + + + class RelativePlacement : public Placement + { + public: + + /** + * the possible kinds of RelativePlacements + */ + enum RelType + { SAMETIME /** place subject at the same time as the anchor */ + , ATTACH /** attach subject to anchor (e.g. an effect to a clip) */ + }; + + protected: + MObject* anchor; + + /** the kind of relation denoted by this Placement */ + RelType relType; + + /** Offset the actual position by this (time) value relative to the anchor point. */ + cinelerra::Time offset; + //TODO: suitable representation? + + }; + + + + } // namespace mobject::session + +} // namespace mobject +#endif diff --git a/src/proc/mobject/session/segment.cpp b/src/proc/mobject/session/segment.cpp new file mode 100644 index 000000000..e89021c2a --- /dev/null +++ b/src/proc/mobject/session/segment.cpp @@ -0,0 +1,44 @@ +/* + Segment - Segment of the Timeline. + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + +#include "proc/mobject/session/segment.hpp" +#include "proc/mobject/explicitplacement.hpp" + +// Used at the moment (7/07) for partitioning the timeline/fixture into segments +// to be rendered by a specialized render node network for each, without the need +// to change any connections within a given segment. +// Note this concept may be superfluos alltogether; is a draft and the real +// use still needs to be worked out... + + +namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace mobject::session + +} // namespace mobject diff --git a/src/proc/mobject/session/segment.hpp b/src/proc/mobject/session/segment.hpp new file mode 100644 index 000000000..af12f6de1 --- /dev/null +++ b/src/proc/mobject/session/segment.hpp @@ -0,0 +1,70 @@ +/* + SEGMENT.hpp - Segment of the Timeline. + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_SESSION_SEGMENT_H +#define MOBJECT_SESSION_SEGMENT_H + +#include + +#include "cinelerra.h" +#include "proc/mobject/explicitplacement.hpp" + + +using std::list; + + +namespace mobject + { + namespace session + { + + + /** + * Used at the moment (7/07) for partitioning the timeline/fixture into segments + * to be rendered by a specialized render node network for each, without the need + * to change any connections within a given segment. + * Note this concept may be superfluos alltogether; is a draft and the real + * use still needs to be worked out... + */ + class Segment + { + protected: + typedef cinelerra::Time Time; + + /** begin of this timeline segment. */ + Time start; + /** duration (span) of this timeline segment. */ + Time length; + + /** relevant MObjects comprising this segment. */ + list elements; + // TODO: actually necessary?? + + }; + + + + } // namespace mobject::session + +} // namespace mobject +#endif diff --git a/src/proc/mobject/session/session.cpp b/src/proc/mobject/session/session.cpp new file mode 100644 index 000000000..1bb585d3e --- /dev/null +++ b/src/proc/mobject/session/session.cpp @@ -0,0 +1,39 @@ +/* + Session - holds the complete session to be edited by the user + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/session/session.hpp" +#include "proc/mobject/session/edl.hpp" +#include "proc/mobject/session/fixture.hpp" + +namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace mobject::session + +} // namespace mobject diff --git a/src/proc/mobject/session/session.hpp b/src/proc/mobject/session/session.hpp new file mode 100644 index 000000000..e63730eb0 --- /dev/null +++ b/src/proc/mobject/session/session.hpp @@ -0,0 +1,58 @@ +/* + SESSION.hpp - holds the complete session to be edited by the user + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_SESSION_SESSION_H +#define MOBJECT_SESSION_SESSION_H + + + +namespace mobject + { + namespace session + { + + class EDL; + class Fixture; + + /** + * The (current) Session holds all the user + * visible content to be edited and manipulated + * within the Cinelerra Application. From a users + * perspective, it is a collection of Media Objects + * (--> MObject) placed (--> Placement) onto virtual + * Tracks. + */ + class Session + { + protected: + EDL& edl; + Fixture& fixture; + + }; + + + + } // namespace mobject::session + +} // namespace mobject +#endif diff --git a/src/proc/mobject/session/track.cpp b/src/proc/mobject/session/track.cpp new file mode 100644 index 000000000..d3e24a9e4 --- /dev/null +++ b/src/proc/mobject/session/track.cpp @@ -0,0 +1,37 @@ +/* + Track - descriptor for one track in the Session + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/mobject/session/track.hpp" + +namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace mobject::session + +} // namespace mobject diff --git a/src/proc/mobject/session/track.hpp b/src/proc/mobject/session/track.hpp new file mode 100644 index 000000000..f3acec86f --- /dev/null +++ b/src/proc/mobject/session/track.hpp @@ -0,0 +1,54 @@ +/* + TRACK.hpp - descriptor for one track in the Session + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef MOBJECT_SESSION_TRACK_H +#define MOBJECT_SESSION_TRACK_H + + + +namespace mobject + { + namespace session + { + + + /** + * A Track in the EDL or Session. + * But, honestly, I don't quite know what a Track stands for! + * Usually, this stems from the metaphor of a multitrack tape machine, + * but I doubt this metaphor is really helpful for editing video; mostly + * people stick to such metaphors out of mental laziyness... + * + * So, let's see if the concept "Track" will get any practical functionallity + * or if we end up with "Track" beeing just a disguise for an int ID.... + */ + class Track + { + }; + + + + } // namespace mobject::session + +} // namespace mobject +#endif diff --git a/src/proc/stateproxy.cpp b/src/proc/stateproxy.cpp new file mode 100644 index 000000000..fa11dc11d --- /dev/null +++ b/src/proc/stateproxy.cpp @@ -0,0 +1,34 @@ +/* + StateProxy - Key Interface representing a render process and encapsulating state + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "proc/stateproxy.hpp" +#include "proc/frame.hpp" + +namespace proc_interface + { + + /** */ + + + +} // namespace proc_interface diff --git a/src/proc/stateproxy.hpp b/src/proc/stateproxy.hpp new file mode 100644 index 000000000..02e0914b4 --- /dev/null +++ b/src/proc/stateproxy.hpp @@ -0,0 +1,45 @@ +/* + STATEPROXY.hpp - Key Interface representing a render process and encapsulating state + + Copyright (C) CinelerraCV + 2007, Christian Thaeter + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + + +#ifndef PROC_INTERFACE_STATEPROXY_H +#define PROC_INTERFACE_STATEPROXY_H + +#include "proc/frame.hpp" + + + +namespace proc_interface + { + + + class StateProxy + { + protected: + Frame * currFrame; + + }; + + + +} // namespace proc_interface +#endif diff --git a/uml/cinelerra3/128005 b/uml/cinelerra3/128005 index e48b8d387..0d1ddaf0c 100644 --- a/uml/cinelerra3/128005 +++ b/uml/cinelerra3/128005 @@ -1,14 +1,14 @@ -format 38 +format 40 "design" // design - revision 7 - modified_by 61 "ct" + revision 9 + 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 //use case diagram settings 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 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 //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 @@ -40,11 +40,32 @@ Not a real code package, rather a container for design drafts, specifications, d size A4 end + component 129925 "CommonLib" + provided_classes + class_ref 134917 // Time + end + end + component 128005 "Builder" stereotype "subsystem" + provided_classes + class_ref 132741 // StateProxy + end + required_classes + class_ref 128261 // Fixture + class_ref 128005 // Session + end end component 128133 "Session" + stereotype "subsystem" + provided_classes + class_ref 128133 // EDL + class_ref 128261 // Fixture + class_ref 128517 // MObject + class_ref 134661 // ParamProvider + class_ref 128005 // Session + end component 128389 "EDL" stereotype "entity" end @@ -56,10 +77,14 @@ Not a real code package, rather a container for design drafts, specifications, d component 128261 "Controller" stereotype "subsystem" + provided_classes + class_ref 130565 // BuilderFacade + end simplerelation 128261 -_-> on component_ref 128005 // Builder end + end component 128645 "AssetManagement" @@ -69,10 +94,23 @@ Not a real code package, rather a container for design drafts, specifications, d end component 128901 "Engine" + required_classes + class_ref 132741 // StateProxy + end simplerelation 128133 -_-> on component_ref 129029 // Frame (Stream) Provider end + + component 130053 "ProcNode" + stereotype "entity" + provided_classes + class_ref 134533 // Parameter + end + required_classes + class_ref 134661 // ParamProvider + end + end end component 129029 "Frame (Stream) Provider" @@ -86,6 +124,38 @@ Not a real code package, rather a container for design drafts, specifications, d end component 129285 "RenderPathManager" + provided_classes + class_ref 130437 // PathManager + end + end + + end + + componentview 128133 "interfaces" + //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 + componentdiagram 130053 "proc-components" + package_name_in_tab default show_context default auto_label_position default draw_all_relations no shadow default + draw_component_as_icon default show_component_req_prov default show_component_rea default + size A3 + end + + component 129541 "ControllerFacade" + provided_classes + class_ref 130309 // ControllerFacade + end + required_classes + class_ref 130565 // BuilderFacade + class_ref 130437 // PathManager + end + end + + component 129797 "ConManager" + stereotype "component" + required_classes + class_ref 134661 // ParamProvider + end end end diff --git a/uml/cinelerra3/128133.diagram b/uml/cinelerra3/128133.diagram index 784c2e36c..32bf1532d 100644 --- a/uml/cinelerra3/128133.diagram +++ b/uml/cinelerra3/128133.diagram @@ -1,4 +1,4 @@ -format 38 +format 40 classcanvas 128005 class_ref 128005 // Session 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 @@ -6,7 +6,7 @@ classcanvas 128005 class_ref 128005 // Session end classcanvas 128133 class_ref 128133 // EDL 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 232 607 2000 + xyz 232 606 2000 end classcanvas 128261 class_ref 128261 // Fixture 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 @@ -18,7 +18,7 @@ classcanvas 129029 class_ref 128389 // Track end classcanvas 129413 class_ref 128517 // MObject 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 313 137 2000 + xyz 313 130 2000 end classcanvas 129669 class_ref 128645 // Placement draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default @@ -30,7 +30,7 @@ classcanvas 129925 class_ref 128389 // Track end classcanvas 130949 class_ref 128773 // AbstractMO 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 317 251 2000 + xyz 317 258 2000 end classcanvas 131461 class_ref 128901 // Clip 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 @@ -54,11 +54,11 @@ classcanvas 132869 class_ref 129413 // RelativePlacement end classcanvas 134149 class_ref 129541 // Allocation draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 590 366 2000 + xyz 590 359 2000 end classcanvas 134405 class_ref 129669 // Label draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 439 483 2000 + xyz 457 476 2000 end classcanvas 135429 class_ref 129797 // ExplicitPlacement draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default @@ -66,11 +66,11 @@ classcanvas 135429 class_ref 129797 // ExplicitPlacement end classcanvas 135813 class_ref 129797 // ExplicitPlacement draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 466 807 2000 + xyz 466 808 2000 end classcanvas 136581 class_ref 129925 // Auto 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 373 467 2005 + xyz 375 466 2005 end note 136837 "Placement \"locates\" a Media Object" xyzwh 368 83 3005 207 36 @@ -86,10 +86,14 @@ classcanvas 137349 class_ref 130181 // Constraint draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default xyz 623 485 2000 end +classcanvas 138629 class_ref 135173 // Segment + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + xyz 417 678 2000 + end relationcanvas 128389 relation_ref 128005 // - from ref 128005 z 1999 stereotype "<>" xyz 139 627 3000 to ref 128133 - role_a_pos 201 604 3000 no_role_b - multiplicity_a_pos 205 637 3000 no_multiplicity_b + from ref 128005 z 1999 stereotype "<>" xyz 139 626 3000 to ref 128133 + role_a_pos 201 603 3000 no_role_b + multiplicity_a_pos 205 636 3000 no_multiplicity_b relationcanvas 128517 relation_ref 128133 // from ref 128005 z 1999 to ref 128261 role_a_pos 240 870 3000 no_role_b @@ -102,23 +106,23 @@ relationcanvas 128645 relation_ref 128261 // no_multiplicity_a no_multiplicity_b relationcanvas 129157 relation_ref 128389 // geometry HV - from ref 128133 z 1999 stereotype "<>" xyz 286 629 3000 to point 326 626 + from ref 128133 z 1999 stereotype "<>" xyz 286 628 3000 to point 326 625 line 129285 z 1999 to ref 129029 role_a_pos 338 687 3000 no_role_b multiplicity_a_pos 314 687 3000 no_multiplicity_b relationcanvas 129797 relation_ref 128645 // - from ref 129413 z 1999 to ref 129669 + from ref 129413 z 1999 stereotype "<>" xyz 471 143 3000 to ref 129669 role_a_pos 513 144 3000 role_b_pos 401 144 3000 multiplicity_a_pos 547 177 3000 multiplicity_b_pos 401 177 3000 relationcanvas 130181 relation_ref 129029 // geometry HV - from ref 128261 z 1999 stereotype "<>" xyz 314 935 3000 to point 339 931 + from ref 128261 z 1999 stereotype "<>" xyz 334 914 3000 to point 339 931 line 130565 z 1999 to ref 129925 role_a_pos 351 980 3000 no_role_b multiplicity_a_pos 315 980 3000 no_multiplicity_b relationcanvas 130821 relation_ref 128517 // geometry VH - from ref 128133 z 1999 stereotype "<>" xyz 258 548 3000 to point 252 167 + from ref 128133 z 1999 stereotype "<>" xyz 258 547 3000 to point 252 167 line 132357 z 1999 to ref 129413 role_a_pos 280 145 3000 no_role_b multiplicity_a_pos 298 178 3000 no_multiplicity_b @@ -170,16 +174,18 @@ relationcanvas 135685 relation_ref 130949 // no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 135941 relation_ref 131077 // - from ref 128261 z 1999 stereotype "<>" xyz 372 889 3000 to ref 135813 - role_a_pos 419 843 3000 no_role_b - multiplicity_a_pos 451 876 3000 no_multiplicity_b + from ref 128261 z 1999 stereotype "<>" xyz 371 893 3000 to ref 135813 + role_a_pos 419 844 3000 no_role_b + multiplicity_a_pos 451 877 3000 no_multiplicity_b relationcanvas 136069 relation_ref 131205 // from ref 135813 z 1999 to point 433 897 line 136197 z 1999 to ref 129925 no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 136709 relation_ref 131333 // - from ref 136581 z 1999 to ref 131973 + geometry HV + from ref 136581 z 1999 to point 409 501 + line 138373 z 1999 to ref 131973 no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 137477 relation_ref 131461 // @@ -190,4 +196,10 @@ relationcanvas 138245 relation_ref 131717 // from ref 137349 z 1999 to ref 134149 no_role_a no_role_b no_multiplicity_a no_multiplicity_b +relationcanvas 138757 relation_ref 137093 // + geometry VHr + from ref 138629 z 1999 stereotype "<>" xyz 479 716 3000 to point 517 714 + line 138885 z 1999 to ref 135813 + role_a_pos 524 717 3000 no_role_b + multiplicity_a_pos 505 783 3000 no_multiplicity_b end diff --git a/uml/cinelerra3/128261 b/uml/cinelerra3/128261 index 9fefa1555..c3e6e1c4e 100644 --- a/uml/cinelerra3/128261 +++ b/uml/cinelerra3/128261 @@ -1,6 +1,6 @@ -format 38 +format 40 "MObject" // ProcessingLayer::MObject - revision 12 + revision 16 modified_by 5 "hiv" // class settings //class diagram settings @@ -8,7 +8,7 @@ format 38 //use case diagram settings 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 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 //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 @@ -34,7 +34,7 @@ format 38 //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 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 //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 @@ -48,22 +48,11 @@ format 38 size A4 end - objectdiagram 128773 "EDL Example1" - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - comment "A simple example showing how the actual objects are placed in the Fixture (=definitive playlist). It shows a Video and Audio clip placed on two tracks" - size A4 - end - - objectdiagram 128901 "EDL Example2" - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - comment "More complex example showing the Object graph in the EDL and how it is linked into the Fixture to yield the actual locations. In this example, an HUE Effect is applied on a part of the Clip" - size A4 - end - class 128005 "Session" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -92,8 +81,9 @@ ${inlines} class 128133 "EDL" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -104,7 +94,7 @@ ${inlines} relation 128389 *--> stereotype "list" a role_name "tracks" multiplicity "*" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; + cpp default " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value}; " classrelation_ref 128645 // tracks () b multiplicity "" parent class_ref 128389 // Track @@ -114,7 +104,7 @@ ${inlines} relation 128517 o--> stereotype "list" a role_name "clips" multiplicity "*" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; + cpp default " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type} *> ${name}${value}; " classrelation_ref 128901 // clips () b multiplicity "" parent class_ref 128517 // MObject @@ -123,8 +113,9 @@ ${inlines} class 128261 "Fixture" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -160,34 +151,81 @@ ${inlines} end operation 128645 "getPlaylistForRender" - public explicit_return_type "" + public explicit_return_type "list" nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} + 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 operation 129157 "getAutomation" - public explicit_return_type "" + public explicit_return_type "Auto [ProcessingLayer::MObject]*" nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + " end end + class 135173 "Segment" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + attribute 129925 "start" + protected type class_ref 134917 // Time + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + idl_decl "" + end + + attribute 130053 "length" + protected type class_ref 134917 // Time + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + idl_decl "" + comment "duration (span) of this timeline segment." + end + + classrelation 138885 // elements () + relation 137093 o--> + stereotype "list" + a role_name "elements" multiplicity "*" protected + comment "relevant MObjects comprising this segment. TODO: actually necessary??" + cpp default " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type} *> ${name}${value}; +" + classrelation_ref 138885 // elements () + b multiplicity "" parent class_ref 129797 // ExplicitPlacement + end + end + class 128389 "Track" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -198,8 +236,9 @@ ${inlines} class 128517 "MObject" abstract visibility public stereotype "interface" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "${comment}${@}${visibility}interface ${name}${extends} { @@ -210,14 +249,24 @@ ${members}}; " explicit_switch_type "" + attribute 128517 "length" + protected type class_ref 134917 // Time + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + idl_decl "" + comment "TODO: how to represent time intervals?" + end + classrelation 129029 // placement () relation 128645 ---- + stereotype "list" a role_name "placement" multiplicity "1..*" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; + cpp default " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type} *> ${name}${value}; " classrelation_ref 129029 // placement () b role_name "subject" multiplicity "1" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; " classrelation_ref 129157 // subject () end @@ -233,8 +282,9 @@ ${members}}; class 128645 "Placement" abstract visibility public stereotype "interface" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "${comment}${@}${visibility}interface ${name}${extends} { @@ -250,23 +300,77 @@ ${members}}; end operation 128005 "resolve" - public return_type class_ref 129797 // ExplicitPlacement + public explicit_return_type "ExplicitPlacement [ProcessingLayer::MObject]&" nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} + 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} +} + " - comment "create an actual (explicite) placement while trying to satisfy the network of adjacent objects and placements." + comment "create an actual (explicit) placement while trying to satisfy the network of adjacent objects and placements." + end + end + + class 129797 "ExplicitPlacement" + abstract visibility public 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 "" + + classrelation 131589 // + relation 130949 ---|> + a public + cpp default "${type}" + classrelation_ref 131589 // + b multiplicity "" parent class_ref 128645 // Placement + end + + attribute 128261 "time" + protected type class_ref 134917 // Time + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + idl_decl "" + end + + attribute 128389 "track" + protected explicit_type "Track [ProcessingLayer::MObject] *" + cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; +" + java_decl "" + idl_decl "" + end + + classrelation 131845 // + relation 131205 ---> + a role_name "" multiplicity "" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 131845 // + b multiplicity "" parent class_ref 128389 // Track + association_type class_ref 128389 // Track end end class 128773 "AbstractMO" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + abstract visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -280,21 +384,13 @@ ${inlines} classrelation_ref 129925 // b multiplicity "" parent class_ref 128517 // MObject end - - attribute 128517 "length" - protected explicit_type "long" - init_value "0" - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - java_decl "" - idl_decl "" - end end class 128901 "Clip" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -310,8 +406,8 @@ ${inlines} end attribute 128645 "start" - protected explicit_type "long" - init_value "0" + protected type class_ref 134917 // Time + init_value "Time(0)" cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; " java_decl "" @@ -322,8 +418,9 @@ ${inlines} class 129029 "Effect" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -350,8 +447,9 @@ ${inlines} class 129157 "Meta" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -369,8 +467,9 @@ ${inlines} class 129285 "DirectPlacement" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -396,8 +495,9 @@ ${inlines} class 129413 "RelativePlacement" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -407,7 +507,7 @@ ${inlines} classrelation 130565 // anchor () relation 129925 ---> a role_name "anchor" multiplicity "1" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; " classrelation_ref 130565 // anchor () b multiplicity "1" parent class_ref 128517 // MObject @@ -415,11 +515,12 @@ ${inlines} end attribute 128133 "relType" - protected explicit_type "" + protected type class_ref 133893 // RelType cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; " java_decl "" idl_decl "" + comment "the kind of relation denoted by this Placement" end classrelation 131333 // @@ -431,20 +532,21 @@ ${inlines} end attribute 129029 "offset" - protected explicit_type "long" + protected type class_ref 134917 // Time init_value "0" cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; " java_decl "" idl_decl "" - comment "Offset the actual position by this (time) value relative to the anchor point" + comment "Offset the actual position by this (time) value relative to the anchor point. TODO: Representation?" end class 133893 "RelType" - visibility protected stereotype "enum" - cpp_decl "${comment}enum ${name} { + visibility public stereotype "enum" + cpp_decl "${comment}enum ${name} + { ${items} -}; + }; " java_decl "${comment}${@}${visibility}${final}${abstract}enum ${name}${implements} { ${items}; @@ -455,17 +557,18 @@ ${items}}; " explicit_switch_type "" + comment "the possible kinds of RelativePlacements" attribute 129157 "SAMETIME" public explicit_type "" - cpp_decl " ${name}${value},${comment}" + cpp_decl " ${name}${value}, ${comment}" java_decl "" idl_decl "" - comment "place subject at the sime time then the anchor" + comment "place subject at the sime time as the anchor" end attribute 129285 "ATTACH" public explicit_type "" - cpp_decl " ${name}${value},${comment}" + cpp_decl " ${name}${value}, ${comment}" java_decl "" idl_decl "" comment "attach subject to anchor (e.g. an effect to a clip)" @@ -474,9 +577,10 @@ ${items}}; end class 129541 "Allocation" - visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + abstract visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -498,14 +602,34 @@ ${inlines} " java_decl "" idl_decl "" + get_oper operation_ref 131205 // get_repr comment "human readable representation of the condition characterizing this allocaton, e.g. \"t >= 10\"" end + + operation 131205 "get_repr" + const cpp_inline public explicit_return_type "string" + nparams 0 + cpp_decl " ${comment}${friend}${static}${inline}${virtual}const ${type} ${name} ${(}${)}${const}${volatile} ${throw};" + cpp_def "${comment}${inline}const ${type} ${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl} +{ + return repr; +} + +" + cpp_name_spec "get${Name}" + final + java_name_spec "get${Name}" + + idl_name_spec "get_${name}" + get_of_attribute attribute_ref 128773 // repr + end end class 129669 "Label" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -521,55 +645,6 @@ ${inlines} end end - class 129797 "ExplicitPlacement" - abstract visibility public 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 "" - - classrelation 131589 // - relation 130949 ---|> - a public - cpp default "${type}" - classrelation_ref 131589 // - b multiplicity "" parent class_ref 128645 // Placement - end - - attribute 128261 "time" - protected explicit_type "long" - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - java_decl "" - idl_decl "" - end - - attribute 128389 "track" - protected type class_ref 128389 // Track - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; -" - java_decl "" - idl_decl "" - end - - classrelation 131845 // - relation 131205 ---> - a role_name "" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 131845 // - b multiplicity "" parent class_ref 128389 // Track - association_type class_ref 128389 // Track - end - end - class 129925 "Auto" visibility package nformals 1 @@ -577,15 +652,17 @@ ${members}}; explicit_extends "" nactuals 1 actual class class_ref 134661 // ParamProvider - rank 0 explicit_value "" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + rank 0 explicit_value "VAL" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" idl_decl "" explicit_switch_type "" + comment "Automation data for some parameter (i.e. a time varying function)" classrelation 131973 // relation 131333 ---|> a public @@ -603,12 +680,15 @@ ${inlines} end operation 131077 "getValue" - public explicit_return_type "VAL" + const public explicit_return_type "VAL" nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} + 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} +} + " @@ -617,8 +697,9 @@ ${inlines} class 130053 "Wish" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -636,8 +717,9 @@ ${inlines} class 130181 "Constraint" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -652,6 +734,123 @@ ${inlines} b multiplicity "" parent class_ref 129541 // Allocation end end + + class 134533 "Parameter" + visibility public + nformals 1 + formal name "VAL" type "class" explicit_default_value "" + explicit_extends "" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "Descriptor and access object for a plugin parameter. Parameters may be provided with values from the session, and this values may be automated." + operation 130821 "getValue" + const public explicit_return_type "VAL" + nparams 0 + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + +" + + + end + + classrelation 138245 // + relation 136581 -_-> + stereotype "implemented_by" + a package + cpp default "#include in source" + classrelation_ref 138245 // + b multiplicity "" parent class_ref 134661 // ParamProvider + end + + classrelation 138629 // + relation_ref 136325 // + end + end + + class 134661 "ParamProvider" + abstract visibility public stereotype "interface" + nformals 1 + formal name "VAL" type "class" explicit_default_value "" + explicit_extends "" + 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 "" + + comment "A facility to get the actual value of a plugin/effect parameter" + classrelation 137989 // param () + relation 136325 ---- + a role_name "param" multiplicity "1" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 137989 // param () + b role_name "provider" multiplicity "1" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 138629 // + end + + classrelation 138373 // ipo () + relation 136709 ---> + a role_name "ipo" multiplicity "0..1" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${type}* ${name}${value}; +" + classrelation_ref 138373 // ipo () + b multiplicity "" parent class_ref 134789 // Interpolator + end + + operation 130949 "getValue" + const public explicit_return_type "VAL" + nparams 0 + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + +" + + + end + end + + class 134789 "Interpolator" + visibility package + nformals 1 + formal name "VAL" type "class" explicit_default_value "" + explicit_extends "" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "Provides the implementation for getting the acutal value of a time varying or automated effect/plugin parameter" + end end package_ref 128901 // Builder diff --git a/uml/cinelerra3/128261.diagram b/uml/cinelerra3/128261.diagram index 7bc995b82..f5e5e9956 100644 --- a/uml/cinelerra3/128261.diagram +++ b/uml/cinelerra3/128261.diagram @@ -1,4 +1,4 @@ -format 38 +format 40 componentcanvas 128133 component_ref 128005 // Builder draw_component_as_icon default show_component_req_prov default show_component_rea default @@ -18,21 +18,21 @@ componentcanvas 128645 component_ref 129029 // Frame (Stream) Provider deploymentnodecanvas 128901 deploymentnode_ref 128005 // timeline xyzwh 142 3 2000 323 90 hubcanvas 129157 xyz 192 63 2005 -hubcanvas 129285 xyz 222 62 2005 -hubcanvas 129413 xyz 255 62 2005 -hubcanvas 129541 xyz 290 62 2005 +hubcanvas 129285 xyz 222 63 2005 +hubcanvas 129413 xyz 255 63 2005 +hubcanvas 129541 xyz 290 63 2005 deploymentnodecanvas 130053 deploymentnode_ref 128261 // playlist xyzwh 148 389 2005 401 80 deploymentnodecanvas 130181 deploymentnode_ref 128389 // proc - xyzwh 178 435 2010 97 69 + xyzwh 178 433 2010 97 69 deploymentnodecanvas 130309 deploymentnode_ref 128389 // proc - xyzwh 424 430 2010 97 69 + xyzwh 424 433 2010 97 69 deploymentnodecanvas 130437 deploymentnode_ref 128517 // pnode xyzwh 202 507 2005 56 36 deploymentnodecanvas 130565 deploymentnode_ref 128517 // pnode - xyzwh 201 546 2005 56 36 + xyzwh 202 546 2005 56 36 deploymentnodecanvas 130693 deploymentnode_ref 128517 // pnode - xyzwh 201 585 2005 56 36 + xyzwh 202 585 2005 56 36 deploymentnodecanvas 130821 deploymentnode_ref 128517 // pnode xyzwh 318 505 2005 56 36 deploymentnodecanvas 130949 deploymentnode_ref 128389 // proc @@ -40,7 +40,7 @@ deploymentnodecanvas 130949 deploymentnode_ref 128389 // proc deploymentnodecanvas 131077 deploymentnode_ref 128517 // pnode xyzwh 318 544 2005 56 36 deploymentnodecanvas 131205 deploymentnode_ref 128517 // pnode - xyzwh 317 584 2005 56 36 + xyzwh 318 584 2005 56 36 deploymentnodecanvas 133125 deploymentnode_ref 128645 // Frame xyzwh 309 800 2010 70 36 deploymentnodecanvas 134021 deploymentnode_ref 128517 // pnode diff --git a/uml/cinelerra3/128389 b/uml/cinelerra3/128389 index ab61eda67..44e647971 100644 --- a/uml/cinelerra3/128389 +++ b/uml/cinelerra3/128389 @@ -1,6 +1,6 @@ -format 38 -"RenderEngine" // RenderEngine - revision 7 +format 40 +"RenderEngine" // ProcessingLayer::RenderEngine + revision 10 modified_by 5 "hiv" // class settings //class diagram settings @@ -8,7 +8,7 @@ format 38 //use case diagram settings 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 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 //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 @@ -63,7 +63,7 @@ format 38 //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 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 //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 @@ -77,18 +77,6 @@ format 38 size A4 end - objectdiagram 129029 "Engine Example1" - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - comment "Example1 (from EDL) continued: here the RenderEngine to be created by the Builder from the Input shown in Example1" - size A4 - end - - objectdiagram 129157 "Engine Example2" - write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default - comment "Example2 (from EDL) continued: notably in this RenderEngine the Effect has been partitioned into 2 segments with constant configuration." - size A4 - end - classdiagram 129669 "Automation Entities" draw_all_relations default hide_attributes default hide_operations default show_members_full_definition yes 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 @@ -96,8 +84,9 @@ format 38 class 131333 "RenderEngine" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -105,21 +94,26 @@ ${inlines} explicit_switch_type "" operation 129413 "play" - public explicit_return_type "" + public explicit_return_type "void" nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} + 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} +} + " + comment "TODO: will probably be handled differently (see Cehteh)" end classrelation 132485 // renderSegments () relation 131845 *--> + stereotype "list" a role_name "renderSegments" multiplicity "0..*" private - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; + cpp default " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value}; " classrelation_ref 132485 // renderSegments () b multiplicity "1" parent class_ref 131461 // Processor @@ -136,8 +130,9 @@ ${inlines} class 131461 "Processor" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -164,7 +159,7 @@ ${inlines} end attribute 129413 "start" - protected explicit_type "long" + protected type class_ref 134917 // Time cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; " java_decl "" @@ -173,7 +168,7 @@ ${inlines} end attribute 129541 "end" - protected explicit_type "long" + protected type class_ref 134917 // Time cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; " java_decl "" @@ -184,14 +179,16 @@ ${inlines} class 131589 "ExitNode" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" idl_decl "" explicit_switch_type "" + comment "The output of the render pipeline. Pulling from such exit nodes actually ivokes the render process" classrelation 132869 // relation 132101 ---|> a public @@ -203,8 +200,9 @@ ${inlines} class 131717 "ProcNode" abstract visibility public stereotype "interface" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "${comment}${@}${visibility}interface ${name}${extends} { @@ -215,6 +213,7 @@ ${members}}; " explicit_switch_type "" + comment "Key abstraction of the Render Engine: A Data processing Node" classrelation 136965 // datasrc () relation 135429 ---> a role_name "datasrc" multiplicity "" protected @@ -225,20 +224,22 @@ ${members}}; b multiplicity "1" parent class_ref 131717 // ProcNode end - classrelation 137861 // + classrelation 137861 // params () relation 136197 *--> - a role_name "" multiplicity "" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; + stereotype "vector" + a role_name "params" multiplicity "1..*" protected + cpp default " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value}; " - classrelation_ref 137861 // + classrelation_ref 137861 // params () b multiplicity "" parent class_ref 134533 // Parameter end end class 131845 "Trafo" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -256,8 +257,9 @@ ${inlines} class 131973 "Link" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -275,8 +277,9 @@ ${inlines} class 132101 "Hub" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -294,14 +297,16 @@ ${inlines} class 132229 "Projector" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" idl_decl "" explicit_switch_type "" + comment "Special video processing node used to scale and translate image data." classrelation 133509 // relation 132741 ---|> a public @@ -313,8 +318,9 @@ ${inlines} class 132357 "Mask" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -332,14 +338,16 @@ ${inlines} class 132485 "PluginAdapter" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" idl_decl "" explicit_switch_type "" + comment "Adapter used to integrage an effects processor in the render pipeline" classrelation 133765 // relation 132997 ---|> a public @@ -349,16 +357,38 @@ ${inlines} end end - class 132613 "OpenGLPipe" + class 135045 "CodecAdapter" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" idl_decl "" explicit_switch_type "" + classrelation 138757 // + relation 136965 ---|> + a public + cpp default "${type}" + classrelation_ref 138757 // + b multiplicity "" parent class_ref 131845 // Trafo + end + end + + class 132613 "GLPipe" + visibility package + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; +${inlines} +" + java_decl "" + idl_decl "" + explicit_switch_type "" + + comment "specialized connection node used to handle the transfer of OpenGL data from a image bitmap into texture form" classrelation 133381 // relation 132613 ---|> a public @@ -370,14 +400,16 @@ ${inlines} class 132869 "ARender" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" idl_decl "" explicit_switch_type "" + comment "Representation of a Audio render process" classrelation 134661 // relation 133509 ---|> a public @@ -389,14 +421,16 @@ ${inlines} class 132997 "VRender" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" idl_decl "" explicit_switch_type "" + comment "Representation of a Video render process. (Encapsulates the video buffers for the actual calculations)" classrelation 134789 // relation 133637 ---|> a public @@ -408,14 +442,16 @@ ${inlines} class 133125 "GLRender" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" idl_decl "" explicit_switch_type "" + comment "Representation of a OpenGL accelerated Video render process" classrelation 134917 // relation 133765 ---|> a public @@ -426,9 +462,10 @@ ${inlines} end class 133253 "Frame" - visibility package stereotype "interface" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + abstract visibility public stereotype "interface" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "${comment}${@}${visibility}interface ${name}${extends} { @@ -439,12 +476,15 @@ ${members}}; " explicit_switch_type "" + comment "TODO: how to relate to Cehteh's Frame entity in the Backend? +The latter is the fundamental Frame entity, wheras this Object rather represents a buffer set containing frame date" end class 133381 "AFrame" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -462,8 +502,9 @@ ${inlines} class 133509 "VFrame" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -481,8 +522,9 @@ ${inlines} class 133637 "GLBuf" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -500,14 +542,16 @@ ${inlines} class 133765 "Source" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" idl_decl "" explicit_switch_type "" + comment "Source Node: represents a media source to pull data from." classrelation 136069 // relation 134661 ---|> a public @@ -516,108 +560,5 @@ ${inlines} b multiplicity "" parent class_ref 131717 // ProcNode end end - - class 134533 "Parameter" - visibility package - nformals 1 - formal name "VAL" type "class" explicit_default_value "" - explicit_extends "" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - operation 130821 "getValue" - public explicit_return_type "VAL" - nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - - classrelation 138245 // - relation 136581 -_-> - stereotype "implemented_by" - a package - cpp default "#include in source" - classrelation_ref 138245 // - b multiplicity "" parent class_ref 134661 // ParamProvider - end - - classrelation 138629 // provider () - relation_ref 136325 // - end - end - - class 134661 "ParamProvider" - abstract visibility public stereotype "interface" - nformals 1 - formal name "VAL" type "class" explicit_default_value "" - explicit_extends "" - 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 "" - - classrelation 137989 // param () - relation 136325 ---- - a role_name "param" multiplicity "1" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 137989 // param () - b role_name "provider" multiplicity "1" protected - classrelation_ref 138629 // provider () - end - - classrelation 138373 // - relation 136709 ---> - a role_name "" multiplicity "0..1" protected - cpp default " ${comment}${static}${mutable}${volatile}${const}${type} * ${name}${value}; -" - classrelation_ref 138373 // - b multiplicity "" parent class_ref 134789 // Interpolator - end - - operation 130949 "getValue" - public explicit_return_type "VAL" - nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} -" - - - end - end - - class 134789 "Interpolator" - visibility package - nformals 1 - formal name "VAL" type "class" explicit_default_value "" - explicit_extends "" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; -${inlines} -" - java_decl "" - idl_decl "" - explicit_switch_type "" - - end end end diff --git a/uml/cinelerra3/128389.diagram b/uml/cinelerra3/128389.diagram index a70ea7935..7c1a670cd 100644 --- a/uml/cinelerra3/128389.diagram +++ b/uml/cinelerra3/128389.diagram @@ -1,4 +1,4 @@ -format 38 +format 40 classcanvas 128005 class_ref 131333 // RenderEngine 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 @@ -38,11 +38,11 @@ classcanvas 129541 class_ref 132357 // Mask end classcanvas 129669 class_ref 132485 // PluginAdapter draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default - xyz 539 561 2000 + xyz 506 622 2000 end -classcanvas 129797 class_ref 132613 // OpenGLPipe +classcanvas 129797 class_ref 132613 // GLPipe 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 684 531 2000 + xyz 699 531 2000 end classcanvas 132229 class_ref 132741 // StateProxy draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default @@ -62,7 +62,7 @@ classcanvas 133253 class_ref 133125 // GLRender end classcanvas 133765 class_ref 133253 // Frame 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 278 612 2000 + xyz 269 612 2000 end classcanvas 133893 class_ref 133381 // AFrame 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 @@ -70,7 +70,7 @@ classcanvas 133893 class_ref 133381 // AFrame end classcanvas 134021 class_ref 133509 // VFrame 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 291 737 2000 + xyz 282 737 2000 end classcanvas 134149 class_ref 133637 // GLBuf draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default @@ -80,8 +80,12 @@ classcanvas 137221 class_ref 133765 // Source 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 741 444 2000 end +classcanvas 139781 class_ref 135045 // CodecAdapter + 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 599 622 2000 + end relationcanvas 128261 relation_ref 131845 // - from ref 128005 z 1999 to point 216 200 + from ref 128005 z 1999 stereotype "<>" xyz 178 278 3000 to point 216 200 line 137733 z 1999 to ref 128133 role_a_pos 184 178 3000 no_role_b multiplicity_a_pos 249 211 3000 multiplicity_b_pos 202 300 3000 @@ -157,14 +161,14 @@ relationcanvas 133637 relation_ref 133765 // relationcanvas 135045 relation_ref 133893 // geometry VHV from ref 133893 z 1999 to point 252 704 - line 135557 z 1999 to point 315 704 + line 135557 z 1999 to point 306 704 line 135685 z 1999 to ref 133765 no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 135173 relation_ref 134021 // geometry VHV - from ref 134021 z 1999 to point 315 704 - line 135813 z 1999 to point 315 704 + from ref 134021 z 1999 to point 306 704 + line 135813 z 1999 to point 306 704 line 135941 z 1999 to ref 133765 no_role_a no_role_b no_multiplicity_a no_multiplicity_b @@ -173,10 +177,10 @@ relationcanvas 135429 relation_ref 134149 // no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 136965 relation_ref 134533 // - from ref 132229 z 1999 to point 315 465 + from ref 132229 z 1999 to point 306 465 line 137093 z 1999 to ref 133765 - role_a_pos 327 587 3000 no_role_b - no_multiplicity_a multiplicity_b_pos 124 426 3000 + role_a_pos 318 587 3000 no_role_b + no_multiplicity_a multiplicity_b_pos 124 427 3000 relationcanvas 137349 relation_ref 134661 // geometry VHV from ref 137221 z 1999 to point 763 384 @@ -199,4 +203,8 @@ relationcanvas 139397 relation_ref 135429 // line 139653 z 1999 to ref 128517 role_a_pos 414 273 3000 no_role_b no_multiplicity_a multiplicity_b_pos 445 292 3000 +relationcanvas 139909 relation_ref 136965 // + from ref 139781 z 1999 to ref 129029 + no_role_a no_role_b + no_multiplicity_a no_multiplicity_b end diff --git a/uml/cinelerra3/128517 b/uml/cinelerra3/128517 index 3357e104a..8683426d4 100644 --- a/uml/cinelerra3/128517 +++ b/uml/cinelerra3/128517 @@ -1,7 +1,7 @@ format 38 "CommonLib" // CommonLib - revision 5 - modified_by 10 "ct" + revision 6 + 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 @@ -45,8 +45,9 @@ format 38 class 134917 "Time" visibility public - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" diff --git a/uml/cinelerra3/128517.diagram b/uml/cinelerra3/128517.diagram index badd12121..628dfdab4 100644 --- a/uml/cinelerra3/128517.diagram +++ b/uml/cinelerra3/128517.diagram @@ -1,27 +1,25 @@ -format 38 +format 40 classinstance 128005 class_ref 130309 // ControllerFacade - xyz 494 125 2000 name "" xyz 494 125 2000 + name "" xyz 494 125 2000 classinstance 128133 class_ref 130437 // PathManager - xyz 472 286 2000 name "" xyz 472 286 2000 + name "" xyz 472 286 2000 classinstance 129285 class_ref 130565 // BuilderFacade - xyz 250 285 2000 name "" xyz 250 285 2000 + name "" xyz 250 285 2000 classinstance 129413 class_ref 128261 // Fixture - xyz 141 93 2000 name "" xyz 141 93 2000 + name "" xyz 141 93 2000 classinstance 129797 class_ref 130693 // ToolFactory - xyz 381 449 2000 name "" xyz 381 449 2000 + name "" xyz 381 449 2000 classinstance 129925 class_ref 130821 // ConManager - xyz 142 486 2005 name "" xyz 142 486 2005 + name "" xyz 142 486 2005 classinstance 130053 class_ref 130949 // RenderState - xyz 550 424 2000 name "" xyz 550 424 2000 + name "" xyz 550 424 2000 note 130565 "Note: Builder subsys is stateless" xyzwh 25 374 2000 128 58 classinstance 130693 class_ref 131077 // Assembler - xyz 225 390 2000 name "" xyz 225 390 2000 -classinstance 131333 class_ref 131205 // FrameProvider - xyz 172 613 2000 name "" xyz 172 613 2000 + name "" xyz 225 390 2000 classinstance 131717 class_ref 131333 // RenderEngine - xyz 721 542 2000 name "" xyz 721 542 2000 + name "" xyz 721 542 2000 note 133381 "Fixture is the only query/access point to EDL" xyzwh 14 17 2000 179 63 note 133509 "Trigger: Play Request" @@ -40,7 +38,7 @@ linkcanvas 129669 from ref 129285 z 1999 to ref 129413 dirscanvas 132357 z 1000 linkcanvas_ref 129669 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 - forward_label "4 getPlaylistForRender()" xyz 126 222 3000 + forward_label "4 getPlaylistForRender()" xyz 125 222 3000 linkcanvas 130309 from ref 128133 z 1999 to ref 130053 dirscanvas 132229 z 1000 linkcanvas_ref 130309 @@ -61,64 +59,47 @@ linkcanvas 131205 dirscanvas 132741 z 1000 linkcanvas_ref 131205 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 forward_label "7 getConnection()" xyz 203 469 3000 -linkcanvas 131461 - from ref 129925 z 1999 to ref 131333 -dirscanvas 132997 z 1000 linkcanvas_ref 131461 - 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 - forward_label "9 prepareStream()" xyz 218 536 3000 linkcanvas 131589 from ref 129925 z 1999 to ref 129413 dirscanvas 132869 z 1000 linkcanvas_ref 131589 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 - forward_label "8 getAutomation()" xyz 63 297 3000 + forward_label "8 getAutomation()" xyz 62 297 3000 linkcanvas 131845 from ref 128005 z 1999 to ref 131717 dirscanvas 133125 z 1000 linkcanvas_ref 131845 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 - forward_label "10 play()" xyz 668 317 3000 -linkcanvas 131973 - from ref 131717 z 1999 to ref 131333 -dirscanvas 133253 z 1000 linkcanvas_ref 131973 - 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 - forward_label "11 getReady()" xyz 456 611 3000 + forward_label "9 play()" xyz 670 317 3000 msgs - msg operation_ref 128261 // "buildProcessor()" + msg operation_ref 128261 // "buildProcessor() : Processor" forward ranks 1 "1" dirscanvas_ref 132101 msgs - msg operation_ref 128389 // "getStateProxy()" + msg operation_ref 128389 // "getStateProxy() : StateProxy" forward ranks 2 "1.1" dirscanvas_ref 132229 no_msg - msg operation_ref 128517 // "buildEngine()" + msg operation_ref 128517 // "buildEngine() : RenderEngine" forward ranks 3 "1.2" dirscanvas_ref 130181 msgs - msg operation_ref 128645 // "getPlaylistForRender()" + msg operation_ref 128645 // "getPlaylistForRender() : list" forward ranks 4 "1.2.1" dirscanvas_ref 132357 no_msg - msg operation_ref 128773 // "configure()" + msg operation_ref 128773 // "configure() : Tool" forward ranks 5 "1.2.2" dirscanvas_ref 132485 no_msg - msg operation_ref 128901 // "build()" + msg operation_ref 128901 // "build() : RenderEngine" forward ranks 6 "1.2.3" dirscanvas_ref 132613 msgs - msg operation_ref 129029 // "getConnection()" + msg operation_ref 129029 // "getConnection() : int" forward ranks 7 "1.2.3.1" dirscanvas_ref 132741 msgs - msg operation_ref 129157 // "getAutomation()" + msg operation_ref 129157 // "getAutomation() : Auto [ProcessingLayer::MObject]*" forward ranks 8 "1.2.3.1.1" dirscanvas_ref 132869 no_msg - msg operation_ref 129285 // "prepareStream()" - forward ranks 9 "1.2.3.1.2" dirscanvas_ref 132997 - no_msg msgsend msgsend msgsend msgsend - msg operation_ref 129413 // "play()" - forward ranks 10 "2" dirscanvas_ref 133125 - msgs - msg operation_ref 129541 // "getReady()" - forward ranks 11 "2.1" dirscanvas_ref 133253 - no_msg - msgsend + msg operation_ref 129413 // "play() : void" + forward ranks 9 "2" dirscanvas_ref 133125 + no_msg msgsend end diff --git a/uml/cinelerra3/128645 b/uml/cinelerra3/128645 index b74638ac5..523b89109 100644 --- a/uml/cinelerra3/128645 +++ b/uml/cinelerra3/128645 @@ -1,6 +1,6 @@ -format 38 +format 40 "codegen" // design::codegen - revision 13 + revision 17 modified_by 5 "hiv" // class settings //class diagram settings @@ -8,7 +8,7 @@ format 38 //use case diagram settings 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 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 //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 @@ -42,57 +42,57 @@ format 38 artifact 128005 "Cinelerra3" stereotype "executable" associated_artifacts - artifact_ref 132741 // hub - artifact_ref 129669 // meta - artifact_ref 129797 // fixedplacement - artifact_ref 131333 // segmentationtool - artifact_ref 132229 // exitnode - artifact_ref 129029 // placement - artifact_ref 130565 // toolfactory - artifact_ref 134533 // paramprovider - artifact_ref 131205 // tool - artifact_ref 128517 // session - artifact_ref 134661 // interpolator - artifact_ref 129157 // explicitplacement - artifact_ref 131461 // nodecreatertool - artifact_ref 130821 // assembler - artifact_ref 131589 // controllerfacade - artifact_ref 133381 // arender - artifact_ref 131973 // renderengine - artifact_ref 133253 // openglpipe - artifact_ref 129413 // clip - artifact_ref 132101 // processor - artifact_ref 130949 // stateproxy - artifact_ref 134277 // source - artifact_ref 128261 // mobject - artifact_ref 130437 // builderfacade - artifact_ref 128133 // main - artifact_ref 130181 // label - artifact_ref 131845 // renderstate - artifact_ref 132613 // pipe - artifact_ref 134405 // parameter - artifact_ref 129285 // abstractmo - artifact_ref 129925 // relativeplacement - artifact_ref 134149 // glbuf artifact_ref 133509 // vrender - artifact_ref 128901 // track - artifact_ref 132485 // trafo - artifact_ref 131077 // buildable + artifact_ref 130565 // toolfactory artifact_ref 133765 // frame - artifact_ref 130053 // allocation - artifact_ref 134021 // vframe - artifact_ref 130309 // auto - artifact_ref 132869 // projector - artifact_ref 132997 // mask - artifact_ref 133893 // aframe + artifact_ref 129285 // abstractmo + artifact_ref 131333 // segmentationtool + artifact_ref 128901 // track + artifact_ref 131973 // renderengine + artifact_ref 129925 // relativeplacement + artifact_ref 130949 // stateproxy artifact_ref 133125 // pluginadapter - artifact_ref 129541 // effect - artifact_ref 128645 // edl - artifact_ref 132357 // procnode - artifact_ref 130693 // conmanager + artifact_ref 133253 // glpipe artifact_ref 133637 // glrender + artifact_ref 129413 // clip + artifact_ref 130181 // label + artifact_ref 130437 // builderfacade + artifact_ref 134661 // interpolator + artifact_ref 132485 // trafo + artifact_ref 132997 // mask + artifact_ref 134021 // vframe + artifact_ref 134277 // source + artifact_ref 131077 // buildable + artifact_ref 131205 // tool artifact_ref 131717 // pathmanager + artifact_ref 134405 // parameter + artifact_ref 129797 // fixedplacement + artifact_ref 132357 // procnode + artifact_ref 132101 // processor artifact_ref 128773 // fixture + artifact_ref 130309 // auto + artifact_ref 130693 // conmanager + artifact_ref 131845 // renderstate + artifact_ref 128517 // session + artifact_ref 132869 // projector + artifact_ref 130821 // assembler + artifact_ref 134533 // paramprovider + artifact_ref 130053 // allocation + artifact_ref 128261 // mobject + artifact_ref 132741 // hub + artifact_ref 129541 // effect + artifact_ref 132229 // exitnode + artifact_ref 132613 // link + artifact_ref 129669 // meta + artifact_ref 134149 // glbuf + artifact_ref 131589 // controllerfacade + artifact_ref 128645 // edl + artifact_ref 129157 // explicitplacement + artifact_ref 128133 // main + artifact_ref 133381 // arender + artifact_ref 129029 // placement + artifact_ref 131461 // nodecreatertool + artifact_ref 133893 // aframe end comment "the main executable to be built" simplerelation 128517 diff --git a/uml/cinelerra3/128773.diagram b/uml/cinelerra3/128773.diagram index 28ef4578f..5cca14aaa 100644 --- a/uml/cinelerra3/128773.diagram +++ b/uml/cinelerra3/128773.diagram @@ -1,52 +1,32 @@ -format 38 +format 40 -classinstance 128005 class_ref 128261 // Fixture - xyz 65 271 2000 name "" -end -classinstance 128133 class_ref 129797 // ExplicitPlacement - xyz 221 249 2000 name "" - values - attribute_ref 128261 // time - "2" - attribute_ref 128389 // track - "video1" -end -classinstance 128389 class_ref 129797 // ExplicitPlacement - xyz 335 249 2000 name "" - values - attribute_ref 128261 // time - "2" - attribute_ref 128389 // track - "audio1" -end +classinstancecanvas 128005 classinstance_ref 128005 // + xyz 65 271 2000 + end +classinstancecanvas 128133 classinstance_ref 128133 // + xyz 221 249 2000 + end +classinstancecanvas 128389 classinstance_ref 128261 // + xyz 332 249 2000 + end fragment 128773 "seq" xyzwh 175 235 1994 282 93 end -classinstance 128901 class_ref 128389 // Track - xyz 70 101 2000 name "audio1" -end -classinstance 129029 class_ref 128389 // Track - xyz 71 156 2000 name "video1" -end +classinstancecanvas 128901 classinstance_ref 128389 // audio1 + xyz 70 101 2000 + end +classinstancecanvas 129029 classinstance_ref 128517 // video1 + xyz 71 156 2000 + end fragment 129285 "seq" xyzwh 62 63 1994 94 155 end -classinstance 130821 class_ref 128901 // Clip - xyz 239 399 2000 name "vid_A" - values - attribute_ref 128517 // length - "5" - attribute_ref 128645 // start - "100" -end -classinstance 131077 class_ref 128901 // Clip - xyz 344 399 2000 name "aud_A" - values - attribute_ref 128517 // length - "8820" - attribute_ref 128645 // start - "176400" -end +classinstancecanvas 130821 classinstance_ref 128645 // vid_A + xyz 237 399 2000 + end +classinstancecanvas 131077 classinstance_ref 128773 // aud_A + xyz 339 399 2000 + end textcanvas 131333 "Video and Audio Clip of length = 5 frames positioned at frame 2, starting at t=4s in soucre. (Values for PAL and 44.1)" xyzwh 457 335 2000 175 87 @@ -60,12 +40,12 @@ objectlinkcanvas 129157 norel no_role_a no_role_b objectlinkcanvas 130565 norel geometry HVr - from ref 128133 z 1999 to point 269 167 + from ref 128133 z 1999 to point 267 167 line 81 z 1999 to ref 129029 no_role_a no_role_b objectlinkcanvas 130693 norel geometry HVr - from ref 128389 z 1999 to point 383 112 + from ref 128389 z 1999 to point 378 112 line 81 z 1999 to ref 128901 no_role_a no_role_b objectlinkcanvas 130949 norel diff --git a/uml/cinelerra3/128901 b/uml/cinelerra3/128901 index 830d7e1de..c3a70f751 100644 --- a/uml/cinelerra3/128901 +++ b/uml/cinelerra3/128901 @@ -1,14 +1,14 @@ -format 38 +format 40 "Builder" // ProcessingLayer::MObject::Builder - revision 9 - modified_by 10 "ct" + revision 12 + 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 //use case diagram settings 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 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 //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 @@ -34,7 +34,7 @@ format 38 //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 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 //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 @@ -177,9 +177,10 @@ format 38 end class 130565 "BuilderFacade" - visibility package stereotype "boundary" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + visibility public stereotype "boundary" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -188,23 +189,29 @@ ${members}}; " explicit_switch_type "" + comment "Provides 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" operation 128517 "buildEngine" - public explicit_return_type "" + public return_type class_ref 131333 // RenderEngine nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} + 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} +} + " + comment "Main Operation of the Builder: create a render engine for a given part of the timeline" end end class 130693 "ToolFactory" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -212,12 +219,15 @@ ${inlines} explicit_switch_type "" operation 128773 "configure" - public explicit_return_type "" + public return_type class_ref 134149 // Tool nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} + 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} +} + " @@ -225,8 +235,8 @@ ${inlines} classrelation 137221 // relation 135685 -_-> - a default - cpp default "#include in header" + a package + cpp default "#include in source" classrelation_ref 137221 // b multiplicity "" parent class_ref 134149 // Tool end @@ -234,44 +244,55 @@ ${inlines} class 130821 "ConManager" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" idl_decl "" explicit_switch_type "" + comment "Connection Manager, used to build the connections between render engine nodes, if these nodes need to cooperate besides the normal \"data pull\" operation. Esp., the Connection Manager knows how to wire up the effect's parameters with the corresponding ParamProviders (autmation) in the Session" operation 129029 "getConnection" - public explicit_return_type "" + public explicit_return_type "int" nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} + 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} +} + " + comment "TODO" end end class 131077 "Assembler" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" idl_decl "" explicit_switch_type "" + comment "This is the actual building facility: provided the correct tools and associations, it serves to build and connect the individual ProcNode objects" operation 128901 "build" - public explicit_return_type "" + public return_type class_ref 131333 // RenderEngine nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} + 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} +} + " @@ -279,9 +300,10 @@ ${inlines} end class 132741 "StateProxy" - abstract visibility package stereotype "interface" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + abstract visibility public stereotype "interface" + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "${comment}${@}${visibility}interface ${name}${extends} { @@ -304,8 +326,9 @@ ${members}}; class 134021 "Buildable" abstract visibility public stereotype "interface" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "${comment}${@}${visibility}interface ${name}${extends} { @@ -317,13 +340,16 @@ ${members}}; explicit_switch_type "" operation 129669 "apply" - public explicit_return_type "" + public explicit_return_type "void" nparams 1 param inout name "provided_tool" explicit_type "Tool" - 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}} + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + " @@ -332,8 +358,9 @@ ${members}}; class 134149 "Tool" abstract visibility public stereotype "interface" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "${comment}${@}${visibility}interface ${name}${extends} { @@ -344,30 +371,37 @@ ${members}}; " explicit_switch_type "" + comment "Used according to the visitor pattern: each Tool contains the concrete implementation for one task to be done to the various MObject classes" operation 129797 "treat" - public explicit_return_type "" + public explicit_return_type "void" nparams 1 - param inout name "mElement" type class_ref 134021 // Buildable - 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}} + param in name "mElement" type class_ref 134021 // Buildable + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + " + comment "This operation is to be overloaded for the specific MObject subclasses to be treated." end end class 134277 "SegmentationTool" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" idl_decl "" explicit_switch_type "" + comment "Tool implementation for deriving a partitioning of the current timeline such, that each segement has a constant configuration. \"Constant\" means here, that any remaining changes over time can be represented by automation solely, without the need to change the node connections." classrelation 137605 // relation 135941 -_-|> a public @@ -377,64 +411,77 @@ ${inlines} end operation 129925 "treat" - public explicit_return_type "" + public explicit_return_type "void" nparams 1 - param inout name "something" type class_ref 134021 // Buildable - 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}} + param in name "something" type class_ref 134021 // Buildable + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + " end operation 130181 "treat" - public explicit_return_type "" + public explicit_return_type "void" nparams 1 - param inout name "clip" type class_ref 128901 // Clip - 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}} + param in name "clip" type class_ref 128901 // Clip + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + " end operation 130053 "treat" - public explicit_return_type "" + public explicit_return_type "void" nparams 1 - param inout name "effect" type class_ref 129029 // Effect - 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}} + param in name "effect" type class_ref 129029 // Effect + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}const ${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + " end - attribute 129669 "segments" - private explicit_type "" - cpp_decl " ${comment}${static}${mutable}${volatile}${const}${type} ${name}${value}; + classrelation 139013 // segments () + relation 137221 *--> + stereotype "list" + a role_name "segments" multiplicity "*" protected + comment "the partitioning of the Timeline to be created by this tool." + cpp default " ${comment}${static}${mutable}${volatile}${const}${stereotype}<${type}> ${name}${value}; " - java_decl "" - idl_decl "" - comment "holds the segemntation to be constructed" + classrelation_ref 139013 // segments () + b multiplicity "" parent class_ref 135173 // Segment end end class 134405 "NodeCreatorTool" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" idl_decl "" explicit_switch_type "" + comment "This 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." classrelation 137733 // relation 136069 -_-|> a public @@ -444,52 +491,64 @@ ${inlines} end operation 130309 "treat" - public explicit_return_type "" + public explicit_return_type "void" nparams 1 param inout name "something" type class_ref 134021 // Buildable - 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}} + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + " end operation 130437 "treat" - public explicit_return_type "" + public explicit_return_type "void" nparams 1 param inout name "clip" type class_ref 128901 // Clip - 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}} + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + " end operation 130565 "treat" - public explicit_return_type "" + public explicit_return_type "void" nparams 1 param inout name "effect" type class_ref 129029 // Effect - 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}} + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + " end operation 130693 "treat" - public explicit_return_type "" + public explicit_return_type "void" nparams 1 param inout name "auto" type class_ref 129925 // Auto - 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}} + cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${abstract};" + cpp_def "${comment}${inline}${type} +${class}::${name} ${(}${t0}& ${p0}${)}${const}${volatile} ${throw}${staticnl} +{ + ${body} +} + " diff --git a/uml/cinelerra3/128901.diagram b/uml/cinelerra3/128901.diagram index 470765f02..a4a7e4365 100644 --- a/uml/cinelerra3/128901.diagram +++ b/uml/cinelerra3/128901.diagram @@ -1,107 +1,63 @@ -format 38 +format 40 fragment 128005 "seq" xyzwh 176 409 1994 282 93 end -classinstance 128133 class_ref 128389 // Track - xyz 71 275 2000 name "audio1" -end -classinstance 128389 class_ref 129797 // ExplicitPlacement - xyz 222 423 2000 name "" - values - attribute_ref 128261 // time - "2" - attribute_ref 128389 // track - "video1" -end -classinstance 128645 class_ref 128389 // Track - xyz 72 330 2000 name "video1" -end -classinstance 128773 class_ref 128261 // Fixture - xyz 66 445 2000 name "" -end -classinstance 128901 class_ref 128901 // Clip - xyz 240 573 2000 name "vid_A" - values - attribute_ref 128517 // length - "5" - attribute_ref 128645 // start - "100" -end +classinstancecanvas 128133 classinstance_ref 128901 // audio1 + xyz 71 275 2000 + end +classinstancecanvas 128389 classinstance_ref 129029 // + xyz 223 423 2000 + end +classinstancecanvas 128645 classinstance_ref 129157 // video1 + xyz 72 330 2000 + end +classinstancecanvas 128773 classinstance_ref 129285 // + xyz 66 445 2000 + end +classinstancecanvas 128901 classinstance_ref 129413 // vid_A + xyz 239 573 2000 + end fragment 129029 "seq" xyzwh 63 237 1994 94 155 end -classinstance 130309 class_ref 128133 // EDL - xyz 69 79 2000 name "" -end -classinstance 131333 class_ref 129669 // Label - xyz 224 70 2000 name "refPoint" - values - attribute_ref 128517 // length - "0" -end -classinstance 131461 class_ref 129541 // Allocation - xyz 230 158 2000 name "" - values - attribute_ref 128773 // repr - "\"t=2\"" -end -classinstance 131717 class_ref 128901 // Clip - xyz 386 71 2000 name "vid_A" - values - attribute_ref 128517 // length - "5" - attribute_ref 128645 // start - "100" -end -classinstance 131845 class_ref 129413 // RelativePlacement - xyz 361 195 2000 name "" - values - attribute_ref 128133 // relType - "SAMETIME" -end -classinstance 132229 class_ref 129029 // Effect - xyz 562 71 2000 name "" - values - attribute_ref 128517 // length - "3" - attribute_ref 128901 // plugID - "\"Hue\"" -end -classinstance 132357 class_ref 129413 // RelativePlacement - xyz 551 197 2000 name "" - values - attribute_ref 129029 // offset - "+3" - attribute_ref 128133 // relType - "ATTACH" -end +classinstancecanvas 130309 classinstance_ref 129541 // + xyz 69 79 2000 + end +classinstancecanvas 131333 classinstance_ref 129669 // refPoint + xyz 224 70 2000 + end +classinstancecanvas 131461 classinstance_ref 129797 // + xyz 230 158 2000 + end +classinstancecanvas 131717 classinstance_ref 129925 // vid_A + xyz 386 71 2000 + end +classinstancecanvas 131845 classinstance_ref 130053 // + xyz 361 195 2000 + end +classinstancecanvas 132229 classinstance_ref 130181 // + xyz 562 71 2000 + end +classinstancecanvas 132357 classinstance_ref 130309 // + xyz 551 197 2000 + end fragment 132869 "seq" xyzwh 172 46 1994 494 102 end -classinstance 132997 class_ref 129029 // Effect - xyz 354 573 2000 name "" - values - attribute_ref 128517 // length - "3" - attribute_ref 128901 // plugID - "\"Hue\"" -end -classinstance 133125 class_ref 129797 // ExplicitPlacement - xyz 345 423 2000 name "" - values - attribute_ref 128261 // time - "5" - attribute_ref 128389 // track - "video1" -end +classinstancecanvas 132997 classinstance_ref 130437 // + xyz 352 573 2000 + end +classinstancecanvas 133125 classinstance_ref 130565 // + xyz 345 423 2000 + end note 135941 "actually the same object" xyzwh 635 341 2004 148 41 textcanvas 136197 "Video Clip anchored at a Label, with an attached HUE effect starting 3 frames after begin" xyzwh 524 565 2000 175 87 objectlinkcanvas 129413 norel geometry HVr - from ref 128389 z 1999 to point 270 341 + from ref 128389 z 1999 to point 269 341 line 129541 z 1999 to ref 128645 no_role_a no_role_b objectlinkcanvas 129797 norel @@ -142,18 +98,18 @@ objectlinkcanvas 132741 norel no_role_a no_role_b objectlinkcanvas 133253 norel geometry HVr - from ref 133125 z 1999 to point 393 341 + from ref 133125 z 1999 to point 391 341 line 81 z 1999 to ref 128645 no_role_a no_role_b objectlinkcanvas 133381 norel geometry VH - from ref 133125 z 1999 to point 393 606 + from ref 133125 z 1999 to point 391 606 line 81 z 1999 to ref 132997 no_role_a no_role_b objectlinkcanvas 135685 rel relation_ref 128645 // from ref 132997 z 1999 to point 600 432 line 135813 z 1999 to ref 132357 - role_a_pos 612 276 3000 role_b_pos 444 540 3000 + role_a_pos 612 276 3000 role_b_pos 443 540 3000 line 134149 -_-_ from ref 131717 z 1993 to ref 132869 line 134277 -_-_ diff --git a/uml/cinelerra3/129029 b/uml/cinelerra3/129029 index dca7d83ae..259248b0a 100644 --- a/uml/cinelerra3/129029 +++ b/uml/cinelerra3/129029 @@ -1,6 +1,6 @@ format 38 -"Controller" // MObject::Controller - revision 3 +"Controller" // ProcessingLayer::MObject::Controller + revision 5 modified_by 5 "hiv" // class settings //class diagram settings @@ -117,8 +117,9 @@ format 38 class 130309 "ControllerFacade" visibility public stereotype "boundary" - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" @@ -127,25 +128,31 @@ ${members}}; " explicit_switch_type "" + comment "Provides unified access to the Proc-Subsystem Controller. Especially, this Facade class provides the functions to get a render engine to carry out actual renderings." end class 130437 "PathManager" visibility package - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_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 explicit_return_type "" + public return_type class_ref 131461 // Processor nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} + 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} +} + " @@ -154,21 +161,26 @@ ${inlines} class 130949 "RenderState" visibility protected - cpp_decl "${comment}${template}class ${name}${inherit} { -${members}}; + cpp_decl "${comment}${template}class ${name}${inherit} + { +${members} }; ${inlines} " java_decl "" idl_decl "" explicit_switch_type "" + comment "Encapsulates the logic used to get a \"current render process\" in accordance to the currentyl applicable controller settings. The provided StateProxy serves to hold any mutalbe state used in the render process, so the rest of the render engine can be stateless." operation 128389 "getStateProxy" - public explicit_return_type "" + public return_type class_ref 132741 // StateProxy nparams 0 - cpp_decl " ${comment}${friend}${static}${inline}${virtual}${type} ${name}${(}${)}${const}${volatile}${throw}${abstract}; -" - cpp_def "${comment}${inline}${type} ${class}::${name}${(}${)}${const}${volatile}${throw}${staticnl}{ - ${body}} + 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} +} + " diff --git a/uml/cinelerra3/129029.diagram b/uml/cinelerra3/129029.diagram index 3ec7b8843..9892c6c73 100644 --- a/uml/cinelerra3/129029.diagram +++ b/uml/cinelerra3/129029.diagram @@ -1,67 +1,57 @@ -format 38 +format 40 -classinstance 128005 class_ref 131333 // RenderEngine - xyz 80 75 2000 name "" -end -classinstance 128133 class_ref 131461 // Processor - xyz 435 172 2000 name "audio1" - values - attribute_ref 129541 // end - "7/25" - attribute_ref 129413 // start - "2/25" -end -classinstance 128261 class_ref 131461 // Processor - xyz 280 172 2000 name "video1" - values - attribute_ref 129541 // end - "7/25" - attribute_ref 129413 // start - "2/25" -end +classinstancecanvas 128005 classinstance_ref 130693 // + xyz 79 75 2000 + end +classinstancecanvas 128133 classinstance_ref 130821 // audio1 + xyz 435 172 2000 + end +classinstancecanvas 128261 classinstance_ref 130949 // video1 + xyz 280 172 2000 + end fragment 128517 "seq" xyzwh 232 140 1994 367 113 end -classinstance 128645 class_ref 131589 // ExitNode - xyz 287 329 2000 name "video" -end -classinstance 128773 class_ref 131589 // ExitNode - xyz 443 330 2000 name "audio" -end -classinstance 129157 class_ref 132229 // Projector - xyz 287 386 2000 name "ouput" -end -classinstance 129285 class_ref 132229 // Projector - xyz 290 497 2000 name "input" -end -classinstance 129669 class_ref 132357 // Mask - xyz 306 442 2000 name "" -end -classinstance 129797 class_ref 133765 // Source - xyz 292 556 2000 name "vid_a" -end -classinstance 129925 class_ref 133765 // Source - xyz 444 398 2000 name "aud_a" -end -classinstance 131717 class_ref 132997 // VRender - xyz 188 427 2000 name "vid1" -end -classinstance 131845 class_ref 132869 // ARender - xyz 554 289 2000 name "au1" -end -classinstance 131973 class_ref 133509 // VFrame - xyz 112 492 2000 name "" -end -classinstance 132101 class_ref 133381 // AFrame - xyz 663 353 2000 name "" -end +classinstancecanvas 128645 classinstance_ref 131077 // video + xyz 287 329 2000 + end +classinstancecanvas 128773 classinstance_ref 131205 // audio + xyz 443 330 2000 + end +classinstancecanvas 129157 classinstance_ref 131333 // ouput + xyz 287 386 2000 + end +classinstancecanvas 129285 classinstance_ref 131461 // input + xyz 290 497 2000 + end +classinstancecanvas 129669 classinstance_ref 131589 // + xyz 306 442 2000 + end +classinstancecanvas 129797 classinstance_ref 131717 // vid_a + xyz 292 556 2000 + end +classinstancecanvas 129925 classinstance_ref 131845 // aud_a + xyz 444 398 2000 + end +classinstancecanvas 131717 classinstance_ref 131973 // vid1 + xyz 188 427 2000 + end +classinstancecanvas 131845 classinstance_ref 132101 // au1 + xyz 554 289 2000 + end +classinstancecanvas 131973 classinstance_ref 132229 // + xyz 117 492 2000 + end +classinstancecanvas 132101 classinstance_ref 132357 // + xyz 653 353 2000 + end note 133125 "render state proxy passed on" xyzwh 123 355 2000 104 53 textcanvas 133253 "Video and Audio Clip of length = 5 frames positioned at frame 2, producing two output streams (frame sequence)." xyzwh 445 507 2000 175 83 objectlinkcanvas 128389 rel relation_ref 131845 // geometry VH - from ref 128005 z 1999 to point 120 205 + from ref 128005 z 1999 to point 117 205 line 81 z 1999 to ref 128261 role_a_pos 188 183 3000 no_role_b objectlinkcanvas 128901 rel relation_ref 131973 // @@ -87,14 +77,14 @@ objectlinkcanvas 131589 rel relation_ref 135429 // role_a_pos 494 373 3000 no_role_b objectlinkcanvas 132229 rel relation_ref 134533 // geometry VHr - from ref 131717 z 1999 to point 137 438 + from ref 131717 z 1999 to point 140 438 line 1 z 1999 to ref 131973 - role_a_pos 149 467 3000 no_role_b + role_a_pos 152 467 3000 no_role_b objectlinkcanvas 132485 rel relation_ref 134533 // geometry HV - from ref 131845 z 1999 to point 688 300 + from ref 131845 z 1999 to point 676 300 line 1 z 1999 to ref 132101 - role_a_pos 700 328 3000 no_role_b + role_a_pos 688 328 3000 no_role_b line 132613 -_-_ from ref 128261 z 1999 to point 244 320 line 132741 z 1999 to ref 131717 diff --git a/uml/cinelerra3/129157.diagram b/uml/cinelerra3/129157.diagram index a8297d392..f63b08370 100644 --- a/uml/cinelerra3/129157.diagram +++ b/uml/cinelerra3/129157.diagram @@ -1,76 +1,61 @@ -format 38 +format 40 -classinstance 128005 class_ref 131333 // RenderEngine - xyz 102 80 2000 name "" -end +classinstancecanvas 128005 classinstance_ref 132485 // + xyz 85 80 2000 + end note 128261 "render state proxy passed on" xyzwh 139 319 2000 104 53 -classinstance 128389 class_ref 133765 // Source - xyz 610 558 2000 name "devnull" -end -classinstance 128517 class_ref 131589 // ExitNode - xyz 610 329 2000 name "video" -end -classinstance 128645 class_ref 132229 // Projector - xyz 488 497 2000 name "input" -end -classinstance 128773 class_ref 131461 // Processor - xyz 602 172 2000 name "video1" - values - attribute_ref 129541 // end - "8/25" - attribute_ref 129413 // start - "7/25" -end -classinstance 128901 class_ref 132229 // Projector - xyz 485 386 2000 name "ouput" -end +classinstancecanvas 128389 classinstance_ref 132613 // devnull + xyz 610 558 2000 + end +classinstancecanvas 128517 classinstance_ref 132741 // video + xyz 610 329 2000 + end +classinstancecanvas 128645 classinstance_ref 132869 // input + xyz 488 497 2000 + end +classinstancecanvas 128773 classinstance_ref 132997 // video1 + xyz 602 172 2000 + end +classinstancecanvas 128901 classinstance_ref 133125 // ouput + xyz 485 386 2000 + end fragment 129029 "seq" xyzwh 254 147 1994 477 111 end -classinstance 129157 class_ref 132485 // PluginAdapter - xyz 477 444 2000 name "HUE" -end -classinstance 129541 class_ref 132997 // VRender - xyz 409 293 2000 name "vid1" -end -classinstance 129669 class_ref 133509 // VFrame - xyz 134 497 2000 name "" -end -classinstance 129797 class_ref 131461 // Processor - xyz 478 172 2000 name "video1" - values - attribute_ref 129541 // end - "7/25" - attribute_ref 129413 // start - "5/25" -end -classinstance 129925 class_ref 131589 // ExitNode - xyz 485 329 2000 name "video" -end -classinstance 132229 class_ref 132485 // PluginAdapter - xyz 600 444 2000 name "HUE" -end -classinstance 132997 class_ref 133765 // Source - xyz 387 602 2000 name "vid_a" -end -classinstance 133125 class_ref 132229 // Projector - xyz 299 498 2000 name "input" -end -classinstance 133253 class_ref 131461 // Processor - xyz 289 172 2000 name "video1" - values - attribute_ref 129541 // end - "5/25" - attribute_ref 129413 // start - "2/25" -end -classinstance 133381 class_ref 132229 // Projector - xyz 296 386 2000 name "ouput" -end -classinstance 133509 class_ref 131589 // ExitNode - xyz 296 329 2000 name "video" -end +classinstancecanvas 129157 classinstance_ref 133253 // HUE + xyz 477 444 2000 + end +classinstancecanvas 129541 classinstance_ref 133381 // vid1 + xyz 409 293 2000 + end +classinstancecanvas 129669 classinstance_ref 133509 // + xyz 138 498 2000 + end +classinstancecanvas 129797 classinstance_ref 133637 // video1 + xyz 478 172 2000 + end +classinstancecanvas 129925 classinstance_ref 133765 // video + xyz 485 329 2000 + end +classinstancecanvas 132229 classinstance_ref 133893 // HUE + xyz 600 444 2000 + end +classinstancecanvas 132997 classinstance_ref 134021 // vid_a + xyz 387 602 2000 + end +classinstancecanvas 133125 classinstance_ref 134149 // input + xyz 299 498 2000 + end +classinstancecanvas 133253 classinstance_ref 134277 // video1 + xyz 289 172 2000 + end +classinstancecanvas 133381 classinstance_ref 134405 // ouput + xyz 296 386 2000 + end +classinstancecanvas 133509 classinstance_ref 134533 // video + xyz 296 329 2000 + end note 134661 "Note: because the Engine Components are stateless, various calculation patterns are possible, including all sorts of parallelism " xyzwh 569 45 2000 240 75 textcanvas 134789 "Video Clip from 2 to 7, with an attached HUE effect starting 3 frames after begin and overlapping by 1 frame beyond the end" @@ -86,9 +71,9 @@ objectlinkcanvas 130565 rel relation_ref 131973 // role_a_pos 661 304 3000 no_role_b objectlinkcanvas 130693 rel relation_ref 134533 // geometry VHr - from ref 129541 z 1999 to point 159 304 + from ref 129541 z 1999 to point 161 304 line 130821 z 1999 to ref 129669 - role_a_pos 171 472 3000 no_role_b + role_a_pos 173 473 3000 no_role_b objectlinkcanvas 130949 rel relation_ref 135429 // from ref 128901 z 1999 to ref 129157 role_a_pos 538 419 3000 no_role_b @@ -118,7 +103,7 @@ objectlinkcanvas 134405 rel relation_ref 135429 // role_a_pos 446 567 3000 no_role_b objectlinkcanvas 134533 rel relation_ref 131845 // geometry VH - from ref 128005 z 1999 to point 142 205 + from ref 128005 z 1999 to point 123 205 line 6 z 1999 to ref 133253 role_a_pos 197 183 3000 no_role_b line 131973 -_-_ diff --git a/uml/cinelerra3/129285 b/uml/cinelerra3/129285 index 2d211dbca..724a630bd 100644 --- a/uml/cinelerra3/129285 +++ b/uml/cinelerra3/129285 @@ -1,6 +1,6 @@ -format 38 +format 40 "ProcessingLayer" // ProcessingLayer - revision 1 + revision 3 modified_by 5 "hiv" // class settings //class diagram settings @@ -8,7 +8,7 @@ format 38 //use case diagram settings 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 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 //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 @@ -31,4 +31,582 @@ format 38 package_ref 128261 // MObject package_ref 128389 // RenderEngine + + usecaseview 128005 "Renderengine Use" + //use case diagram settings + 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 + //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 + objectdiagram 128773 "EDL Example1" + write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default + comment "A simple example showing how the actual objects are placed in the Fixture (=definitive playlist). It shows a Video and Audio clip placed on two tracks" + size A4 + end + + objectdiagram 128901 "EDL Example2" + write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default + comment "More complex example showing the Object graph in the EDL and how it is linked into the Fixture to yield the actual locations. In this example, an HUE Effect is applied on a part of the Clip" + size A4 + end + + objectdiagram 129029 "Engine Example1" + write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default + comment "Example1 (from EDL) continued: here the RenderEngine to be created by the Builder from the Input shown in Example1" + size A4 + end + + objectdiagram 129157 "Engine Example2" + write_horizontally default package_name_in_tab default show_context default auto_label_position default draw_all_relations default shadow default + comment "Example2 (from EDL) continued: notably in this RenderEngine the Effect has been partitioned into 2 segments with constant configuration." + size A4 + end + + classinstance 128005 "" + type class_ref 128261 // Fixture + attributes + end + relations + end + end + + classinstance 128133 "" + type class_ref 129797 // ExplicitPlacement + attributes + attribute_ref 128261 // time + "2" + attribute_ref 128389 // track + "video1" + end + relations + end + end + + classinstance 128261 "" + type class_ref 129797 // ExplicitPlacement + attributes + attribute_ref 128261 // time + "2" + attribute_ref 128389 // track + "audio1" + end + relations + end + end + + classinstance 128389 "audio1" + type class_ref 128389 // Track + attributes + end + relations + end + end + + classinstance 128517 "video1" + type class_ref 128389 // Track + attributes + end + relations + end + end + + classinstance 128645 "vid_A" + type class_ref 128901 // Clip + attributes + attribute_ref 128517 // length + "5" + attribute_ref 128645 // start + "100" + end + relations + end + end + + classinstance 128773 "aud_A" + type class_ref 128901 // Clip + attributes + attribute_ref 128517 // length + "8820" + attribute_ref 128645 // start + "176400" + end + relations + end + end + + classinstance 128901 "audio1" + type class_ref 128389 // Track + attributes + end + relations + end + end + + classinstance 129029 "" + type class_ref 129797 // ExplicitPlacement + attributes + attribute_ref 128261 // time + "2" + attribute_ref 128389 // track + "video1" + end + relations + end + end + + classinstance 129157 "video1" + type class_ref 128389 // Track + attributes + end + relations + end + end + + classinstance 129285 "" + type class_ref 128261 // Fixture + attributes + end + relations + end + end + + classinstance 129413 "vid_A" + type class_ref 128901 // Clip + attributes + attribute_ref 128517 // length + "5" + attribute_ref 128645 // start + "100" + end + relations + end + end + + classinstance 129541 "" + type class_ref 128133 // EDL + attributes + end + relations + end + end + + classinstance 129669 "refPoint" + type class_ref 129669 // Label + attributes + attribute_ref 128517 // length + "0" + end + relations + end + end + + classinstance 129797 "" + type class_ref 129541 // Allocation + attributes + attribute_ref 128773 // repr + "\"t=2\"" + end + relations + end + end + + classinstance 129925 "vid_A" + type class_ref 128901 // Clip + attributes + attribute_ref 128517 // length + "5" + attribute_ref 128645 // start + "100" + end + relations + relation_ref 128645 // + classinstance_ref 130053 // + end + end + + classinstance 130053 "" + type class_ref 129413 // RelativePlacement + attributes + attribute_ref 128133 // relType + "SAMETIME" + end + relations + relation_ref 129925 // + classinstance_ref 129669 // refPoint + end + end + + classinstance 130181 "" + type class_ref 129029 // Effect + attributes + attribute_ref 128517 // length + "3" + attribute_ref 128901 // plugID + "\"Hue\"" + end + relations + relation_ref 128645 // + classinstance_ref 130309 // + end + end + + classinstance 130309 "" + type class_ref 129413 // RelativePlacement + attributes + attribute_ref 129029 // offset + "+3" + attribute_ref 128133 // relType + "ATTACH" + end + relations + relation_ref 129925 // + classinstance_ref 129925 // vid_A + end + end + + classinstance 130437 "" + type class_ref 129029 // Effect + attributes + attribute_ref 128517 // length + "3" + attribute_ref 128901 // plugID + "\"Hue\"" + end + relations + relation_ref 128645 // + classinstance_ref 130309 // + end + end + + classinstance 130565 "" + type class_ref 129797 // ExplicitPlacement + attributes + attribute_ref 128261 // time + "5" + attribute_ref 128389 // track + "video1" + end + relations + end + end + + classinstance 130693 "" + type class_ref 131333 // RenderEngine + attributes + end + relations + relation_ref 131845 // + classinstance_ref 130949 // video1 + end + end + + classinstance 130821 "audio1" + type class_ref 131461 // Processor + attributes + attribute_ref 129541 // end + "7/25" + attribute_ref 129413 // start + "2/25" + end + relations + relation_ref 131973 // + classinstance_ref 131205 // audio + end + end + + classinstance 130949 "video1" + type class_ref 131461 // Processor + attributes + attribute_ref 129541 // end + "7/25" + attribute_ref 129413 // start + "2/25" + end + relations + relation_ref 131973 // + classinstance_ref 131077 // video + end + end + + classinstance 131077 "video" + type class_ref 131589 // ExitNode + attributes + end + relations + relation_ref 135429 // + classinstance_ref 131333 // ouput + end + end + + classinstance 131205 "audio" + type class_ref 131589 // ExitNode + attributes + end + relations + relation_ref 135429 // + classinstance_ref 131845 // aud_a + end + end + + classinstance 131333 "ouput" + type class_ref 132229 // Projector + attributes + end + relations + relation_ref 135429 // + classinstance_ref 131589 // + end + end + + classinstance 131461 "input" + type class_ref 132229 // Projector + attributes + end + relations + relation_ref 135429 // + classinstance_ref 131717 // vid_a + end + end + + classinstance 131589 "" + type class_ref 132357 // Mask + attributes + end + relations + relation_ref 135429 // + classinstance_ref 131461 // input + end + end + + classinstance 131717 "vid_a" + type class_ref 133765 // Source + attributes + end + relations + end + end + + classinstance 131845 "aud_a" + type class_ref 133765 // Source + attributes + end + relations + end + end + + classinstance 131973 "vid1" + type class_ref 132997 // VRender + attributes + end + relations + relation_ref 134533 // + classinstance_ref 132229 // + end + end + + classinstance 132101 "au1" + type class_ref 132869 // ARender + attributes + end + relations + relation_ref 134533 // + classinstance_ref 132357 // + end + end + + classinstance 132229 "" + type class_ref 133509 // VFrame + attributes + end + relations + end + end + + classinstance 132357 "" + type class_ref 133381 // AFrame + attributes + end + relations + end + end + + classinstance 132485 "" + type class_ref 131333 // RenderEngine + attributes + end + relations + relation_ref 131845 // + classinstance_ref 134277 // video1 + end + end + + classinstance 132613 "devnull" + type class_ref 133765 // Source + attributes + end + relations + end + end + + classinstance 132741 "video" + type class_ref 131589 // ExitNode + attributes + end + relations + relation_ref 135429 // + classinstance_ref 133893 // HUE + end + end + + classinstance 132869 "input" + type class_ref 132229 // Projector + attributes + end + relations + relation_ref 135429 // + classinstance_ref 134021 // vid_a + end + end + + classinstance 132997 "video1" + type class_ref 131461 // Processor + attributes + attribute_ref 129541 // end + "8/25" + attribute_ref 129413 // start + "7/25" + end + relations + relation_ref 131973 // + classinstance_ref 132741 // video + end + end + + classinstance 133125 "ouput" + type class_ref 132229 // Projector + attributes + end + relations + relation_ref 135429 // + classinstance_ref 133253 // HUE + end + end + + classinstance 133253 "HUE" + type class_ref 132485 // PluginAdapter + attributes + end + relations + relation_ref 135429 // + classinstance_ref 132869 // input + end + end + + classinstance 133381 "vid1" + type class_ref 132997 // VRender + attributes + end + relations + relation_ref 134533 // + classinstance_ref 133509 // + end + end + + classinstance 133509 "" + type class_ref 133509 // VFrame + attributes + end + relations + end + end + + classinstance 133637 "video1" + type class_ref 131461 // Processor + attributes + attribute_ref 129541 // end + "7/25" + attribute_ref 129413 // start + "5/25" + end + relations + relation_ref 131973 // + classinstance_ref 133765 // video + end + end + + classinstance 133765 "video" + type class_ref 131589 // ExitNode + attributes + end + relations + relation_ref 135429 // + classinstance_ref 133125 // ouput + end + end + + classinstance 133893 "HUE" + type class_ref 132485 // PluginAdapter + attributes + end + relations + relation_ref 135429 // + classinstance_ref 132613 // devnull + end + end + + classinstance 134021 "vid_a" + type class_ref 133765 // Source + attributes + end + relations + end + end + + classinstance 134149 "input" + type class_ref 132229 // Projector + attributes + end + relations + relation_ref 135429 // + classinstance_ref 134021 // vid_a + end + end + + classinstance 134277 "video1" + type class_ref 131461 // Processor + attributes + attribute_ref 129541 // end + "5/25" + attribute_ref 129413 // start + "2/25" + end + relations + relation_ref 131973 // + classinstance_ref 134533 // video + end + end + + classinstance 134405 "ouput" + type class_ref 132229 // Projector + attributes + end + relations + relation_ref 135429 // + classinstance_ref 134149 // input + end + end + + classinstance 134533 "video" + type class_ref 131589 // ExitNode + attributes + end + relations + relation_ref 135429 // + classinstance_ref 134405 // ouput + end + end + end end diff --git a/uml/cinelerra3/129285.diagram b/uml/cinelerra3/129285.diagram index 2fec0c500..b4b7dc366 100644 --- a/uml/cinelerra3/129285.diagram +++ b/uml/cinelerra3/129285.diagram @@ -1,4 +1,4 @@ -format 38 +format 40 classcanvas 128005 class_ref 134021 // Buildable 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 @@ -6,7 +6,7 @@ classcanvas 128005 class_ref 134021 // Buildable end classcanvas 128133 class_ref 128517 // MObject 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 80 235 2000 + xyz 80 228 2000 end classcanvas 128517 class_ref 134149 // Tool 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 @@ -38,18 +38,22 @@ classcanvas 129413 class_ref 129669 // Label end classcanvas 129541 class_ref 128773 // AbstractMO 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 82 319 2000 + xyz 82 326 2000 end classcanvas 130565 class_ref 134277 // SegmentationTool 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 303 355 2000 + xyz 303 362 2000 end -classcanvas 130949 class_ref 134405 // NodeCratorTool +classcanvas 130949 class_ref 134405 // NodeCreatorTool 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 384 469 2004 + xyz 371 469 2004 end note 134277 "{ provided_tool.treat(this); }" xyzwh 182 191 2000 159 39 +classcanvas 134661 class_ref 135173 // Segment + draw_all_relations default hide_attributes default hide_operations default show_members_full_definition default show_members_visibility default show_members_stereotype default show_parameter_dir default show_parameter_name default package_name_in_tab default class_drawing_mode default drawing_language default show_context_mode default auto_label_position default show_infonote default shadow default + xyz 605 371 2000 + end relationcanvas 128261 relation_ref 135557 // from ref 128133 z 1999 to ref 128005 no_role_a no_role_b @@ -91,9 +95,13 @@ relationcanvas 131077 relation_ref 136069 // line 131205 z 1999 to ref 128517 no_role_a no_role_b no_multiplicity_a no_multiplicity_b +relationcanvas 134789 relation_ref 137221 // + from ref 130565 z 1999 stereotype "<>" xyz 542 409 3000 to ref 134661 + role_a_pos 546 385 3000 no_role_b + multiplicity_a_pos 590 418 3000 no_multiplicity_b line 131461 -_-_ from ref 130565 z 1999 to point 301 409 - line 132101 z 1999 to point 260 405 + line 132101 z 1999 to point 264 407 line 132229 z 1999 to ref 128005 line 131589 -_-_ from ref 130565 z 1999 to point 301 429 diff --git a/uml/cinelerra3/129413 b/uml/cinelerra3/129413 index ecb3e3730..e8dca4ded 100644 --- a/uml/cinelerra3/129413 +++ b/uml/cinelerra3/129413 @@ -1,6 +1,6 @@ -format 38 +format 40 "common" // design::codegen::common - revision 7 + revision 11 modified_by 5 "hiv" // class settings //class diagram settings @@ -8,7 +8,7 @@ format 38 //use case diagram settings 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 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 //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 @@ -29,7 +29,7 @@ format 38 stereotype "src" cpp_h_dir "common" cpp_src_dir "common" - cpp_namespace "lib" + cpp_namespace "cinelerra" associated_diagram deploymentdiagram_ref 129797 // Source Overview comment "sourcecode package @@ -39,11 +39,43 @@ Common library and helper classes" 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 comment "defines source files to be generated by BOUML" - deploymentdiagram 129925 "src" - 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 - comment "overview of the generated source Files for this Package" - size A4 + artifact 134789 "time" + stereotype "source" + cpp_h "/* + ${NAME}.hpp - ${description} +@{CopyrightClaim}@{GPLHeader} +*/ + + +#ifndef ${NAMESPACE}_${NAME}_H +#define ${NAMESPACE}_${NAME}_H + +${includes} +${declarations} + + +${namespace_start} + +${definition} +${namespace_end} +#endif +" + cpp_src "/* + ${Name} - ${description} +@{CopyrightClaim}@{GPLHeader} +* *****************************************************/ + + +${includes} +${namespace_start} + + +${members} +${namespace_end}" + associated_classes + class_ref 134917 // Time + end + comment "unified representation of a time point, including conversion functions" end end end diff --git a/uml/cinelerra3/129541 b/uml/cinelerra3/129541 index 43d8a3d5a..71af7ea97 100644 --- a/uml/cinelerra3/129541 +++ b/uml/cinelerra3/129541 @@ -1,6 +1,6 @@ -format 38 +format 40 "backend" // design::codegen::backend - revision 4 + revision 5 modified_by 5 "hiv" // class settings //class diagram settings @@ -8,7 +8,7 @@ format 38 //use case diagram settings 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 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 //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 diff --git a/uml/cinelerra3/129669 b/uml/cinelerra3/129669 index 5a107e49e..6ab555985 100644 --- a/uml/cinelerra3/129669 +++ b/uml/cinelerra3/129669 @@ -1,6 +1,6 @@ -format 38 +format 40 "proc" // design::codegen::proc - revision 3 + revision 6 modified_by 5 "hiv" // class settings //class diagram settings @@ -8,7 +8,7 @@ format 38 //use case diagram settings 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 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 //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 @@ -29,7 +29,7 @@ format 38 stereotype "src" cpp_h_dir "proc" cpp_src_dir "proc" - cpp_namespace "proc" + cpp_namespace "proc_interface" comment "sourcecode package All classes belonging to the (middle) processing layer" @@ -74,6 +74,7 @@ ${namespace_end}" associated_classes class_ref 132741 // StateProxy end + comment "Key Interface representing a render process and encapsulating state" end artifact 131589 "controllerfacade" @@ -112,6 +113,7 @@ ${namespace_end}" associated_classes class_ref 130309 // ControllerFacade end + comment "Facade and service access point for the Proc Layer Controller" end artifact 133765 "frame" @@ -150,6 +152,7 @@ ${namespace_end}" associated_classes class_ref 133253 // Frame end + comment "Key Abstraction: render process and buffer holding frame data." end end diff --git a/uml/cinelerra3/129669.diagram b/uml/cinelerra3/129669.diagram index 06e609414..756316393 100644 --- a/uml/cinelerra3/129669.diagram +++ b/uml/cinelerra3/129669.diagram @@ -1,4 +1,4 @@ -format 38 +format 40 classcanvas 128005 class_ref 131717 // ProcNode 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 @@ -33,9 +33,9 @@ classcanvas 130949 class_ref 128773 // AbstractMO xyz 643 186 2000 end relationcanvas 128261 relation_ref 136197 // - from ref 128005 z 1999 to ref 128133 - no_role_a no_role_b - no_multiplicity_a no_multiplicity_b + from ref 128005 z 1999 stereotype "<>" xyz 131 48 3000 to ref 128133 + role_a_pos 191 48 3000 no_role_b + multiplicity_a_pos 202 75 3000 no_multiplicity_b relationcanvas 128389 relation_ref 135429 // from ref 128005 z 1999 to point 26 41 line 128517 z 1999 to point 26 71 @@ -56,7 +56,7 @@ relationcanvas 129157 relation_ref 136581 // relationcanvas 129797 relation_ref 136709 // from ref 128773 z 1999 to point 431 86 line 130053 z 1999 to ref 129669 - no_role_a no_role_b + role_a_pos 443 136 3000 no_role_b multiplicity_a_pos 405 136 3000 no_multiplicity_b relationcanvas 131205 relation_ref 129285 // from ref 130949 z 1999 to ref 130821 @@ -71,7 +71,7 @@ relationcanvas 131589 relation_ref 131333 // no_role_a no_role_b no_multiplicity_a no_multiplicity_b relationcanvas 131973 relation_ref 136837 // - from ref 130565 z 1999 to ref 128773 + from ref 130565 z 1999 label "VAL>" xyz 564 225 3000 to ref 128773 no_role_a no_role_b no_multiplicity_a no_multiplicity_b end diff --git a/uml/cinelerra3/129797.diagram b/uml/cinelerra3/129797.diagram index a195e0182..7c7216678 100644 --- a/uml/cinelerra3/129797.diagram +++ b/uml/cinelerra3/129797.diagram @@ -1,4 +1,4 @@ -format 38 +format 40 artifactcanvas 128005 artifact_ref 128005 // Cinelerra3 color midred @@ -36,8 +36,6 @@ packagecanvas 129285 artifactcanvas 129413 artifact_ref 128133 // main color lightred xyz 281 45 2020 -iconcanvas 131077 deploymentdiagram_ref 129925 // src - xyz 201 159 2005 containcanvas 129797 from ref 128005 z 1999 to ref 129413 simplerelationcanvas 130053 simplerelation_ref 128517 geometry VH diff --git a/uml/cinelerra3/130053 b/uml/cinelerra3/130053 index 0804d8449..0bf8553f3 100644 --- a/uml/cinelerra3/130053 +++ b/uml/cinelerra3/130053 @@ -1,6 +1,6 @@ -format 38 +format 40 "asset" // design::codegen::proc::asset - revision 1 + revision 2 modified_by 5 "hiv" // class settings //class diagram settings @@ -8,7 +8,7 @@ format 38 //use case diagram settings 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 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 //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 diff --git a/uml/cinelerra3/130053.diagram b/uml/cinelerra3/130053.diagram new file mode 100644 index 000000000..36438c6a4 --- /dev/null +++ b/uml/cinelerra3/130053.diagram @@ -0,0 +1,135 @@ +format 40 + +packagecanvas 128005 + package_ref 129413 // common + show_context_mode namespace color lightblue xyzwh 689 3 1994 277 166 +note 128389 "namespace" + xyzwh 709 29 2010 86 36 +packagecanvas 128517 + package_ref 129669 // proc + show_context_mode namespace color lightblue xyzwh 62 107 1994 310 200 +note 128645 "namespace" + xyzwh 81 141 2005 85 35 +componentcanvas 128901 component_ref 129541 // ControllerFacade + draw_component_as_icon default show_component_req_prov default show_component_rea default + xyzwh 183 219 2005 156 63 +packagecanvas 129157 + package_ref 130181 // mobject + show_context_mode namespace xyzwh 16 370 1965 946 835 +packagecanvas 129285 + package_ref 130437 // session + show_context_mode namespace xyzwh 503 439 1980 440 296 +packagecanvas 129413 + package_ref 130693 // controller + show_context_mode namespace xyzwh 41 428 1990 385 315 +componentcanvas 129541 component_ref 128261 // Controller + draw_component_as_icon default show_component_req_prov default show_component_rea default + xyzwh 88 546 2010 151 63 +arrowjunctioncanvas 131973 class_ref 130565 // BuilderFacade + xyz 316 456 2000 label_xy 230 507 +arrowjunctioncanvas 132229 class_ref 130565 // BuilderFacade + xyz 313 344 2000 label_xy 239 327 +packagecanvas 132485 + package_ref 130565 // builder + show_context_mode namespace xyzwh 36 770 1970 465 385 +componentcanvas 132869 component_ref 129925 // CommonLib + draw_component_as_icon default show_component_req_prov default show_component_rea default + xyzwh 789 89 2005 156 63 +arrowjunctioncanvas 132997 class_ref 134917 // Time + xyz 830 211 2000 label_xy 828 233 +arrowjunctioncanvas 133253 class_ref 130309 // ControllerFacade + xyz 480 158 2000 label_xy 448 179 +componentcanvas 133509 component_ref 128133 // Session + draw_component_as_icon default show_component_req_prov default show_component_rea default + xyzwh 694 526 2005 156 63 +arrowjunctioncanvas 134533 class_ref 128133 // EDL + xyz 591 603 2000 label_xy 590 624 +arrowjunctioncanvas 134789 class_ref 128261 // Fixture + xyz 596 639 2000 label_xy 589 660 +arrowjunctioncanvas 135045 class_ref 128517 // MObject + xyz 610 798 2000 label_xy 601 819 +arrowjunctioncanvas 135301 class_ref 134661 // ParamProvider + xyz 684 1094 2000 label_xy 658 1115 +componentcanvas 135685 component_ref 128005 // Builder + draw_component_as_icon default show_component_req_prov default show_component_rea default + xyzwh 136 954 2005 151 63 +arrowjunctioncanvas 135813 class_ref 128005 // Session + xyz 571 765 2000 label_xy 562 787 +arrowjunctioncanvas 136197 class_ref 132741 // StateProxy + xyz 535 978 2000 label_xy 517 999 +arrowjunctioncanvas 136453 class_ref 128005 // Session + xyz 526 801 2000 label_xy 517 823 +packagecanvas 136709 + package_ref 130309 // engine + show_context_mode namespace xyzwh 16 1309 1994 561 265 +componentcanvas 136837 component_ref 128901 // Engine + draw_component_as_icon default show_component_req_prov default show_component_rea default + xyzwh 103 1402 2005 156 63 +arrowjunctioncanvas 136965 class_ref 132741 // StateProxy + xyz 535 1224 2000 label_xy 517 1245 +componentcanvas 137349 component_ref 130053 // ProcNode + draw_component_as_icon default show_component_req_prov default show_component_rea default + xyzwh 377 1494 2000 123 63 +arrowjunctioncanvas 137477 class_ref 134533 // Parameter + xyz 623 1379 2000 label_xy 607 1400 +arrowjunctioncanvas 137733 class_ref 134661 // ParamProvider + xyz 684 1368 2000 label_xy 658 1389 +componentcanvas 138373 component_ref 129797 // ConManager + draw_component_as_icon default show_component_req_prov default show_component_rea default + xyzwh 136 1070 2005 156 63 +arrowjunctioncanvas 138501 class_ref 134661 // ParamProvider + xyz 586 1094 2000 label_xy 560 1115 +componentcanvas 138757 component_ref 129285 // RenderPathManager + draw_component_as_icon default show_component_req_prov default show_component_rea default + xyzwh 89 644 2000 156 63 +arrowjunctioncanvas 138885 class_ref 130437 // PathManager + xyz 350 346 2000 label_xy 368 322 +arrowjunctioncanvas 139397 class_ref 130437 // PathManager + xyz 350 458 2000 label_xy 328 479 +arrowjunctioncanvas 140549 class_ref 128261 // Fixture + xyz 494 749 2000 label_xy 487 770 +line 132101 ---O + from ref 129541 z 1999 to point 301 541 + line 139269 z 1999 to ref 131973 +line 132357 ---( + from ref 128901 z 1999 to point 321 311 + line 139909 z 1999 to ref 132229 +line 133125 ---O + from ref 132869 z 1999 to ref 132997 +line 133381 ---O + from ref 128901 z 1999 to ref 133253 +line 134661 ---O + from ref 133509 z 1999 to ref 134533 +line 134917 ---O + from ref 133509 z 1999 to ref 134789 +line 135173 ---O + from ref 133509 z 1999 to ref 135045 +line 135429 ---O + from ref 133509 z 1999 to point 689 914 + line 138245 z 1999 to ref 135301 +line 135941 ---O + from ref 133509 z 1999 to ref 135813 +line 136325 ---O + from ref 135685 z 1999 to ref 136197 +line 136581 ---( + from ref 135685 z 1999 to ref 136453 +line 137093 ---( + from ref 136837 z 1999 to point 540 1302 + line 137221 z 1999 to ref 136965 +line 137605 ---O + from ref 137349 z 1999 to ref 137477 +line 137861 ---( + from ref 137349 z 1999 to point 689 1522 + line 137989 z 1999 to ref 137733 +line 138629 ---( + from ref 138373 z 1999 to ref 138501 +line 139013 ---( + from ref 128901 z 1999 to point 355 289 + line 139141 z 1999 to ref 138885 +line 139525 ---O geometry HV + from ref 138757 z 1999 to point 355 672 + line 139781 z 1999 to ref 139397 +line 140677 ---( + from ref 135685 z 1999 to ref 140549 +preferred_whz 0 0 0.8 +end diff --git a/uml/cinelerra3/130181 b/uml/cinelerra3/130181 index a7c86311a..c20af94e1 100644 --- a/uml/cinelerra3/130181 +++ b/uml/cinelerra3/130181 @@ -1,6 +1,6 @@ -format 38 +format 40 "mobject" // design::codegen::proc::mobject - revision 3 + revision 6 modified_by 5 "hiv" // class settings //class diagram settings @@ -8,7 +8,7 @@ format 38 //use case diagram settings 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 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 //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 @@ -73,9 +73,9 @@ ${namespace_start} ${members} ${namespace_end}" associated_classes - class_ref 134917 // Time class_ref 128517 // MObject end + comment "Key Abstraction: A Media Object in the Session" end artifact 129029 "placement" @@ -114,6 +114,7 @@ ${namespace_end}" associated_classes class_ref 128645 // Placement end + comment "Key Abstraction: a way to place and locate a Media Object" end artifact 129157 "explicitplacement" @@ -152,6 +153,7 @@ ${namespace_end}" associated_classes class_ref 129797 // ExplicitPlacement end + comment "special Placement yielding an absolute location (Time,Track)-location for a MObject" end artifact 130437 "builderfacade" @@ -190,6 +192,7 @@ ${namespace_end}" associated_classes class_ref 130565 // BuilderFacade end + comment "Facade and service access point for the Builder Subsystem" end artifact 131077 "buildable" @@ -228,6 +231,7 @@ ${namespace_end}" associated_classes class_ref 134021 // Buildable end + comment "marker interface denoting any MObject able to be treated by Tools" end artifact 134405 "parameter" @@ -266,6 +270,7 @@ ${namespace_end}" associated_classes class_ref 134533 // Parameter end + comment "representation of an automatable effect/plugin parameter" end artifact 134533 "paramprovider" @@ -304,6 +309,7 @@ ${namespace_end}" associated_classes class_ref 134661 // ParamProvider end + comment "interface denoting a source for actual Parameter values" end artifact 134661 "interpolator" @@ -342,6 +348,7 @@ ${namespace_end}" associated_classes class_ref 134789 // Interpolator end + comment "denotes a facility to get (continuously interpolated) parameter values" end end diff --git a/uml/cinelerra3/130309 b/uml/cinelerra3/130309 index b5977cd48..f5c27c9a0 100644 --- a/uml/cinelerra3/130309 +++ b/uml/cinelerra3/130309 @@ -1,6 +1,6 @@ -format 38 +format 40 "engine" // design::codegen::proc::engine - revision 3 + revision 8 modified_by 5 "hiv" // class settings //class diagram settings @@ -8,7 +8,7 @@ format 38 //use case diagram settings 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 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 //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 @@ -74,6 +74,7 @@ ${namespace_end}" associated_classes class_ref 131333 // RenderEngine end + comment "a complete network of processing nodes usable for rendering" end artifact 132101 "processor" @@ -112,6 +113,7 @@ ${namespace_end}" associated_classes class_ref 131461 // Processor end + comment "a single render pipeline for one segment of the timeline" end artifact 132229 "exitnode" @@ -150,6 +152,7 @@ ${namespace_end}" associated_classes class_ref 131589 // ExitNode end + comment "special Processing Node providing \"pullable\" output" end artifact 132357 "procnode" @@ -174,7 +177,7 @@ ${namespace_end} #endif " cpp_src "/* - ${Name} - ${description} + ${NAME} - ${description} @{CopyrightClaim}@{GPLHeader} * *****************************************************/ @@ -188,6 +191,7 @@ ${namespace_end}" associated_classes class_ref 131717 // ProcNode end + comment "Key abstraction of the Render Engine: a Processing Node" end artifact 132485 "trafo" @@ -226,9 +230,10 @@ ${namespace_end}" associated_classes class_ref 131845 // Trafo end + comment "transforming processing Node " end - artifact 132613 "pipe" + artifact 132613 "link" stereotype "source" cpp_h "/* ${NAME}.hpp - ${description} @@ -264,6 +269,7 @@ ${namespace_end}" associated_classes class_ref 131973 // Link end + comment "forwarding, adapting or connecting ProcNode" end artifact 132741 "hub" @@ -302,6 +308,7 @@ ${namespace_end}" associated_classes class_ref 132101 // Hub end + comment "special ProcNode used to build data distributing connections" end artifact 132869 "projector" @@ -340,6 +347,7 @@ ${namespace_end}" associated_classes class_ref 132229 // Projector end + comment "video ProcNode for scaling and translating image data" end artifact 132997 "mask" @@ -378,6 +386,7 @@ ${namespace_end}" associated_classes class_ref 132357 // Mask end + comment "Video ProcNode for masking regions of the image (automatable)" end artifact 133125 "pluginadapter" @@ -416,9 +425,10 @@ ${namespace_end}" associated_classes class_ref 132485 // PluginAdapter end + comment "Adapter for integrating various Effect processors in the render pipeline" end - artifact 133253 "openglpipe" + artifact 134917 "codecadapter" stereotype "source" cpp_h "/* ${NAME}.hpp - ${description} @@ -452,8 +462,48 @@ ${namespace_start} ${members} ${namespace_end}" associated_classes - class_ref 132613 // OpenGLPipe + class_ref 135045 // CodecAdapter end + comment "Processing Node for (de)coding media data" + end + + artifact 133253 "glpipe" + stereotype "source" + cpp_h "/* + ${NAME}.hpp - ${description} +@{CopyrightClaim}@{GPLHeader} +*/ + + +#ifndef ${NAMESPACE}_${NAME}_H +#define ${NAMESPACE}_${NAME}_H + +${includes} +${declarations} + + +${namespace_start} + +${definition} +${namespace_end} +#endif +" + cpp_src "/* + ${Name} - ${description} +@{CopyrightClaim}@{GPLHeader} +* *****************************************************/ + + +${includes} +${namespace_start} + + +${members} +${namespace_end}" + associated_classes + class_ref 132613 // GLPipe + end + comment "specialized connection element for handling OpenGL implementation details" end artifact 133381 "arender" @@ -492,6 +542,7 @@ ${namespace_end}" associated_classes class_ref 132869 // ARender end + comment "Representation of a Audio Render process" end artifact 133509 "vrender" @@ -530,6 +581,7 @@ ${namespace_end}" associated_classes class_ref 132997 // VRender end + comment "Representation of a Video render process" end artifact 133637 "glrender" @@ -568,6 +620,7 @@ ${namespace_end}" associated_classes class_ref 133125 // GLRender end + comment "Representation of a OpenGL accellerated Video render process" end artifact 133893 "aframe" @@ -606,6 +659,7 @@ ${namespace_end}" associated_classes class_ref 133381 // AFrame end + comment "a buffer and render process holding a Audio frame" end artifact 134021 "vframe" @@ -644,6 +698,7 @@ ${namespace_end}" associated_classes class_ref 133509 // VFrame end + comment "a buffer and render process holding a Video frame" end artifact 134149 "glbuf" @@ -682,6 +737,7 @@ ${namespace_end}" associated_classes class_ref 133637 // GLBuf end + comment "a buffer and render process holding a Video frame for OpenGL rendering" end artifact 134277 "source" @@ -720,6 +776,7 @@ ${namespace_end}" associated_classes class_ref 133765 // Source end + comment "Representation of a Media source" end end end diff --git a/uml/cinelerra3/130437 b/uml/cinelerra3/130437 index 0918bcaed..d1f52243d 100644 --- a/uml/cinelerra3/130437 +++ b/uml/cinelerra3/130437 @@ -1,6 +1,6 @@ -format 38 +format 40 "session" // design::codegen::proc::mobject::session - revision 3 + revision 6 modified_by 5 "hiv" // class settings //class diagram settings @@ -8,7 +8,7 @@ format 38 //use case diagram settings 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 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 //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 @@ -29,7 +29,7 @@ format 38 stereotype "src" cpp_h_dir "proc/mobject/session" cpp_src_dir "proc/mobject/session" - cpp_namespace "session" + cpp_namespace "mobject::session" comment "sourcecode package Everything concerning the EDL and Session, within the MObject Subsystem" @@ -74,6 +74,7 @@ ${namespace_end}" associated_classes class_ref 128005 // Session end + comment "holds the complete session to be edited by the user" end artifact 128645 "edl" @@ -112,6 +113,7 @@ ${namespace_end}" associated_classes class_ref 128133 // EDL end + comment "the (high level) Edit Decision List within the current Session" end artifact 128773 "fixture" @@ -150,6 +152,51 @@ ${namespace_end}" associated_classes class_ref 128261 // Fixture end + comment "the (low level) representation of the EDL with concrete placement data" + end + + artifact 135045 "segment" + stereotype "source" + cpp_h "/* + ${NAME}.hpp - ${description} +@{CopyrightClaim}@{GPLHeader} +*/ + + +#ifndef ${NAMESPACE}_${NAME}_H +#define ${NAMESPACE}_${NAME}_H + +${includes} +${declarations} + + +${namespace_start} + +${definition} +${namespace_end} +#endif +" + cpp_src "/* + ${Name} - ${description} +@{CopyrightClaim}@{GPLHeader} +* *****************************************************/ + + +${includes} +${namespace_start} + + +${members} +${namespace_end}" + associated_classes + class_ref 135173 // Segment + end + comment "Segment of the Timeline. +Used at the moment (7/07) for partitioning the timeline/fixture into segments +to be rendered by a specialized render node network for each, without the need +to change any connections within a given segment. +Note this concept may be superfluos alltogether; is a draft and the real +use still needs to be worked out..." end artifact 128901 "track" @@ -188,6 +235,7 @@ ${namespace_end}" associated_classes class_ref 128389 // Track end + comment "descriptor for one track in the Session" end artifact 129285 "abstractmo" @@ -226,6 +274,7 @@ ${namespace_end}" associated_classes class_ref 128773 // AbstractMO end + comment "abstract base class for all Media Objects" end artifact 129413 "clip" @@ -264,6 +313,7 @@ ${namespace_end}" associated_classes class_ref 128901 // Clip end + comment "a Media Clip" end artifact 129541 "effect" @@ -302,6 +352,7 @@ ${namespace_end}" associated_classes class_ref 129029 // Effect end + comment "EDL representation of a pluggable and automatable effect." end artifact 129669 "meta" @@ -340,6 +391,7 @@ ${namespace_end}" associated_classes class_ref 129157 // Meta end + comment "abstract base class of all MObjects representing meta data or processing instructions" end artifact 129797 "fixedplacement" @@ -416,6 +468,7 @@ ${namespace_end}" associated_classes class_ref 129413 // RelativePlacement end + comment "Placement implemnetaion providing various ways of attaching a MObject to another one" end artifact 130053 "allocation" @@ -530,6 +583,7 @@ ${namespace_end}" associated_classes class_ref 129925 // Auto end + comment "Media Object holding automation data" end end end diff --git a/uml/cinelerra3/130565 b/uml/cinelerra3/130565 index fa9b09a23..5da60b0f9 100644 --- a/uml/cinelerra3/130565 +++ b/uml/cinelerra3/130565 @@ -1,6 +1,6 @@ -format 38 +format 40 "builder" // design::codegen::proc::mobject::builder - revision 3 + revision 6 modified_by 5 "hiv" // class settings //class diagram settings @@ -8,7 +8,7 @@ format 38 //use case diagram settings 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 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 //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 @@ -29,7 +29,7 @@ format 38 stereotype "src" cpp_h_dir "proc/mobject/builder" cpp_src_dir "proc/mobject/builder" - cpp_namespace "proc" + cpp_namespace "mobject::builder" comment "sourcecode package The Builder creating the Render Engine, @@ -75,6 +75,7 @@ ${namespace_end}" associated_classes class_ref 130693 // ToolFactory end + comment "supply of Tool implementations for the Builder" end artifact 130693 "conmanager" @@ -113,6 +114,7 @@ ${namespace_end}" associated_classes class_ref 130821 // ConManager end + comment "manages the creation of additional ProcNode connections for the Renderengine" end artifact 130821 "assembler" @@ -151,6 +153,7 @@ ${namespace_end}" associated_classes class_ref 131077 // Assembler end + comment "building facility (implementation of the build process)" end artifact 131205 "tool" @@ -189,6 +192,7 @@ ${namespace_end}" associated_classes class_ref 134149 // Tool end + comment "Interface, any tool for processing MObjects" end artifact 131333 "segmentationtool" @@ -227,6 +231,7 @@ ${namespace_end}" associated_classes class_ref 134277 // SegmentationTool end + comment "Tool for creating a partitioning of the current timeline" end artifact 131461 "nodecreatertool" @@ -265,6 +270,7 @@ ${namespace_end}" associated_classes class_ref 134405 // NodeCreatorTool end + comment "central Tool implementing the Renderengine building" end end end diff --git a/uml/cinelerra3/130693 b/uml/cinelerra3/130693 index a2e644db5..71f67f571 100644 --- a/uml/cinelerra3/130693 +++ b/uml/cinelerra3/130693 @@ -1,6 +1,6 @@ -format 38 +format 40 "controller" // design::codegen::proc::mobject::controller - revision 3 + revision 6 modified_by 5 "hiv" // class settings //class diagram settings @@ -8,7 +8,7 @@ format 38 //use case diagram settings 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 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 //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 @@ -29,7 +29,7 @@ format 38 stereotype "src" cpp_h_dir "proc/mobject/controller" cpp_src_dir "proc/mobject/controller" - cpp_namespace "proc" + cpp_namespace "mobject::controller" comment "sourcecode package The Processing and Render Controller, @@ -75,6 +75,7 @@ ${namespace_end}" associated_classes class_ref 130437 // PathManager end + comment "Manager for deciding the actual render strategy" end artifact 131845 "renderstate" @@ -113,6 +114,7 @@ ${namespace_end}" associated_classes class_ref 130949 // RenderState end + comment "renderengine state manager" end end end diff --git a/uml/cinelerra3/134021.bodies b/uml/cinelerra3/134021.bodies index 3b98d8802..58e30184e 100644 --- a/uml/cinelerra3/134021.bodies +++ b/uml/cinelerra3/134021.bodies @@ -1,5 +1,5 @@ class Buildable -!!!129669.cpp!!! apply(inout provided_tool : Tool) +!!!129669.cpp!!! apply(inout provided_tool : Tool) : void { - tool.treat(mElement); + provided_tool.treat(mElement); } diff --git a/uml/cinelerra3/5.session b/uml/cinelerra3/5.session index b8f38247c..65a46ae7d 100644 --- a/uml/cinelerra3/5.session +++ b/uml/cinelerra3/5.session @@ -1,13 +1,9 @@ -window_sizes 1140 830 270 860 631 120 -diagrams - active deploymentdiagram_ref 129797 // Source Overview - 688 606 100 4 0 0 -end +window_sizes 1104 756 270 824 557 120 show_stereotypes -selected artifact_ref 128005 // Cinelerra3 +selected +package_ref 129 // cinelerra3 open - artifact_ref 128005 // Cinelerra3 - classview_ref 128645 // Service Components + +package_ref 129669 // proc end end -verbose diff --git a/uml/cinelerra3/cinelerra3.prj b/uml/cinelerra3/cinelerra3.prj index 2249715ba..7c1c4f1f6 100644 --- a/uml/cinelerra3/cinelerra3.prj +++ b/uml/cinelerra3/cinelerra3.prj @@ -1,6 +1,6 @@ -format 38 +format 40 "cinelerra3" - revision 21 + revision 26 modified_by 5 "hiv" cpp_root_dir "../../src/" @@ -13,7 +13,7 @@ format 38 //use case diagram settings package_name_in_tab no show_context no auto_label_position yes draw_all_relations yes shadow yes //sequence diagram settings - show_full_operations_definition no write_horizontally yes drawing_language uml draw_all_relations yes shadow yes + show_full_operations_definition no write_horizontally yes class_drawing_mode natural drawing_language uml draw_all_relations yes shadow yes //collaboration diagram settings show_full_operations_definition no show_hierarchical_rank no write_horizontally yes drawing_language uml package_name_in_tab no show_context no draw_all_relations yes shadow yes //object diagram settings @@ -57,7 +57,7 @@ format 38 2007, Christian Thaeter " - key "html dir" value "/home/ct/src/cinelerra3/doc/devel/uml/" + key "html dir" value "/mnt/Lager/heim/devel/cin3/doc/devel/uml/" key "" value "" package_ref 128005 // design diff --git a/uml/cinelerra3/cpp_includes b/uml/cinelerra3/cpp_includes index c6e1b344e..a9dd30574 100644 --- a/uml/cinelerra3/cpp_includes +++ b/uml/cinelerra3/cpp_includes @@ -1,17 +1,17 @@ // "a type" "needed cpp_includes" "vector" "#include -using namespace std;" +using std::vector;" "list" "#include -using namespace std;" +using std::list;" "map" "#include -using namespace std;" +using std::map;" "string" "#include -using namespace std;" +using std::string;" diff --git a/wiki/.gitignore b/wiki/.gitignore new file mode 100644 index 000000000..1fb9ef574 --- /dev/null +++ b/wiki/.gitignore @@ -0,0 +1 @@ +tmp/* diff --git a/wiki/backend.html b/wiki/backend.html index b58256a58..6477e47ba 100644 --- a/wiki/backend.html +++ b/wiki/backend.html @@ -2095,10 +2095,26 @@ see : <<tag RSSFeed>> for the full list.
              -
              +
              Scheduling is done with two priority queues, one for high priority jobs and one for low priority jobs. These priority queues are ordered by absolute time values (and a job identifier, details will be worked out at implementation time).
               
              -There is also a variable defining how to handle too-late schedules (proceed, abort) for each scheduled job. 
              +there are following (non exhaustive) kinds of jobs: +* start job +* cancel job, if not finished (abort when out of time) +* unschedule job + +Jobs implement a kind of future, datastructures which block a querier until data is available. + +The Job scheduler runs singlethreaded. Its only task is to schedule and delegate jobs to worker threads, by itself it will never do any extensive processing! + +Each job has an option what to do when its times expires (abort, proceed). + +The high priority queue is ordered by the __start__ time T, when the job has to be started (plus some hystersis H). A high priority job becomes scheduled beginning with time T but no later than T+H. + +The low priority queue is ordered by __end__ time T, when the job has to be finished (minus a spawn S). Low priority jobs are started as soon as system load permits, the high priority queue is empty (for some usec in future, lets say 100) and the time is earlier than ~T-S. When a job is expired, it is removed from the queue, when it is already running it is handled as defined in its expire policy. + +Canceling and expireing jobs gets noted in Statistics to adjust performance and timings for optimal performance. +
              <<search>><<closeAll>><<permaview>><<newTiddler>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
              diff --git a/wiki/index.html b/wiki/index.html index 5be45c5ad..51da7bc71 100755 --- a/wiki/index.html +++ b/wiki/index.html @@ -747,6 +747,17 @@ config.macros.timeline.handler = function(place,macroName,params,wikifier,paramS } //}}}
              +
              +
              July 2007 we agreed to try out several Build Systems in real world usage, to get a better feel on the maintenance costs of each.
              +* SCons
              +* AutoTools
              +
              +!Used Functionality
              +* (re)building with reliable dependency checks
              +* environment checks ("configure")
              +* provide central interface for setting switches and configuration options
              +* installing of some or all created artifacts
              +
              ! Cinelerra3 design process
               A lightweight formalized process how people can add proposals for the Cinelerra3 development.
              @@ -784,11 +795,13 @@ This distributed wiki might be used instead the pipapo.org wiki, investigate tha
               Wiki works. It is simple to use and just flexible enough to handle the task. I don't go to install any other software for such tasks on my server. While the design progresses I'd propose to move our work into git repositories and eventually phase this wiki pages out anyways. I'd rather like to start out distributed/git right away .. but git gives us only a fine storage layer, for a design process we need some good presentation layer (later when using git and starting the implementation everyones favorite editor serves for that) I have no better ideas yet to solve the presentation problem other than using this wiki (or maybe Bouml).
               
              -
              +
              This 'index.html' becomes the entry point of some tiddlywikis managed under git. There is a 'empty.html' in the same folder serving as template for generating new wikis. Please refrain from editing it.
               
               * I started a GitNotes where we will collect some information about git, howto and special setups
              +* since we prefer gpg signed tags in git and not each developer knows gpg well here is a Micro-GPG-HowTo 
               * we maintain (semi-) final design docs in DesignDocumentation
              +* Things get often worked out on IRC, see IRC-Transcripts for decisions made there and not yet put into the proper documentation places
               
               Please end your tiddlers in a newline, this makes merging in git easier since the /pre tag used in tiddlywiki will become on a single line.
               
              @@ -806,7 +819,7 @@ next we should //start thinking// on how to organize several aspects of the prac
               * how to organize packages, files, includes?    &rarr; [[more|SrcTreeStructure]]
               * how to organize the executable to be built?
               * what coding conventions to prefer?            &rarr; [[GNU Style|DesignDocumentation]]
              -* what build system to use?
              +* what [[build system|BuildSystem]] to use?
               
               Ichthyo thinks we should do some informal brainstorming, test/prototypes to see how things work out and discuss them; then we should make them into formal project proposals on pipapo.org
               
              @@ -815,7 +828,7 @@ Ichthyo thinks we should do some informal brainstorming, test/prototypes to see
              Cinelerra3Wiki
               ShortCuts
              -
              +
              * There is a [[Manifest]] explaining the vision of the Cinelerra3 project
               * The foundation how we work together is defined in Cinelerra3DesignProcess
               * There is a description how the git repository is set up in RepositorySetup
              @@ -894,7 +907,7 @@ Slider.prototype.stop = function()
               }
               //}}}
              -
              +
              to make the admin/git_hooks/post-commit working add following to your .gitconfig:
               {{{
               [alias]
              @@ -908,7 +921,7 @@ these two commands are used by 'admin/git-hooks/post-commit'
               
               'git publish' just sends the commit to some repository which has to be registered with 'git remote add public ...', in case you are working offline this will stuck and timeout, you may break it with ctrl-c, someone may fix it.
              -
              +
              some ''interesting Branches''
               
               |![[pipapo.org|PipapoOrg]]                |!''mirrored''              |!|!description                          |
              @@ -917,7 +930,7 @@ these two commands are used by 'admin/git-hooks/post-commit'
               
               
              -
              +
              I use some GitAliases to make signing and publishing easier.
               
               the '.git' dir itself is not versioned/distributed since it usually contains site-specific things. Despite this we might want to distribute some maintenance scripts and hooks so I put the default hooks into admin/git_hooks/ and users can symlink from .git/hooks them when needed.
              @@ -958,13 +971,37 @@ Now you could compile the source code or improve Cinelerra3 or the documentation
               !!!Code
               //{{{
               git config --global user.name "YOUR REALNAME"
              -git config --global user.email YOUR-E@MAIL.ADRESS
              +git config --global user.email ~YOUR-E@MAIL.ADRESS
               git commit -m 'YOUR DESCRIPTION' -- FILE/TO/COMMIT
               git push git://git.pipapo.org/cinelerra3/mob
               //}}}
               
               cinelerra3/mob is an anonymous account at pipapo.org where everyone can commit changes. 
              +
              +
              !10/11 aug 2007
              +* maybe let the render graph builder generate a meta language which then is jit compiled for each configuration
              +* using smart pointers and factories for objects, if this wont work because of cycles, we might investigate specialized garbage collectors for specific cases.
              +* format for frames would be likely ffmpeg or such first, finally we see what suits best. We have to provide coverter nodes to convert frame formats for accessing diffrent libraries anyway (ffmpeg, v4l, gstreamer, ...)
              +* we need a pool of worker threads and associated api's
              +* accessing frames has a time (get until..), unique frame identifier (see below), policies (what to do when out of time, quality required,..) and hints (recursive dependency, must cache, playback speed and direction, ...)
              +* for each sequence (configuration) each node has a number (monotonic incrementing), a generation counter (increment on each parameter change), a propagation sum (from parent nodes) 
              +* frames are identified by their time(frame number) and node number plus generation number and propagation sum. This allows easily to find out when a frame has to be rerendered
              +* no difference between compositor and viewer
              +** viewer is just a decoder where a display window attaches
              +** one can have multiple of such display windows
              +** tracks, effects, (things which are nodes in the render graph) can add gui components to the viewer, like masking tools, panning, overlay and other compositor things.
              +** does such a display need to be a node in the render graph (means reconfig when changing it) or just something which peeks on top of it?
              +* tracks are just containers for other nodes
              +** they serve a gui representation (timeline, patchbay, viewer)
              +** they do the mixing of contained things
              +** can be recursive, the gui represents basically a tree
              +** we need some 'wireing' abstraction for the gui to make it a real graph
              +* rendering frames, context between frames
              +** the proc layer only queries frames (by identifier and timeout) the backend tries to serve the best it can do (from cache or let them render)
              +** each render job carries some quality limit (as S/N ratio) when previewing or scratching through the project this is used to generate reasonable quality previews
              +
              +
              /***
               ''InlineJavascriptPlugin for ~TiddlyWiki version 1.2.x and 2.0''
              @@ -1324,6 +1361,63 @@ We are in need of a new development model which is acceptable by all involved pe
               
               <style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>My TiddlyWiki</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>
              +
              +
              I (cehteh) just paste my configs and give very few hints here, refer to the gpg manpage, the gpg documentation, google or ask on IRC for details. Maybe you improve this.
              +
              +First of all you need to install gpg and generate your keypair if you don't have done that already. generating keys is done with {{{gpg --gen-key}}} refer to the manpage for details.
              +
              +Be very careful that your private key has a **GOOD** passphrase and be kept secret.
              +
              +Configuration files are in {{{~/.gnupg}}}
              +
              +Here are the things I have in my {{{~/.gnupg/gpg.conf}}} (there are a lot of comments too, which I leave out here, instead I add some notes as comments)
              +{{{
              +no-greeting
              +
              +# enter your keyid AC4F4FF4 is mine!
              +default-key AC4F4FF4
              +
              +force-v3-sigs
              +
              +compress-algo 1
              +
              +# you can add alternative keyservers
              +keyserver hkp://subkeys.pgp.net
              +#keyserver blackhole.pca.dfn.de
              +
              +# to let gpg automatically download public keys from the net, makes usage much easier
              +keyserver-options auto-key-retrieve
              +
              +# using a gpg agent makes usage easier too, but you should only use it on a personal computer
              +use-agent
              +}}}
              +
              +
              +when you want to use the gpg agent you need to add following line to your {{{~/.bash_profile}}} to start the agent on login:
              +{{{
              +eval $(gpg-agent --daemon)
              +}}}
              +
              +
              +further you need to add following lines to your {{{~/.bash_logout}}} to stop the agent when logging off:
              +{{{
              +if test "$GPG_AGENT_INFO"; then
              +        kill -TERM $(echo $GPG_AGENT_INFO | sed -s 's/.*:\(.*\):.*/\1/')
              +fi
              +}}}
              +
              +further the gpg agent needs some configuration in {{{~/.gnupg/gpg-agent.conf}}}:
              +{{{
              +pinentry-program /usr/bin/pinentry-gtk-2
              +no-grab
              +default-cache-ttl 1209600
              +max-cache-ttl 1209600
              +}}}
              +
              +Note that I am using very long timeouts, refer to the manual about its implications or leave the defaults.
              +
              +
              +
              <!--{{{-->
               <div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
              @@ -2296,8 +2390,8 @@ if (oldText.indexOf("SplashScreen")==-1)
               }
               //}}}
              -
              -
              * add a 'DIR_INFO' file to each marginally important directory. The first line should give a short abstract about this dir (40 characters, not more), following lines can give more precise information. There is a 'admin/treeinfo.sh' script which generates a texual overview of the directory tree.
              +
              +
              * add a ''~DIR_INFO'' file to each marginally important directory. The first line should give a short abstract about this dir (40 characters, not more), following lines can give more precise information. There is a 'admin/treeinfo.sh' script which generates a texual overview of the directory tree.
               
              @@ -3492,12 +3586,27 @@ function addKeyDownHandlers(e) * see GettingStarted * see [[Homepage|http://tiddlywiki.com]]
              -
              -
              The question to find out about is: how much of the coding to do with the help of BOUML. Basically, BOUML is capable to permanently support the coding; you can define all entities, fields and methods in the UML model an just develope the method bodies //conventionally// with a text editor. 
              +
              +
              The question to find out about is: how much of the coding to do with the help of BOUML. Basically, BOUML is capable to permanently support the coding; you can define all entities, fields and methods in the UML model an just develop the method bodies //conventionally// with a text editor. 
               
              -__Ichthyo__ tends to be seceptical about this aproach. While it probably will work, it is questionable if it will result in &raquo;good code&laquo; the fear is, that this rigid hierarchical structure distracts from the more complex semantical concerns.
              +__Ichthyo__ tends to be sceptical about this approach. While it probably will work, it is questionable if it will result in &raquo;good code&laquo; the fear is, that this rigid hierarchical structure distracts from the more complex semantical concerns.
               
              -Another aproach could be to use BOUML just to create the basic structures and from this point on rather utilizing it for technical documentation.
              +Another approach could be to use BOUML just to create the basic structures and from this point on rather utilizing it for technical documentation. + +!!After some use +After having used BOUML now (August 07) to some extent, Ichthyo notes down his observation: +# __Assessment__ +#* it is fast, rock stable and complete up to a medium requirement level. +#* the drawing functions are just basic and insufficient for corporate level demands, just enough for creating design drafts +#* I miss real world round trip capabilities. Basically, it works fine as long as BOUML is the primary programming environment +# __Benefits__: setting up new Entities together with all relations and the most important operations is very fast and convienient with bouml. You can get a fairly complete and consistent skeleton of some subsystem much more rapidly than when creating classes from templates in a normal IDE +# __Drawbacks__: For fleshing out more implementation centric parts, it is seriousely lacking expressiveness, as far as C++ is concerned. This is partially due to the nature of UML. As a warning example, look at the source code of BOUML together with it's "plugouts". It has about 250kLOC, several thousand source files, most of this caused by duplicating whole class hierarchies, set up in a classificatory manner (which is a big no-no for most modern object oriented programming styles). + +!!!conclusion +I want to try out the following aproach +*use it for reasoning about structure +*use it for setting up all new major entities +*don't use it for //real programming//
              diff --git a/wiki/renderengine.html b/wiki/renderengine.html index 1fcc3a0d0..2c79b42c5 100644 --- a/wiki/renderengine.html +++ b/wiki/renderengine.html @@ -42,9 +42,9 @@ DAMAGE. -
              My TiddlyWiki is loading ...

              Requires Javascript.
              +
              loading Cinelerra Renderengine devel doku ...

              Requires Javascript.
              - Draft - some aspects of Cinelerra-3 design + Engine - some aspects of Cinelerra-3 design