| /* | |
| * 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" | |
| SkBlendMode SkUncorrelatedCoverageModeToBlendMode(SkCoverageMode); | |
| #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 |