#include "rive/shapes/rectangle.hpp"

using namespace rive;

Rectangle::Rectangle()
{
	addVertex(&m_Vertex1);
	addVertex(&m_Vertex2);
	addVertex(&m_Vertex3);
	addVertex(&m_Vertex4);
}

void Rectangle::cornerRadiusTLChanged() { markPathDirty(); }
void Rectangle::cornerRadiusTRChanged() { markPathDirty(); }
void Rectangle::cornerRadiusBLChanged() { markPathDirty(); }
void Rectangle::cornerRadiusBRChanged() { markPathDirty(); }

void Rectangle::update(ComponentDirt value)
{
	if (hasDirt(value, ComponentDirt::Path))
	{
		auto radius = cornerRadiusTL();
		auto link = linkCornerRadius();

		auto ox = -originX() * width();
		auto oy = -originY() * height();

		m_Vertex1.x(ox);
		m_Vertex1.y(oy);
		m_Vertex1.radius(radius);

		m_Vertex2.x(ox + width());
		m_Vertex2.y(oy);
		m_Vertex2.radius(link ? radius : cornerRadiusTR());

		m_Vertex3.x(ox + width());
		m_Vertex3.y(oy + height());
		m_Vertex3.radius(link ? radius : cornerRadiusBR());

		m_Vertex4.x(ox);
		m_Vertex4.y(oy + height());
		m_Vertex4.radius(link ? radius : cornerRadiusBL());
	}

	Super::update(value);
}