| Index: src/gpu/GrBlend.cpp
|
| diff --git a/src/gpu/GrBlend.cpp b/src/gpu/GrBlend.cpp
|
| deleted file mode 100644
|
| index 52e335e9b0461cd7132ce97abdcb26cb0f91dbef..0000000000000000000000000000000000000000
|
| --- a/src/gpu/GrBlend.cpp
|
| +++ /dev/null
|
| @@ -1,154 +0,0 @@
|
| -
|
| -/*
|
| - * Copyright 2013 Google Inc.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license that can be
|
| - * found in the LICENSE file.
|
| - */
|
| -
|
| -#include "GrBlend.h"
|
| -
|
| -static inline GrBlendCoeff swap_coeff_src_dst(GrBlendCoeff coeff) {
|
| - switch (coeff) {
|
| - case kDC_GrBlendCoeff:
|
| - return kSC_GrBlendCoeff;
|
| - case kIDC_GrBlendCoeff:
|
| - return kISC_GrBlendCoeff;
|
| - case kDA_GrBlendCoeff:
|
| - return kSA_GrBlendCoeff;
|
| - case kIDA_GrBlendCoeff:
|
| - return kISA_GrBlendCoeff;
|
| - case kSC_GrBlendCoeff:
|
| - return kDC_GrBlendCoeff;
|
| - case kISC_GrBlendCoeff:
|
| - return kIDC_GrBlendCoeff;
|
| - case kSA_GrBlendCoeff:
|
| - return kDA_GrBlendCoeff;
|
| - case kISA_GrBlendCoeff:
|
| - return kIDA_GrBlendCoeff;
|
| - default:
|
| - return coeff;
|
| - }
|
| -}
|
| -
|
| -static inline unsigned saturated_add(unsigned a, unsigned b) {
|
| - SkASSERT(a <= 255);
|
| - SkASSERT(b <= 255);
|
| - unsigned sum = a + b;
|
| - if (sum > 255) {
|
| - sum = 255;
|
| - }
|
| - return sum;
|
| -}
|
| -
|
| -static GrColor add_colors(GrColor src, GrColor dst) {
|
| - unsigned r = saturated_add(GrColorUnpackR(src), GrColorUnpackR(dst));
|
| - unsigned g = saturated_add(GrColorUnpackG(src), GrColorUnpackG(dst));
|
| - unsigned b = saturated_add(GrColorUnpackB(src), GrColorUnpackB(dst));
|
| - unsigned a = saturated_add(GrColorUnpackA(src), GrColorUnpackA(dst));
|
| - return GrColorPackRGBA(r, g, b, a);
|
| -}
|
| -
|
| -static inline bool valid_color(uint32_t compFlags) {
|
| - return (kRGBA_GrColorComponentFlags & compFlags) == kRGBA_GrColorComponentFlags;
|
| -}
|
| -
|
| -static GrColor simplify_blend_term(GrBlendCoeff* srcCoeff,
|
| - GrColor srcColor, uint32_t srcCompFlags,
|
| - GrColor dstColor, uint32_t dstCompFlags,
|
| - GrColor constantColor) {
|
| -
|
| - SkASSERT(!GrBlendCoeffRefsSrc(*srcCoeff));
|
| - SkASSERT(srcCoeff);
|
| -
|
| - // Check whether srcCoeff can be reduced to kOne or kZero based on known color inputs.
|
| - // We could pick out the coeff r,g,b,a values here and use them to compute the blend term color,
|
| - // if possible, below but that is not implemented now.
|
| - switch (*srcCoeff) {
|
| - case kIDC_GrBlendCoeff:
|
| - dstColor = ~dstColor; // fallthrough
|
| - case kDC_GrBlendCoeff:
|
| - if (valid_color(dstCompFlags)) {
|
| - if (0xffffffff == dstColor) {
|
| - *srcCoeff = kOne_GrBlendCoeff;
|
| - } else if (0 == dstColor) {
|
| - *srcCoeff = kZero_GrBlendCoeff;
|
| - }
|
| - }
|
| - break;
|
| -
|
| - case kIDA_GrBlendCoeff:
|
| - dstColor = ~dstColor; // fallthrough
|
| - case kDA_GrBlendCoeff:
|
| - if (kA_GrColorComponentFlag & dstCompFlags) {
|
| - if (0xff == GrColorUnpackA(dstColor)) {
|
| - *srcCoeff = kOne_GrBlendCoeff;
|
| - } else if (0 == GrColorUnpackA(dstColor)) {
|
| - *srcCoeff = kZero_GrBlendCoeff;
|
| - }
|
| - }
|
| - break;
|
| -
|
| - case kIConstC_GrBlendCoeff:
|
| - constantColor = ~constantColor; // fallthrough
|
| - case kConstC_GrBlendCoeff:
|
| - if (0xffffffff == constantColor) {
|
| - *srcCoeff = kOne_GrBlendCoeff;
|
| - } else if (0 == constantColor) {
|
| - *srcCoeff = kZero_GrBlendCoeff;
|
| - }
|
| - break;
|
| -
|
| - case kIConstA_GrBlendCoeff:
|
| - constantColor = ~constantColor; // fallthrough
|
| - case kConstA_GrBlendCoeff:
|
| - if (0xff == GrColorUnpackA(constantColor)) {
|
| - *srcCoeff = kOne_GrBlendCoeff;
|
| - } else if (0 == GrColorUnpackA(constantColor)) {
|
| - *srcCoeff = kZero_GrBlendCoeff;
|
| - }
|
| - break;
|
| -
|
| - default:
|
| - break;
|
| - }
|
| - // We may have invalidated these above and shouldn't read them again.
|
| - SkDEBUGCODE(dstColor = constantColor = GrColor_ILLEGAL;)
|
| -
|
| - if (kZero_GrBlendCoeff == *srcCoeff || (valid_color(srcCompFlags) && 0 == srcColor)) {
|
| - *srcCoeff = kZero_GrBlendCoeff;
|
| - return 0;
|
| - }
|
| -
|
| - if (kOne_GrBlendCoeff == *srcCoeff && valid_color(srcCompFlags)) {
|
| - return srcColor;
|
| - } else {
|
| - return GrColor_ILLEGAL;
|
| - }
|
| -}
|
| -
|
| -GrColor GrSimplifyBlend(GrBlendCoeff* srcCoeff,
|
| - GrBlendCoeff* dstCoeff,
|
| - GrColor srcColor, uint32_t srcCompFlags,
|
| - GrColor dstColor, uint32_t dstCompFlags,
|
| - GrColor constantColor) {
|
| - GrColor srcTermColor = simplify_blend_term(srcCoeff,
|
| - srcColor, srcCompFlags,
|
| - dstColor, dstCompFlags,
|
| - constantColor);
|
| -
|
| - // We call the same function to simplify the dst blend coeff. We trick it out by swapping the
|
| - // src and dst.
|
| - GrBlendCoeff spoofedCoeff = swap_coeff_src_dst(*dstCoeff);
|
| - GrColor dstTermColor = simplify_blend_term(&spoofedCoeff,
|
| - dstColor, dstCompFlags,
|
| - srcColor, srcCompFlags,
|
| - constantColor);
|
| - *dstCoeff = swap_coeff_src_dst(spoofedCoeff);
|
| -
|
| - if (GrColor_ILLEGAL != srcTermColor && GrColor_ILLEGAL != dstTermColor) {
|
| - return add_colors(srcTermColor, dstTermColor);
|
| - } else {
|
| - return GrColor_ILLEGAL;
|
| - }
|
| -}
|
|
|