1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2017 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#include "gm/gm.h" 9cb93a386Sopenharmony_ci#include "include/core/SkCanvas.h" 10cb93a386Sopenharmony_ci#include "include/core/SkColor.h" 11cb93a386Sopenharmony_ci#include "include/core/SkPaint.h" 12cb93a386Sopenharmony_ci#include "include/core/SkPoint.h" 13cb93a386Sopenharmony_ci#include "include/core/SkRRect.h" 14cb93a386Sopenharmony_ci#include "include/core/SkRect.h" 15cb93a386Sopenharmony_ci#include "include/core/SkShader.h" 16cb93a386Sopenharmony_ci#include "include/core/SkSize.h" 17cb93a386Sopenharmony_ci#include "include/core/SkString.h" 18cb93a386Sopenharmony_ci#include "include/core/SkTileMode.h" 19cb93a386Sopenharmony_ci#include "include/effects/SkGradientShader.h" 20cb93a386Sopenharmony_ci 21cb93a386Sopenharmony_ciclass TestGradientGM : public skiagm::GM { 22cb93a386Sopenharmony_cipublic: 23cb93a386Sopenharmony_ci TestGradientGM() {} 24cb93a386Sopenharmony_ci 25cb93a386Sopenharmony_ciprotected: 26cb93a386Sopenharmony_ci SkString onShortName() override { 27cb93a386Sopenharmony_ci return SkString("testgradient"); 28cb93a386Sopenharmony_ci } 29cb93a386Sopenharmony_ci 30cb93a386Sopenharmony_ci SkISize onISize() override { 31cb93a386Sopenharmony_ci return SkISize::Make(800, 800); 32cb93a386Sopenharmony_ci } 33cb93a386Sopenharmony_ci 34cb93a386Sopenharmony_ci void onDraw(SkCanvas* canvas) override { 35cb93a386Sopenharmony_ci // Set up a gradient paint for a rect. 36cb93a386Sopenharmony_ci // And non-gradient paint for other objects. 37cb93a386Sopenharmony_ci canvas->drawColor(SK_ColorWHITE); 38cb93a386Sopenharmony_ci 39cb93a386Sopenharmony_ci SkPaint paint; 40cb93a386Sopenharmony_ci paint.setStyle(SkPaint::kFill_Style); 41cb93a386Sopenharmony_ci paint.setAntiAlias(true); 42cb93a386Sopenharmony_ci paint.setStrokeWidth(4); 43cb93a386Sopenharmony_ci paint.setColor(0xFFFE938C); 44cb93a386Sopenharmony_ci 45cb93a386Sopenharmony_ci SkRect rect = SkRect::MakeXYWH(10, 10, 100, 160); 46cb93a386Sopenharmony_ci 47cb93a386Sopenharmony_ci SkPoint points[2] = { 48cb93a386Sopenharmony_ci SkPoint::Make(0.0f, 0.0f), 49cb93a386Sopenharmony_ci SkPoint::Make(256.0f, 256.0f) 50cb93a386Sopenharmony_ci }; 51cb93a386Sopenharmony_ci SkColor colors[2] = {SK_ColorBLUE, SK_ColorYELLOW}; 52cb93a386Sopenharmony_ci SkPaint newPaint(paint); 53cb93a386Sopenharmony_ci newPaint.setShader(SkGradientShader::MakeLinear( 54cb93a386Sopenharmony_ci points, colors, nullptr, 2, SkTileMode::kClamp)); 55cb93a386Sopenharmony_ci canvas->drawRect(rect, newPaint); 56cb93a386Sopenharmony_ci 57cb93a386Sopenharmony_ci SkRRect oval; 58cb93a386Sopenharmony_ci oval.setOval(rect); 59cb93a386Sopenharmony_ci oval.offset(40, 80); 60cb93a386Sopenharmony_ci paint.setColor(0xFFE6B89C); 61cb93a386Sopenharmony_ci canvas->drawRRect(oval, paint); 62cb93a386Sopenharmony_ci 63cb93a386Sopenharmony_ci paint.setColor(0xFF9CAFB7); 64cb93a386Sopenharmony_ci canvas->drawCircle(180, 50, 25, paint); 65cb93a386Sopenharmony_ci 66cb93a386Sopenharmony_ci rect.offset(80, 50); 67cb93a386Sopenharmony_ci paint.setColor(0xFF4281A4); 68cb93a386Sopenharmony_ci paint.setStyle(SkPaint::kStroke_Style); 69cb93a386Sopenharmony_ci canvas->drawRoundRect(rect, 10, 10, paint); 70cb93a386Sopenharmony_ci } 71cb93a386Sopenharmony_ci 72cb93a386Sopenharmony_ciprivate: 73cb93a386Sopenharmony_ci using INHERITED = skiagm::GM; 74cb93a386Sopenharmony_ci}; 75cb93a386Sopenharmony_ci 76cb93a386Sopenharmony_ci// Register the GM 77cb93a386Sopenharmony_ciDEF_GM( return new TestGradientGM; ) 78