xref: /aosp_15_r20/external/skia/gm/drawlines_with_local_matrix.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker /*
2*c8dee2aaSAndroid Build Coastguard Worker  * Copyright 2022 Google Inc.
3*c8dee2aaSAndroid Build Coastguard Worker  *
4*c8dee2aaSAndroid Build Coastguard Worker  * Use of this source code is governed by a BSD-style license that can be
5*c8dee2aaSAndroid Build Coastguard Worker  * found in the LICENSE file.
6*c8dee2aaSAndroid Build Coastguard Worker  */
7*c8dee2aaSAndroid Build Coastguard Worker 
8*c8dee2aaSAndroid Build Coastguard Worker #include "gm/gm.h"
9*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkCanvas.h"
10*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkPaint.h"
11*c8dee2aaSAndroid Build Coastguard Worker #include "include/effects/SkGradientShader.h"
12*c8dee2aaSAndroid Build Coastguard Worker 
13*c8dee2aaSAndroid Build Coastguard Worker DEF_SIMPLE_GM(drawlines_with_local_matrix, canvas, 500, 500) {
14*c8dee2aaSAndroid Build Coastguard Worker     canvas->clipRect({0,0,500,500});
15*c8dee2aaSAndroid Build Coastguard Worker     SkPaint grad;
16*c8dee2aaSAndroid Build Coastguard Worker     grad.setAntiAlias(true);
17*c8dee2aaSAndroid Build Coastguard Worker     grad.setStrokeCap(SkPaint::kSquare_Cap);
18*c8dee2aaSAndroid Build Coastguard Worker     float pos[6] = {0, 2/6.f, 3/6.f, 4/6.f, 5/6.f, 1};
19*c8dee2aaSAndroid Build Coastguard Worker     constexpr SkColor indigo = SkColorSetARGB(0xFF, 0x4b, 0x00, 0x82);
20*c8dee2aaSAndroid Build Coastguard Worker     constexpr SkColor violet = SkColorSetARGB(0xFF, 0xee, 0x82, 0xee);
21*c8dee2aaSAndroid Build Coastguard Worker     SkColor colors[6] = {SK_ColorRED, SK_ColorYELLOW, SK_ColorGREEN, SK_ColorBLUE, indigo, violet};
22*c8dee2aaSAndroid Build Coastguard Worker     grad.setShader(SkGradientShader::MakeRadial({250,250}, 280, colors, pos, 6,SkTileMode::kClamp));
23*c8dee2aaSAndroid Build Coastguard Worker     canvas->drawPaint(grad);
24*c8dee2aaSAndroid Build Coastguard Worker 
25*c8dee2aaSAndroid Build Coastguard Worker     SkPaint white;
26*c8dee2aaSAndroid Build Coastguard Worker     white.setAntiAlias(true);
27*c8dee2aaSAndroid Build Coastguard Worker     white.setStrokeCap(SkPaint::kSquare_Cap);
28*c8dee2aaSAndroid Build Coastguard Worker     white.setColor(SK_ColorWHITE);
29*c8dee2aaSAndroid Build Coastguard Worker 
__anonc7af0b340102(float x0, float y0, float x1, float y1, float w) 30*c8dee2aaSAndroid Build Coastguard Worker     auto drawLine = [&](float x0, float y0, float x1, float y1, float w) {
31*c8dee2aaSAndroid Build Coastguard Worker         SkPoint p[2] = {{x0, y0}, {x1, y1}};
32*c8dee2aaSAndroid Build Coastguard Worker         white.setStrokeWidth(w);
33*c8dee2aaSAndroid Build Coastguard Worker         canvas->drawPoints(SkCanvas::kLines_PointMode, 2, p, white);
34*c8dee2aaSAndroid Build Coastguard Worker         grad.setStrokeWidth(w - 4);
35*c8dee2aaSAndroid Build Coastguard Worker         canvas->drawPoints(SkCanvas::kLines_PointMode, 2, p, grad);
36*c8dee2aaSAndroid Build Coastguard Worker     };
37*c8dee2aaSAndroid Build Coastguard Worker 
38*c8dee2aaSAndroid Build Coastguard Worker     drawLine(20, 20, 200, 120, 20);
39*c8dee2aaSAndroid Build Coastguard Worker     drawLine(20, 200, 20, 100, 20);
40*c8dee2aaSAndroid Build Coastguard Worker     drawLine(480, 20, 400, 400, 20);
41*c8dee2aaSAndroid Build Coastguard Worker     drawLine(50, 480, 260, 100, 20);
42*c8dee2aaSAndroid Build Coastguard Worker     drawLine(270, 20, 380, 210, 20);
43*c8dee2aaSAndroid Build Coastguard Worker     drawLine(280, 280, 400, 480, 20);
44*c8dee2aaSAndroid Build Coastguard Worker     drawLine(160, 375, 280, 375, 20);
45*c8dee2aaSAndroid Build Coastguard Worker     drawLine(220, 410, 220, 470, 20);
46*c8dee2aaSAndroid Build Coastguard Worker     drawLine(250, 250, 250, 250, 20);
47*c8dee2aaSAndroid Build Coastguard Worker }
48