diff options
author | 2016-06-24 06:31:47 -0700 | |
---|---|---|
committer | 2016-06-24 06:31:47 -0700 | |
commit | e074d1fa6ace83dd77971b971c07166bedeb28ef (patch) | |
tree | ffdbdc9ce69615ca7923b4816343d01fddad7bac /src | |
parent | 7bde5659d354b4ef227c487a4e9fa8de12573c31 (diff) |
Change SkColor4f to RGBA channel order
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2093763003
Review-Url: https://codereview.chromium.org/2093763003
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkColor.cpp | 24 | ||||
-rw-r--r-- | src/core/SkColorShader.cpp | 10 | ||||
-rw-r--r-- | src/core/SkPixmap.cpp | 5 |
3 files changed, 20 insertions, 19 deletions
diff --git a/src/core/SkColor.cpp b/src/core/SkColor.cpp index 1c6f0b6579..985790dfe5 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); } diff --git a/src/core/SkColorShader.cpp b/src/core/SkColorShader.cpp index 250a367822..c61081603d 100644 --- a/src/core/SkColorShader.cpp +++ b/src/core/SkColorShader.cpp @@ -133,10 +133,10 @@ SkColor4Shader::SkColor4Shader(const SkColor4f& color, sk_sp<SkColorSpace> space sk_sp<SkFlattenable> SkColor4Shader::CreateProc(SkReadBuffer& buffer) { SkColor4f color; - color.fA = buffer.readScalar(); // readFloat() - color.fR = buffer.readScalar(); + color.fR = buffer.readScalar(); // readFloat() color.fG = buffer.readScalar(); color.fB = buffer.readScalar(); + color.fA = buffer.readScalar(); if (buffer.readBool()) { // TODO how do we unflatten colorspaces } @@ -144,10 +144,10 @@ sk_sp<SkFlattenable> SkColor4Shader::CreateProc(SkReadBuffer& buffer) { } void SkColor4Shader::flatten(SkWriteBuffer& buffer) const { - buffer.writeScalar(fColor4.fA); // writeFloat() - buffer.writeScalar(fColor4.fR); + buffer.writeScalar(fColor4.fR); // writeFloat() buffer.writeScalar(fColor4.fG); buffer.writeScalar(fColor4.fB); + buffer.writeScalar(fColor4.fA); buffer.writeBool(false); // TODO how do we flatten colorspaces? } @@ -232,7 +232,7 @@ sk_sp<GrFragmentProcessor> SkColor4Shader::asFragmentProcessor(GrContext*, const void SkColor4Shader::toString(SkString* str) const { str->append("SkColor4Shader: ("); - str->append("ARGB:"); + str->append("RGBA:"); for (int i = 0; i < 4; ++i) { str->appendf(" %g", fColor4.vec()[i]); } diff --git a/src/core/SkPixmap.cpp b/src/core/SkPixmap.cpp index 887fdb46e9..77498396b0 100644 --- a/src/core/SkPixmap.cpp +++ b/src/core/SkPixmap.cpp @@ -228,10 +228,7 @@ bool SkPixmap::erase(const SkColor4f& origColor, const SkIRect* subset) const { const SkColor4f color = origColor.pin(); if (kRGBA_F16_SkColorType != pm.colorType()) { - Sk4f c4 = Sk4f::Load(color.vec()); - SkColor c; - SkNx_cast<uint8_t>(c4 * Sk4f(255) + Sk4f(0.5f)).store(&c); - return pm.erase(c); + return pm.erase(color.toSkColor()); } const uint64_t half4 = color.premul().toF16(); |