1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/*
2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2018 Google Inc.
3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot *
4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be
5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file.
6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */
7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#ifndef SkCoverageModePriv_DEFINED
9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define SkCoverageModePriv_DEFINED
10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkBlendMode.h"
12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkCoverageMode.h"
13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotconst SkBlendMode gUncorrelatedCoverageToBlend[] = {
15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    SkBlendMode::kSrcOver,  // or DstOver
16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    SkBlendMode::kSrcIn,    // or kDstIn
17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    SkBlendMode::kSrcOut,
18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    SkBlendMode::kDstOut,
19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    SkBlendMode::kXor,
20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot};
21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#if 0
23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot// Experimental idea to extend to overlap types
24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotMaster calculation =   X(S,D) + Y(S,D) + Z(S,D)
26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotenum class SkCoverageOverlap {
28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                    // X                Y               Z
29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    kUncorrelated,  // S*D              S*(1-D)         D*(1-S)
30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    kConjoint,      // min(S,D)         max(S-D,0)      max(D-S,0)
31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    kDisjoint,      // max(S+D-1,0)     min(S,1-D)      min(D,1-S)
32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    kLast = kDisjoint
34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot};
35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot// The coverage modes each have a set of coefficients to be applied to the general equation (above)
37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot//
38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot//  e.g.
39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot//     kXor+conjoint = max(S-D,0) + max(D-S,0) ==> abs(D-S)
40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot//
41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotkUnion,             // 1,1,1
42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotkIntersect,         // 1,0,0
43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotkDifference,        // 0,1,0
44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotkReverseDifference, // 0,0,1
45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotkXor,               // 0,1,1
46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif
48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif
50