diff options
author | Mike Klein <mtklein@chromium.org> | 2017-05-16 12:03:15 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-05-16 21:10:14 +0000 |
commit | 7e68bc93ffaa394bd94a6954e2a8318a825067c6 (patch) | |
tree | 34e3898f3c119c5d562b423269adb14b60d99635 /gm/bug6643.cpp | |
parent | 0eb4ecb88532494e32521bdcc60aa98c25089923 (diff) |
clamp to premul in dither
Dither can bump color values above alpha (duh), or below
zero (duh), so clamp back to premul after dithering.
BUG=skia:6644,skia:6643
Change-Id: Ida107e866380e06130af0d01467117bca929ba44
Reviewed-on: https://skia-review.googlesource.com/17070
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'gm/bug6643.cpp')
-rw-r--r-- | gm/bug6643.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/gm/bug6643.cpp b/gm/bug6643.cpp new file mode 100644 index 0000000000..abe79fa756 --- /dev/null +++ b/gm/bug6643.cpp @@ -0,0 +1,29 @@ +/* + * Copyright 2017 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkGradientShader.h" +#include "SkPictureRecorder.h" +#include "gm.h" + +DEF_SIMPLE_GM(bug6643, canvas, 200, 200) { + SkColor colors[] = { SK_ColorTRANSPARENT, SK_ColorGREEN, SK_ColorTRANSPARENT }; + + SkPaint p; + p.setAntiAlias(true); + p.setShader(SkGradientShader::MakeSweep(100, 100, colors, nullptr, SK_ARRAY_COUNT(colors), + SkGradientShader::kInterpolateColorsInPremul_Flag, + nullptr)); + + SkPictureRecorder recorder; + recorder.beginRecording(200, 200)->drawPaint(p); + + p.setShader(SkShader::MakePictureShader(recorder.finishRecordingAsPicture(), + SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode, + nullptr, nullptr)); + canvas->drawColor(SK_ColorWHITE); + canvas->drawPaint(p); +} |