blob: e0153cfe0014f79686dc51440b7bda3273ab0f73 [file]
/*
* Copyright 2022 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "gm/gm.h"
#include "include/core/SkCanvas.h"
#include "include/core/SkPaint.h"
#include "include/effects/SkGradient.h"
DEF_SIMPLE_GM(drawlines_with_local_matrix, canvas, 500, 500) {
canvas->clipRect({0,0,500,500});
SkPaint grad;
grad.setAntiAlias(true);
grad.setStrokeCap(SkPaint::kSquare_Cap);
float pos[6] = {0, 2/6.f, 3/6.f, 4/6.f, 5/6.f, 1};
const SkColor4f indigo = SkColor4f::FromColor(SkColorSetARGB(0xFF, 0x4b, 0x00, 0x82));
const SkColor4f violet = SkColor4f::FromColor(SkColorSetARGB(0xFF, 0xee, 0x82, 0xee));
const SkColor4f colors[6] = {
SkColors::kRed, SkColors::kYellow, SkColors::kGreen, SkColors::kBlue, indigo, violet};
grad.setShader(SkShaders::RadialGradient({250,250}, 280,
{{colors, pos, SkTileMode::kClamp}, {}}));
canvas->drawPaint(grad);
SkPaint white;
white.setAntiAlias(true);
white.setStrokeCap(SkPaint::kSquare_Cap);
white.setColor(SK_ColorWHITE);
auto drawLine = [&](float x0, float y0, float x1, float y1, float w) {
SkPoint p[2] = {{x0, y0}, {x1, y1}};
white.setStrokeWidth(w);
canvas->drawPoints(SkCanvas::kLines_PointMode, p, white);
grad.setStrokeWidth(w - 4);
canvas->drawPoints(SkCanvas::kLines_PointMode, p, grad);
};
drawLine(20, 20, 200, 120, 20);
drawLine(20, 200, 20, 100, 20);
drawLine(480, 20, 400, 400, 20);
drawLine(50, 480, 260, 100, 20);
drawLine(270, 20, 380, 210, 20);
drawLine(280, 280, 400, 480, 20);
drawLine(160, 375, 280, 375, 20);
drawLine(220, 410, 220, 470, 20);
drawLine(250, 250, 250, 250, 20);
}