blob: ca801f33c22fa83c1d00e8b217631bcefaef579d [file] [log] [blame] [edit]
#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