diff options
author | Mike Reed <reed@google.com> | 2017-06-29 11:37:15 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-06-29 16:09:37 +0000 |
commit | 9c1d7802284bf5a0e6fcf1a43e9218e21ce1a9e0 (patch) | |
tree | f8586d95657fb9a77717ba9c65fb647112fb30e8 /src/core/SkColorMatrixFilterRowMajor255.cpp | |
parent | 185a3798db64c64d47ef89a5fd3d4c5c70f1e621 (diff) |
remove filterSpan from SkColorFilter
Bug: skia:
Change-Id: Ie8a31ea8131c08d251a825622484342e3e174474
Reviewed-on: https://skia-review.googlesource.com/21207
Commit-Queue: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'src/core/SkColorMatrixFilterRowMajor255.cpp')
-rw-r--r-- | src/core/SkColorMatrixFilterRowMajor255.cpp | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/src/core/SkColorMatrixFilterRowMajor255.cpp b/src/core/SkColorMatrixFilterRowMajor255.cpp index aa11746d0a..f08a7f5698 100644 --- a/src/core/SkColorMatrixFilterRowMajor255.cpp +++ b/src/core/SkColorMatrixFilterRowMajor255.cpp @@ -62,81 +62,6 @@ uint32_t SkColorMatrixFilterRowMajor255::getFlags() const { return this->INHERITED::getFlags() | fFlags; } -static Sk4f scale_rgb(float scale) { - static_assert(SkPM4f::A == 3, "Alpha is lane 3"); - return Sk4f(scale, scale, scale, 1); -} - -static Sk4f premul(const Sk4f& x) { - return x * scale_rgb(x[SkPM4f::A]); -} - -static Sk4f unpremul(const Sk4f& x) { - return x * scale_rgb(1 / x[SkPM4f::A]); // TODO: fast/approx invert? -} - -static Sk4f clamp_0_1(const Sk4f& x) { - return Sk4f::Max(Sk4f::Min(x, Sk4f(1)), Sk4f(0)); -} - -static SkPMColor round(const Sk4f& x) { - SkPMColor c; - SkNx_cast<uint8_t>(x * Sk4f(255) + Sk4f(0.5f)).store(&c); - return c; -} - -template <typename Adaptor, typename T> -void filter_span(const float array[], const T src[], int count, T dst[]) { - const Sk4f c0 = Sk4f::Load(array + 0); - const Sk4f c1 = Sk4f::Load(array + 4); - const Sk4f c2 = Sk4f::Load(array + 8); - const Sk4f c3 = Sk4f::Load(array + 12); - const Sk4f c4 = Sk4f::Load(array + 16); - - // todo: we could cache this in the constructor... - T matrix_translate_pmcolor = Adaptor::From4f(premul(clamp_0_1(c4))); - - for (int i = 0; i < count; i++) { - Sk4f srcf = Adaptor::To4f(src[i]); - float srcA = srcf[SkPM4f::A]; - - if (0 == srcA) { - dst[i] = matrix_translate_pmcolor; - continue; - } - if (1 != srcA) { - srcf = unpremul(srcf); - } - - Sk4f r4 = srcf[Adaptor::R]; - Sk4f g4 = srcf[Adaptor::G]; - Sk4f b4 = srcf[Adaptor::B]; - Sk4f a4 = srcf[Adaptor::A]; - // apply matrix - Sk4f dst4 = c0 * r4 + c1 * g4 + c2 * b4 + c3 * a4 + c4; - - dst[i] = Adaptor::From4f(premul(clamp_0_1(dst4))); - } -} - -struct SkPMColorAdaptor { - enum { - R = SK_R_INDEX, - G = SK_G_INDEX, - B = SK_B_INDEX, - A = SK_A_INDEX, - }; - static SkPMColor From4f(const Sk4f& c4) { - return round(swizzle_rb_if_bgra(c4)); - } - static Sk4f To4f(SkPMColor c) { - return Sk4f_fromL32(c); - } -}; -void SkColorMatrixFilterRowMajor255::filterSpan(const SkPMColor src[], int count, SkPMColor dst[]) const { - filter_span<SkPMColorAdaptor>(fTranspose, src, count, dst); -} - /////////////////////////////////////////////////////////////////////////////// void SkColorMatrixFilterRowMajor255::flatten(SkWriteBuffer& buffer) const { |