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

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

Issue 2823063002: Consolidate canvas color params into a single class (Closed)
Patch Set: Fix compile Created 3 years, 8 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 41f39aecef774c4ce6a6ccd10128cf4908f76848..23590934b119cea0659da88e56e1cbc53ac72ede 100644
--- a/third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.cpp
+++ b/third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.cpp
@@ -39,28 +39,28 @@ CanvasRenderingContext::CanvasRenderingContext(
const CanvasContextCreationAttributes& attrs)
: canvas_(canvas),
offscreen_canvas_(offscreen_canvas),
- color_space_(kLegacyCanvasColorSpace),
- pixel_format_(kRGBA8CanvasPixelFormat),
- linear_pixel_math_(false),
+ color_params_(kLegacyCanvasColorSpace, kRGBA8CanvasPixelFormat),
creation_attributes_(attrs) {
if (RuntimeEnabledFeatures::experimentalCanvasFeaturesEnabled() &&
RuntimeEnabledFeatures::colorCorrectRenderingEnabled()) {
// Set the default color space to SRGB and continue
- color_space_ = kSRGBCanvasColorSpace;
+ CanvasColorSpace color_space = kSRGBCanvasColorSpace;
if (creation_attributes_.colorSpace() == kRec2020CanvasColorSpaceName)
- color_space_ = kRec2020CanvasColorSpace;
+ color_space = kRec2020CanvasColorSpace;
else if (creation_attributes_.colorSpace() == kP3CanvasColorSpaceName)
- color_space_ = kP3CanvasColorSpace;
+ color_space = kP3CanvasColorSpace;
// For now, we only support RGBA8 (for SRGB) and F16 (for all). Everything
// else falls back to SRGB + RGBA8.
+ CanvasPixelFormat pixel_format = kRGBA8CanvasPixelFormat;
if (creation_attributes_.pixelFormat() == kF16CanvasPixelFormatName) {
- pixel_format_ = kF16CanvasPixelFormat;
- linear_pixel_math_ = true;
+ pixel_format = kF16CanvasPixelFormat;
} else {
- color_space_ = kSRGBCanvasColorSpace;
- pixel_format_ = kRGBA8CanvasPixelFormat;
+ color_space = kSRGBCanvasColorSpace;
+ pixel_format = kRGBA8CanvasPixelFormat;
}
+
+ color_params_ = CanvasColorParams(color_space, pixel_format);
}
// Make m_creationAttributes reflect the effective colorSpace, pixelFormat and
@@ -71,7 +71,7 @@ CanvasRenderingContext::CanvasRenderingContext(
}
WTF::String CanvasRenderingContext::ColorSpaceAsString() const {
- switch (color_space_) {
+ switch (color_params_.color_space()) {
case kLegacyCanvasColorSpace:
return kLegacyCanvasColorSpaceName;
case kSRGBCanvasColorSpace:
@@ -86,7 +86,7 @@ WTF::String CanvasRenderingContext::ColorSpaceAsString() const {
}
WTF::String CanvasRenderingContext::PixelFormatAsString() const {
- switch (pixel_format_) {
+ switch (color_params_.pixel_format()) {
case kRGBA8CanvasPixelFormat:
return kRGBA8CanvasPixelFormatName;
case kRGB10A2CanvasPixelFormat:
@@ -101,32 +101,19 @@ WTF::String CanvasRenderingContext::PixelFormatAsString() const {
}
gfx::ColorSpace CanvasRenderingContext::GfxColorSpace() const {
- switch (color_space_) {
- case kLegacyCanvasColorSpace:
- return gfx::ColorSpace::CreateSRGB();
- case kSRGBCanvasColorSpace:
- if (pixel_format_ == kF16CanvasPixelFormat)
- return gfx::ColorSpace::CreateSCRGBLinear();
- return gfx::ColorSpace::CreateSRGB();
- 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();
+ return color_params_.GetGfxColorSpace();
}
sk_sp<SkColorSpace> CanvasRenderingContext::SkSurfaceColorSpace() const {
- if (SkSurfacesUseColorSpace())
- return GfxColorSpace().ToSkColorSpace();
- return nullptr;
+ return color_params_.GetSkColorSpaceForSkSurfaces();
}
bool CanvasRenderingContext::SkSurfacesUseColorSpace() const {
- return color_space_ != kLegacyCanvasColorSpace;
+ return color_params_.GetSkColorSpaceForSkSurfaces();
+}
+
+bool CanvasRenderingContext::LinearPixelMath() const {
+ return color_params_.LinearPixelMath();
}
ColorBehavior CanvasRenderingContext::ColorBehaviorForMediaDrawnToCanvas()
@@ -136,10 +123,12 @@ ColorBehavior CanvasRenderingContext::ColorBehaviorForMediaDrawnToCanvas()
return ColorBehavior::TransformToGlobalTarget();
}
+CanvasColorSpace CanvasRenderingContext::ColorSpace() const {
+ return color_params_.color_space();
+}
+
SkColorType CanvasRenderingContext::ColorType() const {
- if (pixel_format_ == kF16CanvasPixelFormat)
- return kRGBA_F16_SkColorType;
- return kN32_SkColorType;
+ return color_params_.GetSkColorType();
}
void CanvasRenderingContext::Dispose() {
« no previous file with comments | « third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.h ('k') | third_party/WebKit/Source/platform/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698