Equalizer  2.0.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/types.h>
22 #include <eq/api.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
155 
A channel represents a two-dimensional viewport within a Window.
Definition: channel.h:42
A configuration is a visualization session driven by an application.
Definition: config.h:55
A canvas represents a logical 2D projection surface.
Definition: canvas.h:50
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:49
lunchbox::RefPtr< Server > ServerPtr
A reference-counted pointer to an eq::Server.
Definition: eq/types.h:215
A Window represents an on-screen or off-screen drawable.
Definition: window.h:63
virtual ~NodeFactory()
Destruct this node factory.
Definition: nodeFactory.h:150
A segment covers a sub-area of a Canvas.
Definition: segment.h:35
The Equalizer client library.
Definition: eq/agl/types.h:23
A layout groups one or more View, logically belonging together.
Definition: layout.h:46
A View is a 2D area of a Layout.
Definition: view.h:42
An Observer looks at one or more views from a certain position (head matrix) with a given eye separat...
Definition: observer.h:37
The node factory is a per-node singleton used to create and release Equalizer resource instances...
Definition: nodeFactory.h:36