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

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

Issue 2555213002: Implement color management for ImageData (Closed)
Patch Set: Fixing ImageData::validateConstructorArguments Created 3 years, 11 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 206671a1b48fba1f7b1937dc4cb78414fcb93f8b..286092d814f72f1f2ca689ec7ede782b27f07420 100644
--- a/third_party/WebKit/Source/core/html/ImageData.h
+++ b/third_party/WebKit/Source/core/html/ImageData.h
@@ -31,18 +31,44 @@
#include "bindings/core/v8/ScriptWrappable.h"
#include "core/CoreExport.h"
+#include "core/dom/DOMArrayBufferView.h"
#include "core/dom/DOMTypedArray.h"
#include "core/imagebitmap/ImageBitmapSource.h"
#include "platform/geometry/IntRect.h"
#include "platform/geometry/IntSize.h"
#include "platform/heap/Handle.h"
+#include "wtf/CheckedNumeric.h"
#include "wtf/Compiler.h"
+#include "wtf/text/WTFString.h"
namespace blink {
class ExceptionState;
class ImageBitmapOptions;
+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,
+};
+
+const char* const kLinearRGBImageDataColorSpaceName = "linear-rgb";
+const char* const kSRGBImageDataColorSpaceName = "srgb";
+const char* const kLegacyImageDataColorSpaceName = "legacy-srgb";
+
class CORE_EXPORT ImageData final : public GarbageCollectedFinalized<ImageData>,
public ScriptWrappable,
public ImageBitmapSource {
@@ -60,9 +86,30 @@ class CORE_EXPORT ImageData final : public GarbageCollectedFinalized<ImageData>,
unsigned height,
ExceptionState&);
+ static ImageData* createForTest(const IntSize&);
+
+ ImageData* createImageData(unsigned width,
+ unsigned height,
+ String colorSpace,
+ ExceptionState&);
+ ImageData* createImageData(DOMUint8ClampedArray*,
+ unsigned width,
+ String colorSpace,
+ ExceptionState&);
+ ImageData* createImageData(DOMUint8ClampedArray*,
+ unsigned width,
+ unsigned height,
+ String colorSpace,
+ ExceptionState&);
+
+ static ImageDataColorSpace getImageDataColorSpace(String);
+ static String getImageDataColorSpaceName(ImageDataColorSpace);
+
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(); }
@@ -81,16 +128,28 @@ class CORE_EXPORT ImageData final : public GarbageCollectedFinalized<ImageData>,
const WrapperTypeInfo*,
v8::Local<v8::Object> wrapper) override;
- private:
- ImageData(const IntSize&, DOMUint8ClampedArray*);
+ 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(DOMUint8ClampedArray*,
- unsigned width,
- unsigned&,
- ExceptionState&);
+ private:
+ ImageData(const IntSize&,
+ DOMUint8ClampedArray*,
+ String = kLegacyImageDataColorSpaceName);
IntSize m_size;
+ ImageDataColorSpace m_colorSpace;
Member<DOMUint8ClampedArray> m_data;
+
+ static DOMUint8ClampedArray* allocateAndValidateUint8ClampedArray(
+ const unsigned&,
+ ExceptionState* = nullptr);
};
} // namespace blink
« no previous file with comments | « third_party/WebKit/Source/core/html/Float32ImageData.idl ('k') | third_party/WebKit/Source/core/html/ImageData.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698