24 for (
const auto& c : brush.colors) {
25 colors.push_back(glm::uvec4(c.color * 255.f));
28 float actualEdgeUvPosition = 0.f;
30 float rotationRadians = brush.rotation.radians();
32 float s = glm::sin(rotationRadians);
33 float c = -glm::cos(rotationRadians);
34 float bias = glm::max(-s, -c, 0.f);
36 auto probe = [&](glm::vec2 uv) {
37 return uv.x * s + uv.y * c + bias;
39 auto adjust = [&](glm::vec2 uv) {
48 if (
auto p = probe({1, 1}); p < 0.f) {
58 s * (1.f - actualEdgeUvPosition * 2.f), 0.f, 0.f,
59 c * (1.f - actualEdgeUvPosition * 2.f), 0.f, 0.f,
60 bias * (1.f - actualEdgeUvPosition * 2.f) + actualEdgeUvPosition, 0.f, 0.f,
66 return AImageView({(
const char*)colors.data(), colors.sizeInBytes()}, {colors.size(), 1}, APixelFormat::RGBA_BYTE);