SkColorSpaceXformSteps improvements and tests
Added some helper functions and put the booleans in a nested struct
(this is motivated by upcoming changes). Added a unit test of steps
against skcms, with round-tripping in both combinations.
Change-Id: Iea3d60cd52edb5259b5576b1422ed6f856cde815
Reviewed-on: https://skia-review.googlesource.com/134660
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/src/core/SkColorSpaceXformSteps.h b/src/core/SkColorSpaceXformSteps.h
index 6c38411..3b2a88c 100644
--- a/src/core/SkColorSpaceXformSteps.h
+++ b/src/core/SkColorSpaceXformSteps.h
@@ -12,6 +12,22 @@
#include "SkImageInfo.h"
struct SkColorSpaceXformSteps {
+ struct Flags {
+ bool unpremul;
+ bool linearize;
+ bool gamut_transform;
+ bool encode;
+ bool premul;
+
+ uint32_t mask() const {
+ return (unpremul ? 1 : 0)
+ | (linearize ? 2 : 0)
+ | (gamut_transform ? 4 : 0)
+ | (encode ? 8 : 0)
+ | (premul ? 16 : 0);
+ }
+ };
+
SkColorSpaceXformSteps(SkColorSpace* src, SkAlphaType srcAT,
SkColorSpace* dst);
@@ -22,17 +38,13 @@
return SkColorSpaceXformSteps(src, kOpaque_SkAlphaType, dst);
}
- bool unpremul;
- bool linearize;
- bool gamut_transform;
- bool encode;
- bool premul;
+ void apply(float rgba[4]) const;
+
+ Flags flags;
SkColorSpaceTransferFn srcTF, // Apply for linearize.
dstTFInv; // Apply for encode.
- float src_to_dst_matrix[9]; // Apply this 3x3 row-major matrix for gamut_transform.
+ float src_to_dst_matrix[9]; // Apply this 3x3 column-major matrix for gamut_transform.
};
-
-
#endif//SkColorSpaceXformSteps_DEFINED