Index: src/core/SkColor.cpp |
diff --git a/src/core/SkColor.cpp b/src/core/SkColor.cpp |
index a21f0192398f95ba3c4256a41c0d2ff47da4ed64..a80a78597a83fd7e701aad89c3aff39cdf2434c9 100644 |
--- a/src/core/SkColor.cpp |
+++ b/src/core/SkColor.cpp |
@@ -100,3 +100,27 @@ SkColor SkHSVToColor(U8CPU a, const SkScalar hsv[3]) { |
} |
return SkColorSetARGB(a, r, g, b); |
} |
+ |
+#include "SkMathPriv.h" |
+ |
+SkColor4f SkColor4f::Normalize(float a, float r, float g, float b) { |
mtklein
2016/01/21 19:28:30
Pin? (Also, SkNx this?)
|
+ return { SkPinToUnitFloat(a), SkPinToUnitFloat(r), SkPinToUnitFloat(g), SkPinToUnitFloat(b) }; |
+} |
+ |
+SkColor4f SkColor4f::FromColor(SkColor c) { |
mtklein
2016/01/21 19:28:30
Something like,
#include "SkNx.h"
SkColor4f SkCo
|
+ const float kOneOver255 = 1.0f / 255; |
+ return { |
+ SkColorGetA(c) * kOneOver255, SkColorGetR(c) * kOneOver255, |
+ SkColorGetG(c) * kOneOver255, SkColorGetB(c) * kOneOver255 |
+ }; |
+} |
+ |
+SkPM4f SkColor4f::premul() const { |
+ SkColor4f src = this->normalize(); |
+ SkPM4f dst; |
+ dst.fVec[SK_A32_SHIFT/8] = src.fA; |
+ dst.fVec[SK_R32_SHIFT/8] = src.fR; |
+ dst.fVec[SK_G32_SHIFT/8] = src.fG; |
+ dst.fVec[SK_B32_SHIFT/8] = src.fB; |
+ return dst; |
+} |