Commit 9e53335a authored by Christopher Cameron's avatar Christopher Cameron Committed by Commit Bot

CanvasColor: Remove createImageBitmap colorSpaceConversion options

Remove the option to specify a color space when calling
createImageBitmap. Also remove the preserve_color_space parameter.
None of these are used by existing behaviors. Their existence
makes other cleanup harder.

Bug: 1119507
Change-Id: I4ddcd76afff0a542c318a0035ad4559ff0022303
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2370727
Commit-Queue: ccameron <ccameron@chromium.org>
Reviewed-by: default avatarYi Xu <yiyix@chromium.org>
Reviewed-by: default avatarFernando Serboncini <fserb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#802051}
parent 70883d6e
......@@ -48,10 +48,6 @@ constexpr const char* kImageBitmapOptionPremultiply = "premultiply";
constexpr const char* kImageBitmapOptionResizeQualityHigh = "high";
constexpr const char* kImageBitmapOptionResizeQualityMedium = "medium";
constexpr const char* kImageBitmapOptionResizeQualityPixelated = "pixelated";
constexpr const char* kPreserveImageBitmapColorSpaceConversion = "preserve";
constexpr const char* kSRGBImageBitmapColorSpaceConversion = "srgb";
constexpr const char* kP3ImageBitmapColorSpaceConversion = "p3";
constexpr const char* kRec2020ImageBitmapColorSpaceConversion = "rec2020";
namespace {
......@@ -96,27 +92,12 @@ ImageBitmap::ParsedOptions ParseOptions(const ImageBitmapOptions* options,
parsed_options.has_color_space_conversion =
(options->colorSpaceConversion() != kImageBitmapOptionNone);
parsed_options.preserve_source_color_space =
(options->colorSpaceConversion() ==
kPreserveImageBitmapColorSpaceConversion);
parsed_options.color_params.SetCanvasColorSpace(CanvasColorSpace::kSRGB);
if (options->colorSpaceConversion() != kSRGBImageBitmapColorSpaceConversion &&
options->colorSpaceConversion() !=
kPreserveImageBitmapColorSpaceConversion &&
options->colorSpaceConversion() != kImageBitmapOptionNone &&
if (options->colorSpaceConversion() != kImageBitmapOptionNone &&
options->colorSpaceConversion() != kImageBitmapOptionDefault) {
parsed_options.color_params.SetCanvasPixelFormat(CanvasPixelFormat::kF16);
if (options->colorSpaceConversion() == kP3ImageBitmapColorSpaceConversion) {
parsed_options.color_params.SetCanvasColorSpace(CanvasColorSpace::kP3);
} else if (options->colorSpaceConversion() ==
kRec2020ImageBitmapColorSpaceConversion) {
parsed_options.color_params.SetCanvasColorSpace(
CanvasColorSpace::kRec2020);
} else {
NOTREACHED()
<< "Invalid ImageBitmap creation attribute colorSpaceConversion: "
<< IDLEnumAsString(options->colorSpaceConversion());
}
NOTREACHED()
<< "Invalid ImageBitmap creation attribute colorSpaceConversion: "
<< IDLEnumAsString(options->colorSpaceConversion());
}
int source_width = source_size.Width();
......@@ -456,15 +437,7 @@ scoped_refptr<StaticBitmapImage> ApplyColorSpaceConversion(
if (src_image_info.isEmpty())
return nullptr;
// If we should preserve color precision, don't lose it in color space
// conversion.
if (options.pixel_format == kImageBitmapPixelFormat_Default &&
(src_image_info.colorType() == kRGBA_F16_SkColorType ||
(src_image_info.colorSpace() &&
src_image_info.colorSpace()->gammaIsLinear()) ||
(color_space && color_space->gammaIsLinear()))) {
color_type = kRGBA_F16_SkColorType;
}
// This will always convert to 8-bit sRGB.
return image->ConvertToColorSpace(color_space, color_type);
}
......@@ -561,8 +534,7 @@ static scoped_refptr<StaticBitmapImage> CropImageAndApplyColorSpaceConversion(
}
// color convert if needed
if (parsed_options.has_color_space_conversion &&
!parsed_options.preserve_source_color_space) {
if (parsed_options.has_color_space_conversion) {
result = ApplyColorSpaceConversion(std::move(result), parsed_options);
if (!result)
return nullptr;
......
......@@ -126,7 +126,6 @@ class CORE_EXPORT ImageBitmap final : public ScriptWrappable,
bool premultiply_alpha = true;
bool should_scale_input = false;
bool has_color_space_conversion = false;
bool preserve_source_color_space = false;
bool source_is_unpremul = false;
unsigned resize_width = 0;
unsigned resize_height = 0;
......
......@@ -308,69 +308,6 @@ TEST_F(ImageBitmapTest, AvoidGPUReadback) {
}
}
TEST_F(ImageBitmapTest, ImageBitmapPixelFormat) {
SkImageInfo info = SkImageInfo::MakeS32(10, 10, kPremul_SkAlphaType);
sk_sp<SkSurface> surface(SkSurface::MakeRaster(info));
sk_sp<SkImage> sk_image = surface->makeImageSnapshot();
scoped_refptr<StaticBitmapImage> bitmap_image =
UnacceleratedStaticBitmapImage::Create(sk_image);
// source: uint8, bitmap pixel format: default
ImageBitmapOptions* options = ImageBitmapOptions::Create();
auto* image_bitmap = MakeGarbageCollected<ImageBitmap>(
bitmap_image, bitmap_image->Rect(), options);
ASSERT_TRUE(image_bitmap);
sk_sp<SkImage> sk_image_internal =
image_bitmap->BitmapImage()->PaintImageForCurrentFrame().GetSwSkImage();
ASSERT_EQ(kN32_SkColorType, sk_image_internal->colorType());
// source: uint8, bitmap pixel format: uint8
options->setImagePixelFormat("uint8");
auto* image_bitmap_8888 = MakeGarbageCollected<ImageBitmap>(
bitmap_image, bitmap_image->Rect(), options);
ASSERT_TRUE(image_bitmap_8888);
sk_sp<SkImage> sk_image_internal_8888 = image_bitmap_8888->BitmapImage()
->PaintImageForCurrentFrame()
.GetSwSkImage();
ASSERT_EQ(kN32_SkColorType, sk_image_internal_8888->colorType());
// Since there is no conversion from uint8 to default for image bitmap pixel
// format option, we expect the two image bitmaps to refer to the same
// internal SkImage back storage.
ASSERT_EQ(sk_image_internal, sk_image_internal_8888);
sk_sp<SkColorSpace> p3_color_space = SkColorSpace::MakeRGB(
SkNamedTransferFn::kLinear, SkNamedGamut::kDisplayP3);
SkImageInfo info_f16 = SkImageInfo::Make(10, 10, kRGBA_F16_SkColorType,
kPremul_SkAlphaType, p3_color_space);
sk_sp<SkSurface> surface_f16(SkSurface::MakeRaster(info_f16));
sk_sp<SkImage> sk_image_f16 = surface_f16->makeImageSnapshot();
scoped_refptr<StaticBitmapImage> bitmap_image_f16 =
UnacceleratedStaticBitmapImage::Create(sk_image_f16);
// source: f16, bitmap pixel format: default
ImageBitmapOptions* options_f16 = ImageBitmapOptions::Create();
auto* image_bitmap_f16 = MakeGarbageCollected<ImageBitmap>(
bitmap_image_f16, bitmap_image_f16->Rect(), options_f16);
ASSERT_TRUE(image_bitmap_f16);
sk_sp<SkImage> sk_image_internal_f16 = image_bitmap_f16->BitmapImage()
->PaintImageForCurrentFrame()
.GetSwSkImage();
ASSERT_EQ(kRGBA_F16_SkColorType, sk_image_internal_f16->colorType());
// source: f16, bitmap pixel format: uint8
options_f16->setImagePixelFormat("uint8");
auto* image_bitmap_f16_8888 = MakeGarbageCollected<ImageBitmap>(
bitmap_image_f16, bitmap_image_f16->Rect(), options_f16);
ASSERT_TRUE(image_bitmap_f16_8888);
sk_sp<SkImage> sk_image_internal_f16_8888 =
image_bitmap_f16_8888->BitmapImage()
->PaintImageForCurrentFrame()
.GetSwSkImage();
ASSERT_EQ(kN32_SkColorType, sk_image_internal_f16_8888->colorType());
}
// This test is failing on asan-clang-phone because memory allocation is
// declined. See <http://crbug.com/782286>.
// See <http://crbug.com/1090252>, test is flaky in fuchsia.
......
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