Chromium Code Reviews| 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..3f80096cd030da46f9cf11f5140bdf1210233e22 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& colorAttributes() const { |
| + return m_colorSettings; |
| + } |
| + void colorAttributes(ImageDataColorSettings& result) { |
| + result = m_colorSettings; |
| + }; |
| sk_sp<SkColorSpace> getSkColorSpace(); |
| @@ -129,34 +126,40 @@ class CORE_EXPORT ImageData final : public GarbageCollectedFinalized<ImageData>, |
| const ImageBitmapOptions&, |
| ExceptionState&) override; |
| - DEFINE_INLINE_TRACE() { visitor->trace(m_data); } |
| + DEFINE_INLINE_TRACE() { |
|
Justin Novosad
2017/03/10 20:30:26
This is big enough that it should no longer be inl
zakerinasab
2017/03/13 15:43:27
Done.
|
| + visitor->trace(m_data); |
| + visitor->trace(m_dataU16); |
| + visitor->trace(m_dataF32); |
| + visitor->trace(m_dataUnion); |
| + } |
| 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); |
| }; |