blob: 8f532661b1adfbcb08ff94dc8b6fc16982ea6ac6 [file] [log] [blame] [edit]
/*
* Copyright 2018 Google Inc.
* Copyright 2022 Rive
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "gm.hpp"
#include "gmutils.hpp"
#include "rive/renderer.hpp"
#include "common/rand.hpp"
static constexpr float kStrokeWidth = 30;
using namespace rivegm;
using namespace rive;
class RoundJoinStrokesGM : public GM
{
public:
RoundJoinStrokesGM() : GM(800, 600) {}
ColorInt clearColor() const override { return 0xff000000; }
void onDraw(rive::Renderer* renderer) override
{
Rand rand;
Paint strokePaint;
strokePaint->style(RenderPaintStyle::stroke);
strokePaint->thickness(kStrokeWidth);
strokePaint->cap(StrokeCap::butt);
strokePaint->join(StrokeJoin::round);
{
Path path;
path->moveTo(30, 170);
path->lineTo(170, 30);
strokePaint->color(rand.u32() | 0xff808080);
renderer->drawPath(path, strokePaint);
}
{
Path path;
path->moveTo(230, 170);
path->lineTo(370, 30);
path->close();
strokePaint->color(rand.u32() | 0xff808080);
renderer->drawPath(path, strokePaint);
}
{
Path path;
path->moveTo(570, 170);
path->lineTo(430, 30);
path->lineTo(570, 170);
path->close();
strokePaint->color(rand.u32() | 0xff808080);
renderer->drawPath(path, strokePaint);
}
{
Path path;
path->moveTo(770, 170);
path->lineTo(630, 30);
path->lineTo(770, 170);
strokePaint->color(rand.u32() | 0xff808080);
renderer->drawPath(path, strokePaint);
}
{
Path path;
path->moveTo(30, 370);
path->cubicTo(230, 230, 230, 230, 30, 370);
strokePaint->color(rand.u32() | 0xff808080);
renderer->drawPath(path, strokePaint);
}
{
Path path;
path->moveTo(770, 370);
path->cubicTo(570, 230, 570, 230, 770, 370);
path->close();
strokePaint->color(rand.u32() | 0xff808080);
renderer->drawPath(path, strokePaint);
}
{
Path path;
path->moveTo(400, 550);
path->cubicTo(-100, 130, 900, 130, 400, 550);
path->close();
strokePaint->color(rand.u32() | 0xff808080);
renderer->drawPath(path, strokePaint);
}
strokePaint->cap(StrokeCap::round);
{
Path path;
path->moveTo(100, 500);
strokePaint->color(rand.u32() | 0xff808080);
renderer->drawPath(path, strokePaint);
}
{
Path path;
path->moveTo(700, 500);
path->close();
strokePaint->color(rand.u32() | 0xff808080);
renderer->drawPath(path, strokePaint);
}
}
};
GMREGISTER(roundjoinstrokes, return new RoundJoinStrokesGM())