Adding new patch for experiments on canvas RGB randomisation

This commit is contained in:
csagan5 2018-06-18 09:11:23 +02:00
parent 1951b38c64
commit 032d2ef9f2

View file

@ -0,0 +1,64 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Mon, 18 Jun 2018 09:03:52 +0200
Subject: Tune canvas randomisation
Randomise RGB for each pixel, change value up to to 8%
---
.../blink/renderer/core/offscreencanvas/offscreen_canvas.cc | 1 -
.../modules/canvas/canvas2d/base_rendering_context_2d.cc | 2 +-
.../blink/renderer/platform/graphics/image_data_buffer.cc | 12 ++++++------
3 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc b/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc
--- a/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc
+++ b/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc
@@ -403,7 +403,6 @@ ScriptPromise OffscreenCanvas::convertToBlob(ScriptState* script_state,
CanvasAsyncBlobCreator* async_creator = CanvasAsyncBlobCreator::Create(
snapshot, encoding_mime_type, start_time,
ExecutionContext::From(script_state), resolver);
-
async_creator->ScheduleAsyncBlobCreation(options.quality());
return resolver->Promise();
} else {
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
--- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
@@ -1621,7 +1621,7 @@ ImageData* BaseRenderingContext2D::getImageData(
scoped_refptr<StaticBitmapImage> snapshot = GetImage(kPreferNoAcceleration);
//TODO: calculate some random value and use it to shuffle pixel data in 'snapshot'
- // it should StaticBitmapImage somehow
+ // it should be a StaticBitmapImage somehow
if (!StaticBitmapImage::ConvertToArrayBufferContents(
snapshot, contents, image_data_rect, color_params, IsAccelerated())) {
diff --git a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc b/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
--- a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
+++ b/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
@@ -134,17 +134,17 @@ void ImageDataBuffer::shuffleSubchannelColorData() const {
// second random number (for y/height)
double shuffleY = base::RandDouble();
- // calculate amounts to change per component
- double shuffleR = shuffleX - 0.5, shuffleG = shuffleY - 0.5, shuffleB = (shuffleX + shuffleY)/2 - 0.5;
- shuffleR *= 0.03;
- shuffleG *= 0.03;
- shuffleB *= 0.03;
-
auto colorType = pixmap_.colorType();
// calculate random coordinates using bisection
auto currentW = w, currentH = h;
for(;pixels >= 0; pixels--) {
+ // calculate amounts to change per RGB component, +/- 4% max
+ double shuffleR = base::RandDouble() - 0.5, shuffleG = base::RandDouble() - 0.5, shuffleB = base::RandDouble() - 0.5;
+ shuffleR *= 0.08;
+ shuffleG *= 0.08;
+ shuffleB *= 0.08;
+
int x = currentW * shuffleX, y = currentH * shuffleY;
// manipulate pixel data to slightly change the R, G, B components
--
2.7.4