/*
 * Copyright 2023 Rive
 */

#include "gm.hpp"
#include "gmutils.hpp"

using namespace rivegm;
using namespace rive;

DEF_SIMPLE_GM_WITH_CLEAR_COLOR(transparentclear, 0x8000ffff, 64, 64, renderer)
{
    Paint strokePaint;
    strokePaint->style(RenderPaintStyle::stroke);
    strokePaint->thickness(10);
    strokePaint->join(StrokeJoin::miter);
    strokePaint->color(0x80404000);
    renderer->drawPath(PathBuilder::Rect({0, 0, 64, 64}), strokePaint);
}

DEF_SIMPLE_GM_WITH_CLEAR_COLOR(transparentclear_blendmode,
                               0x8000ffff,
                               64,
                               64,
                               renderer)
{
    Paint strokePaint;
    strokePaint->style(RenderPaintStyle::stroke);
    strokePaint->thickness(10);
    strokePaint->join(StrokeJoin::miter);
    strokePaint->color(0x80404000);
    strokePaint->blendMode(BlendMode::colorBurn);
    renderer->drawPath(PathBuilder::Rect({0, 0, 64, 64}), strokePaint);
}
