diff options
author | Brian Osman <brianosman@google.com> | 2017-12-14 11:11:55 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-12-14 16:38:31 +0000 |
commit | 19c026e3b89b3ff882a138d62927325f4df95eee (patch) | |
tree | 3b1e8340b0c9496b95c25a3ae40697f7d4b73806 /src/shaders | |
parent | d096e0d126bfe11aa33886124103ad128b807693 (diff) |
Remove SkClampRange (unused)
Bug: skia:
Change-Id: I57fbdd39079a92e803902524a7950dd5f571639c
Reviewed-on: https://skia-review.googlesource.com/84961
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/shaders')
-rw-r--r-- | src/shaders/gradients/SkClampRange.cpp | 178 | ||||
-rw-r--r-- | src/shaders/gradients/SkClampRange.h | 62 |
2 files changed, 0 insertions, 240 deletions
diff --git a/src/shaders/gradients/SkClampRange.cpp b/src/shaders/gradients/SkClampRange.cpp deleted file mode 100644 index efc93959d1..0000000000 --- a/src/shaders/gradients/SkClampRange.cpp +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright 2011 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "SkClampRange.h" -#include "SkMathPriv.h" - -static int SkCLZ64(uint64_t value) { - int count = 0; - if (value >> 32) { - value >>= 32; - } else { - count += 32; - } - return count + SkCLZ(SkToU32(value)); -} - -static bool sk_64_smul_check(int64_t count, int64_t dx, int64_t* result) { - // Do it the slow way until we have some assembly. - if (dx == std::numeric_limits<int64_t>::min()) { - return false; // SkTAbs overflow - } - - SkASSERT(count >= 0); - uint64_t ucount = static_cast<uint64_t>(count); - uint64_t udx = static_cast<uint64_t>(SkTAbs(dx)); - int zeros = SkCLZ64(ucount) + SkCLZ64(udx); - // this is a conservative check: it may return false when in fact it would not have overflowed. - // Hackers Delight uses 34 as its convervative check, but that is for 32x32 multiplies. - // Since we are looking at 64x64 muls, we add 32 to the check. - if (zeros < (32 + 34)) { - return false; - } - *result = count * dx; - return true; -} - -static bool sk_64_sadd_check(int64_t a, int64_t b, int64_t* result) { - if (a > 0) { - if (b > std::numeric_limits<int64_t>::max() - a) { - return false; - } - } else { - if (b < std::numeric_limits<int64_t>::min() - a) { - return false; - } - } - - *result = a + b; - return true; -} - - -/* - * returns [0..count] for the number of steps (<= count) for which x0 <= edge - * given each step is followed by x0 += dx - */ -static int chop(int64_t x0, SkGradFixed edge, int64_t x1, int64_t dx, int count) { - SkASSERT(dx > 0); - SkASSERT(count >= 0); - - if (x0 >= edge) { - return 0; - } - if (x1 <= edge) { - return count; - } - int64_t n = (edge - x0 + dx - 1) / dx; - SkASSERT(n >= 0); - SkASSERT(n <= count); - return (int)n; -} - -void SkClampRange::initFor1(SkGradFixed fx) { - fCount0 = fCount1 = fCount2 = 0; - if (fx <= 0) { - fCount0 = 1; - } else if (fx < kFracMax_SkGradFixed) { - fCount1 = 1; - fFx1 = fx; - } else { - fCount2 = 1; - } -} - -void SkClampRange::init(SkGradFixed fx0, SkGradFixed dx0, int count, int v0, int v1) { - SkASSERT(count > 0); - - fV0 = v0; - fV1 = v1; - - // special case 1 == count, as it is slightly common for skia - // and avoids us ever calling divide or 64bit multiply - if (1 == count) { - this->initFor1(fx0); - return; - } - - int64_t fx = fx0; - int64_t dx = dx0; - - // start with ex equal to the last computed value - int64_t count_times_dx, ex; - if (!sk_64_smul_check(count - 1, dx, &count_times_dx) || - !sk_64_sadd_check(fx, count_times_dx, &ex)) { - // we can't represent the computed end in 32.32, so just draw something (first color) - fCount1 = fCount2 = 0; - fCount0 = count; - return; - } - - if ((uint64_t)(fx | ex) <= kFracMax_SkGradFixed) { - fCount0 = fCount2 = 0; - fCount1 = count; - fFx1 = fx0; - return; - } - if (fx <= 0 && ex <= 0) { - fCount1 = fCount2 = 0; - fCount0 = count; - return; - } - if (fx >= kFracMax_SkGradFixed && ex >= kFracMax_SkGradFixed) { - fCount0 = fCount1 = 0; - fCount2 = count; - return; - } - - // now make ex be 1 past the last computed value - ex += dx; - - bool doSwap = dx < 0; - - if (doSwap) { - ex -= dx; - fx -= dx; - SkTSwap(fx, ex); - dx = -dx; - } - - - fCount0 = chop(fx, 0, ex, dx, count); - SkASSERT(fCount0 >= 0); - SkASSERT(fCount0 <= count); - count -= fCount0; - fx += fCount0 * dx; - SkASSERT(fx >= 0); - SkASSERT(fCount0 == 0 || (fx - dx) < 0); - fCount1 = chop(fx, kFracMax_SkGradFixed, ex, dx, count); - SkASSERT(fCount1 >= 0); - SkASSERT(fCount1 <= count); - count -= fCount1; - fCount2 = count; - -#ifdef SK_DEBUG - fx += fCount1 * dx; - SkASSERT(fx <= ex); - if (fCount2 > 0) { - SkASSERT(fx >= kFracMax_SkGradFixed); - if (fCount1 > 0) { - SkASSERT(fx - dx < kFracMax_SkGradFixed); - } - } -#endif - - if (doSwap) { - SkTSwap(fCount0, fCount2); - SkTSwap(fV0, fV1); - dx = -dx; - } - - if (fCount1 > 0) { - fFx1 = fx0 + fCount0 * dx; - } -} diff --git a/src/shaders/gradients/SkClampRange.h b/src/shaders/gradients/SkClampRange.h deleted file mode 100644 index 8a22e72d38..0000000000 --- a/src/shaders/gradients/SkClampRange.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2011 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#ifndef SkClampRange_DEFINED -#define SkClampRange_DEFINED - -#include "SkFixed.h" -#include "SkScalar.h" - -#define SkGradFixed SkFixed3232 - -// We want the largest 32.32 value representable as a float. (float)0x7FFFFFFF -// becomes too big, due to limited mantissa on the float and its rounding rules, so -// we have to manually compute the next smaller value (aka nextafter). - -// #define SkGradFixedMaxScalar nextafterf(SkFixed3232ToFloat(SkFixed3232Max), 0) -// #define SkGradFixedMinScalar nextafterf(SkFixed3232ToFloat(SkFixed3232Min), 0) -#define SkGradFixedMaxScalar ( 2147483520.0f) -#define SkGradFixedMinScalar (-2147483520.0f) -#define SkScalarPinToGradFixed(x) SkScalarToFixed3232(SkTPin(x, \ - SkGradFixedMinScalar,\ - SkGradFixedMaxScalar)) -#define SkFixedToGradFixed(x) SkFixedToFixed3232(x) -#define SkGradFixedToFixed(x) (SkFixed)((x) >> 16) -#define kFracMax_SkGradFixed 0xFFFFFFFFLL - -/** - * Iteration fixed fx by dx, clamping as you go to [0..kFracMax_SkGradFixed], this class - * computes the (up to) 3 spans there are: - * - * range0: use constant value V0 - * range1: iterate as usual fx += dx - * range2: use constant value V1 - */ -struct SkClampRange { - int fCount0; // count for fV0 - int fCount1; // count for interpolating (fV0...fV1) - int fCount2; // count for fV1 - SkGradFixed fFx1; // initial fx value for the fCount1 range. - // only valid if fCount1 > 0 - int fV0, fV1; - - void init(SkGradFixed fx, SkGradFixed dx, int count, int v0, int v1); - - void validate(int count) const { -#ifdef SK_DEBUG - SkASSERT(fCount0 >= 0); - SkASSERT(fCount1 >= 0); - SkASSERT(fCount2 >= 0); - SkASSERT(fCount0 + fCount1 + fCount2 == count); -#endif - } - -private: - void initFor1(SkGradFixed fx); -}; - -#endif |