/*
 * 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
