| /* |
| * Copyright 2021 Google LLC. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "gm/gm.h" |
| #include "include/core/SkCanvas.h" |
| #include "include/core/SkRect.h" |
| #include "include/effects/SkRuntimeEffect.h" |
| #include "tools/DecodeUtils.h" |
| #include "tools/Resources.h" |
| |
| namespace skiagm { |
| |
| DEF_SIMPLE_GM(destcolor, canvas, 640, 640) { |
| // Draw the mandrill. |
| canvas->drawImage(ToolUtils::GetResourceAsImage("images/mandrill_512.png"), 0, 0); |
| |
| // Now let's add our test effect on top. It reads back the original image and inverts it. |
| auto [effect, error] = SkRuntimeEffect::MakeForBlender(SkString(R"( |
| half4 main(half4 src, half4 dst) { |
| return (half4(1) - dst).rgb1; |
| } |
| )")); |
| SkASSERT(effect); |
| SkPaint invertPaint; |
| invertPaint.setAntiAlias(true); |
| invertPaint.setBlender(effect->makeBlender(nullptr)); |
| canvas->drawOval(SkRect::MakeLTRB(128, 128, 640, 640), invertPaint); |
| } |
| |
| } // namespace skiagm |