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