blob: 8a5af291b22bc77dc9f1a05e72d2d473267b0ec3 [file] [log] [blame]
Hal Canary6c8422c2020-01-10 15:22:09 -05001// Copyright 2020 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"
4REG_FIDDLE(alphaimage_shader_colorfilter, 256, 256, false, 0) {
5sk_sp<SkImage> alpha_image() {
6 auto s = SkSurface::MakeRaster(SkImageInfo::MakeA8(64, 64));
7 s->getCanvas()->clear(SkColorSetARGB(0x80, 0x00, 0x00, 0x00));
8 return s->makeImageSnapshot();
9}
10sk_sp<SkShader> linear_gradient() {
11 SkPoint gpts[2] = {{0, 0}, {64, 64}};
12 SkColor gc[3] = {SK_ColorRED, SK_ColorGREEN, SK_ColorMAGENTA};
13 return SkGradientShader::MakeLinear(gpts, gc, nullptr, 3, (SkTileMode)0);
14}
15sk_sp<SkColorFilter> color_filter() {
16 SkScalar colorMatrix[20] = {
17 1, 0, 0, 0, 0,
18 0, 0, 1, 0, 0,
19 0, 1, 0, 0, 0,
20 0, 0, 0, 1, 0};
21 return SkColorFilters::Matrix(colorMatrix);
22}
23void draw(SkCanvas* canvas) {
24 SkPaint p;
25 p.setShader(linear_gradient());
26 p.setColorFilter(color_filter());
27 auto i = alpha_image();
28 canvas->scale(2, 2);
29 canvas->drawImage(i.get(), 32, 32, &p);
30}
31} // END FIDDLE