diff options
author | Mike Klein <mtklein@chromium.org> | 2017-11-01 17:07:01 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-11-02 13:59:51 +0000 |
commit | 2afe7873d8d13d9ed5462f387e3b2ccda96746ca (patch) | |
tree | 122ccda44208fcc7a5298af6a468140130c5b247 | |
parent | b718fbb7f411819e47c973ed30bc4fe7cf9fac70 (diff) |
add a GM to demo dither
Change-Id: Idbed35f2c5a1420b66b68725761a7ceea8cdd3ba
Reviewed-on: https://skia-review.googlesource.com/66461
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
-rw-r--r-- | gm/dither.cpp | 34 | ||||
-rw-r--r-- | gn/gm.gni | 1 |
2 files changed, 35 insertions, 0 deletions
diff --git a/gm/dither.cpp b/gm/dither.cpp new file mode 100644 index 0000000000..bdd52384eb --- /dev/null +++ b/gm/dither.cpp @@ -0,0 +1,34 @@ +/* + * 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 "gm.h" +#include "SkSurface.h" +#include "SkGradientShader.h" + +// This GM should make dithering somewhat visible when drawn into 565. + +DEF_SIMPLE_GM(dither, canvas, 256,256) { + // Create a compatible surface that's 8x8, as large as the largest dither pattern we use. + auto surface = canvas->makeSurface(canvas->imageInfo().makeWH(8,8)); + if (!surface) { + surface = SkSurface::MakeRasterN32Premul(8,8); + } + + // Draw a vertical red->green gradient. + SkPaint paint; + paint.setBlendMode(SkBlendMode::kSrc); + paint.setDither(true); + SkPoint pts[] = { {0,0}, {0,8} }; + SkColor colors[] = { 0xffff0000, 0xff00ff00 }; + paint.setShader(SkGradientShader::MakeLinear(pts, colors, nullptr, 2, + SkShader::kClamp_TileMode)); + surface->getCanvas()->drawPaint(paint); + + // Snap that and draw with a 32x zoom. + canvas->scale(32,32); + canvas->drawImage(surface->makeImageSnapshot(), 0,0); +} @@ -102,6 +102,7 @@ gm_sources = [ "$_gm/discard.cpp", "$_gm/displacement.cpp", "$_gm/distantclip.cpp", + "$_gm/dither.cpp", "$_gm/downsamplebitmap.cpp", "$_gm/draw_bitmap_rect_skbug4374.cpp", "$_gm/drawable.cpp", |