20 #ifndef EQFABRIC_WINDOW_H 21 #define EQFABRIC_WINDOW_H 23 #include <eq/fabric/object.h> 25 #include <eq/fabric/drawableConfig.h> 26 #include <eq/fabric/paths.h> 27 #include <eq/fabric/pixelViewport.h> 28 #include <eq/fabric/viewport.h> 29 #include <eq/fabric/windowSettings.h> 36 template<
class P,
class W,
class C,
class Settings = WindowSettings >
37 class Window :
public Object
51 const P*
getPipe()
const {
return _pipe; }
60 {
return _data.drawableConfig; }
74 EQFABRIC_INL
void setName(
const std::string& name )
final;
102 virtual void notifyViewportChanged();
111 EQFABRIC_INL VisitorResult
accept( Visitor& visitor );
114 EQFABRIC_INL VisitorResult
accept( Visitor& visitor )
const;
121 EQFABRIC_INL
void setSettings(
const Settings& settings );
128 const int32_t value );
135 EQFABRIC_INL
static const std::string&
140 EQFABRIC_INL WindowPath getPath()
const;
144 EQFABRIC_INL
virtual void backup();
145 EQFABRIC_INL
virtual void restore();
146 void create( C** channel );
147 void release( C* channel );
148 virtual void output( std::ostream& )
const {}
150 EQFABRIC_INL
virtual uint128_t commit(
const uint32_t incarnation =
156 explicit Window( P* parent );
158 EQFABRIC_INL
virtual ~
Window();
160 virtual void attach(
const uint128_t&
id,
161 const uint32_t instanceID );
164 EQFABRIC_INL
virtual void serialize( co::DataOStream& os,
165 const uint64_t dirtyBits );
167 EQFABRIC_INL
virtual void deserialize( co::DataIStream& is,
168 const uint64_t dirtyBits );
170 EQFABRIC_INL
virtual void notifyDetach();
173 EQFABRIC_INL
virtual void setDirty(
const uint64_t bits );
179 virtual ChangeType getChangeType()
const {
return UNBUFFERED; }
181 C* _findChannel(
const uint128_t&
id );
186 DIRTY_SETTINGS = Object::DIRTY_CUSTOM << 0,
187 DIRTY_CHANNELS = Object::DIRTY_CUSTOM << 1,
188 DIRTY_VIEWPORT = Object::DIRTY_CUSTOM << 2,
189 DIRTY_DRAWABLECONFIG = Object::DIRTY_CUSTOM << 3,
191 DIRTY_SETTINGS | DIRTY_CHANNELS | DIRTY_VIEWPORT |
192 DIRTY_DRAWABLECONFIG | DIRTY_OBJECT_BITS
196 virtual uint64_t getRedistributableBits()
const 197 {
return DIRTY_WINDOW_BITS; }
211 Settings windowSettings;
233 void _addChannel( C* channel );
236 EQFABRIC_INL
bool _removeChannel( C* channel );
239 bool _mapNodeObjects() {
return _pipe->_mapNodeObjects(); }
241 typedef co::CommandFunc< Window< P, W, C, Settings > > CmdFunc;
242 bool _cmdNewChannel( co::ICommand& command );
243 bool _cmdNewChannelReply( co::ICommand& command );
246 template<
class P,
class W,
class C,
class Settings > EQFABRIC_INL
252 #endif // EQFABRIC_WINDOW_H IAttribute
Window attributes.
A fractional viewport with methods for manipulation.
virtual EQFABRIC_INL void setDirty(const uint64_t bits)
const Viewport & getViewport() const
const Channels & getChannels() const
std::vector< C * > Channels
A vector of pointers to channels.
DirtyBits
The changed parts of the object since the last pack().
EQFABRIC_INL VisitorResult accept(Visitor &visitor)
Perform a depth-first traversal of this window.
A visitor to traverse non-leaf elements and their children in a tree.
EQFABRIC_INL const Settings & getSettings() const
EQFABRIC_INL const PixelViewport & getPixelViewport() const
EQFABRIC_INL void setSettings(const Settings &settings)
Set the settings of this window.
EQFABRIC_INL void setIAttribute(const WindowSettings::IAttribute attr, const int32_t value)
Set a window attribute.
bool hasFixedViewport() const
virtual EQFABRIC_INL void setPixelViewport(const PixelViewport &pvp)
Set the window's pixel viewport wrt its parent pipe.
The Equalizer client library.
std::ostream & operator<<(std::ostream &os, const AxisEvent &event)
Print the axis event to the given output stream.
Base data transport class for windows.
Base data transport class for channels.
const P * getPipe() const
const DrawableConfig & getDrawableConfig() const
EQFABRIC_INL int32_t getIAttribute(const WindowSettings::IAttribute attr) const
Stores the characteristics of a window's frame buffer configuration.
EQFABRIC_INL void setName(const std::string &name) final
Set the window's name/caption.
EQFABRIC_INL void setViewport(const Viewport &vp)
Set the window's viewport wrt its parent pipe.
Holds a 2D pixel viewport with methods for manipulation.
ElementVisitor< W, LeafVisitor< C > > Visitor
The Window visitor type.