Equalizer  2.1.0
Parallel Rendering Framework
nodeFactory.h
1 
2 /* Copyright (c) 2005-2011, Stefan Eilemann <eile@equalizergraphics.com>
3  *
4  * This library is free software; you can redistribute it and/or modify it under
5  * the terms of the GNU Lesser General Public License version 2.1 as published
6  * by the Free Software Foundation.
7  *
8  * This library is distributed in the hope that it will be useful, but WITHOUT
9  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
10  * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
11  * details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this library; if not, write to the Free Software Foundation, Inc.,
15  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16  */
17 
18 #ifndef EQ_NODEFACTORY_H
19 #define EQ_NODEFACTORY_H
20 
21 #include <eq/api.h>
22 #include <eq/types.h>
23 
24 namespace eq
25 {
36 class EQ_API NodeFactory
37 {
38 public:
45  virtual Config* createConfig(ServerPtr parent);
46 
48  virtual void releaseConfig(Config* config);
49 
56  virtual Node* createNode(Config* parent);
57 
59  virtual void releaseNode(Node* node);
60 
67  virtual Pipe* createPipe(Node* parent);
68 
70  virtual void releasePipe(Pipe* pipe);
71 
78  virtual Window* createWindow(Pipe* parent);
79 
81  virtual void releaseWindow(Window* window);
82 
89  virtual Channel* createChannel(Window* parent);
90 
92  virtual void releaseChannel(Channel* channel);
93 
100  virtual Observer* createObserver(Config* parent);
101 
103  virtual void releaseObserver(Observer* observer);
104 
111  virtual Layout* createLayout(Config* parent);
112 
114  virtual void releaseLayout(Layout* layout);
115 
122  virtual View* createView(Layout* parent);
123 
125  virtual void releaseView(View* view);
126 
133  virtual Canvas* createCanvas(Config* parent);
134 
136  virtual void releaseCanvas(Canvas* canvas);
137 
144  virtual Segment* createSegment(Canvas* parent);
145 
147  virtual void releaseSegment(Segment* segment);
148 
150  virtual ~NodeFactory() {}
151 };
152 }
153 
154 #endif // EQ_NODEFACTORY_H
lunchbox::RefPtr< Server > ServerPtr
A reference-counted pointer to an eq::Server.
Definition: eq/types.h:215
A channel represents a two-dimensional viewport within a Window.
Definition: channel.h:46
A configuration is a visualization session driven by an application.
Definition: config.h:58
A canvas represents a logical 2D projection surface.
Definition: canvas.h:53
EQ_API void releaseConfig(Config *config)
Convenience function to release a configuration.
A Pipe represents a graphics card (GPU) on a Node.
Definition: pipe.h:50
A Node represents a single computer in the cluster.
Definition: node.h:52
A Window represents an on-screen or off-screen drawable.
Definition: window.h:62
virtual ~NodeFactory()
Destruct this node factory.
Definition: nodeFactory.h:150
A segment covers a sub-area of a Canvas.
Definition: segment.h:38
The Equalizer client library.
Definition: eq/agl/types.h:23
A layout groups one or more View, logically belonging together.
Definition: layout.h:49
A View is a 2D area of a Layout.
Definition: view.h:46
An Observer looks at one or more views from a certain position (head matrix) with a given eye separat...
Definition: observer.h:40
The node factory is a per-node singleton used to create and release Equalizer resource instances...
Definition: nodeFactory.h:36