| 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 c017207a99e186d605034c190dfbaa6a5fb580ac..000d85c6716ed641fba33797039187fbdb88feef 100644
|
| --- a/third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.cpp
|
| +++ b/third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.cpp
|
| @@ -29,12 +29,56 @@
|
| #include "platform/RuntimeEnabledFeatures.h"
|
| #include "platform/weborigin/SecurityOrigin.h"
|
|
|
| +const char * const kLinearRGBCanvasColorSpaceName = "linear-rgb";
|
| +const char * const kSRGBCanvasColorSpaceName = "srgb";
|
| +const char * const kLegacyCanvasColorSpaceName = "legacy-srgb";
|
| +
|
| namespace blink {
|
|
|
| -CanvasRenderingContext::CanvasRenderingContext(HTMLCanvasElement* canvas, OffscreenCanvas* offscreenCanvas)
|
| +CanvasRenderingContext::CanvasRenderingContext(HTMLCanvasElement* canvas, OffscreenCanvas* offscreenCanvas, const String& colorSpace)
|
| : m_canvas(canvas)
|
| , m_offscreenCanvas(offscreenCanvas)
|
| + , m_colorSpace(kLegacyCanvasColorSpace)
|
| +{
|
| + if (RuntimeEnabledFeatures::experimentalCanvasFeaturesEnabled()) {
|
| + if (colorSpace == kSRGBCanvasColorSpaceName)
|
| + m_colorSpace = kSRGBCanvasColorSpace;
|
| + else if (colorSpace == kLinearRGBCanvasColorSpaceName)
|
| + m_colorSpace = kLinearRGBCanvasColorSpace;
|
| + }
|
| +}
|
| +
|
| +WTF::String CanvasRenderingContext::colorSpaceAsString() const
|
| +{
|
| + switch (m_colorSpace) {
|
| + case kSRGBCanvasColorSpace:
|
| + return kSRGBCanvasColorSpaceName;
|
| + case kLinearRGBCanvasColorSpace:
|
| + return kLinearRGBCanvasColorSpaceName;
|
| + case kLegacyCanvasColorSpace:
|
| + return kLegacyCanvasColorSpaceName;
|
| + };
|
| + CHECK(0);
|
| + return "";
|
| +}
|
| +
|
| +sk_sp<SkColorSpace> CanvasRenderingContext::skColorSpace() const
|
| {
|
| + switch (m_colorSpace) {
|
| + case kSRGBCanvasColorSpace:
|
| + return SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named);
|
| + case kLinearRGBCanvasColorSpace:
|
| + {
|
| + // Creating a temp srgb colorspace just to get the matrix.
|
| + // There should be a better way
|
| + sk_sp<SkColorSpace> tmp = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named);
|
| + return SkColorSpace::NewRGB(SkColorSpace::kLinear_GammaNamed, tmp->xyz());
|
| + }
|
| + case kLegacyCanvasColorSpace:
|
| + return nullptr;
|
| + };
|
| + CHECK(0);
|
| + return nullptr;
|
| }
|
|
|
| void CanvasRenderingContext::dispose()
|
|
|