xref: /third_party/skia/docs/examples/Dither_b.cpp (revision cb93a386)
1// Copyright 2019 Google LLC.
2// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
3#include "tools/fiddle/examples.h"
4// HASH=76d4d4a7931a48495e4d5f54e073be53
5REG_FIDDLE(Dither_b, 256, 256, false, 0) {
6void draw(SkCanvas* canvas) {
7    canvas->clear(0);
8    SkBitmap bm32;
9    bm32.allocPixels(SkImageInfo::Make(20, 10, kN32_SkColorType, kPremul_SkAlphaType));
10    SkCanvas c32(bm32);
11    SkPoint points[] = {{0, 0}, {20, 0}};
12    SkColor colors[] = {0xFF334455, 0xFF662211 };
13    SkPaint paint;
14    paint.setShader(SkGradientShader::MakeLinear(
15                     points, colors, nullptr, SK_ARRAY_COUNT(colors),
16                     SkTileMode::kClamp));
17    paint.setDither(true);
18    auto img = bm32.asImage();
19    c32.drawPaint(paint);
20    canvas->scale(12, 12);
21    canvas->drawImage(img, 0, 0);
22    paint.setBlendMode(SkBlendMode::kPlus);
23    SkSamplingOptions sampling;
24    canvas->drawImage(img, 0, 11, sampling, &paint);
25    canvas->drawImage(img, 0, 11, sampling, &paint);
26    canvas->drawImage(img, 0, 11, sampling, &paint);
27}
28}  // END FIDDLE
29