From 6476b8d6988c62c745516f9addb667c5f67e6251 Mon Sep 17 00:00:00 2001
From: Harsh Khandeparkar <34770591+HarshKhandeparkar@users.noreply.github.com>
Date: Thu, 19 Dec 2019 23:45:42 +0000
Subject: [PATCH] [GCI] Added Lightning Bolt for WASM accelerated modules
(#1365)
* wasmSuccess
* modules use wasmSuccess
* modules use wasmSuccess
* add the tooltip
---
examples/demo.css | 8 ++++----
examples/lib/defaultHtmlStepUi.js | 19 +++++++++++++++++--
src/Run.js | 2 ++
src/modules/AddQR/Module.js | 7 ++++---
src/modules/Average/Module.js | 9 ++-------
src/modules/Blend/Module.js | 7 ++-----
src/modules/BlobAnalysis/Module.js | 5 ++---
src/modules/Blur/Module.js | 7 ++-----
src/modules/Brightness/Module.js | 7 ++-----
src/modules/CanvasResize/Module.js | 7 ++-----
src/modules/Channel/Module.js | 7 ++-----
src/modules/ColorTemperature/Module.js | 6 ++----
src/modules/Colormap/Module.js | 8 +++-----
src/modules/Contrast/Module.js | 7 ++-----
src/modules/Convolution/Module.js | 6 ++----
src/modules/DecodeQr/Module.js | 9 +++------
src/modules/Dither/Module.js | 6 ++----
src/modules/DrawRectangle/Module.js | 6 ++----
src/modules/Dynamic/Module.js | 8 +++-----
src/modules/EdgeDetect/Module.js | 4 ++--
src/modules/Exposure/Module.js | 7 ++-----
src/modules/FlipImage/Module.js | 5 +++--
src/modules/GammaCorrection/Module.js | 6 ++----
src/modules/Gradient/Module.js | 7 ++-----
src/modules/GridOverlay/Module.js | 7 ++-----
src/modules/Histogram/Module.js | 7 ++-----
src/modules/Invert/Module.js | 7 ++-----
src/modules/MinifyImage/Module.js | 9 ++-------
src/modules/Ndvi/Module.js | 7 ++-----
src/modules/NoiseReduction/Module.js | 6 ++----
src/modules/Overlay/Module.js | 7 ++-----
src/modules/PaintBucket/Module.js | 5 ++---
src/modules/ReplaceColor/Module.js | 7 ++-----
src/modules/Resize/Module.js | 6 ++----
src/modules/Rotate/Module.js | 5 ++---
src/modules/Saturation/Module.js | 7 ++-----
src/modules/TextOverlay/Module.js | 7 ++-----
src/modules/Threshold/Module.js | 7 ++++---
src/modules/Tint/Module.js | 7 ++-----
src/modules/WhiteBalance/Module.js | 6 ++----
src/modules/_nomodule/PixelManipulation.js | 15 ++++++++++++++-
41 files changed, 119 insertions(+), 173 deletions(-)
diff --git a/examples/demo.css b/examples/demo.css
index 857f81a225..2b9c9f90dc 100644
--- a/examples/demo.css
+++ b/examples/demo.css
@@ -296,19 +296,19 @@ a.name-header{
cursor: default;
}
-.dimension-tooltip:hover{
+.general-tooltip:hover{
text-decoration: none;
}
-.dimension-tooltip:focus{
+.general-tooltip:focus{
outline: none;
}
-.dimension-tooltip:focus-within{
+.general-tooltip:focus-within{
outline: none;
}
-.dimension-tooltip{
+.general-tooltip{
position: relative;
bottom: 7px;
font-size: 16px;
diff --git a/examples/lib/defaultHtmlStepUi.js b/examples/lib/defaultHtmlStepUi.js
index 163a020737..76cce03624 100644
--- a/examples/lib/defaultHtmlStepUi.js
+++ b/examples/lib/defaultHtmlStepUi.js
@@ -28,7 +28,14 @@ function DefaultHtmlStepUi(_sequencer, options) {
\
\
\
-
\
+
\
' +
'' + step.name + ' \
\
@@ -335,7 +342,15 @@ function DefaultHtmlStepUi(_sequencer, options) {
_sequencer.getImageDimensions(step.imgElement.src, function (dim) {
step.ui.querySelector('.' + step.name).attributes['data-original-title'].value = `Image Width: ${dim.width}
Image Height: ${dim.height}
`;
});
- });
+ })
+
+ // Handle the wasm bolt display
+
+ if (step.useWasm) {
+ if (step.wasmSuccess) $step('.wasm-tooltip').fadeIn();
+ else $step('.wasm-tooltip').fadeOut();
+ }
+ else $step('.wasm-tooltip').fadeOut();
}
function imageHover(step){
diff --git a/src/Run.js b/src/Run.js
index b6cc74df6d..29cad9de78 100644
--- a/src/Run.js
+++ b/src/Run.js
@@ -45,6 +45,8 @@ function Run(ref, json_q, callback, ind, progressObj) {
// This output is accessible by UI
ref.steps[i].options.step.output = ref.steps[i].output.src;
+ ref.steps[i].options.step.wasmSuccess = ref.steps[i].output.wasmSuccess || false;
+ ref.steps[i].options.step.useWasm = ref.steps[i].output.useWasm || false;
// Tell UI that step has been drawn.
ref.steps[i].UI.onComplete(ref.steps[i].options.step);
diff --git a/src/modules/AddQR/Module.js b/src/modules/AddQR/Module.js
index 1f65b61f27..ca88fa0f1e 100644
--- a/src/modules/AddQR/Module.js
+++ b/src/modules/AddQR/Module.js
@@ -25,9 +25,11 @@ module.exports = function AddQR(options, UI) {
}
require('./QR')(options, pixels, oldPixels, generateOutput);
}
- function output(image, datauri, mimetype) {
- step.output = { src: datauri, format: mimetype };
+
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
+
return require('../_nomodule/PixelManipulation.js')(input, {
output: output,
ui: options.step.ui,
@@ -40,7 +42,6 @@ module.exports = function AddQR(options, UI) {
useWasm:options.useWasm
});
});
-
}
return {
diff --git a/src/modules/Average/Module.js b/src/modules/Average/Module.js
index 462de14639..4f19751b8c 100755
--- a/src/modules/Average/Module.js
+++ b/src/modules/Average/Module.js
@@ -47,13 +47,8 @@ module.exports = function Average(options, UI) {
return pixels;
}
- function output(image, datauri, mimetype) {
-
- // This output is accessible by Image Sequencer
- step.output = {
- src: datauri,
- format: mimetype
- };
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/Blend/Module.js b/src/modules/Blend/Module.js
index dd8af8823b..bf8d798768 100644
--- a/src/modules/Blend/Module.js
+++ b/src/modules/Blend/Module.js
@@ -47,11 +47,8 @@ module.exports = function Dynamic(options, UI, util) {
);
}
- function output(image, datauri, mimetype) {
-
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
// run PixelManipulatin on second image's pixels
diff --git a/src/modules/BlobAnalysis/Module.js b/src/modules/BlobAnalysis/Module.js
index f654cdc28f..ebacb3c517 100644
--- a/src/modules/BlobAnalysis/Module.js
+++ b/src/modules/BlobAnalysis/Module.js
@@ -18,9 +18,8 @@ module.exports = function BlobAnalysis(options, UI){
return pixels;
}
- function output(image, datauri, mimetype){
-
- step.output = { src: datauri, format: mimetype};
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/Blur/Module.js b/src/modules/Blur/Module.js
index 8e75cfc677..b470aae074 100755
--- a/src/modules/Blur/Module.js
+++ b/src/modules/Blur/Module.js
@@ -20,11 +20,8 @@ module.exports = function Blur(options, UI) {
return pixels;
}
- function output(image, datauri, mimetype) {
-
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/Brightness/Module.js b/src/modules/Brightness/Module.js
index c230ba3d5e..b004ef9c81 100644
--- a/src/modules/Brightness/Module.js
+++ b/src/modules/Brightness/Module.js
@@ -31,11 +31,8 @@ module.exports = function Brightness(options, UI) {
return [r, g, b, a];
}
- function output(image, datauri, mimetype) {
-
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/CanvasResize/Module.js b/src/modules/CanvasResize/Module.js
index cee2ca5e27..2ce4c8cc90 100644
--- a/src/modules/CanvasResize/Module.js
+++ b/src/modules/CanvasResize/Module.js
@@ -35,11 +35,8 @@ module.exports = function canvasResize(options, UI) {
return newPixels;
}
- function output(image, datauri, mimetype) {
-
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/Channel/Module.js b/src/modules/Channel/Module.js
index 162cdd16fa..ac51b3c4da 100644
--- a/src/modules/Channel/Module.js
+++ b/src/modules/Channel/Module.js
@@ -22,11 +22,8 @@ module.exports = function Channel(options, UI) {
if (options.channel === 'blue') return [0, 0, b, a];
}
- function output(image, datauri, mimetype) {
-
- // This output is accesible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/ColorTemperature/Module.js b/src/modules/ColorTemperature/Module.js
index 1b97641856..c8c7ffad6f 100644
--- a/src/modules/ColorTemperature/Module.js
+++ b/src/modules/ColorTemperature/Module.js
@@ -52,10 +52,8 @@ module.exports = function ColorTemperature(options, UI) {
return pixels;
}
- function output(image, datauri, mimetype) {
-
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/Colormap/Module.js b/src/modules/Colormap/Module.js
index 13c6529897..328b2b0b91 100644
--- a/src/modules/Colormap/Module.js
+++ b/src/modules/Colormap/Module.js
@@ -16,12 +16,10 @@ module.exports = function Colormap(options, UI) {
return [res[0], res[1], res[2], 255];
}
- function output(image, datauri, mimetype) {
-
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
+
return require('../_nomodule/PixelManipulation.js')(input, {
output: output,
ui: options.step.ui,
diff --git a/src/modules/Contrast/Module.js b/src/modules/Contrast/Module.js
index 111598f3a2..2040f0eee0 100644
--- a/src/modules/Contrast/Module.js
+++ b/src/modules/Contrast/Module.js
@@ -20,11 +20,8 @@ module.exports = function Contrast(options, UI) {
return pixels;
}
- function output(image, datauri, mimetype) {
-
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/Convolution/Module.js b/src/modules/Convolution/Module.js
index 4e55a54e6d..1c98ec6220 100644
--- a/src/modules/Convolution/Module.js
+++ b/src/modules/Convolution/Module.js
@@ -19,10 +19,8 @@ module.exports = function Convolution(options, UI) {
return pixels;
}
- function output(image, datauri, mimetype) {
-
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/DecodeQr/Module.js b/src/modules/DecodeQr/Module.js
index 226dfdc751..e041534222 100644
--- a/src/modules/DecodeQr/Module.js
+++ b/src/modules/DecodeQr/Module.js
@@ -28,13 +28,10 @@ module.exports = function DoNothing(options, UI) {
options.step.qrval = (decoded) ? decoded.data : 'undefined';
});
- function output(image, datauri, mimetype) {
- // This output is accessible by Image Sequencer
- step.output = {
- src: datauri,
- format: mimetype
- };
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
+
return require('../_nomodule/PixelManipulation.js')(input, {
output: output,
ui: options.step.ui,
diff --git a/src/modules/Dither/Module.js b/src/modules/Dither/Module.js
index 71e802f114..33333f0d26 100644
--- a/src/modules/Dither/Module.js
+++ b/src/modules/Dither/Module.js
@@ -15,10 +15,8 @@ module.exports = function Dither(options, UI) {
return pixels;
}
- function output(image, datauri, mimetype) {
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/DrawRectangle/Module.js b/src/modules/DrawRectangle/Module.js
index 7e3b4922e4..6f2cc2f629 100644
--- a/src/modules/DrawRectangle/Module.js
+++ b/src/modules/DrawRectangle/Module.js
@@ -19,10 +19,8 @@ module.exports = function DrawRectangle(options, UI) {
return pixels;
}
- function output(image, datauri, mimetype) {
-
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/Dynamic/Module.js b/src/modules/Dynamic/Module.js
index b6eab3455a..ec4c56b09f 100644
--- a/src/modules/Dynamic/Module.js
+++ b/src/modules/Dynamic/Module.js
@@ -71,12 +71,10 @@ module.exports = function Dynamic(options, UI) {
}
}
- function output(image, datauri, mimetype) {
-
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
+
return require('../_nomodule/PixelManipulation.js')(input, {
output: output,
ui: options.step.ui,
diff --git a/src/modules/EdgeDetect/Module.js b/src/modules/EdgeDetect/Module.js
index 113dfa2a08..404f688ef2 100644
--- a/src/modules/EdgeDetect/Module.js
+++ b/src/modules/EdgeDetect/Module.js
@@ -38,8 +38,8 @@ module.exports = function edgeDetect(options, UI) {
return require('./EdgeUtils')(blurPixels, options.highThresholdRatio, options.lowThresholdRatio, options.hysteresis);
}
- function output(image, datauri, mimetype) {
- step.output = { src: datauri, format: mimetype };
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/Exposure/Module.js b/src/modules/Exposure/Module.js
index 8bb7189a94..745077e6fe 100644
--- a/src/modules/Exposure/Module.js
+++ b/src/modules/Exposure/Module.js
@@ -24,11 +24,8 @@ module.exports = function Exposure(options, UI) {
return [r, g, b, a];
}
- function output(image, datauri, mimetype) {
-
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/FlipImage/Module.js b/src/modules/FlipImage/Module.js
index 59f19fa2da..5b59befc1b 100644
--- a/src/modules/FlipImage/Module.js
+++ b/src/modules/FlipImage/Module.js
@@ -25,8 +25,9 @@ module.exports = function FlipImage(options, UI) {
}
return require('./flipImage')(oldPixels, pixels, options.Axis);
}
- function output(image, datauri, mimetype) {
- step.output = { src: datauri, format: mimetype };
+
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/GammaCorrection/Module.js b/src/modules/GammaCorrection/Module.js
index 18a4ee75d8..14ae96efc3 100644
--- a/src/modules/GammaCorrection/Module.js
+++ b/src/modules/GammaCorrection/Module.js
@@ -21,10 +21,8 @@ module.exports = function Gamma(options, UI) {
return [r, g, b, a];
}
- function output(image, datauri, mimetype) {
-
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/Gradient/Module.js b/src/modules/Gradient/Module.js
index 8d3c12495b..5ddd45595f 100644
--- a/src/modules/Gradient/Module.js
+++ b/src/modules/Gradient/Module.js
@@ -44,11 +44,8 @@ module.exports = function Invert(options, UI) {
});
});
- function output(image, datauri, mimetype) {
-
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
}
diff --git a/src/modules/GridOverlay/Module.js b/src/modules/GridOverlay/Module.js
index 5f697c2045..121ba6d4d9 100644
--- a/src/modules/GridOverlay/Module.js
+++ b/src/modules/GridOverlay/Module.js
@@ -15,11 +15,8 @@ module.exports = function GridOverlay(options, UI) {
return pixels;
}
- function output(image, datauri, mimetype) {
-
- // This output is accesible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/Histogram/Module.js b/src/modules/Histogram/Module.js
index 3179dec035..e556911fd6 100644
--- a/src/modules/Histogram/Module.js
+++ b/src/modules/Histogram/Module.js
@@ -63,11 +63,8 @@ module.exports = function Channel(options, UI) {
return pixels;
}
- function output(image, datauri, mimetype) {
-
- // This output is accesible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/Invert/Module.js b/src/modules/Invert/Module.js
index b6176b8f39..ca0b970216 100644
--- a/src/modules/Invert/Module.js
+++ b/src/modules/Invert/Module.js
@@ -17,11 +17,8 @@ function Invert(options, UI) {
return [255 - r, 255 - g, 255 - b, a];
}
- function output(image, datauri, mimetype) {
-
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return input.pixelManipulation({
diff --git a/src/modules/MinifyImage/Module.js b/src/modules/MinifyImage/Module.js
index 35d527c615..198c34da01 100644
--- a/src/modules/MinifyImage/Module.js
+++ b/src/modules/MinifyImage/Module.js
@@ -82,13 +82,8 @@ module.exports = function MinifyImage(options, UI) {
}
- function output(datauri, mimetype) {
-
- // This output is accessible by Image Sequencer
- step.output = {
- src: datauri,
- format: mimetype
- };
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
}
return {
diff --git a/src/modules/Ndvi/Module.js b/src/modules/Ndvi/Module.js
index 7754abbd42..478bfa0d55 100644
--- a/src/modules/Ndvi/Module.js
+++ b/src/modules/Ndvi/Module.js
@@ -25,11 +25,8 @@ module.exports = function Ndvi(options, UI) {
return [x, x, x, a];
}
- function output(image, datauri, mimetype) {
-
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
function modifiedCallback() {
diff --git a/src/modules/NoiseReduction/Module.js b/src/modules/NoiseReduction/Module.js
index 3c6272e367..f2e03487db 100644
--- a/src/modules/NoiseReduction/Module.js
+++ b/src/modules/NoiseReduction/Module.js
@@ -15,10 +15,8 @@ module.exports = function NoiseReduction(options, UI) {
return pixels;
}
- function output(image, datauri, mimetype) {
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/Overlay/Module.js b/src/modules/Overlay/Module.js
index d34af36a4b..40109fbc95 100644
--- a/src/modules/Overlay/Module.js
+++ b/src/modules/Overlay/Module.js
@@ -55,11 +55,8 @@ module.exports = function Dynamic(options, UI, util) {
return [r1, g1, b1, a1];
}
- function output(image, datauri, mimetype) {
-
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
// run PixelManipulation on first Image pixels
diff --git a/src/modules/PaintBucket/Module.js b/src/modules/PaintBucket/Module.js
index 4c5bf1c7ab..7b80a8bba4 100644
--- a/src/modules/PaintBucket/Module.js
+++ b/src/modules/PaintBucket/Module.js
@@ -16,9 +16,8 @@ module.exports = function PaintBucket(options, UI) {
}
- function output(image, datauri, mimetype) {
- // This output is accesible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/ReplaceColor/Module.js b/src/modules/ReplaceColor/Module.js
index 50934c6b2e..9d011e62b5 100644
--- a/src/modules/ReplaceColor/Module.js
+++ b/src/modules/ReplaceColor/Module.js
@@ -18,11 +18,8 @@ module.exports = function ReplaceColor(options, UI) {
return pixels;
}
- function output(image, datauri, mimetype) {
-
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/Resize/Module.js b/src/modules/Resize/Module.js
index bf34cdb1b7..46f39180ec 100644
--- a/src/modules/Resize/Module.js
+++ b/src/modules/Resize/Module.js
@@ -47,11 +47,9 @@ module.exports = function Resize(options, UI) {
return pixels;
}
- function output(image, datauri, mimetype) {
- // This output is accesible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
-
return require('../_nomodule/PixelManipulation.js')(input, {
output: output,
ui: options.step.ui,
diff --git a/src/modules/Rotate/Module.js b/src/modules/Rotate/Module.js
index 6c522d4d8e..010e8e5f0d 100644
--- a/src/modules/Rotate/Module.js
+++ b/src/modules/Rotate/Module.js
@@ -35,9 +35,8 @@ module.exports = function Rotate(options, UI) {
}
- function output(image, datauri, mimetype) {
- // This output is accesible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/Saturation/Module.js b/src/modules/Saturation/Module.js
index 93ca04f4e2..834b9293e6 100644
--- a/src/modules/Saturation/Module.js
+++ b/src/modules/Saturation/Module.js
@@ -31,11 +31,8 @@ module.exports = function Saturation(options, UI) {
return [Math.round(r), Math.round(g), Math.round(b), a];
}
- function output(image, datauri, mimetype) {
-
- // This output is accesible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/TextOverlay/Module.js b/src/modules/TextOverlay/Module.js
index 64683136a6..8589110a37 100644
--- a/src/modules/TextOverlay/Module.js
+++ b/src/modules/TextOverlay/Module.js
@@ -15,11 +15,8 @@ module.exports = function TextOverlay(options, UI) {
return pixels;
}
- function output(image, datauri, mimetype) {
-
- // This output is accesible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/Threshold/Module.js b/src/modules/Threshold/Module.js
index fc0e0ef68c..cf9cb1ec27 100644
--- a/src/modules/Threshold/Module.js
+++ b/src/modules/Threshold/Module.js
@@ -22,10 +22,11 @@ module.exports = function ImageThreshold(options, UI) {
pixels = require('./Threshold')(pixels, options, hist);
return pixels;
}
- function output(image, datauri, mimetype) {
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
+
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
+
return require('../_nomodule/PixelManipulation.js')(input, {
output: output,
ui: options.step.ui,
diff --git a/src/modules/Tint/Module.js b/src/modules/Tint/Module.js
index 76799af38b..9d6cdbbdd6 100644
--- a/src/modules/Tint/Module.js
+++ b/src/modules/Tint/Module.js
@@ -25,11 +25,8 @@ module.exports = function Tint(options, UI) {
return [r, g, b, a];
}
- function output(image, datauri, mimetype) {
-
- // This output is accessible by Image Sequencer
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/WhiteBalance/Module.js b/src/modules/WhiteBalance/Module.js
index 731259e505..7e01b65e0d 100644
--- a/src/modules/WhiteBalance/Module.js
+++ b/src/modules/WhiteBalance/Module.js
@@ -32,10 +32,8 @@ module.exports = function Balance(options, UI) {
return pixels;
}
- function output(image, datauri, mimetype) {
-
- step.output = { src: datauri, format: mimetype };
-
+ function output(image, datauri, mimetype, wasmSuccess) {
+ step.output = { src: datauri, format: mimetype, wasmSuccess, useWasm: options.useWasm };
}
return require('../_nomodule/PixelManipulation.js')(input, {
diff --git a/src/modules/_nomodule/PixelManipulation.js b/src/modules/_nomodule/PixelManipulation.js
index 3ad6223b6b..af69ccc4d5 100644
--- a/src/modules/_nomodule/PixelManipulation.js
+++ b/src/modules/_nomodule/PixelManipulation.js
@@ -15,6 +15,7 @@ module.exports = function PixelManipulation(image, options) {
// like input.pixelManipulation(options)
const pixelSetter = require('../../util/pixelSetter.js');
+ let wasmSuccess; // Whether wasm succeded or failed
if (arguments.length <= 1) {
options = image;
@@ -67,10 +68,11 @@ module.exports = function PixelManipulation(image, options) {
var data = Buffer.concat(chunks, totalLength).toString('base64');
var datauri = 'data:image/' + options.format + ';base64,' + data;
if (options.output)
- options.output(options.image, datauri, options.format);
+ options.output(options.image, datauri, options.format, wasmSuccess);
if (options.callback) options.callback();
});
}
+
if (res) {
pixels = res;
generateOutput();
@@ -113,6 +115,7 @@ module.exports = function PixelManipulation(image, options) {
const inBrowser = (options.inBrowser) ? 1 : 0;
const test = (process.env.TEST) ? 1 : 0;
+
if (options.useWasm) {
if (options.inBrowser) {
@@ -122,10 +125,14 @@ module.exports = function PixelManipulation(image, options) {
WebAssembly.instantiate(bytes, imports)
).then(results => {
results.instance.exports.manipulatePixel(pixels.shape[0], pixels.shape[1], inBrowser, test);
+ wasmSuccess = true;
+
extraOperation();
}).catch(err => {
console.log(err);
console.log('WebAssembly acceleration errored; falling back to JavaScript in PixelManipulation');
+ wasmSuccess = false;
+
perPixelManipulation();
extraOperation();
});
@@ -137,17 +144,23 @@ module.exports = function PixelManipulation(image, options) {
const buf = fs.readFileSync(wasmPath);
WebAssembly.instantiate(buf, imports).then(results => {
results.instance.exports.manipulatePixel(pixels.shape[0], pixels.shape[1], inBrowser, test);
+ wasmSuccess = true;
+
extraOperation();
});
}
catch(err){
console.log(err);
console.log('WebAssembly acceleration errored; falling back to JavaScript in PixelManipulation');
+ wasmSuccess = false;
+
perPixelManipulation();
extraOperation();
}
}
} else {
+ wasmSuccess = false;
+
perPixelManipulation();
extraOperation();
}