Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(121)

Unified Diff: src/core/SkColor.cpp

Issue 2093763003: Change SkColor4f to RGBA channel order (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Reorder Pin arguments, too Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « include/core/SkColor.h ('k') | src/core/SkColorShader.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/core/SkColor.cpp
diff --git a/src/core/SkColor.cpp b/src/core/SkColor.cpp
index 1c6f0b65792e91b0591c8e711d1a37e7edd590ab..985790dfe50bbca2464eeb3ad8ff040f3c37d909 100644
--- a/src/core/SkColor.cpp
+++ b/src/core/SkColor.cpp
@@ -120,7 +120,7 @@ SkColor4f SkPM4f::unpremul() const {
return { 0, 0, 0, 0 };
} else {
float invAlpha = 1 / alpha;
- return { alpha, fVec[R] * invAlpha, fVec[G] * invAlpha, fVec[B] * invAlpha };
+ return { fVec[R] * invAlpha, fVec[G] * invAlpha, fVec[B] * invAlpha, alpha };
}
}
@@ -155,7 +155,7 @@ void SkPM4f::assertIsUnit() const {
///////////////////////////////////////////////////////////////////////////////////////////////////
SkColor4f SkColor4f::FromColor(SkColor c) {
- Sk4f value = SkNx_shuffle<3,2,1,0>(SkNx_cast<float>(Sk4b::Load(&c)));
+ Sk4f value = SkNx_shuffle<2,1,0,3>(SkNx_cast<float>(Sk4b::Load(&c)));
SkColor4f c4;
(value * Sk4f(1.0f / 255)).store(&c4);
if (gTreatSkColorAsSRGB) {
@@ -166,19 +166,23 @@ SkColor4f SkColor4f::FromColor(SkColor c) {
return c4;
}
-SkColor4f SkColor4f::Pin(float a, float r, float g, float b) {
+SkColor SkColor4f::toSkColor() const {
+ SkColor result;
+ Sk4f value = SkNx_shuffle<2, 1, 0, 3>(Sk4f::Load(this->vec()));
+ SkNx_cast<uint8_t>(value * Sk4f(255) + Sk4f(0.5f)).store(&result);
+ return result;
+}
+
+SkColor4f SkColor4f::Pin(float r, float g, float b, float a) {
SkColor4f c4;
- Sk4f::Min(Sk4f::Max(Sk4f(a, r, g, b), Sk4f(0)), Sk4f(1)).store(c4.vec());
+ Sk4f::Min(Sk4f::Max(Sk4f(r, g, b, a), Sk4f(0)), Sk4f(1)).store(c4.vec());
return c4;
}
SkPM4f SkColor4f::premul() const {
auto src = Sk4f::Load(this->pin().vec());
- float srcAlpha = src[0]; // need the pinned version of our alpha
- src = src * Sk4f(1, srcAlpha, srcAlpha, srcAlpha);
-
- // ARGB -> RGBA
- Sk4f dst = SkNx_shuffle<1,2,3,0>(src);
+ float srcAlpha = src[3]; // need the pinned version of our alpha
+ src = src * Sk4f(srcAlpha, srcAlpha, srcAlpha, 1);
- return SkPM4f::From4f(dst);
+ return SkPM4f::From4f(src);
}
« no previous file with comments | « include/core/SkColor.h ('k') | src/core/SkColorShader.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698