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

Unified Diff: src/core/SkPMFloat.h

Issue 978213003: 4-at-a-time SkPMColor -> SkPMFloat API. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 4 Created 5 years, 10 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 | « bench/PMFloatBench.cpp ('k') | tests/PMFloatTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/core/SkPMFloat.h
diff --git a/src/core/SkPMFloat.h b/src/core/SkPMFloat.h
index 444cb78fc8c77d516ee5ccda2cf1aacbb2ba888a..2e06ea93e6e9ed1d968f358e57b3ead37e55e833 100644
--- a/src/core/SkPMFloat.h
+++ b/src/core/SkPMFloat.h
@@ -12,6 +12,12 @@ public:
static SkPMFloat FromPMColor(SkPMColor c) { return SkPMFloat(c); }
static SkPMFloat FromARGB(float a, float r, float g, float b) { return SkPMFloat(a,r,g,b); }
+ // May be more efficient than one at a time. No special alignment assumed for SkPMColors.
+ static void From4PMColors(SkPMFloat floats[4], const SkPMColor colors[4]) {
+ // TODO: specialize
+ for (int i = 0; i < 4; i++) { floats[i] = FromPMColor(colors[i]); }
+ }
+
explicit SkPMFloat(SkPMColor);
SkPMFloat(float a, float r, float g, float b) {
// TODO: faster when specialized?
@@ -44,6 +50,16 @@ public:
SkPMColor get() const; // May SkASSERT(this->isValid()). Some implementations may clamp.
SkPMColor clamped() const; // Will clamp all values to [0, 255]. Then may assert isValid().
+ // 4-at-a-time versions of get() and clamped(). Like From4PMColors(), no alignment assumed.
+ static void To4PMColors(SkPMColor colors[4], const SkPMFloat floats[4]) {
+ // TODO: specialize
+ for (int i = 0; i < 4; i++) { colors[i] = floats[i].get(); }
+ }
+ static void ClampTo4PMColors(SkPMColor colors[4], const SkPMFloat floats[4]) {
+ // TODO: specialize
+ for (int i = 0; i < 4; i++) { colors[i] = floats[i].clamped(); }
+ }
+
bool isValid() const {
return this->a() >= 0 && this->a() <= 255
&& this->r() >= 0 && this->r() <= this->a()
« no previous file with comments | « bench/PMFloatBench.cpp ('k') | tests/PMFloatTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698