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) Lumiera.org
5  2011, Hermann Vosseler <Ichthyostega@web.de>
6 
7  This program is free software; you can redistribute it and/or
8  modify it under the terms of the GNU General Public License as
9  published by the Free Software Foundation; either version 2 of
10  the License, or (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program; if not, write to the Free Software
19  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 
21 */
22 
35 #ifndef STEAM_PLAY_RENDER_CONFIGURATOR_H
36 #define STEAM_PLAY_RENDER_CONFIGURATOR_H
37 
38 
39 #include "lib/error.hpp"
40 #include "lib/nocopy.hpp"
41 //#include "include/dummy-player-facade.h"
42 //#include "include/display-facade.h"
43 //#include "common/instancehandle.hpp"
44 //#include "lib/singleton-ref.hpp"
50 //#include "lib/iter-source.hpp"
51 //#include "lib/util.hpp"
52 
53 #include <functional>
54 #include <vector>
55 //#include <string>
56 
57 
58 namespace steam {
59 namespace play {
60 
61 // using std::string;
62 // using lumiera::Subsys;
63 // using lumiera::Display;
64 // using lumiera::DummyPlayer;
65 // using util::isnil;
66  using std::function;
68 
69 // typedef steam::play::POutputManager POutputManager;
70 // typedef lib::IterSource<ModelPort>::iterator ModelPorts;
71 
72  namespace error = lumiera::error;
73 
74 
78  {
79 
80  public:
81  virtual ~RenderConfigurator();
82 
84 
85  using ConnectFunction = function<Feed(ModelPort)>;
86 
87  protected:
94  virtual OutputSlot& getOutputFor (ModelPort port) =0;
95 
96 
108  virtual engine::CalcStreams buildCalculationStreams (ModelPort, OutputSlot&) =0;
109 
110  };
111 
112 
124  RenderConfigurator::ConnectFunction
125  buildRenderConfiguration (POutputManager outputPossibilities, Timings playbackTimings);
126 
127 
128 
129 
130 
131 }} // namespace steam::play
132 #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:95
Any copy and copy construction prohibited.
Definition: nocopy.hpp:46
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:104
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.