Developer Documentation
RendererInfo.hh
1/*===========================================================================*\
2* *
3* OpenFlipper *
4 * Copyright (c) 2001-2015, RWTH-Aachen University *
5 * Department of Computer Graphics and Multimedia *
6 * All rights reserved. *
7 * www.openflipper.org *
8 * *
9 *---------------------------------------------------------------------------*
10 * This file is part of OpenFlipper. *
11 *---------------------------------------------------------------------------*
12 * *
13 * Redistribution and use in source and binary forms, with or without *
14 * modification, are permitted provided that the following conditions *
15 * are met: *
16 * *
17 * 1. Redistributions of source code must retain the above copyright notice, *
18 * this list of conditions and the following disclaimer. *
19 * *
20 * 2. Redistributions in binary form must reproduce the above copyright *
21 * notice, this list of conditions and the following disclaimer in the *
22 * documentation and/or other materials provided with the distribution. *
23 * *
24 * 3. Neither the name of the copyright holder nor the names of its *
25 * contributors may be used to endorse or promote products derived from *
26 * this software without specific prior written permission. *
27 * *
28 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
29 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
30 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
31 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
32 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
33 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
34 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
35 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
36 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
37 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
38 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
39* *
40\*===========================================================================*/
41
42#pragma once
43
44#include <QString>
45#include <QObject>
46#include <ACG/Scenegraph/DrawModes.hh>
51
52#include <vector>
53
56
57 public :
58
60
61 RendererInfo(RenderInterface* _plugin,QString _name);
62
65
67 QString name;
68
70 QString version;
71
73 QString description;
74
77
79 QAction* optionsAction;
80};
81
82
84 public:
86
92 bool rendererExists(QString _name);
93
100 RendererInfo* newRenderer(QString _name);
101
107 int getRendererId(QString _name);
108
114 RendererInfo* getRenderer(QString _name);
115
124 int countRenderers(ACG::SceneGraph::DrawModes::DrawMode _mode);
125
131 RendererInfo* operator[](unsigned int _id);
132
137 size_t available();
138
144 void setActive(unsigned int _active, int _id);
145
151 void setActive(QString _active, int _id);
152
158 RendererInfo* active(int _id);
159
165 unsigned int activeId(int _id);
166
167 private:
169 std::vector<RendererInfo> availableRenderers_;
170
172 std::vector<unsigned int> activeRenderers_;
173};
174
177RenderManager& renderManager();
178
179//===================================================================================
180// Post processor Manager
181//===================================================================================
182
185
186 public :
187
189
190 PostProcessorInfo(PostProcessorInterface* _plugin, QString _name);
191
194
196 QString name;
197
199 QString description;
200
202 QString version;
203
206
207};
208
209
211 public:
212
214
220 bool postProcessorExists(QString _name);
221
228 PostProcessorInfo* newPostProcessor(QString _name);
229
235 PostProcessorInfo* getPostProcessor(QString _name);
236
242 PostProcessorInfo* operator[](unsigned int _id);
243
248 size_t available();
249
255 void setActive(unsigned int _active, int _viewerId);
256
265 void setActive(QString _active, int _id);
266
267
268 //===========================================================================
271 //===========================================================================
272
278 void append(unsigned int _active, int _viewerId);
279
285 void append(QString _active, int _id);
286
293 void insert(unsigned int _active, int _chainIdx, int _viewerId);
294
301 void insert(QString _active, int _chainIdx, int _id);
302
308 void remove(int _id, int _chainIdx);
309
315 int numActive( int _id);
316
328 unsigned int activeId( int _id, int _chainIdx = 0);
329
336 PostProcessorInfo* active( int _id, int _chainIdx = 0);
337
338
339 private:
341 std::vector<PostProcessorInfo> availablePostProcessors_;
342
344 std::vector<std::vector<unsigned int> > activePostProcessors_;
345};
346
349PostProcessorManager& postProcessorManager();
350
#define DLLEXPORT
QAction * optionsAction
Possible action to add an options action or menu to the system.
QString name
Name of the plugin ( requested from the plugin on load)
PostProcessorInterface * plugin
Pointer to the loaded plugin (Already casted when loading it)
QString version
Version of the plugin.
QString description
Description of the plugin.
Interface to add global image post processor functions from within plugins.
std::vector< PostProcessorInfo > availablePostProcessors_
Vector holding all available post processors.
std::vector< std::vector< unsigned int > > activePostProcessors_
The currently active post processor chain.
Interface to add additional rendering functions from within plugins.
std::vector< unsigned int > activeRenderers_
The currently active renderer ids.
std::vector< RendererInfo > availableRenderers_
Vector holding all available renderers.
QAction * optionsAction
Possible action to add an options action or menu to the system.
Definition: RendererInfo.hh:79
ACG::SceneGraph::DrawModes::DrawMode modes
Supported DrawModes.
Definition: RendererInfo.hh:76
QString name
Name of the plugin ( requested from the plugin on load)
Definition: RendererInfo.hh:67
RenderInterface * plugin
Pointer to the loaded plugin (Already casted when loading it)
Definition: RendererInfo.hh:64
QString description
Description of the plugin ( requested from the plugin on load)
Definition: RendererInfo.hh:73
QString version
Version of the plugin ( requested from the plugin on load)
Definition: RendererInfo.hh:70