| /* |
| * Copyright 2022 Rive |
| */ |
| |
| #include "gm.hpp" |
| #include "gmutils.hpp" |
| |
| using namespace rivegm; |
| |
| class RectGM : public GM |
| { |
| public: |
| RectGM() : GM(240, 240) {} |
| |
| void onDraw(rive::Renderer* ren) override |
| { |
| const rive::AABB rect = {0, 0, 120, 120}; |
| const rive::ColorInt colors[] = { |
| 0x80000000, |
| 0x80FF0000, |
| 0x8000FF00, |
| 0x800000FF, |
| }; |
| |
| Paint paint; |
| ren->translate(10, 10); |
| for (int y = 0; y < 2; ++y) |
| { |
| for (int x = 0; x < 2; ++x) |
| { |
| AutoRestore ar(ren, true); |
| |
| ren->translate(x * 100, y * 100); |
| paint->color(colors[y * 2 + x]); |
| draw_rect(ren, rect, paint); |
| } |
| } |
| } |
| }; |
| GMREGISTER(rect, return new RectGM) |
| |
| class RectGradientGM : public GM |
| { |
| public: |
| RectGradientGM() : GM(220, 220) {} |
| |
| void onDraw(rive::Renderer* ren) override |
| { |
| const rive::AABB rect = {0, 0, 100, 100}; |
| const rive::ColorInt colors[] = { |
| 0xFFFF0000, |
| 0xFF00FF00, |
| 0xFF0000FF, |
| }; |
| const rive::ColorInt grays[] = { |
| 0xFF000000, |
| 0xFFFFFFFF, |
| }; |
| const float pos[] = {0, 0.5, 1}; |
| const float pos2[] = {0, 1}; |
| |
| struct |
| { |
| rive::Vec2D a, b; |
| int n; |
| const rive::ColorInt* c; |
| const float* p; |
| } rec[] = { |
| {{rect.minX, rect.minY}, {rect.maxX, rect.maxY}, 3, colors, pos}, |
| {{rect.maxX, rect.minY}, {rect.minX, rect.maxY}, 3, colors, pos}, |
| {{rect.maxX, rect.minY}, {rect.minX, rect.maxY}, 2, grays, pos2}, |
| {{rect.minX, rect.minY}, {rect.maxX, rect.maxY}, 2, grays, pos2}, |
| }; |
| |
| Paint paint; |
| ren->translate(10, 10); |
| int i = 0; |
| for (int y = 0; y < 2; ++y) |
| { |
| for (int x = 0; x < 2; ++x) |
| { |
| AutoRestore ar(ren, true); |
| |
| ren->translate(x * 100, y * 100); |
| auto shader = |
| TestingWindow::Get()->factory()->makeLinearGradient( |
| rec[i].a.x, |
| rec[i].a.y, |
| rec[i].b.x, |
| rec[i].b.y, |
| rec[i].c, |
| rec[i].p, |
| rec[i].n); |
| paint->shader(shader); |
| draw_rect(ren, rect, paint); |
| i += 1; |
| } |
| } |
| } |
| }; |
| GMREGISTER(rect_grad, return new RectGradientGM) |