1 /* 2 * Copyright 2016 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SkBlendModePriv_DEFINED 9 #define SkBlendModePriv_DEFINED 10 11 #include "SkBlendMode.h" 12 #include "SkColor.h" 13 #include "SkColorData.h" 14 15 class SkRasterPipeline; 16 17 bool SkBlendMode_SupportsCoverageAsAlpha(SkBlendMode); 18 19 static inline bool SkBlendMode_CaresAboutRBOrder(SkBlendMode mode) { 20 return (mode > SkBlendMode::kLastSeparableMode); 21 } 22 23 bool SkBlendMode_ShouldPreScaleCoverage(SkBlendMode, bool rgb_coverage); 24 void SkBlendMode_AppendStages(SkBlendMode, SkRasterPipeline*); 25 26 enum class SkBlendModeCoeff { 27 kZero, /** 0 */ 28 kOne, /** 1 */ 29 kSC, /** src color */ 30 kISC, /** inverse src color (i.e. 1 - sc) */ 31 kDC, /** dst color */ 32 kIDC, /** inverse dst color (i.e. 1 - dc) */ 33 kSA, /** src alpha */ 34 kISA, /** inverse src alpha (i.e. 1 - sa) */ 35 kDA, /** dst alpha */ 36 kIDA, /** inverse dst alpha (i.e. 1 - da) */ 37 38 kCoeffCount 39 }; 40 41 bool SkBlendMode_AsCoeff(SkBlendMode mode, SkBlendModeCoeff* src, SkBlendModeCoeff* dst); 42 43 SkPMColor4f SkBlendMode_Apply(SkBlendMode, const SkPMColor4f& src, const SkPMColor4f& dst); 44 45 #if SK_SUPPORT_GPU 46 #include "GrXferProcessor.h" 47 const GrXPFactory* SkBlendMode_AsXPFactory(SkBlendMode); 48 #endif 49 50 #endif 51