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