/* * Copyright 2018 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkCoverageModePriv_DEFINED #define SkCoverageModePriv_DEFINED #include "SkBlendMode.h" #include "SkCoverageMode.h" const SkBlendMode gUncorrelatedCoverageToBlend[] = { SkBlendMode::kSrcOver, // or DstOver SkBlendMode::kSrcIn, // or kDstIn SkBlendMode::kSrcOut, SkBlendMode::kDstOut, SkBlendMode::kXor, }; #if 0 // Experimental idea to extend to overlap types Master calculation = X(S,D) + Y(S,D) + Z(S,D) enum class SkCoverageOverlap { // X Y Z kUncorrelated, // S*D S*(1-D) D*(1-S) kConjoint, // min(S,D) max(S-D,0) max(D-S,0) kDisjoint, // max(S+D-1,0) min(S,1-D) min(D,1-S) kLast = kDisjoint }; // The coverage modes each have a set of coefficients to be applied to the general equation (above) // // e.g. // kXor+conjoint = max(S-D,0) + max(D-S,0) ==> abs(D-S) // kUnion, // 1,1,1 kIntersect, // 1,0,0 kDifference, // 0,1,0 kReverseDifference, // 0,0,1 kXor, // 0,1,1 #endif #endif