Home | History | Annotate | Download | only in gm
      1 /*
      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 
     14 class TestGradientGM : public skiagm::GM {
     15 public:
     16     TestGradientGM() {}
     17 
     18 protected:
     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 
     66 private:
     67     typedef skiagm::GM INHERITED;
     68 };
     69 
     70 // Register the GM
     71 DEF_GM( return new TestGradientGM; )
     72