| OLD | NEW | 
|   1 /* |   1 /* | 
|   2  * Copyright 2013 Google Inc. |   2  * Copyright 2013 Google Inc. | 
|   3  * |   3  * | 
|   4  * Use of this source code is governed by a BSD-style license that can be |   4  * Use of this source code is governed by a BSD-style license that can be | 
|   5  * found in the LICENSE file. |   5  * found in the LICENSE file. | 
|   6  */ |   6  */ | 
|   7  |   7  | 
|   8 #include "gm.h" |   8 #include "gm.h" | 
|   9 #include "SkCanvas.h" |   9 #include "SkCanvas.h" | 
|  10 #include "SkGradientShader.h" |  10 #include "SkGradientShader.h" | 
|  11  |  11  | 
|  12 class AlphaGradientsGM : public skiagm::GM { |  12 class AlphaGradientsGM : public skiagm::GM { | 
|  13 public: |  13 public: | 
|  14     AlphaGradientsGM() {} |  14     AlphaGradientsGM() {} | 
|  15  |  15  | 
|  16 protected: |  16 protected: | 
|  17     virtual SkString onShortName() SK_OVERRIDE { |  17     SkString onShortName() SK_OVERRIDE { | 
|  18         return SkString("alphagradients"); |  18         return SkString("alphagradients"); | 
|  19     } |  19     } | 
|  20  |  20  | 
|  21     virtual SkISize onISize() SK_OVERRIDE { |  21     SkISize onISize() SK_OVERRIDE { | 
|  22         return SkISize::Make(640, 480); |  22         return SkISize::Make(640, 480); | 
|  23     } |  23     } | 
|  24  |  24  | 
|  25     static void draw_grad(SkCanvas* canvas, const SkRect& r, |  25     static void draw_grad(SkCanvas* canvas, const SkRect& r, | 
|  26                           SkColor c0, SkColor c1, bool doPreMul) { |  26                           SkColor c0, SkColor c1, bool doPreMul) { | 
|  27         SkColor colors[] = { c0, c1 }; |  27         SkColor colors[] = { c0, c1 }; | 
|  28         SkPoint pts[] = { { r.fLeft, r.fTop }, { r.fRight, r.fBottom } }; |  28         SkPoint pts[] = { { r.fLeft, r.fTop }, { r.fRight, r.fBottom } }; | 
|  29         SkPaint paint; |  29         SkPaint paint; | 
|  30         uint32_t flags = doPreMul ? SkGradientShader::kInterpolateColorsInPremul
    _Flag : 0; |  30         uint32_t flags = doPreMul ? SkGradientShader::kInterpolateColorsInPremul
    _Flag : 0; | 
|  31         SkShader* s = SkGradientShader::CreateLinear(pts, colors, NULL, 2, |  31         SkShader* s = SkGradientShader::CreateLinear(pts, colors, NULL, 2, | 
|  32                                                      SkShader::kClamp_TileMode, 
    flags, NULL); |  32                                                      SkShader::kClamp_TileMode, 
    flags, NULL); | 
|  33         paint.setShader(s)->unref(); |  33         paint.setShader(s)->unref(); | 
|  34         canvas->drawRect(r, paint); |  34         canvas->drawRect(r, paint); | 
|  35  |  35  | 
|  36         paint.setShader(NULL); |  36         paint.setShader(NULL); | 
|  37         paint.setStyle(SkPaint::kStroke_Style); |  37         paint.setStyle(SkPaint::kStroke_Style); | 
|  38         canvas->drawRect(r, paint); |  38         canvas->drawRect(r, paint); | 
|  39     } |  39     } | 
|  40  |  40  | 
|  41     virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { |  41     void onDraw(SkCanvas* canvas) SK_OVERRIDE { | 
|  42         static const struct { |  42         static const struct { | 
|  43             SkColor fColor0; |  43             SkColor fColor0; | 
|  44             SkColor fColor1; |  44             SkColor fColor1; | 
|  45         } gRec[] = { |  45         } gRec[] = { | 
|  46             { 0xFFFFFFFF, 0x00000000 }, |  46             { 0xFFFFFFFF, 0x00000000 }, | 
|  47             { 0xFFFFFFFF, 0x00FF0000 }, |  47             { 0xFFFFFFFF, 0x00FF0000 }, | 
|  48             { 0xFFFFFFFF, 0x00FFFF00 }, |  48             { 0xFFFFFFFF, 0x00FFFF00 }, | 
|  49             { 0xFFFFFFFF, 0x00FFFFFF }, |  49             { 0xFFFFFFFF, 0x00FFFFFF }, | 
|  50             { 0xFFFF0000, 0x00000000 }, |  50             { 0xFFFF0000, 0x00000000 }, | 
|  51             { 0xFFFF0000, 0x00FF0000 }, |  51             { 0xFFFF0000, 0x00FF0000 }, | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
|  65             canvas->save(); |  65             canvas->save(); | 
|  66             for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) { |  66             for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) { | 
|  67                 draw_grad(canvas, r, gRec[i].fColor0, gRec[i].fColor1, SkToBool(
    doPreMul)); |  67                 draw_grad(canvas, r, gRec[i].fColor0, gRec[i].fColor1, SkToBool(
    doPreMul)); | 
|  68                 canvas->translate(0, r.height() + 8); |  68                 canvas->translate(0, r.height() + 8); | 
|  69             } |  69             } | 
|  70             canvas->restore(); |  70             canvas->restore(); | 
|  71             canvas->translate(r.width() + 10, 0); |  71             canvas->translate(r.width() + 10, 0); | 
|  72         } |  72         } | 
|  73     } |  73     } | 
|  74  |  74  | 
|  75     virtual uint32_t onGetFlags() const SK_OVERRIDE { return kSkipPipe_Flag | kS
    kipTiled_Flag; } |  75     uint32_t onGetFlags() const SK_OVERRIDE { return kSkipPipe_Flag | kSkipTiled
    _Flag; } | 
|  76  |  76  | 
|  77 private: |  77 private: | 
|  78     typedef skiagm::GM INHERITED; |  78     typedef skiagm::GM INHERITED; | 
|  79 }; |  79 }; | 
|  80  |  80  | 
|  81 DEF_GM( return SkNEW(AlphaGradientsGM); ) |  81 DEF_GM( return SkNEW(AlphaGradientsGM); ) | 
| OLD | NEW |