Equalizer  1.6.1
eq/client/types.h
1 
2 /* Copyright (c) 2007-2013, Stefan Eilemann <eile@equalizergraphics.com>
3  * 2011-2012, Daniel Nachbaur <danielnachbaur@gmail.com>
4  * 2010, Cedric Stalder <cedric.stalder@gmail.com>
5  *
6  * This library is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Lesser General Public License version 2.1 as published
8  * by the Free Software Foundation.
9  *
10  * This library is distributed in the hope that it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12  * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
13  * details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with this library; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 #ifndef EQ_TYPES_H
21 #define EQ_TYPES_H
22 
23 #include <eq/client/defines.h>
24 #include <eq/util/types.h>
25 #include <eq/fabric/focusMode.h>
26 #include <eq/fabric/types.h>
27 #include <lunchbox/atomic.h>
28 
29 #include <map>
30 #include <vector>
31 
32 namespace eq
33 {
34 class Canvas;
35 class Channel;
36 class Client;
37 class CommandQueue;
38 class ComputeContext;
39 class Config;
40 class EventICommand;
41 class Frame;
42 class FrameData;
43 class Image;
44 class Layout;
45 class MessagePump;
46 class Node;
47 class NodeFactory;
48 class Observer;
49 class Pipe;
50 class SageProxy;
51 class Segment;
52 class Server;
53 class SystemPipe;
54 class SystemWindow;
55 class View;
56 class Window;
57 class WindowSystem;
58 struct ConfigEvent;
59 struct Event;
60 struct PixelData;
61 struct PointerEvent;
62 struct Statistic;
63 
64 using fabric::ANAGLYPH;
65 using fabric::ASYNC;
66 using fabric::AUTO;
67 using fabric::DRAW_SYNC;
68 using fabric::FASTEST;
69 using fabric::FBO;
70 using fabric::HORIZONTAL;
71 using fabric::LOCAL_SYNC;
72 using fabric::NICEST;
73 using fabric::OFF;
74 using fabric::ON;
75 using fabric::PBUFFER;
76 using fabric::QUAD;
77 using fabric::RGBA16F;
78 using fabric::RGBA32F;
79 using fabric::UNDEFINED;
80 using fabric::VERTICAL;
81 using fabric::WINDOW;
82 
83 using fabric::ColorMask;
84 using fabric::DrawableConfig;
85 using fabric::Frustum;
86 using fabric::Frustumf;
87 using fabric::GPUInfo;
88 using fabric::IAttribute;
89 using fabric::Pixel;
90 using fabric::PixelViewport;
91 using fabric::Projection;
92 using fabric::Range;
93 using fabric::RenderContext;
94 using fabric::SubPixel;
95 using fabric::Tile;
96 using fabric::Viewport;
97 using fabric::Wall;
98 using fabric::Zoom;
99 
102 
105 
108 
111 
114 
117 
120 
123 
126 
130 
133 
134 //----- Vectors
136 typedef std::vector< Config* > Configs;
138 typedef std::vector< Server* > Servers;
140 typedef std::vector< Node* > Nodes;
142 typedef std::vector< Pipe* > Pipes;
144 typedef std::vector< Window* > Windows;
146 typedef std::vector< Channel* > Channels;
148 typedef std::vector< Frame* > Frames;
150 typedef std::vector< Image* > Images;
152 typedef std::vector< Observer* > Observers;
154 typedef std::vector< Canvas* > Canvases;
156 typedef std::vector< Layout* > Layouts;
158 typedef std::vector< Segment* > Segments;
160 typedef std::vector< View* > Views;
162 typedef std::vector< Viewport > Viewports;
164 typedef std::vector< PixelViewport > PixelViewports;
166 typedef std::vector< Statistic > Statistics;
167 
169 typedef Configs::const_iterator ConfigsCIter;
171 typedef Servers::const_iterator ServersCIter;
173 typedef Nodes::const_iterator NodesCIter;
175 typedef Pipes::const_iterator PipesCIter;
177 typedef Windows::const_iterator WindowsCIter;
179 typedef Channels::const_iterator ChannelsCIter;
181 typedef Frames::iterator FramesIter;
183 typedef Frames::const_iterator FramesCIter;
185 typedef Images::const_iterator ImagesCIter;
187 typedef Observers::const_iterator ObserversCIter;
189 typedef Canvases::const_iterator CanvasesCIter;
191 typedef Layouts::const_iterator LayoutsCIter;
193 typedef Segments::const_iterator SegmentsCIter;
195 typedef Views::const_iterator ViewsCIter;
197 typedef Viewports::const_iterator ViewportsCIter;
199 typedef PixelViewports::const_iterator PixelViewportsCIter;
201 typedef Statistics::const_iterator StatisticsCIter;
202 
204 typedef lunchbox::RefPtr< Client > ClientPtr;
206 typedef lunchbox::RefPtr< const Client > ConstClientPtr;
208 typedef lunchbox::RefPtr< Server > ServerPtr;
210 typedef lunchbox::RefPtr< FrameData > FrameDataPtr;
212 typedef lunchbox::RefPtr< const FrameData > ConstFrameDataPtr;
213 
214 namespace util
215 {
216 template< class > class BitmapFont;
217 template< class > class ObjectManager;
218 }
219 
222 
225 
226 using fabric::Matrix3d;
227 using fabric::Matrix4d;
228 using fabric::Matrix3f;
229 using fabric::Matrix4f;
230 using fabric::Vector2i;
231 using fabric::Vector3i;
232 using fabric::Vector4i;
233 using fabric::Vector3d;
234 using fabric::Vector4d;
235 using fabric::Vector2f;
236 using fabric::Vector3f;
237 using fabric::Vector4f;
238 using fabric::Vector3ub;
239 using fabric::Frustumf;
240 
241 using fabric::FocusMode;
245 
246 using fabric::Strings;
247 using fabric::StringsCIter;
248 
250 typedef vmml::frustum_culler< float > FrustumCullerf;
251 
253 typedef std::vector< uint8_t > Vectorub;
255 typedef std::vector< uint16_t > Vectorus;
256 
257 using lunchbox::a_int32_t;
258 using lunchbox::backtrace;
259 using lunchbox::uint128_t;
260 using lunchbox::UUID;
261 
263 #ifndef EQ_2_0_API
264 #define COMMANDTYPE_EQ_CUSTOM co::COMMANDTYPE_CUSTOM
265 #endif
266 
267 typedef co::ObjectOCommand EventOCommand;
268 
269 typedef co::WorkerThread< CommandQueue > Worker; // instantiated in worker.cpp
270 
271 namespace detail
272 {
273 class InitVisitor;
274 class ExitVisitor;
275 class FrameVisitor;
276 }
278 }
279 
281 // GLEW
282 struct GLEWContextStruct;
283 struct WGLEWContextStruct;
284 struct GLXEWContextStruct;
285 typedef struct GLEWContextStruct GLEWContext;
286 typedef struct WGLEWContextStruct WGLEWContext;
287 typedef struct GLXEWContextStruct GLXEWContext;
288 namespace GLStats { class Data; }
291 #endif // EQ_TYPES_H
A configuration is a visualization session driven by an application.
fabric::ElementVisitor< Window, ChannelVisitor > WindowVisitor
A visitor to traverse windows and children.
std::vector< Node * > Nodes
A vector of pointers to eq::Node.
Channels::const_iterator ChannelsCIter
A const_iterator over a eq::Channel vector.
std::vector< Server * > Servers
A vector of pointers to eq::Server.
vmml::vector< 3, uint8_t > Vector3ub
A three-component byte vector.
Definition: vmmlib.h:48
IAttribute
Possible values for integer attributes.
Definition: iAttribute.h:30
Windows::const_iterator WindowsCIter
A const_iterator over a eq::Window vector.
Segments::const_iterator SegmentsCIter
A const_iterator over a eq::Segment vector.
Images::const_iterator ImagesCIter
A const_iterator over a eq::Image vector.
Pipes::const_iterator PipesCIter
A const_iterator over a eq::Pipe vector.
std::vector< Viewport > Viewports
A vector of eq::Viewport.
Canvases::const_iterator CanvasesCIter
A const_iterator over a eq::Canvas vector.
vmml::vector< 4, double > Vector4d
A four-component double vector.
Definition: vmmlib.h:44
Float32 framebuffer (Window::IATTR_PLANES_COLOR)
Definition: iAttribute.h:39
A visitor to traverse configs and all children.
Definition: configVisitor.h:36
PBuffer drawable (Window::IATTR_HINT_DRAWABLE)
Definition: iAttribute.h:45
util::BitmapFont< const void * > BitmapFont
The bitmap font used in the client library.
A visitor to traverse non-leaf elements and their children in a tree.
FBO drawable (Window::IATTR_HINT_DRAWABLE)
Definition: iAttribute.h:41
std::vector< PixelViewport > PixelViewports
A vector of eq::PixelViewport.
Focus distance relative and in -Z axis of origin.
Definition: focusMode.h:33
enabled (various attributes)
Definition: iAttribute.h:58
vmml::vector< 3, int > Vector3i
A three-component integer vector.
Definition: vmmlib.h:41
std::vector< Statistic > Statistics
A vector of eq::Statistic events.
disabled (various attributes)
Definition: iAttribute.h:57
fabric::LeafVisitor< View > ViewVisitor
A visitor to traverse views.
A wrapper around AGL, WGL and GLX bitmap fonts.
Vertical load-balancing.
Definition: iAttribute.h:47
vmml::vector< 4, int > Vector4i
A four-component integer vector.
Definition: vmmlib.h:42
Focus distance relative and in direction of observer.
Definition: focusMode.h:35
Statistics::const_iterator StatisticsCIter
A const_iterator over a eq::Statistic events vector.
A facility class to manage OpenGL objects across shared contexts.
std::vector< Pipe * > Pipes
A vector of pointers to eq::Pipe.
std::vector< Layout * > Layouts
A vector of pointers to eq::Layout.
fabric::ElementVisitor< Pipe, WindowVisitor > PipeVisitor
A visitor to traverse pipes and children.
lunchbox::RefPtr< Server > ServerPtr
A reference-counted pointer to an eq::Server.
std::vector< Image * > Images
A vector of pointers to eq::Image.
No local sync (Node::IATTR_THREAD_MODEL)
Definition: iAttribute.h:44
Nicest statistics gathering (Window::IATTR_HINT_STATISTICS, Channel::IATTR_HINT_STATISTICS) ...
Definition: iAttribute.h:55
vmml::vector< 2, float > Vector2f
A two-component float vector.
Definition: vmmlib.h:45
Window drawable (Window::IATTR_HINT_DRAWABLE)
Definition: iAttribute.h:46
fabric::ElementVisitor< Server, ConfigVisitor > ServerVisitor
A visitor to traverse servers and children.
Layouts::const_iterator LayoutsCIter
A const_iterator over a eq::Layout vector.
vmml::vector< 3, float > Vector3f
A three-component float vector.
Definition: vmmlib.h:46
std::vector< Window * > Windows
A vector of pointers to eq::Window.
std::vector< View * > Views
A vector of pointers to eq::View.
Automatic selection (various attributes)
Definition: iAttribute.h:56
Horizontal load-balancing.
Definition: iAttribute.h:64
Servers::const_iterator ServersCIter
A const_iterator over a eq::Server vector.
Viewports::const_iterator ViewportsCIter
A const_iterator over a eq::Viewport vector.
fabric::ElementVisitor< Layout, ViewVisitor > LayoutVisitor
A visitor to traverse layouts and children.
fabric::ElementVisitor< Node, PipeVisitor > NodeVisitor
A visitor to traverse nodes and children.
vmml::matrix< 3, 3, float > Matrix3f
A 3x3 float matrix.
Definition: vmmlib.h:38
Focus on physical projection.
Definition: focusMode.h:31
std::vector< uint8_t > Vectorub
A vector of bytes.
FocusMode
The algorithm to use for observer focal distance calculation.
Definition: focusMode.h:29
std::vector< Observer * > Observers
A vector of pointers to eq::Observer.
std::vector< Canvas * > Canvases
A vector of pointers to eq::Canvas.
lunchbox::RefPtr< Client > ClientPtr
A reference-counted pointer to an eq::Client.
Local draw sync (Node::IATTR_THREAD_MODEL)
Definition: iAttribute.h:43
Configs::const_iterator ConfigsCIter
A const_iterator over a eq::Config vector.
vmml::matrix< 4, 4, float > Matrix4f
A 4x4 float matrix.
Definition: vmmlib.h:39
std::vector< Frame * > Frames
A vector of pointers to eq::Frame.
std::vector< Channel * > Channels
A vector of pointers to eq::Channel.
vmml::frustum_culler< float > FrustumCullerf
&lt; A const_iterator over a std::string vector
fabric::ElementVisitor< Canvas, SegmentVisitor > CanvasVisitor
A visitor to traverse canvases and children.
Quad-buffered stereo decomposition.
Definition: iAttribute.h:48
PixelViewports::const_iterator PixelViewportsCIter
A const_iterator over a eq::PixelViewport vector.
Nodes::const_iterator NodesCIter
A const_iterator over a eq::Node vector.
Frames::const_iterator FramesCIter
A const_iterator over a eq::Frame vector.
fabric::LeafVisitor< Observer > ObserverVisitor
A visitor to traverse channels.
lunchbox::RefPtr< const FrameData > ConstFrameDataPtr
A reference-counted pointer to a const eq::FrameData.
Views::const_iterator ViewsCIter
A const_iterator over a eq::View vector.
Anaglyphic stereo decomposition.
Definition: iAttribute.h:49
std::vector< Segment * > Segments
A vector of pointers to eq::Segment.
vmml::frustum< float > Frustumf
A frustum definition.
Definition: vmmlib.h:50
vmml::matrix< 4, 4, double > Matrix4d
A 4x4 double matrix.
Definition: vmmlib.h:37
fabric::LeafVisitor< Channel > ChannelVisitor
A visitor to traverse channels.
util::ObjectManager< const void * > ObjectManager
The OpenGL object manager used in the client library.
vmml::vector< 4, float > Vector4f
A four-component float vector.
Definition: vmmlib.h:47
lunchbox::RefPtr< FrameData > FrameDataPtr
A reference-counted pointer to an eq::FrameData.
A visitor to traverse leaf nodes of a graph.
Definition: leafVisitor.h:28
fabric::LeafVisitor< Segment > SegmentVisitor
A visitor to traverse segments.
Undefined value.
Definition: iAttribute.h:32
std::vector< uint16_t > Vectorus
A vector of unsigned shorts.
vmml::matrix< 3, 3, double > Matrix3d
A 3x3 double matrix.
Definition: vmmlib.h:36
Float16 framebuffer (Window::IATTR_PLANES_COLOR)
Definition: iAttribute.h:40
Full local sync (Node::IATTR_THREAD_MODEL)
Definition: iAttribute.h:42
Observers::const_iterator ObserversCIter
A const_iterator over a eq::Observer vector.
lunchbox::RefPtr< const Client > ConstClientPtr
A reference-counted pointer to a const eq::Client.
std::vector< Config * > Configs
A vector of pointers to eq::Config.
Frames::iterator FramesIter
An iterator over a eq::Frame vector.
vmml::vector< 3, double > Vector3d
A three-component double vector.
Definition: vmmlib.h:43
vmml::vector< 2, int > Vector2i
A two-component integer vector.
Definition: vmmlib.h:40
Fastest statistics gathering (Window::IATTR_HINT_STATISTICS, Channel::IATTR_HINT_STATISTICS) ...
Definition: iAttribute.h:63
fabric::ConfigVisitor< Config, ObserverVisitor, LayoutVisitor, CanvasVisitor, NodeVisitor > ConfigVisitor
A visitor to traverse configs and children.