aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/core/SkBlendMode.h
blob: 5b161f2d943a42c2ffbfef1e1d7a775ef27286a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*
 * Copyright 2016 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef SkBlendMode_DEFINED
#define SkBlendMode_DEFINED

#include "SkTypes.h"

enum class SkBlendMode {
    kClear,    //!< [0, 0]
    kSrc,      //!< [Sa, Sc]
    kDst,      //!< [Da, Dc]
    kSrcOver,  //!< [Sa + Da * (1 - Sa), Sc + Dc * (1 - Sa)]
    kDstOver,  //!< [Da + Sa * (1 - Da), Dc + Sc * (1 - Da)]
    kSrcIn,    //!< [Sa * Da, Sc * Da]
    kDstIn,    //!< [Da * Sa, Dc * Sa]
    kSrcOut,   //!< [Sa * (1 - Da), Sc * (1 - Da)]
    kDstOut,   //!< [Da * (1 - Sa), Dc * (1 - Sa)]
    kSrcATop,  //!< [Da, Sc * Da + Dc * (1 - Sa)]
    kDstATop,  //!< [Sa, Dc * Sa + Sc * (1 - Da)]
    kXor,      //!< [Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + Dc * (1 - Sa)]
    kPlus,     //!< [Sa + Da, Sc + Dc]
    kModulate, // multiplies all components (= alpha and color)

    // Following blend modes are defined in the CSS Compositing standard:
    // https://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html#blending
    kScreen,
    kLastCoeffMode = kScreen,

    kOverlay,
    kDarken,
    kLighten,
    kColorDodge,
    kColorBurn,
    kHardLight,
    kSoftLight,
    kDifference,
    kExclusion,
    kMultiply,
    kLastSeparableMode = kMultiply,

    kHue,
    kSaturation,
    kColor,
    kLuminosity,
    kLastMode = kLuminosity,
};

/**
 *  Return the (c-string) name of the blendmode.
 */
SK_API const char* SkBlendMode_Name(SkBlendMode blendMode);

#endif