blob: 84eed38a032c586335eb22e5b2f5a084be36d260 [file] [log] [blame]
#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);
}