Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(483)

Unified Diff: third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.cpp

Issue 2660393002: Use gfx::ColorSpace instead of SkColorSpace in Blink (Closed)
Patch Set: Rebase (again) Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.cpp
diff --git a/third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.cpp b/third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.cpp
index bd781c8500381138b634443d9e3d8d3221d1efcd..7fdd8f3dc7ee140615707810ebc008f03bc696de 100644
--- a/third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.cpp
+++ b/third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.cpp
@@ -80,58 +80,38 @@ WTF::String CanvasRenderingContext::colorSpaceAsString() const {
return "";
}
-sk_sp<SkColorSpace> CanvasRenderingContext::skColorSpace() const {
- if (!RuntimeEnabledFeatures::experimentalCanvasFeaturesEnabled() ||
- !RuntimeEnabledFeatures::colorCorrectRenderingEnabled()) {
- return nullptr;
- }
+gfx::ColorSpace CanvasRenderingContext::gfxColorSpace() const {
switch (m_colorSpace) {
case kLegacyCanvasColorSpace:
- // Legacy colorspace ensures color matching with CSS is preserved.
- // So if CSS is color corrected from sRGB to display space, then
- // canvas must do the same
- return SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named);
case kSRGBCanvasColorSpace:
- return SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named);
+ return gfx::ColorSpace::CreateSRGB();
case kLinearRGBCanvasColorSpace:
- return SkColorSpace::MakeNamed(SkColorSpace::kSRGBLinear_Named);
- case kRec2020CanvasColorSpace: {
- // TODO(zakerinasab): Replace this with proper constructor from Skia
- // when it is provided.
- // https://en.wikipedia.org/wiki/Rec._2020
- SkColorSpacePrimaries kPrimaries = {0.708, 0.292, 0.170, 0.797,
- 0.131, 0.046, 0.3127, 0.3290};
- SkMatrix44 kToXYZD50;
- if (!kPrimaries.toXYZD50(&kToXYZD50))
- return nullptr;
- return SkColorSpace::MakeRGB(
- SkColorSpace::RenderTargetGamma::kLinear_RenderTargetGamma,
- kToXYZD50);
- }
- case kP3CanvasColorSpace: {
- // TODO(zakerinasab): Replace this with proper constructor from Skia
- // when it is provided.
- // https://en.wikipedia.org/wiki/DCI-P3
- SkColorSpacePrimaries kPrimaries = {0.680, 0.320, 0.265, 0.690,
- 0.150, 0.060, 0.3127, 0.3290};
- SkMatrix44 kToXYZD50;
- if (!kPrimaries.toXYZD50(&kToXYZD50))
- return nullptr;
- return SkColorSpace::MakeRGB(
- SkColorSpace::RenderTargetGamma::kLinear_RenderTargetGamma,
- kToXYZD50);
- }
- };
- CHECK(false);
+ return gfx::ColorSpace::CreateSCRGBLinear();
+ case kRec2020CanvasColorSpace:
+ return gfx::ColorSpace(gfx::ColorSpace::PrimaryID::BT2020,
+ gfx::ColorSpace::TransferID::IEC61966_2_1);
+ case kP3CanvasColorSpace:
+ return gfx::ColorSpace(gfx::ColorSpace::PrimaryID::SMPTEST432_1,
+ gfx::ColorSpace::TransferID::IEC61966_2_1);
+ }
+ NOTREACHED();
+ return gfx::ColorSpace();
+}
+
+sk_sp<SkColorSpace> CanvasRenderingContext::skSurfaceColorSpace() const {
+ if (skSurfacesUseColorSpace())
+ return gfxColorSpace().ToSkColorSpace();
return nullptr;
}
+bool CanvasRenderingContext::skSurfacesUseColorSpace() const {
+ return m_colorSpace != kLegacyCanvasColorSpace;
+}
+
ColorBehavior CanvasRenderingContext::colorBehaviorForMediaDrawnToCanvas()
const {
- sk_sp<SkColorSpace> colorSpace = skColorSpace();
- if (colorSpace) {
- return ColorBehavior::transformTo(std::move(colorSpace));
- }
+ if (RuntimeEnabledFeatures::colorCorrectRenderingEnabled())
+ return ColorBehavior::transformTo(gfxColorSpace());
return ColorBehavior::transformToGlobalTarget();
}

Powered by Google App Engine
This is Rietveld 408576698