|  | /* | 
|  | * 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); | 
|  |  | 
|  | #endif |