aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2018-05-09 15:00:25 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-05-09 19:36:01 +0000
commite61b969a07ba3ebe9e47e61381ad16c5d2c549a2 (patch)
treeab8ffa2291cb5dd368251a3303d64ff294089532
parent7ac2e3bfefc2933245de47202bdd4684f5347f84 (diff)
SkColorSpace::Make(const skcms_ICCProfile&)
Change-Id: Ib12208d6c148f143fdd0b54538d852b97616a72d Reviewed-on: https://skia-review.googlesource.com/127122 Commit-Queue: Mike Klein <mtklein@chromium.org> Auto-Submit: Mike Klein <mtklein@chromium.org> Reviewed-by: Brian Osman <brianosman@google.com>
-rw-r--r--include/core/SkColorSpace.h8
-rw-r--r--src/core/SkColorSpaceXform_skcms.cpp16
-rw-r--r--tests/ColorSpaceTest.cpp2
-rw-r--r--tests/ICCTest.cpp4
4 files changed, 16 insertions, 14 deletions
diff --git a/include/core/SkColorSpace.h b/include/core/SkColorSpace.h
index 6d8408d3bd..2bc297efe0 100644
--- a/include/core/SkColorSpace.h
+++ b/include/core/SkColorSpace.h
@@ -130,7 +130,13 @@ public:
/**
* Create an SkColorSpace from a parsed (skcms) ICC profile.
*/
- static sk_sp<SkColorSpace> Make(const skcms_ICCProfile*);
+ static sk_sp<SkColorSpace> Make(const skcms_ICCProfile&);
+
+ // TODO: cleanup in Chromium
+ static inline sk_sp<SkColorSpace> Make(const skcms_ICCProfile* p) {
+ SkASSERT(p);
+ return SkColorSpace::Make(*p);
+ }
/**
* Types of colorspaces.
diff --git a/src/core/SkColorSpaceXform_skcms.cpp b/src/core/SkColorSpaceXform_skcms.cpp
index 549db8f1a6..5305b9bffd 100644
--- a/src/core/SkColorSpaceXform_skcms.cpp
+++ b/src/core/SkColorSpaceXform_skcms.cpp
@@ -126,26 +126,22 @@ std::unique_ptr<SkColorSpaceXform> MakeSkcmsXform(SkColorSpace* src, SkColorSpac
return skstd::make_unique<SkColorSpaceXform_skcms>(srcProfile, dstProfile, premulFormat);
}
-sk_sp<SkColorSpace> SkColorSpace::Make(const skcms_ICCProfile* profile) {
- if (!profile) {
+sk_sp<SkColorSpace> SkColorSpace::Make(const skcms_ICCProfile& profile) {
+ if (!profile.has_toXYZD50 || !profile.has_trc) {
return nullptr;
}
- if (!profile->has_toXYZD50 || !profile->has_trc) {
- return nullptr;
- }
-
- if (skcms_ApproximatelyEqualProfiles(profile, skcms_sRGB_profile())) {
+ if (skcms_ApproximatelyEqualProfiles(&profile, skcms_sRGB_profile())) {
return SkColorSpace::MakeSRGB();
}
SkMatrix44 toXYZD50(SkMatrix44::kUninitialized_Constructor);
- toXYZD50.set3x3RowMajorf(&profile->toXYZD50.vals[0][0]);
+ toXYZD50.set3x3RowMajorf(&profile.toXYZD50.vals[0][0]);
if (!toXYZD50.invert(nullptr)) {
return nullptr;
}
- const skcms_Curve* trc = profile->trc;
+ const skcms_Curve* trc = profile.trc;
if (trc[0].table_entries ||
trc[1].table_entries ||
trc[2].table_entries ||
@@ -155,7 +151,7 @@ sk_sp<SkColorSpace> SkColorSpace::Make(const skcms_ICCProfile* profile) {
}
SkColorSpaceTransferFn skia_tf;
- memcpy(&skia_tf, &profile->trc[0].parametric, sizeof(skia_tf));
+ memcpy(&skia_tf, &profile.trc[0].parametric, sizeof(skia_tf));
return SkColorSpace::MakeRGB(skia_tf, toXYZD50);
}
diff --git a/tests/ColorSpaceTest.cpp b/tests/ColorSpaceTest.cpp
index e95c528ea5..d1eb75efe4 100644
--- a/tests/ColorSpaceTest.cpp
+++ b/tests/ColorSpaceTest.cpp
@@ -438,7 +438,7 @@ DEF_TEST(ColorSpace_IsSRGB, r) {
#if defined(SK_USE_SKCMS)
DEF_TEST(ColorSpace_skcms_IsSRGB, r) {
- sk_sp<SkColorSpace> srgb = SkColorSpace::Make(skcms_sRGB_profile());
+ sk_sp<SkColorSpace> srgb = SkColorSpace::Make(*skcms_sRGB_profile());
REPORTER_ASSERT(r, srgb->isSRGB());
}
#endif
diff --git a/tests/ICCTest.cpp b/tests/ICCTest.cpp
index af01fc9ff8..e88255b2cd 100644
--- a/tests/ICCTest.cpp
+++ b/tests/ICCTest.cpp
@@ -36,7 +36,7 @@
skcms_ICCProfile parsed;
REPORTER_ASSERT(r, skcms_Parse(profile->data(), profile->size(), &parsed));
- sk_sp<SkColorSpace> got = SkColorSpace::Make(&parsed);
+ sk_sp<SkColorSpace> got = SkColorSpace::Make(parsed);
REPORTER_ASSERT(r, got);
REPORTER_ASSERT(r, SkColorSpace::Equals(got.get(), test.want.get()));
@@ -64,7 +64,7 @@
skcms_ICCProfile parsed;
REPORTER_ASSERT(r, skcms_Parse(profile->data(), profile->size(), &parsed));
- auto got = SkColorSpace::Make(&parsed);
+ auto got = SkColorSpace::Make(parsed);
auto want = SkColorSpace::MakeRGB(g2Dot2_TransferFn, SkColorSpace::kAdobeRGB_Gamut);
REPORTER_ASSERT(r, SkColorSpace::Equals(got.get(), want.get()));
}