aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2017-05-04 10:57:40 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-05-04 15:21:39 +0000
commitb9641bd55a8f63757a63d9302755feb55d2e9502 (patch)
tree21cf4570aea3d430e9e5ef721d7e19f1b700dc5d /src/core
parent342a9fa8e1c0bccff0d2d1569042bce29f2bbe85 (diff)
force all colorfilters to implement 4f
high-contrast gms differ at most by 1 bit Bug: skia: Change-Id: I1308bd105020ea3cd5a30fd3dd322ed134fb5ed5 Reviewed-on: https://skia-review.googlesource.com/15249 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org> Reviewed-by: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'src/core')
-rw-r--r--src/core/SkColorFilter.cpp18
-rw-r--r--src/core/SkPM4f.h9
2 files changed, 9 insertions, 18 deletions
diff --git a/src/core/SkColorFilter.cpp b/src/core/SkColorFilter.cpp
index b82808d585..166d772668 100644
--- a/src/core/SkColorFilter.cpp
+++ b/src/core/SkColorFilter.cpp
@@ -50,24 +50,6 @@ bool SkColorFilter::onAppendStages(SkRasterPipeline*, SkColorSpace*, SkArenaAllo
return false;
}
-void SkColorFilter::filterSpan4f(const SkPM4f src[], int count, SkPM4f result[]) const {
- const int N = 128;
- SkPMColor tmp[N];
- while (count > 0) {
- int n = SkTMin(count, N);
- for (int i = 0; i < n; ++i) {
- tmp[i] = src[i].toPMColor();
- }
- this->filterSpan(tmp, n, tmp);
- for (int i = 0; i < n; ++i) {
- result[i] = SkPM4f::FromPMColor(tmp[i]);
- }
- src += n;
- result += n;
- count -= n;
- }
-}
-
SkColor SkColorFilter::filterColor(SkColor c) const {
SkPMColor dst, src = SkPreMultiplyColor(c);
this->filterSpan(&src, 1, &dst);
diff --git a/src/core/SkPM4f.h b/src/core/SkPM4f.h
index f983101f41..ab2258b328 100644
--- a/src/core/SkPM4f.h
+++ b/src/core/SkPM4f.h
@@ -37,6 +37,15 @@ struct SkPM4f {
float b() const { return fVec[B]; }
float a() const { return fVec[A]; }
+ static SkPM4f FromPremulRGBA(float r, float g, float b, float a) {
+ SkPM4f p;
+ p.fVec[R] = r;
+ p.fVec[G] = g;
+ p.fVec[B] = b;
+ p.fVec[A] = a;
+ return p;
+ }
+
static SkPM4f From4f(const Sk4f& x) {
SkPM4f pm;
x.store(pm.fVec);