Operator class provides an interface that can be used to extend Widget behaviour by adding behaviours to it. More...
#include <MultiWidgets/Operator.hpp>
Valuable Attributes | |
| bool | done = false |
| Is the operator done (i.e. More... | |
Valuable Attributes inherited from Stylish::Styleable | |
| QString | css-class = "" |
| Get the CSS classes of the Styleable as a space separated string. More... | |
| QString | css-id = "" |
| Get the CSS id of the Styleable. More... | |
Valuable Attributes inherited from Valuable::Node | |
| Node::Uuid | id = generateId() |
| Returns the unique id. More... | |
Public Member Functions | |
| virtual void | added (MultiWidgets::Widget &w) |
| Called when the operator is added to a widget. More... | |
| virtual OperatorPtr | clone () const |
| Creates a copy of the operator. More... | |
| virtual void | input (MultiWidgets::Widget &w, MultiWidgets::GrabManager &gm, const MultiWidgets::TrackedObjects &trackedObjects, float dt) |
| Perform the operator logic on input. More... | |
| virtual void | interactionBegin (MultiWidgets::Widget &w, MultiWidgets::GrabManager &gm) |
| This function gets called when the Widget::interactionBegin is called for the widget this operator is attached to. More... | |
| virtual void | interactionEnd (MultiWidgets::Widget &w, MultiWidgets::GrabManager &gm) |
| This function gets called when the Widget::interactionEnd is called for the widget this operator is attached to. More... | |
| virtual bool | isActive () const |
| Returns true if the operator is currently active. More... | |
| bool | isDone () const |
| Is the operator done (i.e. More... | |
| Operator () | |
| Default constructor. | |
| virtual void | removed (MultiWidgets::Widget &w) |
| Called when the operator is removed from the widget or the widget is deleted. More... | |
| virtual void | reset () |
| Resets the state of the operator. More... | |
| virtual QByteArray | type () const |
| Returns the type id of the Operator. More... | |
| virtual void | update (MultiWidgets::Widget &w, const MultiWidgets::FrameInfo &frameInfo) |
| Perform operator logic. More... | |
| virtual | ~Operator () |
| Destructor. | |
Public Member Functions inherited from Stylish::Styleable | |
| void | addCSSClass (const QString &s) |
| Adds the Styleable to CSS class s. More... | |
| void | addCSSClasses (const QStringList &classes) |
| Adds the Styleable to given CSS classes. More... | |
| QString | attributeSource (const QByteArray &name) const |
| Gets CSS declaration source location based on the attribute name For example if this object has "size" attribute that is set from a CSS file, attributeSource("size") would return "filename.css:line". More... | |
| const Style & | childStyle () const |
| Cached style that should be applied to all children of this object. | |
|
const Radiant::ArraySet < QByteArray > & | cssClasses () const |
| Get the CSS classes of the Styleable in lowercase. | |
| const QString & | cssClassStr () const |
| Get the CSS classes of the Styleable as a space separated string. More... | |
| QString | cssId () const |
| Get the CSS id of the Styleable. More... | |
| const QByteArray & | cssType () const |
| Get the CSS type of the Styleable. | |
| bool | hasCSSClass (const QByteArray &s) const |
| Does the Styleable belong to given CSS class. More... | |
| bool | match (const SimpleSelector &ss, int *specificityOut=nullptr) const |
| Checks if SimpleSelector matches this object. More... | |
| bool | pseudoClass (const QByteArray &name) const |
| Query if the Styleable has pseudo class called name. | |
| void | removeCSSClass (const QString &s) |
| Remove the Styleable from CSS class s. More... | |
| void | setCSSClasses (const QString &s) |
| Set the CSS classes as a space separated list You almost always want to use addCSSClass instead of this one. More... | |
| void | setCSSId (const QString &s) |
| Set the CSS id of the Styleable. More... | |
| void | setCSSType (const QByteArray &s) |
| Set the CSS type of the Styleable. | |
| virtual bool | setProperty (Valuable::Attribute &var, const Valuable::StyleValue &value, Layer layer) |
| Converts the given Stylish::Value to Valuable::Attribute. | |
| void | setPseudoClass (const QByteArray &name, bool state) |
| Disable or enable pseudo class. | |
| virtual bool | setStyle (const Style &style) |
| Applies a style to the object. More... | |
| QString | simpleSelector (bool includePseudoClasses=true) const |
| Returns a CSS simple selector that matches this Styleable. | |
| const Style & | style () const |
| Returns the style for this object. | |
| Styleable (const QByteArray &name="Styleable") | |
| Constructor for Styleable. More... | |
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 Attribute * | attribute (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 container & | attributes () 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. | |
| virtual bool | deserialize (const ArchiveElement &element) |
| De-serializes this object (and its children) from a DOM node. | |
| 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... | |
| Node & | operator= (Node &&node) |
| Moves a node, replacing this. More... | |
| virtual bool | readElement (const ArchiveElement &element) |
| Handles a serialization element that lacks automatic handlers. 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. | |
| virtual void | eventProcess (const QByteArray &id, Radiant::BinaryData &data) |
| Process a message. More... | |
| 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... | |
| Node * | host () 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 Attribute & | operator= (const Attribute &) |
| Create a copy of the given Attribute WITHOUT the link to host, listeners, or the attribute name. More... | |
| Attribute * | ownerShorthand () 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) |
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) |
Static Public Member Functions | |
| static OperatorPtr | create (const Valuable::ArchiveElement &element) |
| Creates an operator by deserializing it from the archive. | |
Protected Member Functions | |
| void | setDone (bool done=true) |
| Mark the Operator as done. More... | |
Protected Member Functions inherited from Stylish::Styleable | |
| 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... | |
| virtual void | updateStyle () |
| Set the style for this object. | |
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... | |
| Node * | sender () |
| 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... | |
Protected Member Functions inherited from Valuable::Attribute | |
| virtual void | emitDelete () |
| Invokes the change valueDeleted function of all listeners. | |
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. | |
Node Events inherited from Stylish::Styleable | |
| [OUT] | pseudo-class-changed (QString name, bool state) |
Pseudo class name was added (state == true) or removed (state == false) | |
Protected Attributes inherited from Stylish::Styleable | |
| Style | m_childStyle |
| Cached style that should be applied to all children of this object. | |
| Valuable::AttributeString | m_cssClass |
| CSS class of the object as a space separated list. | |
| Valuable::AttributeString | m_cssId |
| CSS id of the object. | |
| QByteArray | m_cssType |
| CSS type of the object. | |
| Style | m_style |
| Currently applied style. | |
Operator class provides an interface that can be used to extend Widget behaviour by adding behaviours to it.
In many cases, some simple extra behaviour is required for different types of widgets. Changing the behaviour by overridign virtual functions would be cumbersome.
Operators can be used to add simple logic to widgets. The operator class is added as decoration to a widget. It can then access the input data given to the widget (Operator::input) and modify the state of the widget (Operator::update) without having to modify the widget itself.
Multiple operators can be added to a widget to generate more complex behaviours in a modular way.
You do not instantiate the Operator class directly, but inherit your custom behaviour from it.
|
virtual |
Called when the operator is added to a widget.
Can be called multiple times if the same operator is added to multiple widgets. Base implementation does nothing.
| w | The widget where the operator was added |
Reimplemented in MultiWidgets::AnimatorT< T >, MultiWidgets::AnimatorT< float >, MultiWidgets::AnimatorT< Nimble::Vector2f >, MultiWidgets::JavaScriptOperator, MultiWidgets::LayoutEngine, MultiWidgets::SnapToAngleOperator, MultiWidgets::VideoStreamAudioCaptureOperator, and MultiWidgets::SizeConstrainOperator.
|
virtual |
Creates a copy of the operator.
The default implementation serializes the operator and deserializes it to a new instance.
Reimplemented in MultiWidgets::AnimateRotationAboutCenterTowardsOperator, MultiWidgets::AnimateScaleAboutCenterTowardsOperator, MultiWidgets::AfterIdleApplyLambdaOperator, MultiWidgets::AnimateTowardsOperator< T >, and MultiWidgets::AnimateTowardsOperator< float >.
|
virtual |
Perform the operator logic on input.
This function gets called when widget input is processed and the INPUT_OPERATORS input flag is set for the target widget. This function is called even if the trackedObjects list for the widget is empty.
| w | The widget that is the target of the operator |
| gm | The grab manager that holds current input status, transformation etc. |
| trackedObjects | list of tracked objects affecting the widget (may be empty) |
| dt | time elapsed since last input frame |
Reimplemented in MultiWidgets::StayInsideParentOperator, MultiWidgets::JavaScriptOperator, and MultiWidgets::RotateTowardsHandsOperator.
|
virtual |
This function gets called when the Widget::interactionBegin is called for the widget this operator is attached to.
Reimplemented in MultiWidgets::JavaScriptOperator.
|
virtual |
This function gets called when the Widget::interactionEnd is called for the widget this operator is attached to.
Reimplemented in MultiWidgets::JavaScriptOperator.
|
virtual |
Returns true if the operator is currently active.
This information is used to determine which Widgets are currently active.
Typical use case is when an operator can be idle or active (for example #StayInsideParentOperator). In such cases the activity status of the operator can be used to determine if the widget has visible activity.
Reimplemented in MultiWidgets::StayInsideParentOperator, MultiWidgets::LimitScaleOperator, MultiWidgets::AfterIdleOperator, MultiWidgets::JavaScriptOperator, and MultiWidgets::InputFlagsOperator.
| bool MultiWidgets::Operator::isDone | ( | ) | const |
Is the operator done (i.e.
no longer needed). When the operator is done it is automatically deleted by the host widget.
|
virtual |
Called when the operator is removed from the widget or the widget is deleted.
For every added() call there is eventually one removed() call. Base implementation does nothing.
| w | The widget where the operator was removed |
Reimplemented in MultiWidgets::JavaScriptOperator, MultiWidgets::LayoutEngine, MultiWidgets::VideoStreamAudioCaptureOperator, and MultiWidgets::SizeConstrainOperator.
|
virtual |
Resets the state of the operator.
For example, Animators should reset the animation back to the beginning. Base implementation will call setDone(false)
Reimplemented in MultiWidgets::AnimatorT< T >, MultiWidgets::AnimatorT< float >, MultiWidgets::AnimatorT< Nimble::Vector2f >, MultiWidgets::TimerOperator, MultiWidgets::JavaScriptOperator, and MultiWidgets::InputFlagsOperator.
|
protected |
|
virtual |
Returns the type id of the Operator.
This is used in operator serialization.
Reimplemented from Valuable::Attribute.
|
virtual |
Perform operator logic.
This function gets called from when the widget is updated
| w | The widget that is the target of the operator |
| frameInfo | frame information |
Reimplemented in MultiWidgets::AnimatorT< T >, MultiWidgets::AnimatorT< float >, MultiWidgets::AnimatorT< Nimble::Vector2f >, MultiWidgets::AnimatorPointLocation, MultiWidgets::AnimatorCenterLocation, MultiWidgets::AnimatorRotation, MultiWidgets::Animation, MultiWidgets::StayInsideParentOperator, MultiWidgets::LimitScaleOperator, MultiWidgets::AnimatorScale, MultiWidgets::AnimatorFloatCosineModulator, MultiWidgets::JavaScriptOperator, MultiWidgets::LayoutEngine, MultiWidgets::TimerOperator, MultiWidgets::InputFlagsOperator, MultiWidgets::RotateTowardsHandsOperator, MultiWidgets::VideoStreamAudioCaptureOperator, and MultiWidgets::SizeConstrainOperator.