From ebb4da6cc738392c015c7d66c54c6483331459f4 Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Wed, 8 Aug 2007 04:50:02 +0200 Subject: [PATCH] ** Start Coding ** Renderengine sources generated, reformatted and made compilable. --- admin/scons/Buildhelper.py | 2 +- src/common/time.cpp | 31 + src/common/time.hpp | 42 + src/main.cpp | 7 +- src/proc/controllerfacade.cpp | 33 + src/proc/controllerfacade.hpp | 46 + src/proc/engine/aframe.cpp | 38 + src/proc/engine/aframe.hpp | 45 + src/proc/engine/arender.cpp | 38 + src/proc/engine/arender.hpp | 49 + src/proc/engine/codecadapter.cpp | 36 + src/proc/engine/codecadapter.hpp | 53 + src/proc/engine/exitnode.cpp | 37 + src/proc/engine/exitnode.hpp | 49 + src/proc/engine/glbuf.cpp | 38 + src/proc/engine/glbuf.hpp | 45 + src/proc/engine/glpipe.cpp | 38 + src/proc/engine/glpipe.hpp | 50 + src/proc/engine/glrender.cpp | 37 + src/proc/engine/glrender.hpp | 48 + src/proc/engine/hub.cpp | 38 + src/proc/engine/hub.hpp | 48 + src/proc/engine/link.cpp | 38 + src/proc/engine/link.hpp | 54 + src/proc/engine/mask.cpp | 38 + src/proc/engine/mask.hpp | 46 + src/proc/engine/pluginadapter.cpp | 38 + src/proc/engine/pluginadapter.hpp | 52 + src/proc/engine/processor.cpp | 40 + src/proc/engine/processor.hpp | 58 + src/proc/engine/procnode.cpp | 37 + src/proc/engine/procnode.hpp | 63 + src/proc/engine/projector.cpp | 38 + src/proc/engine/projector.hpp | 50 + src/proc/engine/renderengine.cpp | 45 + src/proc/engine/renderengine.hpp | 58 + src/proc/engine/source.cpp | 38 + src/proc/engine/source.hpp | 53 + src/proc/engine/trafo.cpp | 37 + src/proc/engine/trafo.hpp | 55 + src/proc/engine/vframe.cpp | 38 + src/proc/engine/vframe.hpp | 47 + src/proc/engine/vrender.cpp | 37 + src/proc/engine/vrender.hpp | 51 + src/proc/frame.cpp | 33 + src/proc/frame.hpp | 46 + src/proc/mobject/buildable.cpp | 47 + src/proc/mobject/buildable.hpp | 55 + src/proc/mobject/builder/assembler.cpp | 47 + src/proc/mobject/builder/assembler.hpp | 58 + src/proc/mobject/builder/conmanager.cpp | 49 + src/proc/mobject/builder/conmanager.hpp | 59 + src/proc/mobject/builder/nodecreatertool.cpp | 74 + src/proc/mobject/builder/nodecreatertool.hpp | 82 + src/proc/mobject/builder/segmentationtool.cpp | 67 + src/proc/mobject/builder/segmentationtool.hpp | 83 + src/proc/mobject/builder/tool.cpp | 44 + src/proc/mobject/builder/tool.hpp | 61 + src/proc/mobject/builder/toolfactory.cpp | 46 + src/proc/mobject/builder/toolfactory.hpp | 52 + src/proc/mobject/builderfacade.cpp | 46 + src/proc/mobject/builderfacade.hpp | 59 + src/proc/mobject/controller/pathmanager.cpp | 47 + src/proc/mobject/controller/pathmanager.hpp | 58 + src/proc/mobject/controller/renderstate.cpp | 47 + src/proc/mobject/controller/renderstate.hpp | 59 + src/proc/mobject/explicitplacement.cpp | 37 + src/proc/mobject/explicitplacement.hpp | 55 + src/proc/mobject/interpolator.cpp | 37 + src/proc/mobject/interpolator.hpp | 50 + src/proc/mobject/mobject.cpp | 37 + src/proc/mobject/mobject.hpp | 67 + src/proc/mobject/parameter.cpp | 43 + src/proc/mobject/parameter.hpp | 59 + src/proc/mobject/paramprovider.cpp | 44 + src/proc/mobject/paramprovider.hpp | 59 + src/proc/mobject/placement.cpp | 47 + src/proc/mobject/placement.hpp | 61 + src/proc/mobject/session/abstractmo.cpp | 41 + src/proc/mobject/session/abstractmo.hpp | 51 + src/proc/mobject/session/allocation.cpp | 41 + src/proc/mobject/session/allocation.hpp | 66 + src/proc/mobject/session/auto.cpp | 48 + src/proc/mobject/session/auto.hpp | 58 + src/proc/mobject/session/clip.cpp | 41 + src/proc/mobject/session/clip.hpp | 68 + src/proc/mobject/session/edl.cpp | 43 + src/proc/mobject/session/edl.hpp | 59 + src/proc/mobject/session/effect.cpp | 41 + src/proc/mobject/session/effect.hpp | 58 + src/proc/mobject/session/fixedplacement.cpp | 41 + src/proc/mobject/session/fixedplacement.hpp | 53 + src/proc/mobject/session/fixture.cpp | 57 + src/proc/mobject/session/fixture.hpp | 66 + src/proc/mobject/session/label.cpp | 41 + src/proc/mobject/session/label.hpp | 56 + src/proc/mobject/session/meta.cpp | 41 + src/proc/mobject/session/meta.hpp | 57 + .../mobject/session/relativeplacement.cpp | 40 + .../mobject/session/relativeplacement.hpp | 73 + src/proc/mobject/session/segment.cpp | 48 + src/proc/mobject/session/segment.hpp | 74 + src/proc/mobject/session/session.cpp | 43 + src/proc/mobject/session/session.hpp | 62 + src/proc/mobject/session/track.cpp | 41 + src/proc/mobject/session/track.hpp | 59 + src/proc/stateproxy.cpp | 34 + src/proc/stateproxy.hpp | 45 + uml/cinelerra3/128261 | 87 +- uml/cinelerra3/128645 | 99 +- uml/cinelerra3/129413 | 5 +- uml/cinelerra3/129541 | 6 +- uml/cinelerra3/129669 | 6 +- uml/cinelerra3/130053 | 6 +- uml/cinelerra3/130181 | 8 +- uml/cinelerra3/130309 | 10 +- uml/cinelerra3/130437 | 54 +- uml/cinelerra3/130565 | 8 +- uml/cinelerra3/130693 | 8 +- uml/cinelerra3/5.session | 4 + uml/cinelerra3/cinelerra3.prj | 2 +- uml/cinelerra3/cpp_includes | 8 +- wiki/renderengine.html | 1440 +---------------- 123 files changed, 5409 insertions(+), 1562 deletions(-) create mode 100644 src/common/time.cpp create mode 100644 src/common/time.hpp create mode 100644 src/proc/controllerfacade.cpp create mode 100644 src/proc/controllerfacade.hpp create mode 100644 src/proc/engine/aframe.cpp create mode 100644 src/proc/engine/aframe.hpp create mode 100644 src/proc/engine/arender.cpp create mode 100644 src/proc/engine/arender.hpp create mode 100644 src/proc/engine/codecadapter.cpp create mode 100644 src/proc/engine/codecadapter.hpp create mode 100644 src/proc/engine/exitnode.cpp create mode 100644 src/proc/engine/exitnode.hpp create mode 100644 src/proc/engine/glbuf.cpp create mode 100644 src/proc/engine/glbuf.hpp create mode 100644 src/proc/engine/glpipe.cpp create mode 100644 src/proc/engine/glpipe.hpp create mode 100644 src/proc/engine/glrender.cpp create mode 100644 src/proc/engine/glrender.hpp create mode 100644 src/proc/engine/hub.cpp create mode 100644 src/proc/engine/hub.hpp create mode 100644 src/proc/engine/link.cpp create mode 100644 src/proc/engine/link.hpp create mode 100644 src/proc/engine/mask.cpp create mode 100644 src/proc/engine/mask.hpp create mode 100644 src/proc/engine/pluginadapter.cpp create mode 100644 src/proc/engine/pluginadapter.hpp create mode 100644 src/proc/engine/processor.cpp create mode 100644 src/proc/engine/processor.hpp create mode 100644 src/proc/engine/procnode.cpp create mode 100644 src/proc/engine/procnode.hpp create mode 100644 src/proc/engine/projector.cpp create mode 100644 src/proc/engine/projector.hpp create mode 100644 src/proc/engine/renderengine.cpp create mode 100644 src/proc/engine/renderengine.hpp create mode 100644 src/proc/engine/source.cpp create mode 100644 src/proc/engine/source.hpp create mode 100644 src/proc/engine/trafo.cpp create mode 100644 src/proc/engine/trafo.hpp create mode 100644 src/proc/engine/vframe.cpp create mode 100644 src/proc/engine/vframe.hpp create mode 100644 src/proc/engine/vrender.cpp create mode 100644 src/proc/engine/vrender.hpp create mode 100644 src/proc/frame.cpp create mode 100644 src/proc/frame.hpp create mode 100644 src/proc/mobject/buildable.cpp create mode 100644 src/proc/mobject/buildable.hpp create mode 100644 src/proc/mobject/builder/assembler.cpp create mode 100644 src/proc/mobject/builder/assembler.hpp create mode 100644 src/proc/mobject/builder/conmanager.cpp create mode 100644 src/proc/mobject/builder/conmanager.hpp create mode 100644 src/proc/mobject/builder/nodecreatertool.cpp create mode 100644 src/proc/mobject/builder/nodecreatertool.hpp create mode 100644 src/proc/mobject/builder/segmentationtool.cpp create mode 100644 src/proc/mobject/builder/segmentationtool.hpp create mode 100644 src/proc/mobject/builder/tool.cpp create mode 100644 src/proc/mobject/builder/tool.hpp create mode 100644 src/proc/mobject/builder/toolfactory.cpp create mode 100644 src/proc/mobject/builder/toolfactory.hpp create mode 100644 src/proc/mobject/builderfacade.cpp create mode 100644 src/proc/mobject/builderfacade.hpp create mode 100644 src/proc/mobject/controller/pathmanager.cpp create mode 100644 src/proc/mobject/controller/pathmanager.hpp create mode 100644 src/proc/mobject/controller/renderstate.cpp create mode 100644 src/proc/mobject/controller/renderstate.hpp create mode 100644 src/proc/mobject/explicitplacement.cpp create mode 100644 src/proc/mobject/explicitplacement.hpp create mode 100644 src/proc/mobject/interpolator.cpp create mode 100644 src/proc/mobject/interpolator.hpp create mode 100644 src/proc/mobject/mobject.cpp create mode 100644 src/proc/mobject/mobject.hpp create mode 100644 src/proc/mobject/parameter.cpp create mode 100644 src/proc/mobject/parameter.hpp create mode 100644 src/proc/mobject/paramprovider.cpp create mode 100644 src/proc/mobject/paramprovider.hpp create mode 100644 src/proc/mobject/placement.cpp create mode 100644 src/proc/mobject/placement.hpp create mode 100644 src/proc/mobject/session/abstractmo.cpp create mode 100644 src/proc/mobject/session/abstractmo.hpp create mode 100644 src/proc/mobject/session/allocation.cpp create mode 100644 src/proc/mobject/session/allocation.hpp create mode 100644 src/proc/mobject/session/auto.cpp create mode 100644 src/proc/mobject/session/auto.hpp create mode 100644 src/proc/mobject/session/clip.cpp create mode 100644 src/proc/mobject/session/clip.hpp create mode 100644 src/proc/mobject/session/edl.cpp create mode 100644 src/proc/mobject/session/edl.hpp create mode 100644 src/proc/mobject/session/effect.cpp create mode 100644 src/proc/mobject/session/effect.hpp create mode 100644 src/proc/mobject/session/fixedplacement.cpp create mode 100644 src/proc/mobject/session/fixedplacement.hpp create mode 100644 src/proc/mobject/session/fixture.cpp create mode 100644 src/proc/mobject/session/fixture.hpp create mode 100644 src/proc/mobject/session/label.cpp create mode 100644 src/proc/mobject/session/label.hpp create mode 100644 src/proc/mobject/session/meta.cpp create mode 100644 src/proc/mobject/session/meta.hpp create mode 100644 src/proc/mobject/session/relativeplacement.cpp create mode 100644 src/proc/mobject/session/relativeplacement.hpp create mode 100644 src/proc/mobject/session/segment.cpp create mode 100644 src/proc/mobject/session/segment.hpp create mode 100644 src/proc/mobject/session/session.cpp create mode 100644 src/proc/mobject/session/session.hpp create mode 100644 src/proc/mobject/session/track.cpp create mode 100644 src/proc/mobject/session/track.hpp create mode 100644 src/proc/stateproxy.cpp create mode 100644 src/proc/stateproxy.hpp 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/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..459ead88a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -21,11 +21,12 @@ */ +#include -#include +using std::cout; -int main(int argc, char* argv[]) +int main (int argc, char* argv[]) { - printf("hello cinelerra again\n"); + cout << "hello cinelerra again\n"; return 0; } diff --git a/src/proc/controllerfacade.cpp b/src/proc/controllerfacade.cpp new file mode 100644 index 000000000..17cfab707 --- /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 + { + + /** */ + + + +} // namespace proc diff --git a/src/proc/controllerfacade.hpp b/src/proc/controllerfacade.hpp new file mode 100644 index 000000000..3170f1a04 --- /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_CONTROLLERFACADE_H +#define PROC_CONTROLLERFACADE_H + + + +namespace proc + { + + + /** + * 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 +#endif diff --git a/src/proc/engine/aframe.cpp b/src/proc/engine/aframe.cpp new file mode 100644 index 000000000..3993e9f8e --- /dev/null +++ b/src/proc/engine/aframe.cpp @@ -0,0 +1,38 @@ +/* + 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 proc + { + namespace engine + { + + /** */ + + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/aframe.hpp b/src/proc/engine/aframe.hpp new file mode 100644 index 000000000..366c6d2ea --- /dev/null +++ b/src/proc/engine/aframe.hpp @@ -0,0 +1,45 @@ +/* + 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 PROC_ENGINE_AFRAME_H +#define PROC_ENGINE_AFRAME_H + +#include "proc/frame.hpp" + + + +namespace proc + { + namespace engine + { + + + class AFrame : public proc::Frame + {}; + + + + } // namespace proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/arender.cpp b/src/proc/engine/arender.cpp new file mode 100644 index 000000000..e03a6cbff --- /dev/null +++ b/src/proc/engine/arender.cpp @@ -0,0 +1,38 @@ +/* + 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 proc + { + namespace engine + { + + /** */ + + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/arender.hpp b/src/proc/engine/arender.hpp new file mode 100644 index 000000000..0ab47506b --- /dev/null +++ b/src/proc/engine/arender.hpp @@ -0,0 +1,49 @@ +/* + 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 PROC_ENGINE_ARENDER_H +#define PROC_ENGINE_ARENDER_H + +#include "proc/stateproxy.hpp" + + + +namespace proc + { + namespace engine + { + + + /** + * Representation of a Audio render process + */ + class ARender : public proc::StateProxy + {}; + + + + + } // namespace proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/codecadapter.cpp b/src/proc/engine/codecadapter.cpp new file mode 100644 index 000000000..be88d0ff6 --- /dev/null +++ b/src/proc/engine/codecadapter.cpp @@ -0,0 +1,36 @@ +/* + 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 proc + { + + namespace engine + { + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/codecadapter.hpp b/src/proc/engine/codecadapter.hpp new file mode 100644 index 000000000..0618b4432 --- /dev/null +++ b/src/proc/engine/codecadapter.hpp @@ -0,0 +1,53 @@ +/* + 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 PROC_ENGINE_CODECADAPTER_H +#define PROC_ENGINE_CODECADAPTER_H + +#include "proc/engine/trafo.hpp" + + + +namespace proc + { + 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 proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/exitnode.cpp b/src/proc/engine/exitnode.cpp new file mode 100644 index 000000000..a7b996b9d --- /dev/null +++ b/src/proc/engine/exitnode.cpp @@ -0,0 +1,37 @@ +/* + 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 proc + { + namespace engine + { + + /** */ + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/exitnode.hpp b/src/proc/engine/exitnode.hpp new file mode 100644 index 000000000..b3b93b056 --- /dev/null +++ b/src/proc/engine/exitnode.hpp @@ -0,0 +1,49 @@ +/* + 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 PROC_ENGINE_EXITNODE_H +#define PROC_ENGINE_EXITNODE_H + +#include "proc/engine/procnode.hpp" + + + +namespace proc + { + namespace engine + { + + + /** + * The output end of each render pipeline. + * Pulling from such exit nodes actually ivokes the render process + */ + class ExitNode : public ProcNode + {}; + + + + } // namespace proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/glbuf.cpp b/src/proc/engine/glbuf.cpp new file mode 100644 index 000000000..c6a7b2cd3 --- /dev/null +++ b/src/proc/engine/glbuf.cpp @@ -0,0 +1,38 @@ +/* + 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 proc + { + namespace engine + { + + /** */ + + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/glbuf.hpp b/src/proc/engine/glbuf.hpp new file mode 100644 index 000000000..6acba91c2 --- /dev/null +++ b/src/proc/engine/glbuf.hpp @@ -0,0 +1,45 @@ +/* + 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 PROC_ENGINE_GLBUF_H +#define PROC_ENGINE_GLBUF_H + +#include "proc/frame.hpp" + + + +namespace proc + { + namespace engine + { + + + class GLBuf : public proc::Frame + {}; + + + + } // namespace proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/glpipe.cpp b/src/proc/engine/glpipe.cpp new file mode 100644 index 000000000..cd165d7bf --- /dev/null +++ b/src/proc/engine/glpipe.cpp @@ -0,0 +1,38 @@ +/* + 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 proc + { + namespace engine + { + + /** */ + + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/glpipe.hpp b/src/proc/engine/glpipe.hpp new file mode 100644 index 000000000..5708b785c --- /dev/null +++ b/src/proc/engine/glpipe.hpp @@ -0,0 +1,50 @@ +/* + OPENGLPIPE.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 PROC_ENGINE_OPENGLPIPE_H +#define PROC_ENGINE_OPENGLPIPE_H + +#include "proc/engine/link.hpp" + + + +namespace proc + { + 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 proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/glrender.cpp b/src/proc/engine/glrender.cpp new file mode 100644 index 000000000..310a3a329 --- /dev/null +++ b/src/proc/engine/glrender.cpp @@ -0,0 +1,37 @@ +/* + 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 proc + { + namespace engine + { + + /** */ + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/glrender.hpp b/src/proc/engine/glrender.hpp new file mode 100644 index 000000000..43957e8b6 --- /dev/null +++ b/src/proc/engine/glrender.hpp @@ -0,0 +1,48 @@ +/* + 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 PROC_ENGINE_GLRENDER_H +#define PROC_ENGINE_GLRENDER_H + +#include "proc/stateproxy.hpp" + + + +namespace proc + { + namespace engine + { + + + /** + * Representation of a OpenGL accelerated Video render process + */ + class GLRender : public StateProxy + {}; + + + + } // namespace proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/hub.cpp b/src/proc/engine/hub.cpp new file mode 100644 index 000000000..c6333f35c --- /dev/null +++ b/src/proc/engine/hub.cpp @@ -0,0 +1,38 @@ +/* + 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 proc + { + namespace engine + { + + /** */ + + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/hub.hpp b/src/proc/engine/hub.hpp new file mode 100644 index 000000000..528702996 --- /dev/null +++ b/src/proc/engine/hub.hpp @@ -0,0 +1,48 @@ +/* + 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 PROC_ENGINE_HUB_H +#define PROC_ENGINE_HUB_H + +#include "proc/engine/procnode.hpp" + + + +namespace proc + { + 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 proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/link.cpp b/src/proc/engine/link.cpp new file mode 100644 index 000000000..6bbfe65bf --- /dev/null +++ b/src/proc/engine/link.cpp @@ -0,0 +1,38 @@ +/* + 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 proc + { + namespace engine + { + + /** */ + + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/link.hpp b/src/proc/engine/link.hpp new file mode 100644 index 000000000..0fd62cc6d --- /dev/null +++ b/src/proc/engine/link.hpp @@ -0,0 +1,54 @@ +/* + PIPE.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 PROC_ENGINE_PIPE_H +#define PROC_ENGINE_PIPE_H + +#include "proc/engine/procnode.hpp" + + + +namespace proc + { + 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 proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/mask.cpp b/src/proc/engine/mask.cpp new file mode 100644 index 000000000..70292802c --- /dev/null +++ b/src/proc/engine/mask.cpp @@ -0,0 +1,38 @@ +/* + 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 proc + { + namespace engine + { + + /** */ + + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/mask.hpp b/src/proc/engine/mask.hpp new file mode 100644 index 000000000..c4ff32ff4 --- /dev/null +++ b/src/proc/engine/mask.hpp @@ -0,0 +1,46 @@ +/* + 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 PROC_ENGINE_MASK_H +#define PROC_ENGINE_MASK_H + +#include "proc/engine/trafo.hpp" + + + +namespace proc + { + namespace engine + { + + + class Mask : public Trafo + {}; + + + + + } // namespace proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/pluginadapter.cpp b/src/proc/engine/pluginadapter.cpp new file mode 100644 index 000000000..a46657fc6 --- /dev/null +++ b/src/proc/engine/pluginadapter.cpp @@ -0,0 +1,38 @@ +/* + 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 proc + { + namespace engine + { + + /** */ + + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/pluginadapter.hpp b/src/proc/engine/pluginadapter.hpp new file mode 100644 index 000000000..91ade35df --- /dev/null +++ b/src/proc/engine/pluginadapter.hpp @@ -0,0 +1,52 @@ +/* + 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 PROC_ENGINE_PLUGINADAPTER_H +#define PROC_ENGINE_PLUGINADAPTER_H + +#include "proc/engine/trafo.hpp" + + + +namespace proc + { + 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 proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/processor.cpp b/src/proc/engine/processor.cpp new file mode 100644 index 000000000..b001afa48 --- /dev/null +++ b/src/proc/engine/processor.cpp @@ -0,0 +1,40 @@ +/* + 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 proc + { + namespace engine + { + + /** */ + + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/processor.hpp b/src/proc/engine/processor.hpp new file mode 100644 index 000000000..408538020 --- /dev/null +++ b/src/proc/engine/processor.hpp @@ -0,0 +1,58 @@ +/* + 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 PROC_ENGINE_PROCESSOR_H +#define PROC_ENGINE_PROCESSOR_H + +#include "common/time.hpp" +#include "proc/stateproxy.hpp" + + + + +namespace proc + { + 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 proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/procnode.cpp b/src/proc/engine/procnode.cpp new file mode 100644 index 000000000..74457f3be --- /dev/null +++ b/src/proc/engine/procnode.cpp @@ -0,0 +1,37 @@ +/* + 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 proc + { + namespace engine + { + + + /** */ + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/procnode.hpp b/src/proc/engine/procnode.hpp new file mode 100644 index 000000000..d3bc83acd --- /dev/null +++ b/src/proc/engine/procnode.hpp @@ -0,0 +1,63 @@ +/* + 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 PROC_ENGINE_PROCNODE_H +#define PROC_ENGINE_PROCNODE_H + +#include + +#include "proc/mobject/parameter.hpp" + + +using std::vector; + + + +namespace proc + { + namespace engine + { + + + /** + * Key abstraction of the Render Engine: A Data processing Node + */ + class ProcNode + { + protected: + typedef proc::mobject::Parameter Param; + + /** The predecessor in a processing pipeline. + * I.e. a source to get data to be processed + */ + ProcNode * datasrc; + + vector params; + + }; + + + } // namespace proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/projector.cpp b/src/proc/engine/projector.cpp new file mode 100644 index 000000000..92ddee6a8 --- /dev/null +++ b/src/proc/engine/projector.cpp @@ -0,0 +1,38 @@ +/* + 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 proc + { + namespace engine + { + + /** */ + + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/projector.hpp b/src/proc/engine/projector.hpp new file mode 100644 index 000000000..bb6b0539c --- /dev/null +++ b/src/proc/engine/projector.hpp @@ -0,0 +1,50 @@ +/* + 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 PROC_ENGINE_PROJECTOR_H +#define PROC_ENGINE_PROJECTOR_H + +#include "proc/engine/trafo.hpp" + + + +namespace proc + { + namespace engine + { + + + /** + * Special video processing node used to scale and translate image data. + */ + class Projector : public Trafo + { + //////////// + }; + + + + } // namespace proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/renderengine.cpp b/src/proc/engine/renderengine.cpp new file mode 100644 index 000000000..f0809aebb --- /dev/null +++ b/src/proc/engine/renderengine.cpp @@ -0,0 +1,45 @@ +/* + 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 proc + { + namespace engine + { + + + + /** + * TODO: will probably be handled differently (see Cehteh) + */ + void + RenderEngine::play () + { + } + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/renderengine.hpp b/src/proc/engine/renderengine.hpp new file mode 100644 index 000000000..0184af4f9 --- /dev/null +++ b/src/proc/engine/renderengine.hpp @@ -0,0 +1,58 @@ +/* + 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 PROC_ENGINE_RENDERENGINE_H +#define PROC_ENGINE_RENDERENGINE_H + +#include + +#include "proc/engine/processor.hpp" + + +using std::list; + + +namespace proc + { + namespace engine + { + + + class RenderEngine : public Processor + { + public: + /** + * TODO: will probably be handled differently (see Cehteh) + */ + void play () ; + + private: + list renderSegments; + + }; + + + } // namespace proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/source.cpp b/src/proc/engine/source.cpp new file mode 100644 index 000000000..cebe3e7a5 --- /dev/null +++ b/src/proc/engine/source.cpp @@ -0,0 +1,38 @@ +/* + 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 proc + { + namespace engine + { + + /** */ + + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/source.hpp b/src/proc/engine/source.hpp new file mode 100644 index 000000000..ed659ae09 --- /dev/null +++ b/src/proc/engine/source.hpp @@ -0,0 +1,53 @@ +/* + 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 PROC_ENGINE_SOURCE_H +#define PROC_ENGINE_SOURCE_H + +#include "proc/engine/procnode.hpp" + + + +namespace proc + { + 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 proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/trafo.cpp b/src/proc/engine/trafo.cpp new file mode 100644 index 000000000..934583974 --- /dev/null +++ b/src/proc/engine/trafo.cpp @@ -0,0 +1,37 @@ +/* + 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 proc + { + namespace engine + { + + /** */ + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/trafo.hpp b/src/proc/engine/trafo.hpp new file mode 100644 index 000000000..8befa1b1c --- /dev/null +++ b/src/proc/engine/trafo.hpp @@ -0,0 +1,55 @@ +/* + 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 PROC_ENGINE_TRAFO_H +#define PROC_ENGINE_TRAFO_H + +#include "proc/engine/procnode.hpp" + + + +namespace proc + { + 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 proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/vframe.cpp b/src/proc/engine/vframe.cpp new file mode 100644 index 000000000..1e9d22139 --- /dev/null +++ b/src/proc/engine/vframe.cpp @@ -0,0 +1,38 @@ +/* + 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 proc + { + + namespace engine + { + + /** */ + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/vframe.hpp b/src/proc/engine/vframe.hpp new file mode 100644 index 000000000..2496397bd --- /dev/null +++ b/src/proc/engine/vframe.hpp @@ -0,0 +1,47 @@ +/* + 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 PROC_ENGINE_VFRAME_H +#define PROC_ENGINE_VFRAME_H + +#include "proc/frame.hpp" + + + +namespace proc + { + namespace engine + { + + + class VFrame : public proc::Frame + { + /////////////////////// + }; + + + + } // namespace proc::engine + +} // namespace proc +#endif diff --git a/src/proc/engine/vrender.cpp b/src/proc/engine/vrender.cpp new file mode 100644 index 000000000..bd29cd1cc --- /dev/null +++ b/src/proc/engine/vrender.cpp @@ -0,0 +1,37 @@ +/* + 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 proc + { + namespace engine + { + + /** */ + + + + } // namespace proc::engine + +} // namespace proc diff --git a/src/proc/engine/vrender.hpp b/src/proc/engine/vrender.hpp new file mode 100644 index 000000000..19037ed79 --- /dev/null +++ b/src/proc/engine/vrender.hpp @@ -0,0 +1,51 @@ +/* + 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 PROC_ENGINE_VRENDER_H +#define PROC_ENGINE_VRENDER_H + +#include "proc/stateproxy.hpp" + + + +namespace proc + { + namespace engine + { + + + /** + * Representation of a Video render process. + * (Encapsulates the video buffers for the actual calculations) + */ + class VRender : public proc::StateProxy + { + ///////////// + }; + + + + } // namespace proc::engine + +} // namespace proc +#endif diff --git a/src/proc/frame.cpp b/src/proc/frame.cpp new file mode 100644 index 000000000..9df36467b --- /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 + { + + /** */ + + + +} // namespace proc diff --git a/src/proc/frame.hpp b/src/proc/frame.hpp new file mode 100644 index 000000000..ad453eba0 --- /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_FRAME_H +#define PROC_FRAME_H + + + +namespace proc + { + + + /** + * 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 +#endif diff --git a/src/proc/mobject/buildable.cpp b/src/proc/mobject/buildable.cpp new file mode 100644 index 000000000..9379d1799 --- /dev/null +++ b/src/proc/mobject/buildable.cpp @@ -0,0 +1,47 @@ +/* + 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 proc + { + 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 proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/buildable.hpp b/src/proc/mobject/buildable.hpp new file mode 100644 index 000000000..c0f16ef15 --- /dev/null +++ b/src/proc/mobject/buildable.hpp @@ -0,0 +1,55 @@ +/* + 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 PROC_MOBJECT_BUILDABLE_H +#define PROC_MOBJECT_BUILDABLE_H + + + + +namespace proc + { + 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 proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/builder/assembler.cpp b/src/proc/mobject/builder/assembler.cpp new file mode 100644 index 000000000..04df4ce83 --- /dev/null +++ b/src/proc/mobject/builder/assembler.cpp @@ -0,0 +1,47 @@ +/* + 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 proc + { + namespace mobject + { + namespace builder + { + + + + proc::engine::RenderEngine & + Assembler::build () + { + } + + + + + } // namespace proc::mobject::builder + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/builder/assembler.hpp b/src/proc/mobject/builder/assembler.hpp new file mode 100644 index 000000000..df2028439 --- /dev/null +++ b/src/proc/mobject/builder/assembler.hpp @@ -0,0 +1,58 @@ +/* + 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 PROC_MOBJECT_BUILDER_ASSEMBLER_H +#define PROC_MOBJECT_BUILDER_ASSEMBLER_H + +#include "proc/engine/renderengine.hpp" + + + +namespace proc + { + 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: + proc::engine::RenderEngine & build () ; + // TODO: allocation, GC??? + }; + + + + } // namespace proc::mobject::builder + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/builder/conmanager.cpp b/src/proc/mobject/builder/conmanager.cpp new file mode 100644 index 000000000..8232affff --- /dev/null +++ b/src/proc/mobject/builder/conmanager.cpp @@ -0,0 +1,49 @@ +/* + 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 proc + { + namespace mobject + { + namespace builder + { + + + + /** + * TODO !!!!!!!!!!!!!!!!!! + */ + int + ConManager::getConnection () + { + } + + + + } // namespace proc::mobject::builder + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/builder/conmanager.hpp b/src/proc/mobject/builder/conmanager.hpp new file mode 100644 index 000000000..0e9a3fc72 --- /dev/null +++ b/src/proc/mobject/builder/conmanager.hpp @@ -0,0 +1,59 @@ +/* + 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 PROC_MOBJECT_BUILDER_CONMANAGER_H +#define PROC_MOBJECT_BUILDER_CONMANAGER_H + + + +namespace proc + { + 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 proc::mobject::builder + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/builder/nodecreatertool.cpp b/src/proc/mobject/builder/nodecreatertool.cpp new file mode 100644 index 000000000..62f3681b2 --- /dev/null +++ b/src/proc/mobject/builder/nodecreatertool.cpp @@ -0,0 +1,74 @@ +/* + 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 proc::mobject::Buildable; +using proc::mobject::session::Clip; +using proc::mobject::session::Effect; +using proc::mobject::session::Auto; + +namespace proc + { + 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 proc::mobject::builder + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/builder/nodecreatertool.hpp b/src/proc/mobject/builder/nodecreatertool.hpp new file mode 100644 index 000000000..2ae3eec70 --- /dev/null +++ b/src/proc/mobject/builder/nodecreatertool.hpp @@ -0,0 +1,82 @@ +/* + 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 PROC_MOBJECT_BUILDER_NODECREATERTOOL_H +#define PROC_MOBJECT_BUILDER_NODECREATERTOOL_H + +#include "proc/mobject/builder/tool.hpp" +#include "proc/mobject/buildable.hpp" +#include "proc/engine/processor.hpp" + + + +namespace proc + { + 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 (proc::mobject::session::Clip& clip) ; + virtual void treat (proc::mobject::session::Effect& effect) ; + virtual void treat (proc::mobject::session::Auto& automation) ; //TODO: the automation-type-problem + virtual void treat (proc::mobject::Buildable& something) ; + + + protected: + /** holds the Processor (Render Engine Element) + * to be built by the current build step + */ + proc::engine::Processor* proc; + + }; + + + + } // namespace proc::mobject::builder + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/builder/segmentationtool.cpp b/src/proc/mobject/builder/segmentationtool.cpp new file mode 100644 index 000000000..4a7b25951 --- /dev/null +++ b/src/proc/mobject/builder/segmentationtool.cpp @@ -0,0 +1,67 @@ +/* + 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 proc::mobject::Buildable; +using proc::mobject::session::Clip; +using proc::mobject::session::Effect; + + +namespace proc + { + namespace mobject + { + namespace builder + { + + + + void + SegmentationTool::treat (Buildable& something) + { + } + + + void + SegmentationTool::treat (Clip& clip) + { + } + + + void + SegmentationTool::treat (Effect& effect) + { + } + + + + } // namespace proc::mobject::builder + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/builder/segmentationtool.hpp b/src/proc/mobject/builder/segmentationtool.hpp new file mode 100644 index 000000000..7e222c24a --- /dev/null +++ b/src/proc/mobject/builder/segmentationtool.hpp @@ -0,0 +1,83 @@ +/* + 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 PROC_MOBJECT_BUILDER_SEGMENTATIONTOOL_H +#define PROC_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 proc + { + 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 (proc::mobject::session::Clip& clip) ; + void treat (proc::mobject::session::Effect& effect) ; + + void treat (proc::mobject::Buildable& something) ; + + protected: + typedef proc::mobject::session::Segment Segment; + + /** Partitioning of the Timeline to be created by this tool. */ + list segments; + // TODO handle alloc!!!! + + }; + + + + } // namespace proc::mobject::builder + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/builder/tool.cpp b/src/proc/mobject/builder/tool.cpp new file mode 100644 index 000000000..5861e8814 --- /dev/null +++ b/src/proc/mobject/builder/tool.cpp @@ -0,0 +1,44 @@ +/* + 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 proc + { + namespace mobject + { + namespace builder + { + + + + /** */ + + + + } // namespace proc::mobject::builder + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/builder/tool.hpp b/src/proc/mobject/builder/tool.hpp new file mode 100644 index 000000000..f8ec88452 --- /dev/null +++ b/src/proc/mobject/builder/tool.hpp @@ -0,0 +1,61 @@ +/* + 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 PROC_MOBJECT_BUILDER_TOOL_H +#define PROC_MOBJECT_BUILDER_TOOL_H + +#include "proc/mobject/buildable.hpp" + + + +namespace proc + { + 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 proc::mobject::Buildable Buildable; + + public: + /** This operation is to be overloaded for specific MObject subclasses to be treated. + */ + virtual void treat (Buildable& mElement) = 0; + }; + + + + } // namespace proc::mobject::builder + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/builder/toolfactory.cpp b/src/proc/mobject/builder/toolfactory.cpp new file mode 100644 index 000000000..3e28f372a --- /dev/null +++ b/src/proc/mobject/builder/toolfactory.cpp @@ -0,0 +1,46 @@ +/* + 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 proc + { + namespace mobject + { + namespace builder + { + + + + Tool& + ToolFactory::configure () + { + } + + + + } // namespace proc::mobject::builder + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/builder/toolfactory.hpp b/src/proc/mobject/builder/toolfactory.hpp new file mode 100644 index 000000000..5b357341c --- /dev/null +++ b/src/proc/mobject/builder/toolfactory.hpp @@ -0,0 +1,52 @@ +/* + 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 PROC_MOBJECT_BUILDER_TOOLFACTORY_H +#define PROC_MOBJECT_BUILDER_TOOLFACTORY_H + +#include "proc/mobject/builder/tool.hpp" + + + +namespace proc + { + namespace mobject + { + namespace builder + { + + + class ToolFactory + { + public: + Tool & configure () ; + }; + + + + } // namespace proc::mobject::builder + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/builderfacade.cpp b/src/proc/mobject/builderfacade.cpp new file mode 100644 index 000000000..473ae2301 --- /dev/null +++ b/src/proc/mobject/builderfacade.cpp @@ -0,0 +1,46 @@ +/* + 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 proc + { + namespace mobject + { + + + /** + * Main Operation of the Builder: + * create a render engine for a given part of the timeline + */ + proc::engine::RenderEngine & + BuilderFacade::buildEngine () + { + //////////////////////TODO + } + + + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/builderfacade.hpp b/src/proc/mobject/builderfacade.hpp new file mode 100644 index 000000000..e1e04d82e --- /dev/null +++ b/src/proc/mobject/builderfacade.hpp @@ -0,0 +1,59 @@ +/* + 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 PROC_MOBJECT_BUILDERFACADE_H +#define PROC_MOBJECT_BUILDERFACADE_H + +#include "proc/engine/renderengine.hpp" + + + +namespace proc + { + 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 + */ + proc::engine::RenderEngine & buildEngine () ; + // TODO: allocation, GC?????? + }; + + + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/controller/pathmanager.cpp b/src/proc/mobject/controller/pathmanager.cpp new file mode 100644 index 000000000..f7cb5841b --- /dev/null +++ b/src/proc/mobject/controller/pathmanager.cpp @@ -0,0 +1,47 @@ +/* + 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 proc + { + namespace mobject + { + namespace controller + { + + + + proc::engine::Processor * + PathManager::buildProcessor () + { + return 0;//////////////////TODO + } + + + + } // namespace proc::mobject::controller + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/controller/pathmanager.hpp b/src/proc/mobject/controller/pathmanager.hpp new file mode 100644 index 000000000..8005c9d14 --- /dev/null +++ b/src/proc/mobject/controller/pathmanager.hpp @@ -0,0 +1,58 @@ +/* + 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 PROC_MOBJECT_CONTROLLER_PATHMANAGER_H +#define PROC_MOBJECT_CONTROLLER_PATHMANAGER_H + +#include "proc/engine/processor.hpp" + + + +namespace proc + { + 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: + proc::engine::Processor* buildProcessor () ; + // TODO: allocation, GC?? + }; + + + + } // namespace proc::mobject::controller + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/controller/renderstate.cpp b/src/proc/mobject/controller/renderstate.cpp new file mode 100644 index 000000000..5a64eb14b --- /dev/null +++ b/src/proc/mobject/controller/renderstate.cpp @@ -0,0 +1,47 @@ +/* + 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 proc + { + namespace mobject + { + namespace controller + { + + + + StateProxy& + RenderState::getStateProxy () + { + //////////////TODO + } + + + + } // namespace proc::mobject::controller + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/controller/renderstate.hpp b/src/proc/mobject/controller/renderstate.hpp new file mode 100644 index 000000000..68fbe729e --- /dev/null +++ b/src/proc/mobject/controller/renderstate.hpp @@ -0,0 +1,59 @@ +/* + 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 PROC_MOBJECT_CONTROLLER_RENDERSTATE_H +#define PROC_MOBJECT_CONTROLLER_RENDERSTATE_H + +#include "proc/stateproxy.hpp" + + + +namespace proc + { + namespace mobject + { + namespace controller + { + + + /** + * 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 proc::mobject::controller + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/explicitplacement.cpp b/src/proc/mobject/explicitplacement.cpp new file mode 100644 index 000000000..7bc1a60c5 --- /dev/null +++ b/src/proc/mobject/explicitplacement.cpp @@ -0,0 +1,37 @@ +/* + 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 proc + { + namespace mobject + { + + /** */ + + + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/explicitplacement.hpp b/src/proc/mobject/explicitplacement.hpp new file mode 100644 index 000000000..58b01a802 --- /dev/null +++ b/src/proc/mobject/explicitplacement.hpp @@ -0,0 +1,55 @@ +/* + 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 PROC_MOBJECT_EXPLICITPLACEMENT_H +#define PROC_MOBJECT_EXPLICITPLACEMENT_H + +#include "proc/mobject/placement.hpp" + + + +namespace proc + { + namespace mobject + { + + namespace session{ class Track; } + + + // TODO: need Garbage Collector for this class!!!!! + + class ExplicitPlacement : public Placement + { + protected: + + Time time; + Track* track; + + }; + + + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/interpolator.cpp b/src/proc/mobject/interpolator.cpp new file mode 100644 index 000000000..a69cb7398 --- /dev/null +++ b/src/proc/mobject/interpolator.cpp @@ -0,0 +1,37 @@ +/* + 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 proc + { + namespace mobject + { + + /** */ + + + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/interpolator.hpp b/src/proc/mobject/interpolator.hpp new file mode 100644 index 000000000..e9e19fef2 --- /dev/null +++ b/src/proc/mobject/interpolator.hpp @@ -0,0 +1,50 @@ +/* + 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 PROC_MOBJECT_INTERPOLATOR_H +#define PROC_MOBJECT_INTERPOLATOR_H + + + +namespace proc + { + namespace mobject + { + + + /** + * Provides the implementation for getting the acutal value + * of a time varying or automated effect/plugin parameter + */ + template + class Interpolator + { + /////////////// + }; + + + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/mobject.cpp b/src/proc/mobject/mobject.cpp new file mode 100644 index 000000000..0cfe2213d --- /dev/null +++ b/src/proc/mobject/mobject.cpp @@ -0,0 +1,37 @@ +/* + 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 proc + { + namespace mobject + { + + /** */ + + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/mobject.hpp b/src/proc/mobject/mobject.hpp new file mode 100644 index 000000000..2d5c5e2de --- /dev/null +++ b/src/proc/mobject/mobject.hpp @@ -0,0 +1,67 @@ +/* + 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 PROC_MOBJECT_MOBJECT_H +#define PROC_MOBJECT_MOBJECT_H + +#include + +#include "common/time.hpp" +#include "proc/mobject/buildable.hpp" + + +using std::list; + + +namespace proc + { + 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 proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/parameter.cpp b/src/proc/mobject/parameter.cpp new file mode 100644 index 000000000..97c46f9ac --- /dev/null +++ b/src/proc/mobject/parameter.cpp @@ -0,0 +1,43 @@ +/* + 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 proc + { + namespace mobject + { + + template + VAL + Parameter::getValue () + { + ////////////TODO + } + + + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/parameter.hpp b/src/proc/mobject/parameter.hpp new file mode 100644 index 000000000..c5fafd72b --- /dev/null +++ b/src/proc/mobject/parameter.hpp @@ -0,0 +1,59 @@ +/* + 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 PROC_MOBJECT_PARAMETER_H +#define PROC_MOBJECT_PARAMETER_H + + + + +namespace proc + { + 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 proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/paramprovider.cpp b/src/proc/mobject/paramprovider.cpp new file mode 100644 index 000000000..cf9c91e9b --- /dev/null +++ b/src/proc/mobject/paramprovider.cpp @@ -0,0 +1,44 @@ +/* + 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 proc + { + namespace mobject + { + + + template + VAL + ParamProvider::getValue () + { + } + + + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/paramprovider.hpp b/src/proc/mobject/paramprovider.hpp new file mode 100644 index 000000000..79a3b7ddd --- /dev/null +++ b/src/proc/mobject/paramprovider.hpp @@ -0,0 +1,59 @@ +/* + 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 PROC_MOBJECT_PARAMPROVIDER_H +#define PROC_MOBJECT_PARAMPROVIDER_H + + + +namespace proc + { + 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 proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/placement.cpp b/src/proc/mobject/placement.cpp new file mode 100644 index 000000000..46a928f9e --- /dev/null +++ b/src/proc/mobject/placement.cpp @@ -0,0 +1,47 @@ +/* + 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 proc + { + 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 proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/placement.hpp b/src/proc/mobject/placement.hpp new file mode 100644 index 000000000..7a10fd164 --- /dev/null +++ b/src/proc/mobject/placement.hpp @@ -0,0 +1,61 @@ +/* + 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 PROC_MOBJECT_PLACEMENT_H +#define PROC_MOBJECT_PLACEMENT_H + +#include "proc/mobject/mobject.hpp" +#include "proc/mobject/session/track.hpp" + + +namespace proc + { + namespace mobject + { + + + class ExplicitPlacement; + + + class Placement + { + protected: + typedef cinelerra::Time Time; + typedef proc::mobject::session::Track Track; + + MObject* subject; + + + public: + /** resolve the network of placement and + * provide the resulting (explicit) placement. + */ + ExplicitPlacement& resolve () ; + }; + + + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/session/abstractmo.cpp b/src/proc/mobject/session/abstractmo.cpp new file mode 100644 index 000000000..338e1fa70 --- /dev/null +++ b/src/proc/mobject/session/abstractmo.cpp @@ -0,0 +1,41 @@ +/* + 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 proc + { + namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/session/abstractmo.hpp b/src/proc/mobject/session/abstractmo.hpp new file mode 100644 index 000000000..bf610f8ba --- /dev/null +++ b/src/proc/mobject/session/abstractmo.hpp @@ -0,0 +1,51 @@ +/* + 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 PROC_MOBJECT_SESSION_ABSTRACTMO_H +#define PROC_MOBJECT_SESSION_ABSTRACTMO_H + +#include "proc/mobject/mobject.hpp" + + + +namespace proc + { + namespace mobject + { + namespace session + { + + + class AbstractMO : public MObject + { + ////////////// TODO: work out common services to provide!!!! + }; + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/session/allocation.cpp b/src/proc/mobject/session/allocation.cpp new file mode 100644 index 000000000..a4bd6c047 --- /dev/null +++ b/src/proc/mobject/session/allocation.cpp @@ -0,0 +1,41 @@ +/* + 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 proc + { + namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/session/allocation.hpp b/src/proc/mobject/session/allocation.hpp new file mode 100644 index 000000000..2eab5b59e --- /dev/null +++ b/src/proc/mobject/session/allocation.hpp @@ -0,0 +1,66 @@ +/* + 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 PROC_MOBJECT_SESSION_ALLOCATION_H +#define PROC_MOBJECT_SESSION_ALLOCATION_H + +#include + +#include "proc/mobject/placement.hpp" + + +using std::string; + + +namespace proc + { + 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 proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/session/auto.cpp b/src/proc/mobject/session/auto.cpp new file mode 100644 index 000000000..88d3dbedc --- /dev/null +++ b/src/proc/mobject/session/auto.cpp @@ -0,0 +1,48 @@ +/* + 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 proc + { + namespace mobject + { + namespace session + { + + + template + VAL + Auto::getValue () + { + return 0; //////////////TODO + } + + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/session/auto.hpp b/src/proc/mobject/session/auto.hpp new file mode 100644 index 000000000..8510374d2 --- /dev/null +++ b/src/proc/mobject/session/auto.hpp @@ -0,0 +1,58 @@ +/* + 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 PROC_MOBJECT_SESSION_AUTO_H +#define PROC_MOBJECT_SESSION_AUTO_H + +#include "proc/mobject/session/meta.hpp" +#include "proc/mobject/paramprovider.hpp" + + + +namespace proc + { + 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 proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/session/clip.cpp b/src/proc/mobject/session/clip.cpp new file mode 100644 index 000000000..e0f78510d --- /dev/null +++ b/src/proc/mobject/session/clip.cpp @@ -0,0 +1,41 @@ +/* + 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 proc + { + namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/session/clip.hpp b/src/proc/mobject/session/clip.hpp new file mode 100644 index 000000000..f913ac716 --- /dev/null +++ b/src/proc/mobject/session/clip.hpp @@ -0,0 +1,68 @@ +/* + 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 PROC_MOBJECT_SESSION_CLIP_H +#define PROC_MOBJECT_SESSION_CLIP_H + +#include "proc/mobject/session/abstractmo.hpp" + + + +namespace proc + { + 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 proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/session/edl.cpp b/src/proc/mobject/session/edl.cpp new file mode 100644 index 000000000..9a868d7e7 --- /dev/null +++ b/src/proc/mobject/session/edl.cpp @@ -0,0 +1,43 @@ +/* + 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 proc + { + namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/session/edl.hpp b/src/proc/mobject/session/edl.hpp new file mode 100644 index 000000000..00cf588b7 --- /dev/null +++ b/src/proc/mobject/session/edl.hpp @@ -0,0 +1,59 @@ +/* + 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 PROC_MOBJECT_SESSION_EDL_H +#define PROC_MOBJECT_SESSION_EDL_H + +#include + +#include "proc/mobject/mobject.hpp" +#include "proc/mobject/session/track.hpp" + + +using std::list; + + +namespace proc + { + namespace mobject + { + namespace session + { + + + class EDL + { + protected: + list tracks; + list clips; + + }; + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/session/effect.cpp b/src/proc/mobject/session/effect.cpp new file mode 100644 index 000000000..e03537611 --- /dev/null +++ b/src/proc/mobject/session/effect.cpp @@ -0,0 +1,41 @@ +/* + 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 proc + { + namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/session/effect.hpp b/src/proc/mobject/session/effect.hpp new file mode 100644 index 000000000..56ef08a59 --- /dev/null +++ b/src/proc/mobject/session/effect.hpp @@ -0,0 +1,58 @@ +/* + 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 PROC_MOBJECT_SESSION_EFFECT_H +#define PROC_MOBJECT_SESSION_EFFECT_H + +#include + +#include "proc/mobject/session/abstractmo.hpp" + + +using std::string; + + +namespace proc + { + namespace mobject + { + namespace session + { + + + class Effect : public AbstractMO + { + protected: + /** Identifier of the Plugin to be used */ + string plugID; + + }; + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/session/fixedplacement.cpp b/src/proc/mobject/session/fixedplacement.cpp new file mode 100644 index 000000000..5986b9cf1 --- /dev/null +++ b/src/proc/mobject/session/fixedplacement.cpp @@ -0,0 +1,41 @@ +/* + ${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 proc + { + namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/session/fixedplacement.hpp b/src/proc/mobject/session/fixedplacement.hpp new file mode 100644 index 000000000..2dbdf6e2e --- /dev/null +++ b/src/proc/mobject/session/fixedplacement.hpp @@ -0,0 +1,53 @@ +/* + 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 PROC_MOBJECT_SESSION_FIXEDPLACEMENT_H +#define PROC_MOBJECT_SESSION_FIXEDPLACEMENT_H + +#include "proc/mobject/placement.hpp" +#include "proc/mobject/explicitplacement.hpp" + + + +namespace proc + { + namespace mobject + { + namespace session + { + + // TODO: didn't we plan to rename ExplicitPlacement to DirectPlacement?? + + class DirectPlacement : public ExplicitPlacement + { + /////////// + }; + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/session/fixture.cpp b/src/proc/mobject/session/fixture.cpp new file mode 100644 index 000000000..c6cf2669d --- /dev/null +++ b/src/proc/mobject/session/fixture.cpp @@ -0,0 +1,57 @@ +/* + 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 proc + { + 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 proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/session/fixture.hpp b/src/proc/mobject/session/fixture.hpp new file mode 100644 index 000000000..9425dce7c --- /dev/null +++ b/src/proc/mobject/session/fixture.hpp @@ -0,0 +1,66 @@ +/* + 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 PROC_MOBJECT_SESSION_FIXTURE_H +#define PROC_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 proc + { + 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 proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/session/label.cpp b/src/proc/mobject/session/label.cpp new file mode 100644 index 000000000..fb969a00c --- /dev/null +++ b/src/proc/mobject/session/label.cpp @@ -0,0 +1,41 @@ +/* + 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 proc + { + namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/session/label.hpp b/src/proc/mobject/session/label.hpp new file mode 100644 index 000000000..1e9e5915b --- /dev/null +++ b/src/proc/mobject/session/label.hpp @@ -0,0 +1,56 @@ +/* + 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 PROC_MOBJECT_SESSION_LABEL_H +#define PROC_MOBJECT_SESSION_LABEL_H + +#include "proc/mobject/session/meta.hpp" + + + +namespace proc + { + 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 proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/session/meta.cpp b/src/proc/mobject/session/meta.cpp new file mode 100644 index 000000000..91ff85e38 --- /dev/null +++ b/src/proc/mobject/session/meta.cpp @@ -0,0 +1,41 @@ +/* + 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 proc + { + namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/session/meta.hpp b/src/proc/mobject/session/meta.hpp new file mode 100644 index 000000000..dc6f38414 --- /dev/null +++ b/src/proc/mobject/session/meta.hpp @@ -0,0 +1,57 @@ +/* + 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 PROC_MOBJECT_SESSION_META_H +#define PROC_MOBJECT_SESSION_META_H + +#include "proc/mobject/session/abstractmo.hpp" + + + +namespace proc + { + 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 proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/session/relativeplacement.cpp b/src/proc/mobject/session/relativeplacement.cpp new file mode 100644 index 000000000..1ad7aefd2 --- /dev/null +++ b/src/proc/mobject/session/relativeplacement.cpp @@ -0,0 +1,40 @@ +/* + 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 proc + { + namespace mobject + { + namespace session + { + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/session/relativeplacement.hpp b/src/proc/mobject/session/relativeplacement.hpp new file mode 100644 index 000000000..67a898454 --- /dev/null +++ b/src/proc/mobject/session/relativeplacement.hpp @@ -0,0 +1,73 @@ +/* + 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 PROC_MOBJECT_SESSION_RELATIVEPLACEMENT_H +#define PROC_MOBJECT_SESSION_RELATIVEPLACEMENT_H + +#include "proc/mobject/placement.hpp" +#include "common/time.hpp" + + + + +namespace proc + { + namespace mobject + { + namespace session + { + + + + class RelativePlacement : public proc::mobject::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 proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/session/segment.cpp b/src/proc/mobject/session/segment.cpp new file mode 100644 index 000000000..73c149f50 --- /dev/null +++ b/src/proc/mobject/session/segment.cpp @@ -0,0 +1,48 @@ +/* + 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 proc + { + namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/session/segment.hpp b/src/proc/mobject/session/segment.hpp new file mode 100644 index 000000000..8edd75882 --- /dev/null +++ b/src/proc/mobject/session/segment.hpp @@ -0,0 +1,74 @@ +/* + 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 PROC_MOBJECT_SESSION_SEGMENT_H +#define PROC_MOBJECT_SESSION_SEGMENT_H + +#include + +#include "common/time.hpp" +#include "proc/mobject/explicitplacement.hpp" + + +using std::list; + + +namespace proc + { + 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 proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/session/session.cpp b/src/proc/mobject/session/session.cpp new file mode 100644 index 000000000..5154b6de2 --- /dev/null +++ b/src/proc/mobject/session/session.cpp @@ -0,0 +1,43 @@ +/* + 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 proc + { + namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/session/session.hpp b/src/proc/mobject/session/session.hpp new file mode 100644 index 000000000..5c661d32f --- /dev/null +++ b/src/proc/mobject/session/session.hpp @@ -0,0 +1,62 @@ +/* + 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 PROC_MOBJECT_SESSION_SESSION_H +#define PROC_MOBJECT_SESSION_SESSION_H + + + +namespace proc + { + 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 proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/mobject/session/track.cpp b/src/proc/mobject/session/track.cpp new file mode 100644 index 000000000..4d618cc1d --- /dev/null +++ b/src/proc/mobject/session/track.cpp @@ -0,0 +1,41 @@ +/* + 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 proc + { + namespace mobject + { + namespace session + { + + /** */ + + + + } // namespace proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc diff --git a/src/proc/mobject/session/track.hpp b/src/proc/mobject/session/track.hpp new file mode 100644 index 000000000..7778bb491 --- /dev/null +++ b/src/proc/mobject/session/track.hpp @@ -0,0 +1,59 @@ +/* + 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 PROC_MOBJECT_SESSION_TRACK_H +#define PROC_MOBJECT_SESSION_TRACK_H + + + +namespace proc + { + 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 proc::mobject::session + + } // namespace proc::mobject + +} // namespace proc +#endif diff --git a/src/proc/stateproxy.cpp b/src/proc/stateproxy.cpp new file mode 100644 index 000000000..a7703e8ab --- /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 + { + + /** */ + + + +} // namespace proc diff --git a/src/proc/stateproxy.hpp b/src/proc/stateproxy.hpp new file mode 100644 index 000000000..1e6a861cd --- /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_STATEPROXY_H +#define PROC_STATEPROXY_H + +#include "proc/frame.hpp" + + + +namespace proc + { + + + class StateProxy + { + protected: + Frame * currFrame; + + }; + + + +} // namespace proc +#endif diff --git a/uml/cinelerra3/128261 b/uml/cinelerra3/128261 index ec763bb85..c3e6e1c4e 100644 --- a/uml/cinelerra3/128261 +++ b/uml/cinelerra3/128261 @@ -1,6 +1,6 @@ format 40 "MObject" // ProcessingLayer::MObject - revision 15 + revision 16 modified_by 5 "hiv" // class settings //class diagram settings @@ -181,6 +181,46 @@ ${class}::${name} ${(}${)}${const}${volatile} ${throw}${staticnl} 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} @@ -210,13 +250,12 @@ ${members}}; explicit_switch_type "" attribute 128517 "length" - protected explicit_type "long" - init_value "0" + 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?" + comment "TODO: how to represent time intervals?" end classrelation 129029 // placement () @@ -327,46 +366,6 @@ ${members}}; 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 128773 "AbstractMO" abstract visibility package cpp_decl "${comment}${template}class ${name}${inherit} diff --git a/uml/cinelerra3/128645 b/uml/cinelerra3/128645 index 01824e089..92ee080bb 100644 --- a/uml/cinelerra3/128645 +++ b/uml/cinelerra3/128645 @@ -1,6 +1,6 @@ format 40 "codegen" // design::codegen - revision 15 + revision 16 modified_by 5 "hiv" // class settings //class diagram settings @@ -26,7 +26,6 @@ format 40 package_name_in_tab default show_context default show_opaque_action_definition default auto_label_position default write_flow_label_horizontally default draw_all_relations default shadow default show_infonote default drawing_language default - cpp_namespace "cinelerra" comment "This package is used to organize code generation by BOUML. It is considered useless after having generated the initial code skeleton." deploymentview 128133 "EXE Deployment" //deployment diagram settings @@ -43,57 +42,57 @@ format 40 artifact 128005 "Cinelerra3" stereotype "executable" associated_artifacts - artifact_ref 128261 // mobject - artifact_ref 130437 // builderfacade - artifact_ref 128133 // main - 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 133765 // frame - artifact_ref 130053 // allocation - artifact_ref 134021 // vframe - artifact_ref 130309 // auto - artifact_ref 132869 // projector - artifact_ref 130181 // label - artifact_ref 132997 // mask - artifact_ref 133893 // aframe - artifact_ref 133125 // pluginadapter - artifact_ref 128645 // edl - artifact_ref 132357 // procnode - artifact_ref 130693 // conmanager - artifact_ref 133637 // glrender - artifact_ref 131717 // pathmanager - artifact_ref 128773 // fixture - 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 129541 // effect - 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 129797 // fixedplacement + artifact_ref 133765 // frame + artifact_ref 130821 // assembler + artifact_ref 133637 // glrender + artifact_ref 134149 // glbuf + artifact_ref 131205 // tool + artifact_ref 133893 // aframe + artifact_ref 131845 // renderstate artifact_ref 130949 // stateproxy + artifact_ref 132229 // exitnode + artifact_ref 134021 // vframe + artifact_ref 133381 // arender + artifact_ref 128773 // fixture + artifact_ref 128901 // track + artifact_ref 128261 // mobject + artifact_ref 134661 // interpolator + artifact_ref 128645 // edl + artifact_ref 134405 // parameter + artifact_ref 130565 // toolfactory + artifact_ref 132869 // projector + artifact_ref 133253 // openglpipe + artifact_ref 129669 // meta + artifact_ref 131077 // buildable + artifact_ref 131461 // nodecreatertool + artifact_ref 130693 // conmanager + artifact_ref 129925 // relativeplacement + artifact_ref 129541 // effect + artifact_ref 132997 // mask + artifact_ref 128133 // main + artifact_ref 132101 // processor + artifact_ref 131333 // segmentationtool + artifact_ref 130053 // allocation + artifact_ref 130437 // builderfacade + artifact_ref 131589 // controllerfacade + artifact_ref 131717 // pathmanager + artifact_ref 133509 // vrender + artifact_ref 128517 // session + artifact_ref 133125 // pluginadapter + artifact_ref 132613 // pipe artifact_ref 134277 // source + artifact_ref 129029 // placement + artifact_ref 130309 // auto + artifact_ref 131973 // renderengine + artifact_ref 132741 // hub + artifact_ref 132485 // trafo + artifact_ref 129157 // explicitplacement + artifact_ref 132357 // procnode + artifact_ref 129285 // abstractmo + artifact_ref 134533 // paramprovider + artifact_ref 130181 // label end comment "the main executable to be built" simplerelation 128517 diff --git a/uml/cinelerra3/129413 b/uml/cinelerra3/129413 index d01d39cda..e8dca4ded 100644 --- a/uml/cinelerra3/129413 +++ b/uml/cinelerra3/129413 @@ -1,6 +1,6 @@ format 40 "common" // design::codegen::common - revision 10 + revision 11 modified_by 5 "hiv" // class settings //class diagram settings @@ -29,7 +29,7 @@ format 40 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 @@ -77,6 +77,5 @@ ${namespace_end}" 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 80fcf77a4..a753b18fa 100644 --- a/uml/cinelerra3/129669 +++ b/uml/cinelerra3/129669 @@ -1,6 +1,6 @@ -format 38 +format 40 "proc" // design::codegen::proc - 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/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/130181 b/uml/cinelerra3/130181 index 38db66fa2..982375a30 100644 --- a/uml/cinelerra3/130181 +++ b/uml/cinelerra3/130181 @@ -1,6 +1,6 @@ -format 38 +format 40 "mobject" // design::codegen::proc::mobject - 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 @@ -29,7 +29,7 @@ format 38 stereotype "src" cpp_h_dir "proc/mobject" cpp_src_dir "proc/mobject" - cpp_namespace "mobject" + cpp_namespace "proc::mobject" comment "sourcecode package MObject Subsystem diff --git a/uml/cinelerra3/130309 b/uml/cinelerra3/130309 index 2d0b36dc5..25cc7e26a 100644 --- a/uml/cinelerra3/130309 +++ b/uml/cinelerra3/130309 @@ -1,6 +1,6 @@ format 40 "engine" // design::codegen::proc::engine - revision 5 + revision 7 modified_by 5 "hiv" // class settings //class diagram settings @@ -29,7 +29,7 @@ format 40 stereotype "src" cpp_h_dir "proc/engine" cpp_src_dir "proc/engine" - cpp_namespace "engine" + cpp_namespace "proc::engine" comment "sourcecode package The Core Render Engine" @@ -177,7 +177,7 @@ ${namespace_end} #endif " cpp_src "/* - ${Name} - ${description} + ${NAME} - ${description} @{CopyrightClaim}@{GPLHeader} * *****************************************************/ @@ -233,7 +233,7 @@ ${namespace_end}" comment "transforming processing Node " end - artifact 132613 "pipe" + artifact 132613 "link" stereotype "source" cpp_h "/* ${NAME}.hpp - ${description} @@ -467,7 +467,7 @@ ${namespace_end}" comment "Processing Node for (de)coding media data" end - artifact 133253 "openglpipe" + artifact 133253 "glpipe" stereotype "source" cpp_h "/* ${NAME}.hpp - ${description} diff --git a/uml/cinelerra3/130437 b/uml/cinelerra3/130437 index 203e0cd57..95197fe72 100644 --- a/uml/cinelerra3/130437 +++ b/uml/cinelerra3/130437 @@ -1,6 +1,6 @@ -format 38 +format 40 "session" // design::codegen::proc::mobject::session - 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 @@ -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 "proc::mobject::session" comment "sourcecode package Everything concerning the EDL and Session, within the MObject Subsystem" @@ -155,6 +155,50 @@ ${namespace_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" stereotype "source" cpp_h "/* @@ -384,7 +428,7 @@ ${namespace_start} ${members} ${namespace_end}" associated_classes - class_ref 129285 // FixedPlacement + class_ref 129285 // DirectPlacement end end diff --git a/uml/cinelerra3/130565 b/uml/cinelerra3/130565 index b0782efd7..adf896c2b 100644 --- a/uml/cinelerra3/130565 +++ b/uml/cinelerra3/130565 @@ -1,6 +1,6 @@ -format 38 +format 40 "builder" // design::codegen::proc::mobject::builder - 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 @@ -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 "proc::mobject::builder" comment "sourcecode package The Builder creating the Render Engine, diff --git a/uml/cinelerra3/130693 b/uml/cinelerra3/130693 index 57876816f..6545b047c 100644 --- a/uml/cinelerra3/130693 +++ b/uml/cinelerra3/130693 @@ -1,6 +1,6 @@ -format 38 +format 40 "controller" // design::codegen::proc::mobject::controller - 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 @@ -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 "proc::mobject::controller" comment "sourcecode package The Processing and Render Controller, diff --git a/uml/cinelerra3/5.session b/uml/cinelerra3/5.session index 0a62fc515..ebe675d1e 100644 --- a/uml/cinelerra3/5.session +++ b/uml/cinelerra3/5.session @@ -1,4 +1,8 @@ window_sizes 1104 756 270 824 557 120 +diagrams + active classdiagram_ref 128133 // Session structure + 824 557 100 4 120 0 +end show_stereotypes selected package_ref 129 // cinelerra3 diff --git a/uml/cinelerra3/cinelerra3.prj b/uml/cinelerra3/cinelerra3.prj index b17cce2a7..141c837b0 100644 --- a/uml/cinelerra3/cinelerra3.prj +++ b/uml/cinelerra3/cinelerra3.prj @@ -1,6 +1,6 @@ format 40 "cinelerra3" - revision 24 + revision 25 modified_by 5 "hiv" cpp_root_dir "../../src/" 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/renderengine.html b/wiki/renderengine.html index 0b6f50dad..06c63b227 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