aboutsummaryrefslogtreecommitdiffstats
path: root/gm
diff options
context:
space:
mode:
authorBrian Osman <brianosman@google.com>2019-01-04 17:03:00 -0500
committerSkia Commit-Bot <skia-commit-bot@chromium.org>2019-01-05 20:06:51 +0000
commit82ebe04caff2d7a0b47772ed44c4e3d2318e8aff (patch)
tree8df975dadbf4f8a63be20b9e6d2edddcaf282672 /gm
parentb282e1f622f62df3cdf6b9c2ad67ce7b2e9364e0 (diff)
downloadplatform_external_skqp-82ebe04caff2d7a0b47772ed44c4e3d2318e8aff.tar.gz
platform_external_skqp-82ebe04caff2d7a0b47772ed44c4e3d2318e8aff.tar.bz2
platform_external_skqp-82ebe04caff2d7a0b47772ed44c4e3d2318e8aff.zip
Reland "Add SkColorSpace factory from 3x3 row-major gamut and transfer function"
Moved named common transfer functions and gamuts to constexpr values in SkColorSpace.h, in SkNamedTransferFn and SkNamedGamut namespaces. Converted nearly all SkColorSpace::MakeRGB calls within Skia to use the new factory with the named values. Multiple clients want a way to extract named transfer function and gamut - this still doesn't provide that, but this may be a better path forward for honestly advertising how SkColorSpace works internally. Originally landed as: https://skia.googlesource.com/skia/+/a9549ab31630fc244094e6f1692371cbaf87f666 Re-landing with a new serialization format, but maintaining ability to load old serialized color spaces, for SKP compatibility. Bug: skia: Change-Id: Ib84a6e1cd5d7d9816175773fdbaff2ca32658667 Reviewed-on: https://skia-review.googlesource.com/c/181176 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'gm')
-rw-r--r--gm/makecolorspace.cpp4
-rw-r--r--gm/p3.cpp6
-rw-r--r--gm/pictureshadercache.cpp9
-rw-r--r--gm/readpixels.cpp5
-rw-r--r--gm/tosrgb_colorfilter.cpp13
5 files changed, 17 insertions, 20 deletions
diff --git a/gm/makecolorspace.cpp b/gm/makecolorspace.cpp
index c7e603d9ac..2f5acd699e 100644
--- a/gm/makecolorspace.cpp
+++ b/gm/makecolorspace.cpp
@@ -48,8 +48,8 @@ protected:
}
void onDraw(SkCanvas* canvas) override {
- sk_sp<SkColorSpace> wideGamut = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma,
- SkColorSpace::kAdobeRGB_Gamut);
+ sk_sp<SkColorSpace> wideGamut = SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB,
+ SkNamedGamut::kAdobeRGB);
sk_sp<SkColorSpace> wideGamutLinear = wideGamut->makeLinearGamma();
// Lazy images
diff --git a/gm/p3.cpp b/gm/p3.cpp
index 28e86447a4..a67ab7229b 100644
--- a/gm/p3.cpp
+++ b/gm/p3.cpp
@@ -94,8 +94,7 @@ static void compare_pixel(const char* label,
}
DEF_SIMPLE_GM(p3, canvas, 450, 1300) {
- auto p3 = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma,
- SkColorSpace::kDCIP3_D65_Gamut);
+ auto p3 = SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kDCIP3);
auto srgb = SkColorSpace::MakeSRGB();
auto p3_to_srgb = [&](SkColor4f c) {
@@ -356,8 +355,7 @@ DEF_SIMPLE_GM(p3, canvas, 450, 1300) {
}
DEF_SIMPLE_GM(p3_ovals, canvas, 450, 320) {
- auto p3 = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma,
- SkColorSpace::kDCIP3_D65_Gamut);
+ auto p3 = SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kDCIP3);
// Test cases that exercise each Op in GrOvalOpFactory.cpp
diff --git a/gm/pictureshadercache.cpp b/gm/pictureshadercache.cpp
index b3e2c26ab4..e3badd801d 100644
--- a/gm/pictureshadercache.cpp
+++ b/gm/pictureshadercache.cpp
@@ -60,9 +60,12 @@ public:
{
// Render in a funny color space that converts green to yellow.
- SkMatrix44 greenToYellow;
- greenToYellow.setFloat(0, 1, 1.0f);
- sk_sp<SkColorSpace> gty = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma,
+ skcms_Matrix3x3 greenToYellow = {{
+ { 1, 1, 0 },
+ { 0, 1, 0 },
+ { 0, 0, 1 },
+ }};
+ sk_sp<SkColorSpace> gty = SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB,
greenToYellow);
SkImageInfo info = SkImageInfo::MakeN32Premul(100, 100, std::move(gty));
sk_sp<SkSurface> surface(SkSurface::MakeRaster(info));
diff --git a/gm/readpixels.cpp b/gm/readpixels.cpp
index 8250860901..e69803bcf0 100644
--- a/gm/readpixels.cpp
+++ b/gm/readpixels.cpp
@@ -62,10 +62,9 @@ static sk_sp<SkImage> make_picture_image() {
}
static sk_sp<SkColorSpace> make_parametric_transfer_fn(const SkColorSpacePrimaries& primaries) {
- SkMatrix44 toXYZD50;
+ skcms_Matrix3x3 toXYZD50;
SkAssertResult(primaries.toXYZD50(&toXYZD50));
- SkColorSpaceTransferFn fn;
- fn.fA = 1.f; fn.fB = 0.f; fn.fC = 0.f; fn.fD = 0.f; fn.fE = 0.f; fn.fF = 0.f; fn.fG = 1.8f;
+ skcms_TransferFunction fn = { 1.8f, 1.f, 0.f, 0.f, 0.f, 0.f, 0.f };
return SkColorSpace::MakeRGB(fn, toXYZD50);
}
diff --git a/gm/tosrgb_colorfilter.cpp b/gm/tosrgb_colorfilter.cpp
index d9c7890aae..8637386922 100644
--- a/gm/tosrgb_colorfilter.cpp
+++ b/gm/tosrgb_colorfilter.cpp
@@ -26,20 +26,17 @@ DEF_SIMPLE_GM_BG(tosrgb_colorfilter, canvas, 130, 130, SK_ColorBLACK) {
canvas->drawBitmapRect(bmp, SkRect::MakeXYWH(10, 10, 50, 50), nullptr);
auto srgb = SkColorSpace::MakeSRGB();
- auto rec2020 = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma,
- SkColorSpace::kRec2020_Gamut);
+ auto rec2020 = SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kRec2020);
// NarrowGamut RGB (an artifically smaller than sRGB gamut)
- SkColorSpacePrimaries narrowPrimaries = {
+ skcms_Matrix3x3 narrowGamutRGBMatrix;
+ SkAssertResult(skcms_PrimariesToXYZD50(
0.54f, 0.33f, // Rx, Ry
0.33f, 0.50f, // Gx, Gy
0.25f, 0.20f, // Bx, By
0.3127f, 0.3290f, // Wx, Wy
- };
- SkMatrix44 narrowGamutRGBMatrix;
- narrowPrimaries.toXYZD50(&narrowGamutRGBMatrix);
- auto narrow = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma,
- narrowGamutRGBMatrix);
+ &narrowGamutRGBMatrix));
+ auto narrow = SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, narrowGamutRGBMatrix);
SkPaint paint;