1cb93a386Sopenharmony_ci// Copyright 2020 Google LLC. 2cb93a386Sopenharmony_ci// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. 3cb93a386Sopenharmony_ci#include "tools/fiddle/examples.h" 4cb93a386Sopenharmony_ciREG_FIDDLE_ANIMATED(SKIA_LOGO_ANIMATE, 816, 464, false, 0, 2) { 5cb93a386Sopenharmony_civoid draw(SkCanvas* canvas) { 6cb93a386Sopenharmony_ci canvas->scale(4.0f, 4.0f); 7cb93a386Sopenharmony_ci const SkColor background = SK_ColorWHITE; // SK_ColorTRANSPARENT; 8cb93a386Sopenharmony_ci const SkColor lettering = 0xFF292929; 9cb93a386Sopenharmony_ci const SkColor lineColors[2] = {0x30565656, 0xFF565656}; 10cb93a386Sopenharmony_ci SkPath s, k, a, triangle; 11cb93a386Sopenharmony_ci SkPaint p; 12cb93a386Sopenharmony_ci p.setAntiAlias(true); 13cb93a386Sopenharmony_ci 14cb93a386Sopenharmony_ci canvas->clear(background); 15cb93a386Sopenharmony_ci canvas->scale(0.363f, 0.363f); 16cb93a386Sopenharmony_ci 17cb93a386Sopenharmony_ci 18cb93a386Sopenharmony_ci s.moveTo(34.63, 100.63); 19cb93a386Sopenharmony_ci s.cubicTo(44.38, 88.57, 59.87, 82.86, 74.88, 81.2); 20cb93a386Sopenharmony_ci s.cubicTo(97.4, 78.5, 120.27, 83.25, 140.87, 92.37); 21cb93a386Sopenharmony_ci s.lineTo(127.12, 127.14); 22cb93a386Sopenharmony_ci s.cubicTo(113.55, 121.16, 99.04, 115.9, 83.98, 116.56); 23cb93a386Sopenharmony_ci s.cubicTo(78.86, 116.75, 72.88, 118.54, 70.71, 123.69); 24cb93a386Sopenharmony_ci s.cubicTo(68.62, 128.43, 71.52, 133.68, 75.58, 136.27); 25cb93a386Sopenharmony_ci s.cubicTo(91.49, 146.66, 110.67, 151.38, 125.46, 163.6); 26cb93a386Sopenharmony_ci s.cubicTo(132.35, 169.11, 137.33, 176.9, 139.36, 185.49); 27cb93a386Sopenharmony_ci s.cubicTo(142.55, 199.14, 140.94, 214.31, 133.13, 226.17); 28cb93a386Sopenharmony_ci s.cubicTo(126.23, 236.96, 114.82, 244.16, 102.75, 247.89); 29cb93a386Sopenharmony_ci s.cubicTo(87.95, 252.51, 72.16, 252.21, 56.88, 250.78); 30cb93a386Sopenharmony_ci s.cubicTo(45.54, 249.72, 34.64, 246.05, 24.32, 241.36); 31cb93a386Sopenharmony_ci s.lineTo(24.25, 201.1); 32cb93a386Sopenharmony_ci s.cubicTo(38.23, 208.15, 53.37, 213.15, 68.98, 214.75); 33cb93a386Sopenharmony_ci s.cubicTo(75.42, 215.25, 82.17, 215.63, 88.31, 213.27); 34cb93a386Sopenharmony_ci s.cubicTo(92.84, 211.53, 96.4, 206.93, 95.86, 201.93); 35cb93a386Sopenharmony_ci s.cubicTo(95.64, 196.77, 91.1, 193.38, 87.03, 190.99); 36cb93a386Sopenharmony_ci s.cubicTo(71.96, 182.67, 54.94, 177.66, 41.5, 166.57); 37cb93a386Sopenharmony_ci s.cubicTo(33.19, 159.73, 27.51, 149.8, 26.1, 139.11); 38cb93a386Sopenharmony_ci s.cubicTo(24.09, 125.88, 25.91, 111.25, 34.63, 100.63); 39cb93a386Sopenharmony_ci canvas->drawPath(s, p); 40cb93a386Sopenharmony_ci 41cb93a386Sopenharmony_ci k.moveTo(160.82, 82.85); 42cb93a386Sopenharmony_ci k.lineTo(206.05, 82.85); 43cb93a386Sopenharmony_ci k.lineTo(206.05, 155.15); 44cb93a386Sopenharmony_ci k.lineTo(254.83, 82.84); 45cb93a386Sopenharmony_ci k.lineTo(304.01, 82.85); 46cb93a386Sopenharmony_ci k.lineTo(251.52, 157.27); 47cb93a386Sopenharmony_ci k.lineTo(303.09, 249.42); 48cb93a386Sopenharmony_ci k.lineTo(252.28, 249.4); 49cb93a386Sopenharmony_ci k.lineTo(219.18, 185.75); 50cb93a386Sopenharmony_ci k.lineTo(206.23, 193.45); 51cb93a386Sopenharmony_ci k.lineTo(206.05, 249.42); 52cb93a386Sopenharmony_ci k.lineTo(160.82, 249.42); 53cb93a386Sopenharmony_ci k.lineTo(160.82, 82.85); 54cb93a386Sopenharmony_ci canvas->drawPath(k, p); 55cb93a386Sopenharmony_ci 56cb93a386Sopenharmony_ci a.moveTo(426.45, 218.16); 57cb93a386Sopenharmony_ci a.lineTo(480.705, 218.16); 58cb93a386Sopenharmony_ci a.lineTo(489.31, 249.4); 59cb93a386Sopenharmony_ci a.lineTo(538.54, 249.42); 60cb93a386Sopenharmony_ci a.lineTo(483.56, 82.18); 61cb93a386Sopenharmony_ci a.lineTo(423.43, 82.17); 62cb93a386Sopenharmony_ci a.lineTo(369.13, 249.42); 63cb93a386Sopenharmony_ci a.lineTo(418.5, 249.47); 64cb93a386Sopenharmony_ci a.lineTo(453.75, 109.83); 65cb93a386Sopenharmony_ci a.lineTo(471.77, 181.28); 66cb93a386Sopenharmony_ci a.lineTo(430.5, 181.28); 67cb93a386Sopenharmony_ci canvas->drawPath(a, p); 68cb93a386Sopenharmony_ci 69cb93a386Sopenharmony_ci canvas->save(); 70cb93a386Sopenharmony_ci 71cb93a386Sopenharmony_ci float pos = frame > 0.5 ? 1 : frame * 2; 72cb93a386Sopenharmony_ci canvas->translate((1-pos) * -200.0, 0.0); 73cb93a386Sopenharmony_ci 74cb93a386Sopenharmony_ci const SkColor rgb[] = {0xFFE94037, 0xFF70BF4F, 0xFF465BA6}; 75cb93a386Sopenharmony_ci const uint8_t alpha = pos*255.999; 76cb93a386Sopenharmony_ci 77cb93a386Sopenharmony_ci p.setColor(rgb[1]); 78cb93a386Sopenharmony_ci p.setAlpha(alpha); 79cb93a386Sopenharmony_ci canvas->drawRect({326.0, 82.25, 343.9, 249.2}, p); 80cb93a386Sopenharmony_ci p.setColor(rgb[0]); 81cb93a386Sopenharmony_ci p.setAlpha(alpha); 82cb93a386Sopenharmony_ci canvas->drawRect({310.2, 82.25, 327.0, 249.2}, p); 83cb93a386Sopenharmony_ci p.setColor(rgb[2]); 84cb93a386Sopenharmony_ci p.setAlpha(alpha); 85cb93a386Sopenharmony_ci canvas->drawRect({342.9, 82.25, 358.87, 249.2}, p); 86cb93a386Sopenharmony_ci 87cb93a386Sopenharmony_ci p.setColor(lettering); 88cb93a386Sopenharmony_ci //p.setAlpha(cast_alpha(pos)); 89cb93a386Sopenharmony_ci canvas->drawCircle(335.355, 45.965, 29.25, p); 90cb93a386Sopenharmony_ci 91cb93a386Sopenharmony_ci triangle.reset(); 92cb93a386Sopenharmony_ci triangle.moveTo(362.64, 257.32); 93cb93a386Sopenharmony_ci triangle.lineTo(335.292, 293.392); 94cb93a386Sopenharmony_ci triangle.lineTo(307.8, 257.48); 95cb93a386Sopenharmony_ci triangle.lineTo(362.64, 257.32); 96cb93a386Sopenharmony_ci p.setColor(lettering); 97cb93a386Sopenharmony_ci canvas->drawPath(triangle, p); 98cb93a386Sopenharmony_ci 99cb93a386Sopenharmony_ci canvas->restore(); 100cb93a386Sopenharmony_ci 101cb93a386Sopenharmony_ci // line 102cb93a386Sopenharmony_ci const SkPoint pts[2] = {{160, 290}, {341, 290}}; 103cb93a386Sopenharmony_ci p.setShader(SkGradientShader::MakeLinear( 104cb93a386Sopenharmony_ci pts, lineColors, NULL, 2, SkTileMode::kClamp)); 105cb93a386Sopenharmony_ci if (true) { 106cb93a386Sopenharmony_ci SkRRect rrectClip; 107cb93a386Sopenharmony_ci rrectClip.setRectXY({138, 291, 138 + pos*(341-138), 300}, 25.0, 5.0); 108cb93a386Sopenharmony_ci canvas->clipRRect(rrectClip, SkClipOp::kIntersect); 109cb93a386Sopenharmony_ci SkRRect rrect; 110cb93a386Sopenharmony_ci rrect.setRectXY({138, 291, 341, 300}, 25.0, 5.0); 111cb93a386Sopenharmony_ci canvas->drawRRect(rrect, p); 112cb93a386Sopenharmony_ci } else { 113cb93a386Sopenharmony_ci SkPath path; 114cb93a386Sopenharmony_ci path.addRoundRect({138, 291, 341, 299.95}, 25.0, 5.0); 115cb93a386Sopenharmony_ci canvas->drawPath(path, p); 116cb93a386Sopenharmony_ci } 117cb93a386Sopenharmony_ci} 118cb93a386Sopenharmony_ci} // END FIDDLE 119