blob: bc21fdb574b84fc721473a3da3bbda1c086e7c38 [file] [log] [blame] [edit]
/*
* Copyright 2022 Rive
*/
#include "gm.hpp"
#include "gmutils.hpp"
#include "rive/renderer.hpp"
#include "common/rand.hpp"
using namespace rivegm;
using namespace rive;
constexpr int W = 1000;
constexpr int H = 400;
constexpr int N = 9999;
class VeryComplexGradGM : public GM
{
public:
VeryComplexGradGM() : GM(W, H) {}
ColorInt clearColor() const override { return 0xff000000; }
void onDraw(rive::Renderer* renderer) override
{
Rand rand;
std::vector<ColorInt> colors(N);
std::vector<float> stops(N);
for (size_t i = 0; i < N; ++i)
{
colors[i] = rand.u32() | 0xff808080;
stops[i] = std::round(rand.f32() * W) / W;
}
std::sort(stops.begin(), stops.end());
Paint paint;
paint->shader(
TestingWindow::Get()->factory()->makeLinearGradient(0,
0,
W,
0,
colors.data(),
stops.data(),
N));
Path fullscreen = PathBuilder().addRect({0, 0, W, H}).detach();
renderer->drawPath(fullscreen, paint);
}
};
GMREGISTER(verycomplexgrad, return new VeryComplexGradGM())