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 @@
namespace blink {
SerializedColorParams::SerializedColorParams()
: 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() = default;
SerializedColorParams::SerializedColorParams(CanvasColorParams color_params)
: SerializedColorParams(color_params.ColorSpace(),
kUint8ClampedArrayStorageFormat) {
switch (color_params.PixelFormat()) {
case CanvasPixelFormat::kRGBA8:
pixel_format_ = SerializedPixelFormat::kRGBA8;
......@@ -42,13 +28,22 @@ SerializedColorParams::SerializedColorParams(CanvasColorParams color_params) {
opacity_mode_ = SerializedOpacityMode::kNonOpaque;
if (color_params.GetOpacityMode() == blink::kOpaque)
opacity_mode_ = SerializedOpacityMode::kOpaque;
storage_format_ = SerializedImageDataStorageFormat::kUint8Clamped;
}
SerializedColorParams::SerializedColorParams(
CanvasColorParams color_params,
ImageDataStorageFormat storage_format)
: SerializedColorParams(color_params) {
CanvasColorSpace color_space,
ImageDataStorageFormat storage_format) {
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) {
case kUint8ClampedArrayStorageFormat:
storage_format_ = SerializedImageDataStorageFormat::kUint8Clamped;
......@@ -66,12 +61,11 @@ SerializedColorParams::SerializedColorParams(
SerializedColorSpace color_space,
SerializedPixelFormat pixel_format,
SerializedOpacityMode opacity_mode,
SerializedImageDataStorageFormat storage_format) {
SetSerializedColorSpace(color_space);
SetSerializedPixelFormat(pixel_format);
SetSerializedOpacityMode(opacity_mode);
SetSerializedImageDataStorageFormat(storage_format);
}
SerializedImageDataStorageFormat storage_format)
: color_space_(color_space),
pixel_format_(pixel_format),
opacity_mode_(opacity_mode),
storage_format_(storage_format) {}
CanvasColorParams SerializedColorParams::GetCanvasColorParams() const {
CanvasColorSpace color_space = CanvasColorSpace::kSRGB;
......@@ -132,41 +126,4 @@ ImageDataStorageFormat SerializedColorParams::GetStorageFormat() const {
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
......@@ -74,8 +74,8 @@ enum class SerializedOpacityMode : uint32_t {
class SerializedColorParams {
public:
SerializedColorParams();
SerializedColorParams(CanvasColorParams);
SerializedColorParams(CanvasColorParams, ImageDataStorageFormat);
explicit SerializedColorParams(CanvasColorParams);
SerializedColorParams(CanvasColorSpace, ImageDataStorageFormat);
SerializedColorParams(SerializedColorSpace,
SerializedPixelFormat,
SerializedOpacityMode,
......@@ -85,21 +85,23 @@ class SerializedColorParams {
CanvasColorSpace GetColorSpace() const;
ImageDataStorageFormat GetStorageFormat() const;
void SetSerializedColorSpace(SerializedColorSpace);
void SetSerializedPixelFormat(SerializedPixelFormat);
void SetSerializedOpacityMode(SerializedOpacityMode);
void SetSerializedImageDataStorageFormat(SerializedImageDataStorageFormat);
SerializedColorSpace GetSerializedColorSpace() const;
SerializedPixelFormat GetSerializedPixelFormat() const;
SerializedImageDataStorageFormat GetSerializedImageDataStorageFormat() const;
SerializedOpacityMode GetSerializedOpacityMode() const;
SerializedColorSpace GetSerializedColorSpace() const { return color_space_; }
SerializedPixelFormat GetSerializedPixelFormat() const {
return pixel_format_;
}
SerializedImageDataStorageFormat GetSerializedImageDataStorageFormat() const {
return storage_format_;
}
SerializedOpacityMode GetSerializedOpacityMode() const {
return opacity_mode_;
}
private:
SerializedColorSpace color_space_;
SerializedPixelFormat pixel_format_;
SerializedOpacityMode opacity_mode_;
SerializedImageDataStorageFormat storage_format_;
SerializedColorSpace color_space_ = SerializedColorSpace::kSRGB;
SerializedPixelFormat pixel_format_ = SerializedPixelFormat::kRGBA8;
SerializedOpacityMode opacity_mode_ = SerializedOpacityMode::kNonOpaque;
SerializedImageDataStorageFormat storage_format_ =
SerializedImageDataStorageFormat::kUint8Clamped;
};
} // namespace blink
......
......@@ -334,7 +334,7 @@ bool V8ScriptValueSerializer::WriteDOMObject(ScriptWrappable* wrappable,
if (wrapper_type_info == V8ImageData::GetWrapperTypeInfo()) {
ImageData* image_data = wrappable->ToImpl<ImageData>();
WriteTag(kImageDataTag);
SerializedColorParams color_params(image_data->GetCanvasColorParams(),
SerializedColorParams color_params(image_data->GetCanvasColorSpace(),
image_data->GetImageDataStorageFormat());
WriteUint32Enum(ImageSerializationTag::kCanvasColorSpaceTag);
WriteUint32Enum(color_params.GetSerializedColorSpace());
......
......@@ -77,8 +77,6 @@ class CORE_EXPORT ImageData final : public ScriptWrappable,
static ImageData* Create(const IntSize&,
NotShared<DOMArrayBufferView>,
const ImageDataColorSettings* = nullptr);
static ImageData* Create(scoped_refptr<StaticBitmapImage>,
AlphaDisposition = kDontChangeAlpha);
static ImageData* Create(unsigned width, unsigned height, ExceptionState&);
static ImageData* Create(NotShared<DOMUint8ClampedArray>,
......@@ -130,11 +128,6 @@ class CORE_EXPORT ImageData final : public ScriptWrappable,
static ImageDataStorageFormat GetImageDataStorageFormat(const String&);
static unsigned StorageFormatBytesPerPixel(const String&);
static unsigned StorageFormatBytesPerPixel(ImageDataStorageFormat);
static NotShared<DOMArrayBufferView>
ConvertPixelsFromCanvasPixelFormatToImageDataStorageFormat(
ArrayBufferContents&,
CanvasPixelFormat,
ImageDataStorageFormat);
IntSize Size() const { return size_; }
int width() const { return size_.Width(); }
......@@ -145,26 +138,12 @@ class CORE_EXPORT ImageData final : public ScriptWrappable,
void data(ImageDataArray& result) { result = data_; }
DOMArrayBufferBase* BufferBase() const;
CanvasColorParams GetCanvasColorParams();
CanvasColorSpace GetCanvasColorSpace() const;
ImageDataStorageFormat GetImageDataStorageFormat() const;
// Return an SkPixmap that references this data directly.
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
IntSize BitmapSourceSize() const override { return size_; }
ScriptPromise CreateImageBitmap(ScriptState*,
......
......@@ -1917,7 +1917,12 @@ void BaseRenderingContext2D::putImageData(ImageData* data,
// order for both ImageData and CanvasResourceProvider, therefore no
// additional swizzling is needed.
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(
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