Lumiera  0.pre.03
»edit your freedom«
render-configurator.hpp
Go to the documentation of this file.
1 /*
2  RENDER-CONFIGURATOR.hpp - strategy to help building an actual render calculation stream
3 
4  Copyright (C)
5  2011, Hermann Vosseler <Ichthyostega@web.de>
6 
7   **Lumiera** is free software; you can redistribute it and/or modify it
8   under the terms of the GNU General Public License as published by the
9   Free Software Foundation; either version 2 of the License, or (at your
10   option) any later version. See the file COPYING for further details.
11 
12 */
13 
26 #ifndef STEAM_PLAY_RENDER_CONFIGURATOR_H
27 #define STEAM_PLAY_RENDER_CONFIGURATOR_H
28 
29 
30 #include "lib/error.hpp"
31 #include "lib/nocopy.hpp"
32 //#include "include/dummy-player-facade.h"
33 //#include "include/display-facade.h"
34 //#include "common/instancehandle.hpp"
35 //#include "lib/singleton-ref.hpp"
41 //#include "lib/iter-source.hpp"
42 //#include "lib/util.hpp"
43 
44 #include <functional>
45 #include <vector>
46 //#include <string>
47 
48 
49 namespace steam {
50 namespace play {
51 
52 // using std::string;
53 // using lumiera::Subsys;
54 // using lumiera::Display;
55 // using lumiera::DummyPlayer;
56 // using util::isnil;
57  using std::function;
59 
60 // typedef steam::play::POutputManager POutputManager;
61 // typedef lib::IterSource<ModelPort>::iterator ModelPorts;
62 
63  namespace error = lumiera::error;
64 
65 
69  {
70 
71  public:
72  virtual ~RenderConfigurator();
73 
75 
76  using ConnectFunction = function<Feed(ModelPort)>;
77 
78  protected:
85  virtual OutputSlot& getOutputFor (ModelPort port) =0;
86 
87 
99  virtual engine::CalcStreams buildCalculationStreams (ModelPort, OutputSlot&) =0;
100 
101  };
102 
103 
115  RenderConfigurator::ConnectFunction
116  buildRenderConfiguration (POutputManager outputPossibilities, Timings playbackTimings);
117 
118 
119 
120 
121 
122 }} // namespace steam::play
123 #endif
Organising the output data calculation possibilities.
An (abstract) capability to send media data to an external output.
virtual ~RenderConfigurator()
this is an interface
Generic frame timing specification.
Definition: timings.hpp:86
Any copy and copy construction prohibited.
Definition: nocopy.hpp:37
Steam-Layer implementation namespace root.
virtual engine::CalcStreams buildCalculationStreams(ModelPort, OutputSlot &)=0
build active rendering connections, thereby delivering each channel of the given model port into the ...
Feed buildActiveFeed(ModelPort)
Template Method: how to build an active render feed, pulling from the given exit point of the model a...
Mix-Ins to allow or prohibit various degrees of copying and cloning.
RenderConfigurator::ConnectFunction buildRenderConfiguration(POutputManager outputPossibilities, Timings playTimings)
Factory function to build a RenderConfigurator specifically tailored for a PlayProcess, about to be started.
A core abstraction within the render engine to represent an ongoing calculation.
Lumiera error handling (C++ interface).
Handle designating a point within the model, where actually output data can be pulled.
Definition: model-port.hpp:95
Interface: Generic output sink.
virtual OutputSlot & getOutputFor(ModelPort port)=0
retrieve a suitable output sink for the data to be produced at the given model exit point...
A global service to handle all external output connections.
Rendering data feed, corresponding to a single global pipe and to be delivered into a single OutputSl...
Organisational unit of an ongoing render- or playback process.
Strategy for configuring the render process.