1cb93a386Sopenharmony_ci/*
2cb93a386Sopenharmony_ci * Copyright 2021 Google LLC
3cb93a386Sopenharmony_ci *
4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be
5cb93a386Sopenharmony_ci * found in the LICENSE file.
6cb93a386Sopenharmony_ci */
7cb93a386Sopenharmony_ci
8cb93a386Sopenharmony_ci#ifndef SkBlender_DEFINED
9cb93a386Sopenharmony_ci#define SkBlender_DEFINED
10cb93a386Sopenharmony_ci
11cb93a386Sopenharmony_ci#include "include/core/SkBlendMode.h"
12cb93a386Sopenharmony_ci#include "include/core/SkFlattenable.h"
13cb93a386Sopenharmony_ci
14cb93a386Sopenharmony_ci/**
15cb93a386Sopenharmony_ci * SkBlender represents a custom blend function in the Skia pipeline. When an SkBlender is
16cb93a386Sopenharmony_ci * present in a paint, the SkBlendMode is ignored. A blender combines a source color (the
17cb93a386Sopenharmony_ci * result of our paint) and destination color (from the canvas) into a final color.
18cb93a386Sopenharmony_ci */
19cb93a386Sopenharmony_ciclass SK_API SkBlender : public SkFlattenable {
20cb93a386Sopenharmony_cipublic:
21cb93a386Sopenharmony_ci    /**
22cb93a386Sopenharmony_ci     * Create a blender that implements the specified BlendMode.
23cb93a386Sopenharmony_ci     */
24cb93a386Sopenharmony_ci    static sk_sp<SkBlender> Mode(SkBlendMode mode);
25cb93a386Sopenharmony_ci
26cb93a386Sopenharmony_ciprivate:
27cb93a386Sopenharmony_ci    SkBlender() = default;
28cb93a386Sopenharmony_ci    friend class SkBlenderBase;
29cb93a386Sopenharmony_ci
30cb93a386Sopenharmony_ci    using INHERITED = SkFlattenable;
31cb93a386Sopenharmony_ci};
32cb93a386Sopenharmony_ci
33cb93a386Sopenharmony_ci#endif
34