Commit 00e1cd5e authored by Christopher Cameron's avatar Christopher Cameron Committed by Chromium LUCI CQ

ImageData: Remove CanvasColorParams accessors

CanvasColorParams is a poor match for ImageData. It has the same
CanvasColorSpace names, but different pixel format support, and
unused an unused opacity parameter. Remove the accessor
ImageData::GetCanvasColorParams because of this mismatch.

Clean up serialization of CanvasColorParams to not use these
accessors.

Remove ImageData::Create that takes a StaticBitmapImage, since this
is not used and is the last place where CanvasColorParams are used.

Remove the now-unused helper functions from ImageData
ImageDataInCanvasColorSettings and
ConvertPixelsFromCanvasPixelFormatToImageDataStorageFormat.

Bug: 1150969
Change-Id: Icf8697685ed4d0bfbcee07a47196a2fe4772a2ce
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2548773Reviewed-by: default avatarJeremy Roman <jbroman@chromium.org>
Commit-Queue: ccameron <ccameron@chromium.org>
Cr-Commit-Position: refs/heads/master@{#832000}
parent 7b6916c2
...@@ -8,25 +8,11 @@ ...@@ -8,25 +8,11 @@
namespace blink { namespace blink {
SerializedColorParams::SerializedColorParams() SerializedColorParams::SerializedColorParams() = default;
: color_space_(SerializedColorSpace::kSRGB),
pixel_format_(SerializedPixelFormat::kRGBA8),
opacity_mode_(SerializedOpacityMode::kNonOpaque),
storage_format_(SerializedImageDataStorageFormat::kUint8Clamped) {}
SerializedColorParams::SerializedColorParams(CanvasColorParams color_params) {
switch (color_params.ColorSpace()) {
case CanvasColorSpace::kSRGB:
color_space_ = SerializedColorSpace::kSRGB;
break;
case CanvasColorSpace::kRec2020:
color_space_ = SerializedColorSpace::kRec2020;
break;
case CanvasColorSpace::kP3:
color_space_ = SerializedColorSpace::kP3;
break;
}
SerializedColorParams::SerializedColorParams(CanvasColorParams color_params)
: SerializedColorParams(color_params.ColorSpace(),
kUint8ClampedArrayStorageFormat) {
switch (color_params.PixelFormat()) { switch (color_params.PixelFormat()) {
case CanvasPixelFormat::kRGBA8: case CanvasPixelFormat::kRGBA8:
pixel_format_ = SerializedPixelFormat::kRGBA8; pixel_format_ = SerializedPixelFormat::kRGBA8;
...@@ -42,13 +28,22 @@ SerializedColorParams::SerializedColorParams(CanvasColorParams color_params) { ...@@ -42,13 +28,22 @@ SerializedColorParams::SerializedColorParams(CanvasColorParams color_params) {
opacity_mode_ = SerializedOpacityMode::kNonOpaque; opacity_mode_ = SerializedOpacityMode::kNonOpaque;
if (color_params.GetOpacityMode() == blink::kOpaque) if (color_params.GetOpacityMode() == blink::kOpaque)
opacity_mode_ = SerializedOpacityMode::kOpaque; opacity_mode_ = SerializedOpacityMode::kOpaque;
storage_format_ = SerializedImageDataStorageFormat::kUint8Clamped;
} }
SerializedColorParams::SerializedColorParams( SerializedColorParams::SerializedColorParams(
CanvasColorParams color_params, CanvasColorSpace color_space,
ImageDataStorageFormat storage_format) ImageDataStorageFormat storage_format) {
: SerializedColorParams(color_params) { switch (color_space) {
case CanvasColorSpace::kSRGB:
color_space_ = SerializedColorSpace::kSRGB;
break;
case CanvasColorSpace::kRec2020:
color_space_ = SerializedColorSpace::kRec2020;
break;
case CanvasColorSpace::kP3:
color_space_ = SerializedColorSpace::kP3;
break;
}
switch (storage_format) { switch (storage_format) {
case kUint8ClampedArrayStorageFormat: case kUint8ClampedArrayStorageFormat:
storage_format_ = SerializedImageDataStorageFormat::kUint8Clamped; storage_format_ = SerializedImageDataStorageFormat::kUint8Clamped;
...@@ -66,12 +61,11 @@ SerializedColorParams::SerializedColorParams( ...@@ -66,12 +61,11 @@ SerializedColorParams::SerializedColorParams(
SerializedColorSpace color_space, SerializedColorSpace color_space,
SerializedPixelFormat pixel_format, SerializedPixelFormat pixel_format,
SerializedOpacityMode opacity_mode, SerializedOpacityMode opacity_mode,
SerializedImageDataStorageFormat storage_format) { SerializedImageDataStorageFormat storage_format)
SetSerializedColorSpace(color_space); : color_space_(color_space),
SetSerializedPixelFormat(pixel_format); pixel_format_(pixel_format),
SetSerializedOpacityMode(opacity_mode); opacity_mode_(opacity_mode),
SetSerializedImageDataStorageFormat(storage_format); storage_format_(storage_format) {}
}
CanvasColorParams SerializedColorParams::GetCanvasColorParams() const { CanvasColorParams SerializedColorParams::GetCanvasColorParams() const {
CanvasColorSpace color_space = CanvasColorSpace::kSRGB; CanvasColorSpace color_space = CanvasColorSpace::kSRGB;
...@@ -132,41 +126,4 @@ ImageDataStorageFormat SerializedColorParams::GetStorageFormat() const { ...@@ -132,41 +126,4 @@ ImageDataStorageFormat SerializedColorParams::GetStorageFormat() const {
return kUint8ClampedArrayStorageFormat; return kUint8ClampedArrayStorageFormat;
} }
void SerializedColorParams::SetSerializedColorSpace(
SerializedColorSpace color_space) {
color_space_ = color_space;
}
void SerializedColorParams::SetSerializedPixelFormat(
SerializedPixelFormat pixel_format) {
pixel_format_ = pixel_format;
}
void SerializedColorParams::SetSerializedOpacityMode(
SerializedOpacityMode opacity_mode) {
opacity_mode_ = opacity_mode;
}
void SerializedColorParams::SetSerializedImageDataStorageFormat(
SerializedImageDataStorageFormat storage_format) {
storage_format_ = storage_format;
}
SerializedColorSpace SerializedColorParams::GetSerializedColorSpace() const {
return color_space_;
}
SerializedPixelFormat SerializedColorParams::GetSerializedPixelFormat() const {
return pixel_format_;
}
SerializedOpacityMode SerializedColorParams::GetSerializedOpacityMode() const {
return opacity_mode_;
}
SerializedImageDataStorageFormat
SerializedColorParams::GetSerializedImageDataStorageFormat() const {
return storage_format_;
}
} // namespace blink } // namespace blink
...@@ -74,8 +74,8 @@ enum class SerializedOpacityMode : uint32_t { ...@@ -74,8 +74,8 @@ enum class SerializedOpacityMode : uint32_t {
class SerializedColorParams { class SerializedColorParams {
public: public:
SerializedColorParams(); SerializedColorParams();
SerializedColorParams(CanvasColorParams); explicit SerializedColorParams(CanvasColorParams);
SerializedColorParams(CanvasColorParams, ImageDataStorageFormat); SerializedColorParams(CanvasColorSpace, ImageDataStorageFormat);
SerializedColorParams(SerializedColorSpace, SerializedColorParams(SerializedColorSpace,
SerializedPixelFormat, SerializedPixelFormat,
SerializedOpacityMode, SerializedOpacityMode,
...@@ -85,21 +85,23 @@ class SerializedColorParams { ...@@ -85,21 +85,23 @@ class SerializedColorParams {
CanvasColorSpace GetColorSpace() const; CanvasColorSpace GetColorSpace() const;
ImageDataStorageFormat GetStorageFormat() const; ImageDataStorageFormat GetStorageFormat() const;
void SetSerializedColorSpace(SerializedColorSpace); SerializedColorSpace GetSerializedColorSpace() const { return color_space_; }
void SetSerializedPixelFormat(SerializedPixelFormat); SerializedPixelFormat GetSerializedPixelFormat() const {
void SetSerializedOpacityMode(SerializedOpacityMode); return pixel_format_;
void SetSerializedImageDataStorageFormat(SerializedImageDataStorageFormat); }
SerializedImageDataStorageFormat GetSerializedImageDataStorageFormat() const {
SerializedColorSpace GetSerializedColorSpace() const; return storage_format_;
SerializedPixelFormat GetSerializedPixelFormat() const; }
SerializedImageDataStorageFormat GetSerializedImageDataStorageFormat() const; SerializedOpacityMode GetSerializedOpacityMode() const {
SerializedOpacityMode GetSerializedOpacityMode() const; return opacity_mode_;
}
private: private:
SerializedColorSpace color_space_; SerializedColorSpace color_space_ = SerializedColorSpace::kSRGB;
SerializedPixelFormat pixel_format_; SerializedPixelFormat pixel_format_ = SerializedPixelFormat::kRGBA8;
SerializedOpacityMode opacity_mode_; SerializedOpacityMode opacity_mode_ = SerializedOpacityMode::kNonOpaque;
SerializedImageDataStorageFormat storage_format_; SerializedImageDataStorageFormat storage_format_ =
SerializedImageDataStorageFormat::kUint8Clamped;
}; };
} // namespace blink } // namespace blink
......
...@@ -334,7 +334,7 @@ bool V8ScriptValueSerializer::WriteDOMObject(ScriptWrappable* wrappable, ...@@ -334,7 +334,7 @@ bool V8ScriptValueSerializer::WriteDOMObject(ScriptWrappable* wrappable,
if (wrapper_type_info == V8ImageData::GetWrapperTypeInfo()) { if (wrapper_type_info == V8ImageData::GetWrapperTypeInfo()) {
ImageData* image_data = wrappable->ToImpl<ImageData>(); ImageData* image_data = wrappable->ToImpl<ImageData>();
WriteTag(kImageDataTag); WriteTag(kImageDataTag);
SerializedColorParams color_params(image_data->GetCanvasColorParams(), SerializedColorParams color_params(image_data->GetCanvasColorSpace(),
image_data->GetImageDataStorageFormat()); image_data->GetImageDataStorageFormat());
WriteUint32Enum(ImageSerializationTag::kCanvasColorSpaceTag); WriteUint32Enum(ImageSerializationTag::kCanvasColorSpaceTag);
WriteUint32Enum(color_params.GetSerializedColorSpace()); WriteUint32Enum(color_params.GetSerializedColorSpace());
......
...@@ -77,8 +77,6 @@ class CORE_EXPORT ImageData final : public ScriptWrappable, ...@@ -77,8 +77,6 @@ class CORE_EXPORT ImageData final : public ScriptWrappable,
static ImageData* Create(const IntSize&, static ImageData* Create(const IntSize&,
NotShared<DOMArrayBufferView>, NotShared<DOMArrayBufferView>,
const ImageDataColorSettings* = nullptr); const ImageDataColorSettings* = nullptr);
static ImageData* Create(scoped_refptr<StaticBitmapImage>,
AlphaDisposition = kDontChangeAlpha);
static ImageData* Create(unsigned width, unsigned height, ExceptionState&); static ImageData* Create(unsigned width, unsigned height, ExceptionState&);
static ImageData* Create(NotShared<DOMUint8ClampedArray>, static ImageData* Create(NotShared<DOMUint8ClampedArray>,
...@@ -130,11 +128,6 @@ class CORE_EXPORT ImageData final : public ScriptWrappable, ...@@ -130,11 +128,6 @@ class CORE_EXPORT ImageData final : public ScriptWrappable,
static ImageDataStorageFormat GetImageDataStorageFormat(const String&); static ImageDataStorageFormat GetImageDataStorageFormat(const String&);
static unsigned StorageFormatBytesPerPixel(const String&); static unsigned StorageFormatBytesPerPixel(const String&);
static unsigned StorageFormatBytesPerPixel(ImageDataStorageFormat); static unsigned StorageFormatBytesPerPixel(ImageDataStorageFormat);
static NotShared<DOMArrayBufferView>
ConvertPixelsFromCanvasPixelFormatToImageDataStorageFormat(
ArrayBufferContents&,
CanvasPixelFormat,
ImageDataStorageFormat);
IntSize Size() const { return size_; } IntSize Size() const { return size_; }
int width() const { return size_.Width(); } int width() const { return size_.Width(); }
...@@ -145,26 +138,12 @@ class CORE_EXPORT ImageData final : public ScriptWrappable, ...@@ -145,26 +138,12 @@ class CORE_EXPORT ImageData final : public ScriptWrappable,
void data(ImageDataArray& result) { result = data_; } void data(ImageDataArray& result) { result = data_; }
DOMArrayBufferBase* BufferBase() const; DOMArrayBufferBase* BufferBase() const;
CanvasColorParams GetCanvasColorParams();
CanvasColorSpace GetCanvasColorSpace() const; CanvasColorSpace GetCanvasColorSpace() const;
ImageDataStorageFormat GetImageDataStorageFormat() const; ImageDataStorageFormat GetImageDataStorageFormat() const;
// Return an SkPixmap that references this data directly. // Return an SkPixmap that references this data directly.
SkPixmap GetSkPixmap() const; SkPixmap GetSkPixmap() const;
// DataU8ColorType param specifies if the converted pixels in uint8 pixel
// format should respect the "native" 32bit ARGB format of Skia's blitters.
// For example, if ImageDataInCanvasColorSettings() is called to fill an
// ImageBuffer, kRGBAColorType should be used. If the converted pixels are
// used to create an ImageBitmap, kN32ColorType should be used.
bool ImageDataInCanvasColorSettings(
CanvasColorSpace,
CanvasPixelFormat,
unsigned char* converted_pixels,
DataU8ColorType,
const IntRect* = nullptr,
const AlphaDisposition = kUnpremultiplyAlpha);
// ImageBitmapSource implementation // ImageBitmapSource implementation
IntSize BitmapSourceSize() const override { return size_; } IntSize BitmapSourceSize() const override { return size_; }
ScriptPromise CreateImageBitmap(ScriptState*, ScriptPromise CreateImageBitmap(ScriptState*,
......
...@@ -1917,7 +1917,12 @@ void BaseRenderingContext2D::putImageData(ImageData* data, ...@@ -1917,7 +1917,12 @@ void BaseRenderingContext2D::putImageData(ImageData* data,
// order for both ImageData and CanvasResourceProvider, therefore no // order for both ImageData and CanvasResourceProvider, therefore no
// additional swizzling is needed. // additional swizzling is needed.
SkPixmap data_pixmap = data->GetSkPixmap(); SkPixmap data_pixmap = data->GetSkPixmap();
CanvasColorParams data_color_params = data->GetCanvasColorParams(); CanvasColorParams data_color_params(
data->GetCanvasColorSpace(),
data->GetImageDataStorageFormat() != kUint8ClampedArrayStorageFormat
? CanvasPixelFormat::kF16
: CanvasColorParams::GetNativeCanvasPixelFormat(),
kNonOpaque);
CanvasColorParams context_color_params = CanvasColorParams( CanvasColorParams context_color_params = CanvasColorParams(
GetCanvas2DColorParams().ColorSpace(), PixelFormat(), kNonOpaque); GetCanvas2DColorParams().ColorSpace(), PixelFormat(), kNonOpaque);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment