#include "rive/transform_component.hpp"
#include "rive/shapes/clipping_shape.hpp"
#include "rive/math/vec2d.hpp"
#include "rive/constraints/constraint.hpp"

using namespace rive;

float WorldTransformComponent::childOpacity() { return opacity(); }

void WorldTransformComponent::markWorldTransformDirty() {
    addDirt(ComponentDirt::WorldTransform, true);
}

const Mat2D& WorldTransformComponent::worldTransform() const {
    return m_WorldTransform;
}

Mat2D& WorldTransformComponent::mutableWorldTransform() {
    return m_WorldTransform;
}

void WorldTransformComponent::opacityChanged() {
    addDirt(ComponentDirt::RenderOpacity, true);
}

void WorldTransformComponent::worldTranslation(Vec2D& result) const {
    result[0] = m_WorldTransform[4];
    result[1] = m_WorldTransform[5];
}
