All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
Luminous::MultiHead Class Reference

Class for managing information on multiple OpenGL vindows/viewports. More...

#include <Luminous/MultiHead.hpp>

Inheritance diagram for Luminous::MultiHead:
Valuable::Node Valuable::Attribute Patterns::NotCopyable Valuable::Serializable

Classes

class  Area
 An OpenGL area. More...
 
class  Window
 One OpenGL window. More...
 

Valuable Attributes

float dpi = 40.052999999999997
 Get the dots-per-inch. More...
 
Nimble::Vector3i dpms = Nimble::Vector3i(0, 0, 0)
 Get the DPMS settings. More...
 
bool gl-finish = false
 Should glFinish() called every every frame to flush rendering. More...
 
bool hw-color-correction = false
 Is the hardware color-correction enabled. More...
 
bool iconify = false
 Check if all windows should be iconified. More...
 
bool vsync = true
 Is vertical sync enabled? More...
 
- Valuable Attributes inherited from Valuable::Node
Node::Uuid id = generateId()
 Returns the unique id. More...
 

Public Member Functions

void addWindow (std::unique_ptr< Window > w)
 Adds a window to the collection.
 
void adjustGraphicsToOrigin ()
 Moves graphics locations of areas so that their bounding box is located in origin. More...
 
Areaarea (size_t index, Window **winptr=0)
 Get an area. More...
 
size_t areaCount ()
 Get the number of areas. More...
 
void createFullHDConfig ()
 Create a default fullscreen configuration for a single 1080p display.
 
void deleteWindows ()
 Remove all windows from the configuration.
 
bool deserialize (const Valuable::ArchiveElement &element)
 De-serializes this object (and its children) from a DOM node.
 
float dpi () const
 Get the dots-per-inch. More...
 
Nimble::Vector3i dpms () const
 Get the DPMS settings. More...
 
virtual void eventProcess (const QByteArray &messageId, Radiant::BinaryData &data)
 Process a message. More...
 
Rect graphicsBounds () const
 Returns the total graphics size.
 
int height ()
 Total height of the display area, in graphics pixels.
 
bool iconify () const
 Check if all windows should be iconified. More...
 
bool isEdited () const
 Check if the edited flag has been set. More...
 
bool isHardwareColorCorrectionEnabled () const
 Is the hardware color-correction enabled. More...
 
bool isVSyncEnabled () const
 Is vertical sync enabled? More...
 
Rect layerSize () const
 Returns the default layer size.
 
void mergeConfiguration (const Luminous::MultiHead &source)
 
 MultiHead ()
 Construct an empty configuration.
 
void removeDuplicateAreas ()
 Remove areas that are included in larger areas.
 
void setDpi (float dpi)
 Set the DPI of the display. More...
 
void setDpms (const Nimble::Vector3i &dpms)
 Set the DPMS settings. More...
 
void setEdited (bool edited)
 Raise the edited flag for the configuration. More...
 
void setGlFinish (bool v)
 Set if glFinish() should be called every frame. More...
 
void setHardwareColorCorrection (bool enabled)
 Setter for attribute hw-color-correction. More...
 
void setIconify (bool iconify)
 Set the iconify flag for windows. More...
 
void setIsVSyncEnabled (bool v)
 Set if vertical sync should be enabled. More...
 
Nimble::SizeF size ()
 Returns the size of the total display in graphics pixels.
 
bool useGlFinish () const
 Should glFinish() called every every frame to flush rendering. More...
 
int width ()
 Total width of the display area, in graphics pixels.
 
Windowwindow (size_t i)
 Access the ith window. More...
 
const Windowwindow (size_t i) const
 Access the ith window. More...
 
size_t windowCount () const
 Get the number of windows. More...
 
virtual ~MultiHead ()
 Destructor.
 
- Public Member Functions inherited from Valuable::Node
bool acceptsEvent (const QByteArray &messageId) const
 Returns true if this object accepts event 'id' in eventProcess.
 
bool addAttribute (Attribute *const attribute)
 Adds a new Attribute to the list of attribute objects. More...
 
bool addAttribute (const QByteArray &name, Attribute *const attribute)
 Adds a new Attribute to the list of attribute objects.
 
template<typename Widget >
bool addAttribute (const QByteArray &name, const Radiant::IntrusivePtr< Widget > &attribute)
 Adds a new Attribute to the list of attribute objects. More...
 
long addListener (const QByteArray &attribute, v8::Persistent< v8::Function > func, int role=Attribute::CHANGE_ROLE)
 Add a JavaScript attribute listener to attribute belonging this Node. More...
 
virtual Attributeattribute (const QByteArray &name) const
 Gets an Attribute with the given name. More...
 
template<typename T >
AttributeT< T > * attribute (const QByteArray &name) const
 Gets an Attribute with the given name. More...
 
const containerattributes () const
 
void clearValues (Layer layer)
 Clears all Attribute values of the given layer. More...
 
void debugDump ()
 Prints the contents of this Attribute to the terminal.
 
void eventAddDeprecated (const QByteArray &deprecatedId, const QByteArray &newId)
 Register a deprecated event that is automatically converted to new event id and a warning is issued when it is used. More...
 
void eventAddIn (const QByteArray &messageId)
 Registers a new event that this class handles in eventProcess.
 
template<typename Widget >
long eventAddListener (const QByteArray &eventId, const QByteArray &messageId, Radiant::IntrusivePtr< Widget > &listener, ListenerType listenerType=DIRECT, const Radiant::BinaryData *defaultData=0)
 Add an event listener to this object. More...
 
long eventAddListener (const QByteArray &eventId, const QByteArray &messageId, Valuable::Node *listener, ListenerType listenerType=DIRECT, const Radiant::BinaryData *defaultData=0)
 Add an event listener to this object. More...
 
long eventAddListener (const QByteArray &eventId, ListenerFuncVoid func, ListenerType listenerType=DIRECT)
 Add an event listener to this object. More...
 
long eventAddListener (const QByteArray &eventId, Node *dstNode, ListenerFuncVoid func, ListenerType listenerType=DIRECT)
 
long eventAddListenerBd (const QByteArray &eventId, Node *dstNode, ListenerFuncBd func, ListenerType listenerType=DIRECT)
 
long eventAddListenerBd (const QByteArray &eventId, ListenerFuncBd func, ListenerType listenerType=DIRECT)
 Add an event listener to this object. More...
 
void eventAddOut (const QByteArray &eventId)
 Registers a new event this class can send with eventSend.
 
const QSet< QByteArray > & eventInNames () const
 Returns set of all registered IN events.
 
unsigned eventListenerCount () const
 Returns the number of event listeners.
 
const QSet< QByteArray > & eventOutNames () const
 Returns set of all registered OUT events.
 
void eventPassingEnable (bool enable)
 Control whether events are passed.
 
template<typename Widget >
int eventRemoveListener (Radiant::IntrusivePtr< Widget > &listener)
 Removes all events from this object to given listener. More...
 
template<typename Widget >
int eventRemoveListener (const QByteArray &eventId=QByteArray(), const QByteArray &messageId=QByteArray(), Radiant::IntrusivePtr< Widget > &listener=Radiant::IntrusivePtr< Widget >())
 Removes events from this object that match the parameters. More...
 
int eventRemoveListener (const QByteArray &eventId=QByteArray(), const QByteArray &messageId=QByteArray(), Valuable::Node *listener=0)
 Removes event listeners from this object. More...
 
int eventRemoveListener (Valuable::Node *listener)
 Removes all events from this object to given listener. More...
 
bool eventRemoveListener (long listenerId)
 Removes event listener with given id. More...
 
void eventSend (const QByteArray &eventId, Radiant::BinaryData &bd)
 Sends an event and bd to all listeners on this eventId.
 
void eventSend (const QByteArray &eventId)
 Sends an event to all listeners on this eventId.
 
template<typename P1 >
void eventSend (const QByteArray &eventId, const P1 &p1)
 Sends an event to all listeners on this eventId. More...
 
template<typename P1 , typename P2 >
void eventSend (const QByteArray &eventId, const P1 &p1, const P2 &p2)
 Sends an event to all listeners on this eventId. More...
 
template<typename P1 , typename P2 , typename P3 >
void eventSend (const QByteArray &eventId, const P1 &p1, const P2 &p2, const P3 &p3)
 Sends an event to all listeners on this eventId. More...
 
template<typename P1 , typename P2 , typename P3 , typename P4 >
void eventSend (const QByteArray &eventId, const P1 &p1, const P2 &p2, const P3 &p3, const P4 &p4)
 Sends an event to all listeners on this eventId. More...
 
template<typename P1 , typename P2 , typename P3 , typename P4 , typename P5 >
void eventSend (const QByteArray &eventId, const P1 &p1, const P2 &p2, const P3 &p3, const P4 &p4, const P5 &p5)
 Sends an event to all listeners on this eventId. More...
 
unsigned eventSourceCount () const
 Returns the number of event sources.
 
Uuid id () const
 Returns the unique id.
 
bool isBeingDestroyed () const
 Returns true if we are about to delete this object. More...
 
bool loadFromFileXML (const QString &filename)
 Reads this object (and its children) from an XML file.
 
bool loadFromMemoryXML (const QByteArray &buffer)
 Reads this object (and its children) from a memory buffer.
 
 Node (Node *host, const QByteArray &name="", bool transit=false)
 Constructs a new Node and adds it under the given host. More...
 
 Node (Node &&node)
 Moves a node, including all its attributes, events etc. More...
 
Nodeoperator= (Node &&node)
 Moves a node, replacing this. More...
 
void removeAttribute (Attribute *const attribute)
 Removes an Attribute from the list of attribute objects.
 
bool saveToFileXML (const QString &filename, unsigned int opts=SerializationOptions::DEFAULTS) const
 Saves this object (and its children) to an XML file.
 
bool saveToMemoryXML (QByteArray &buffer, unsigned int opts=SerializationOptions::DEFAULTS) const
 Saves this object (and its children) to binary data buffer.
 
virtual ArchiveElement serialize (Archive &doc) const
 Serializes this object (and its children) to a DOM node.
 
virtual void setAsDefaults ()
 Sets the current USER attribute value as the default value and clears the USER value. More...
 
void setId (Uuid newId)
 Sets the unique id. More...
 
template<class T >
bool setValue (const QByteArray &name, const T &v)
 Uses a query string to find a Attribute, and sets a new value to that if found. More...
 
bool setValue (const QByteArray &name, v8::Handle< v8::Value > v)
 Set attribute value from JavaScript. More...
 
- Public Member Functions inherited from Valuable::Attribute
long addListener (ListenerFunc func, int role=CHANGE_ROLE)
 Adds a listener that is invoked whenever the value is changed. More...
 
long addListener (Node *listener, ListenerFunc func, int role=CHANGE_ROLE)
 Adds a listener that is invoked whenever the value is changed. More...
 
long addListener (v8::Persistent< v8::Function > func, int role=CHANGE_ROLE)
 Adds a JavaScript listener that is invoked whenever the value is changed. More...
 
virtual float asFloat (bool *const ok=0, Layer layer=LAYER_CURRENT) const
 Converts the value object in a floating point number. More...
 
virtual int asInt (bool *const ok=0, Layer layer=LAYER_CURRENT) const
 Converts the value object in an integer. More...
 
virtual QString asString (bool *const ok=0, Layer layer=LAYER_CURRENT) const
 Converts the value object to a string. More...
 
 Attribute (const Attribute &o)
 Create a copy of the given Attribute WITHOUT the link to host, listeners, or the attribute name. More...
 
 Attribute (Node *host, const QByteArray &name, bool transit=false)
 Constructs a new value object and attaches it to its host. More...
 
virtual void clearValue (Layer layer)
 Unsets the value from a specific layer. More...
 
virtual void emitChange ()
 Invokes the change valueChanged function of all listeners.
 
void eventProcessFloat (const char *id, float v)
 Utility function for sending a float message to the object.
 
void eventProcessInt (const char *id, int v)
 Utility function for sending an int message to the object.
 
void eventProcessString (const char *id, const QString &str)
 Utility function for sending string message to the object.
 
void eventProcessString (const char *id, const char *str)
 Utility function for sending string message to the object.
 
void eventProcessVector2 (const char *id, Nimble::Vector2)
 Utility function for sending a Nimble::Vector2f message to the object.
 
void eventProcessVector3 (const char *id, Nimble::Vector3)
 Utility function for sending a Vector3 message to the object.
 
void eventProcessVector4 (const char *id, Nimble::Vector4)
 Utility function for sending a Vector4 message to the object.
 
virtual bool handleShorthand (const Valuable::StyleValue &value, Radiant::ArrayMap< Valuable::Attribute *, Valuable::StyleValue > &expanded)
 If attribute supports shorthand properties, this should be used to parse those. More...
 
Nodehost () const
 The host object of the value object (is any). More...
 
virtual bool isChanged () const
 
virtual bool isValueDefinedOnLayer (Layer layer) const
 Check if the given layer defines a value. More...
 
bool layerForSerialization (SerializationOptions flags, Layer &layer) const
 
const QByteArray & name () const
 Returns the name of the object.
 
const Attributeoperator= (const Attribute &)
 Create a copy of the given Attribute WITHOUT the link to host, listeners, or the attribute name. More...
 
AttributeownerShorthand () const
 
QByteArray path () const
 Returns the path (separated by '/'s) from the root.
 
void removeHost ()
 Sets the host pointer to zero and removes this object from the host. More...
 
bool removeListener (Node *listener, int role=ALL_ROLES)
 Removes a listener from the listener list. More...
 
bool removeListener (long id)
 Removes a listener from the listener list. More...
 
void removeListeners (int role=ALL_ROLES)
 Removes listeners from the listener list.
 
virtual bool set (float v, Layer layer=USER, ValueUnit unit=VU_UNKNOWN)
 Sets the value of the object.
 
virtual bool set (int v, Layer layer=USER, ValueUnit unit=VU_UNKNOWN)
 Sets the value of the object.
 
virtual bool set (const QString &v, Layer layer=USER, ValueUnit unit=VU_UNKNOWN)
 Sets the value of the object.
 
virtual bool set (const Nimble::Vector2f &v, Layer layer=USER, QList< ValueUnit > units=QList< ValueUnit >())
 Sets the value of the object.
 
virtual bool set (const Nimble::Vector3f &v, Layer layer=USER, QList< ValueUnit > units=QList< ValueUnit >())
 Sets the value of the object.
 
virtual bool set (const Nimble::Vector4f &v, Layer layer=USER, QList< ValueUnit > units=QList< ValueUnit >())
 Sets the value of the object.
 
virtual bool set (const StyleValue &value, Layer layer=USER)
 Sets the value of the object.
 
void setName (const QByteArray &s)
 Sets the name of the object.
 
void setOwnerShorthand (Attribute *owner)
 
virtual QByteArray type () const
 Get the type id of the attribute. More...
 
- Public Member Functions inherited from Valuable::Serializable
virtual bool deserializeXML (const DOMElement &element)
 Deserializes (reads) this object from an XML element. More...
 
bool isSerializable () const
 
void setSerializable (bool v)
 

Additional Inherited Members

- Public Types inherited from Valuable::Node
typedef container::const_iterator const_iterator
 
typedef Radiant::ArrayMap
< QByteArray, Attribute * > 
container
 Container for attributes, key is the attribute name.
 
typedef container::iterator iterator
 Iterator for the container.
 
typedef std::function< void(Radiant::BinaryData &)> ListenerFuncBd
 Listener function type that takes a BinaryData reference as a parameter, similar to eventProcess.
 
typedef std::function< void()> ListenerFuncVoid
 Default listener function type.
 
enum  ListenerType { DIRECT =1, AFTER_UPDATE =2, AFTER_UPDATE_ONCE =4 }
 Types of event listeners. More...
 
typedef int64_t Uuid
 Unique identifier type.
 
- Static Public Member Functions inherited from Valuable::Node
static bool copyValues (const Node &from, Node &to)
 Copies attribute values from one node to another. More...
 
static void disableQueue ()
 Disables all AFTER_UPDATE event processing, no new events will be accepted and the current queue will be cleared. More...
 
static Uuid generateId ()
 Generates a unique identifier. More...
 
static void invokeAfterUpdate (ListenerFuncVoid function)
 Queue function to be called in the main thread after the next update() More...
 
static int processQueue ()
 Triggers any pending AFTER_UPDATE-events. More...
 
static void reEnableQueue ()
 Enables queue after calling disableQueue. More...
 
static void setFatalOnEventMismatch (bool haltApplication)
 Controls what to do when an event mismatch is detected The default behavior is to output a warning to the terminal (haltApplication = false). More...
 
- Protected Member Functions inherited from Valuable::Node
virtual void attributeAdded (Attribute *attribute)
 This is called when new attribute is added to Node. More...
 
virtual void attributeRemoved (Attribute *attribute)
 This is called when attribute is removed from Node. More...
 
Nodesender ()
 Get the sender of the event, only valid in DIRECT events. More...
 
void setBeingDestroyed ()
 Sets 'isBeginDestroyed' flag to true and removes all event listeners to this object. More...
 

Detailed Description

Class for managing information on multiple OpenGL vindows/viewports.

This class stores information about the layout of multiple OpenGL windows and viewports. This information is used in systems that render OpenGL into several windows at once. MultiHead also includes keystone information, so that keystoning can be done by using skewed OpenGL transformation matrices. Multihead only stores the information of the configuration. Changing any of the values during runtime will have no effect unless the windows are restarted.

Member Function Documentation

void Luminous::MultiHead::adjustGraphicsToOrigin ( )

Moves graphics locations of areas so that their bounding box is located in origin.

Area& Luminous::MultiHead::area ( size_t  index,
Window **  winptr = 0 
)

Get an area.

This method traverses all the windows to find the area with given index.

Parameters
indexwindow index to look for
[out]winptrpointer to a window if the area is found
Returns
area with the given index or the first area if no match is found
size_t Luminous::MultiHead::areaCount ( )

Get the number of areas.

Returns
number of areas
float Luminous::MultiHead::dpi ( ) const

Get the dots-per-inch.

Returns
the DPI of the display
Nimble::Vector3i Luminous::MultiHead::dpms ( ) const
inline

Get the DPMS settings.

This function returns a triplet of values corresponding to the DPMS settings. The values are in seconds for 'standby', 'suspend', and 'power off'.

Returns
DPMS settings
See Also
setDpms
virtual void Luminous::MultiHead::eventProcess ( const QByteArray &  id,
Radiant::BinaryData data 
)
virtual

Process a message.

This method is a key element in the event-passing system. It is used to deliver information between objects. The information contains two parts:

  1. Identifier: A character string that gives the address for the adjustment
  2. Data: A binary blob that contains information for the message

This function is overridden in number of classes that need to receive and process events. In a typical case, when overriding this function, you should either process the message, or call the function of the parent class.

void MyClass::eventProcess(const QByteArray & type, Radiant::BinaryData & data)
{
if(type == "jump")
doJump();
else if(type == "crawl") {
bool ok;
int speed = data.readInt32(&ok);
if(ok)
doCrawl(speed);
}
else
Parent::eventProcess(type, data);
}
Parameters
idThe indentifier for the message. Typically this is quite human-readable
dataBinary blob that contains the argument data in easily parseable format.

Reimplemented from Valuable::Attribute.

bool Luminous::MultiHead::iconify ( ) const
inline

Check if all windows should be iconified.

Returns
true if the windows should be iconified; otherwise false
bool Luminous::MultiHead::isEdited ( ) const
inline

Check if the edited flag has been set.

This function checks if the configuration has been modified.

Returns
true if the configuration was changed; otherwise false
bool Luminous::MultiHead::isHardwareColorCorrectionEnabled ( ) const
inline

Is the hardware color-correction enabled.

Hardware color-correction is implemented with the video-multiplex hardware inside MultiTaction Cells.

Returns
Current value of the hw-color-correction attribute
bool Luminous::MultiHead::isVSyncEnabled ( ) const
inline

Is vertical sync enabled?

Returns
true if vertical sync is enabled; otherwise false
Current value of the vsync attribute
void Luminous::MultiHead::setDpi ( float  dpi)

Set the DPI of the display.

Setter for attribute dpi.

Parameters
dpidots-per-inch of the display
dpinew attribute value
void Luminous::MultiHead::setDpms ( const Nimble::Vector3i dpms)

Set the DPMS settings.

Setter for attribute dpms.

Parameters
dpmsdpms settings
See Also
dpms
Parameters
dpmsnew attribute value
void Luminous::MultiHead::setEdited ( bool  edited)
inline

Raise the edited flag for the configuration.

Typically used to check if the settings need to be saved when exiting an application.

Parameters
editedtrue to set the flag; false to disable it
void Luminous::MultiHead::setGlFinish ( bool  v)

Set if glFinish() should be called every frame.

Setter for attribute gl-finish.

Parameters
vtrue to enable glFinish() call
vnew attribute value
void Luminous::MultiHead::setHardwareColorCorrection ( bool  enabled)
inline

Setter for attribute hw-color-correction.

Parameters
enablednew attribute value
void Luminous::MultiHead::setIconify ( bool  iconify)
inline

Set the iconify flag for windows.

Setter for attribute iconify.

Parameters
iconifytrue to iconify windows
iconifynew attribute value
void Luminous::MultiHead::setIsVSyncEnabled ( bool  v)
inline

Set if vertical sync should be enabled.

Setter for attribute vsync.

Parameters
vtrue to enabled vertical sync; false to disable it
vnew attribute value
bool Luminous::MultiHead::useGlFinish ( ) const

Should glFinish() called every every frame to flush rendering.

Returns
true if glFinish() is called; otherwise false
Current value of the gl-finish attribute
Window& Luminous::MultiHead::window ( size_t  i)

Access the ith window.

Parameters
iwindow index
Returns
the window
const Window& Luminous::MultiHead::window ( size_t  i) const

Access the ith window.

Parameters
iwindow index
Returns
the window
size_t Luminous::MultiHead::windowCount ( ) const
inline

Get the number of windows.

Returns
number of windows in the configuration