24#include "aeongui/AttributeMap.hpp"
25#include "aeongui/dom/EventTarget.hpp"
26#include "aeongui/dom/DOMString.hpp"
63 DLL
Node (
Node* aParent =
nullptr );
111 DLL
void TraverseDepthFirstPreOrder (
const std::function<
void (
const Node& ) >& aPreamble,
const std::function<
void (
const Node& ) >& aPostamble,
const std::function<
bool (
const Node& ) >& aUnaryPredicate )
const;
155 DLL
virtual void Update (
double aDocumentTime );
170 DLL
virtual void OnLoad ();
200 const std::vector<std::unique_ptr<Node>>&
childNodes()
const;
219 DLL std::vector<Element*>
querySelectorAll (
const DOMString& aSelector )
const;
222 DLL
virtual void OnAncestorChanged();
224 std::vector<std::unique_ptr<Node>> mChildren{};
225 mutable std::vector<std::unique_ptr<Node>>::size_type mIterator{ 0 };
Abstract 2D rendering surface.
Definition Canvas.hpp:40
Represents a DOM Document.
Definition Document.hpp:40
Base class for DOM elements.
Definition Element.hpp:46
Base class for objects that can receive DOM events.
Definition EventTarget.hpp:58
Base class for all nodes in the DOM tree.
Definition Node.hpp:42
void TraverseDepthFirstPreOrder(const std::function< void(const Node &) > &aPreamble, const std::function< void(const Node &) > &aPostamble) const
Traverse pre-order with pre/post callbacks (const).
void TraverseDepthFirstPostOrder(const std::function< void(Node &) > &aAction)
Traverse the tree depth-first in post-order.
virtual void DrawStart(Canvas &aCanvas) const
Begin drawing this node on the canvas.
Definition Node.cpp:101
void StackTraverseDepthFirstPreOrder(const std::function< void(const Node &) > &aPreamble, const std::function< void(const Node &) > &aPostamble) const
Stack-based pre-order with pre/post callbacks (const, reentrant-safe).
virtual void Update(double aDocumentTime)
Update animation state for this node.
Definition Node.cpp:96
Node * AddNode(std::unique_ptr< Node > aNode)
Add a child node.
Definition Node.cpp:382
void StackTraverseDepthFirstPreOrder(const std::function< void(const Node &) > &aPreamble, const std::function< void(const Node &) > &aPostamble, const std::function< bool(const Node &) > &aUnaryPredicate) const
Stack-based pre-order with pre/post/predicate (const, reentrant-safe).
void TraverseDepthFirstPreOrder(const std::function< void(Node &) > &aPreamble, const std::function< void(Node &) > &aPostamble, const std::function< bool(Node &) > &aUnaryPredicate)
Traverse pre-order with pre/post callbacks and a predicate filter.
Document * ownerDocument() const
Get the owning Document for this node.
Definition Node.cpp:37
std::vector< Element * > querySelectorAll(const DOMString &aSelector) const
Find all descendant elements matching a CSS selector.
Definition Node.cpp:71
void StackTraverseDepthFirstPreOrder(const std::function< void(Node &) > &aPreamble, const std::function< void(Node &) > &aPostamble, const std::function< bool(Node &) > &aUnaryPredicate)
Stack-based pre-order with pre/post callbacks and predicate (reentrant-safe).
void StackTraverseDepthFirstPostOrder(const std::function< void(const Node &) > &aAction) const
Stack-based depth-first post-order traversal (const, reentrant-safe).
virtual void DrawFinish(Canvas &aCanvas) const
Finish drawing this node on the canvas.
Definition Node.cpp:107
std::unique_ptr< Node > RemoveNode(const Node *aNode)
Remove a child node.
Definition Node.cpp:394
void StackTraverseDepthFirstPreOrder(const std::function< void(const Node &) > &aAction) const
Stack-based depth-first pre-order traversal (const, reentrant-safe).
virtual void OnLoad()
Definition Node.cpp:113
void TraverseDepthFirstPreOrder(const std::function< void(const Node &) > &aAction) const
Traverse the tree depth-first in pre-order (const).
virtual NodeType nodeType() const =0
Get the node type.
virtual void OnUnload()
Definition Node.cpp:118
NodeType
DOM node type constants.
Definition Node.hpp:46
@ ENTITY_NODE
An Entity node (legacy).
Definition Node.hpp:52
@ ATTRIBUTE_NODE
An Attribute node (legacy).
Definition Node.hpp:48
@ CDATA_SECTION_NODE
A CDATASection node.
Definition Node.hpp:50
@ TEXT_NODE
A Text node.
Definition Node.hpp:49
@ COMMENT_NODE
A Comment node.
Definition Node.hpp:54
@ DOCUMENT_TYPE_NODE
A DocumentType node.
Definition Node.hpp:56
@ ENTITY_REFERENCE_NODE
An EntityReference node (legacy).
Definition Node.hpp:51
@ NOTATION_NODE
A Notation node (legacy).
Definition Node.hpp:58
@ PROCESSING_INSTRUCTION_NODE
A ProcessingInstruction node.
Definition Node.hpp:53
@ DOCUMENT_FRAGMENT_NODE
A DocumentFragment node.
Definition Node.hpp:57
@ DOCUMENT_NODE
A Document node.
Definition Node.hpp:55
@ ELEMENT_NODE
An Element node.
Definition Node.hpp:47
virtual bool IsDrawEnabled() const
Definition Node.cpp:91
Element * querySelector(const DOMString &aSelector) const
Find the first descendant element matching a CSS selector.
Definition Node.cpp:51
const std::vector< std::unique_ptr< Node > > & childNodes() const
Get the list of child nodes.
Definition Node.cpp:32
Node * parentElement() const
Get the parent element (same as parentNode for elements).
Definition Node.cpp:127
void StackTraverseDepthFirstPreOrder(const std::function< void(Node &) > &aPreamble, const std::function< void(Node &) > &aPostamble)
Stack-based pre-order with pre/post callbacks (reentrant-safe).
Node * parentNode() const
Get the parent node.
Definition Node.cpp:123
void TraverseDepthFirstPostOrder(const std::function< void(const Node &) > &aAction) const
Traverse the tree depth-first in post-order (const).
void TraverseDepthFirstPreOrder(const std::function< void(Node &) > &aAction)
Traverse the tree depth-first in pre-order.
void TraverseDepthFirstPreOrder(const std::function< void(Node &) > &aPreamble, const std::function< void(Node &) > &aPostamble)
Traverse pre-order with separate pre and post callbacks.
void StackTraverseDepthFirstPostOrder(const std::function< void(Node &) > &aAction)
Stack-based depth-first post-order traversal (reentrant-safe).
Node(Node *aParent=nullptr)
Construct a node with an optional parent.
Definition Node.cpp:29
void StackTraverseDepthFirstPreOrder(const std::function< void(Node &) > &aAction)
Stack-based depth-first pre-order traversal (reentrant-safe).
void TraverseDepthFirstPreOrder(const std::function< void(const Node &) > &aPreamble, const std::function< void(const Node &) > &aPostamble, const std::function< bool(const Node &) > &aUnaryPredicate) const
Traverse pre-order with pre/post callbacks and predicate (const).