aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkColorSpaceXformSteps.h
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2018-06-13 17:21:19 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-06-14 11:30:47 +0000
commitf018b7d607a0859e2d6078578a9632144694072f (patch)
tree05967e1777d04753b1a5415eec53fbfcd170fc70 /src/core/SkColorSpaceXformSteps.h
parentb57a861f183bfc6ae251297e3173faff0dc262f9 (diff)
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>
Diffstat (limited to 'src/core/SkColorSpaceXformSteps.h')
-rw-r--r--src/core/SkColorSpaceXformSteps.h28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/core/SkColorSpaceXformSteps.h b/src/core/SkColorSpaceXformSteps.h
index 6c38411692..3b2a88cddc 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 @@ struct SkColorSpaceXformSteps {
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