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

Unified Diff: third_party/WebKit/Source/core/html/ImageData.h

Issue 2728373004: Remove Float32ImageData and update ImageData for color management (Closed)
Patch Set: Addressing comments Created 3 years, 9 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/ImageData.h
diff --git a/third_party/WebKit/Source/core/html/ImageData.h b/third_party/WebKit/Source/core/html/ImageData.h
index 246a4cf85b0998060150d1977261f9bc0692c9b4..392ad60055bfb4e7547e39ad08982383115795d2 100644
--- a/third_party/WebKit/Source/core/html/ImageData.h
+++ b/third_party/WebKit/Source/core/html/ImageData.h
@@ -30,9 +30,11 @@
#define ImageData_h
#include "bindings/core/v8/ScriptWrappable.h"
+#include "bindings/core/v8/Uint8ClampedArrayOrUint16ArrayOrFloat32Array.h"
#include "core/CoreExport.h"
-#include "core/dom/DOMArrayBufferView.h"
#include "core/dom/DOMTypedArray.h"
+#include "core/html/ImageDataColorSettings.h"
+#include "core/html/canvas/CanvasRenderingContext.h"
#include "core/imagebitmap/ImageBitmapSource.h"
#include "platform/geometry/IntRect.h"
#include "platform/geometry/IntSize.h"
@@ -47,28 +49,24 @@ namespace blink {
class ExceptionState;
class ImageBitmapOptions;
+typedef Uint8ClampedArrayOrUint16ArrayOrFloat32Array ImageDataArray;
+
enum ConstructorParams {
kParamSize = 1,
kParamWidth = 1 << 1,
kParamHeight = 1 << 2,
kParamData = 1 << 3,
- kParamColorSpace = 1 << 4,
-};
-
-enum ImageDataType {
- kUint8ClampedImageData,
- kFloat32ImageData,
};
-enum ImageDataColorSpace {
- kLegacyImageDataColorSpace,
- kSRGBImageDataColorSpace,
- kLinearRGBImageDataColorSpace,
+enum ImageDataStorageFormat {
+ kUint8ClampedArrayStorageFormat,
+ kUint16ArrayStorageFormat,
+ kFloat32ArrayStorageFormat,
};
-const char* const kLinearRGBImageDataColorSpaceName = "linear-rgb";
-const char* const kSRGBImageDataColorSpaceName = "srgb";
-const char* const kLegacyImageDataColorSpaceName = "legacy-srgb";
+constexpr const char* kUint8ClampedArrayStorageFormatName = "uint8";
+constexpr const char* kUint16ArrayStorageFormatName = "uint16";
+constexpr const char* kFloat32ArrayStorageFormatName = "float32";
class CORE_EXPORT ImageData final : public GarbageCollectedFinalized<ImageData>,
public ScriptWrappable,
@@ -78,9 +76,7 @@ class CORE_EXPORT ImageData final : public GarbageCollectedFinalized<ImageData>,
public:
static ImageData* create(const IntSize&);
static ImageData* create(const IntSize&, DOMUint8ClampedArray*);
- static ImageData* create(const IntSize&,
- DOMUint8ClampedArray*,
- const String&);
+
static ImageData* create(unsigned width, unsigned height, ExceptionState&);
static ImageData* create(DOMUint8ClampedArray*,
unsigned width,
@@ -94,30 +90,31 @@ class CORE_EXPORT ImageData final : public GarbageCollectedFinalized<ImageData>,
ImageData* createImageData(unsigned width,
unsigned height,
- String colorSpace,
+ const ImageDataColorSettings&,
ExceptionState&);
- ImageData* createImageData(DOMUint8ClampedArray*,
- unsigned width,
- String colorSpace,
- ExceptionState&);
- ImageData* createImageData(DOMUint8ClampedArray*,
+ ImageData* createImageData(ImageDataArray&,
unsigned width,
unsigned height,
- String colorSpace,
+ const ImageDataColorSettings&,
ExceptionState&);
- static ImageDataColorSpace getImageDataColorSpace(String);
- static String getImageDataColorSpaceName(ImageDataColorSpace);
- static sk_sp<SkColorSpace> imageDataColorSpaceToSkColorSpace(
- ImageDataColorSpace);
+ static ImageDataStorageFormat getImageDataStorageFormat(const String&);
IntSize size() const { return m_size; }
int width() const { return m_size.width(); }
int height() const { return m_size.height(); }
- String colorSpace() const { return getImageDataColorSpaceName(m_colorSpace); }
- ImageDataColorSpace imageDataColorSpace() { return m_colorSpace; }
- const DOMUint8ClampedArray* data() const { return m_data.get(); }
- DOMUint8ClampedArray* data() { return m_data.get(); }
+
+ DOMUint8ClampedArray* data();
+ const DOMUint8ClampedArray* data() const;
+ ImageDataArray& dataUnion() { return m_dataUnion; }
+ const ImageDataArray& dataUnion() const { return m_dataUnion; }
+ void dataUnion(ImageDataArray& result) { result = m_dataUnion; };
+ const ImageDataColorSettings& colorSettings() const {
+ return m_colorSettings;
+ }
+ void colorSettings(ImageDataColorSettings& result) {
+ result = m_colorSettings;
+ };
sk_sp<SkColorSpace> getSkColorSpace();
@@ -129,34 +126,35 @@ class CORE_EXPORT ImageData final : public GarbageCollectedFinalized<ImageData>,
const ImageBitmapOptions&,
ExceptionState&) override;
- DEFINE_INLINE_TRACE() { visitor->trace(m_data); }
+ void trace(Visitor*);
WARN_UNUSED_RESULT v8::Local<v8::Object> associateWithWrapper(
v8::Isolate*,
const WrapperTypeInfo*,
v8::Local<v8::Object> wrapper) override;
- static bool validateConstructorArguments(
- const unsigned&,
- const IntSize* = nullptr,
- const unsigned& = 0,
- const unsigned& = 0,
- const DOMArrayBufferView* = nullptr,
- const String* = nullptr,
- ExceptionState* = nullptr,
- ImageDataType = kUint8ClampedImageData);
+ static bool validateConstructorArguments(const unsigned&,
+ const IntSize* = nullptr,
+ const unsigned& = 0,
+ const unsigned& = 0,
+ const DOMArrayBufferView* = nullptr,
+ ExceptionState* = nullptr);
private:
ImageData(const IntSize&,
- DOMUint8ClampedArray*,
- String = kLegacyImageDataColorSpaceName);
+ DOMArrayBufferView*,
+ const ImageDataColorSettings* = nullptr);
IntSize m_size;
- ImageDataColorSpace m_colorSpace;
+ ImageDataColorSettings m_colorSettings;
+ ImageDataArray m_dataUnion;
Member<DOMUint8ClampedArray> m_data;
+ Member<DOMUint16Array> m_dataU16;
+ Member<DOMFloat32Array> m_dataF32;
- static DOMUint8ClampedArray* allocateAndValidateUint8ClampedArray(
+ static DOMArrayBufferView* allocateAndValidateDataArray(
const unsigned&,
+ ImageDataStorageFormat,
ExceptionState* = nullptr);
};

Powered by Google App Engine
This is Rietveld 408576698