diff options
author | Mike Klein <mtklein@chromium.org> | 2018-05-09 15:00:25 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-05-09 19:36:01 +0000 |
commit | e61b969a07ba3ebe9e47e61381ad16c5d2c549a2 (patch) | |
tree | ab8ffa2291cb5dd368251a3303d64ff294089532 | |
parent | 7ac2e3bfefc2933245de47202bdd4684f5347f84 (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.h | 8 | ||||
-rw-r--r-- | src/core/SkColorSpaceXform_skcms.cpp | 16 | ||||
-rw-r--r-- | tests/ColorSpaceTest.cpp | 2 | ||||
-rw-r--r-- | tests/ICCTest.cpp | 4 |
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())); } |