aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkColorMatrixFilterRowMajor255.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2017-06-29 11:37:15 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-06-29 16:09:37 +0000
commit9c1d7802284bf5a0e6fcf1a43e9218e21ce1a9e0 (patch)
treef8586d95657fb9a77717ba9c65fb647112fb30e8 /src/core/SkColorMatrixFilterRowMajor255.cpp
parent185a3798db64c64d47ef89a5fd3d4c5c70f1e621 (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.cpp75
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 {