Home | History | Annotate | Download | only in core
      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