| #ifndef _RIVE_NODE_HPP_ |
| #define _RIVE_NODE_HPP_ |
| #include "rive/generated/node_base.hpp" |
| |
| namespace rive |
| { |
| /// A Rive Node |
| class Node : public NodeBase |
| { |
| private: |
| Mat2D m_LocalTransform = Mat2D(); |
| bool m_LocalTransformNeedsRecompute = false; |
| |
| void computeLocalTransform(); |
| |
| public: |
| void setComputedLocalX(float value) override {} |
| void setComputedLocalY(float value) override {} |
| void setComputedWorldX(float value) override {} |
| void setComputedWorldY(float value) override {} |
| void setComputedRootX(float value) override {} |
| void setComputedRootY(float value) override {} |
| void setComputedWidth(float value) override {} |
| void setComputedHeight(float value) override {} |
| |
| float computedLocalX() override { return localTransform()[4]; }; |
| float computedLocalY() override { return localTransform()[5]; }; |
| float computedWorldX() override { return worldTransform()[4]; }; |
| float computedWorldY() override { return worldTransform()[5]; }; |
| float computedRootX() override; |
| float computedRootY() override; |
| float computedWidth() override { return 0; }; |
| float computedHeight() override { return 0; }; |
| |
| void updateWorldTransform() override |
| { |
| m_LocalTransformNeedsRecompute = true; |
| Super::updateWorldTransform(); |
| } |
| |
| Mat2D localTransform(); |
| |
| protected: |
| void xChanged() override; |
| void yChanged() override; |
| void computedLocalXChanged() override {} |
| void computedLocalYChanged() override {} |
| void computedWorldXChanged() override {} |
| void computedWorldYChanged() override {} |
| void computedRootXChanged() override {} |
| void computedRootYChanged() override {} |
| void computedWidthChanged() override {} |
| void computedHeightChanged() override {} |
| |
| #ifdef WITH_RIVE_LAYOUT |
| void markLayoutNodeDirty(); |
| #endif |
| }; |
| } // namespace rive |
| |
| #endif |