| /* | |
| * 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()) |