Skip to content

Commit

Permalink
Pixel set redundancy removed (#1188)
Browse files Browse the repository at this point in the history
* Pixels.set Redundancy removed

* eslint fixes

* move require to top with const
  • Loading branch information
aashna27 authored and jywarren committed Aug 14, 2019
1 parent 1b5607a commit 5b98d5c
Show file tree
Hide file tree
Showing 16 changed files with 93 additions and 117 deletions.
12 changes: 4 additions & 8 deletions src/modules/AddQR/QR.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
module.exports = exports = function (options, pixels, oldPixels, callback) {
const pixelSetter = require('../../util/pixelSetter.js');

var QRCode = require('qrcode');
QRCode.toDataURL(options.qrCodeString, function (err, url) {
var getPixels = require('get-pixels');
Expand Down Expand Up @@ -26,17 +28,11 @@ module.exports = exports = function (options, pixels, oldPixels, callback) {
for (var m = 0; m < width; m++) {
for (var n = 0; n < height; n++) {
if (m >= xe && n >= ye) {
pixels.set(m, n, 0, qrPixels.get(m - xe, n - ye, 0));
pixels.set(m, n, 1, qrPixels.get(m - xe, n - ye, 1));
pixels.set(m, n, 2, qrPixels.get(m - xe, n - ye, 2));
pixels.set(m, n, 3, qrPixels.get(m - xe, n - ye, 3));
pixelSetter(m, n, [qrPixels.get(m - xe, n - ye, 0), qrPixels.get(m - xe, n - ye, 1), qrPixels.get(m - xe, n - ye, 2), qrPixels.get(m - xe, n - ye, 3)], pixels);
}

else {
pixels.set(m, n, 0, oldPixels.get(m, n, 0));
pixels.set(m, n, 1, oldPixels.get(m, n, 1));
pixels.set(m, n, 2, oldPixels.get(m, n, 2));
pixels.set(m, n, 3, oldPixels.get(m, n, 3));
pixelSetter(m, n, [qrPixels.get(m, n, 0), qrPixels.get(m, n, 1), qrPixels.get(m, n, 2), qrPixels.get(m, n, 3)], pixels);
}

}
Expand Down
9 changes: 6 additions & 3 deletions src/modules/Blur/Blur.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
module.exports = exports = function(pixels, blur) {
const pixelSetter = require('../../util/pixelSetter.js');

let kernel = kernelGenerator(blur),
pixs = {
r: [],
Expand All @@ -24,9 +26,10 @@ module.exports = exports = function(pixels, blur) {

for (let y = 0; y < pixels.shape[1]; y++){
for (let x = 0; x < pixels.shape[0]; x++){
pixels.set(x, y, 0, Math.max(0, Math.min(conPix[0][y][x], 255)));
pixels.set(x, y, 1, Math.max(0, Math.min(conPix[1][y][x], 255)));
pixels.set(x, y, 2, Math.max(0, Math.min(conPix[2][y][x], 255)));
var pixelvalue = [Math.max(0, Math.min(conPix[0][y][x], 255)),
Math.max(0, Math.min(conPix[1][y][x], 255)),
Math.max(0, Math.min(conPix[2][y][x], 255))];
pixelSetter(x, y, pixelvalue, pixels);
}
}

Expand Down
11 changes: 5 additions & 6 deletions src/modules/CanvasResize/Module.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
module.exports = function canvasResize(options, UI) {

var defaults = require('./../../util/getDefaults.js')(require('./info.json'));
var output;

const pixelSetter = require('../../util/pixelSetter.js');

var output;

function draw(input, callback, progressObj) {

Expand All @@ -21,16 +21,15 @@ module.exports = function canvasResize(options, UI) {
var step = this;

function extraManipulation(pixels) {

let newPixels = require('ndarray')(new Uint8Array(4 * options.width * options.height).fill(0), [options.width, options.height, 4]);
let iMax = options.width - options.x,
jMax = options.height - options.y;
for (let i = 0; i < iMax && i < pixels.shape[0]; i++) {
for (let j = 0; j < jMax && j < pixels.shape[1]; j++) {
let x = i + options.x, y = j + options.y;
newPixels.set(x, y, 0, pixels.get(i, j, 0));
newPixels.set(x, y, 1, pixels.get(i, j, 1));
newPixels.set(x, y, 2, pixels.get(i, j, 2));
newPixels.set(x, y, 3, pixels.get(i, j, 3));
pixelSetter(x, y, [pixels.get(i, j, 0), pixels.get(i, j, 1), pixels.get(i, j, 2), pixels.get(i, j, 3)], newPixels);

}
}
return newPixels;
Expand Down
17 changes: 7 additions & 10 deletions src/modules/ColorTemperature/Module.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
module.exports = function ColorTemperature(options, UI) {

const pixelSetter = require('../../util/pixelSetter.js');

var output;

Expand Down Expand Up @@ -38,17 +40,12 @@ module.exports = function ColorTemperature(options, UI) {
for (let i = 0; i < pixels.shape[0]; i++) {
for (let j = 0; j < pixels.shape[1]; j++) {

r_data = pixels.get(i, j, 0);
r_new_data = (255 / r) * r_data;
pixels.set(i, j, 0, r_new_data);
var rgbdata = [pixels.get(i, j, 0), pixels.get(i, j, 1), pixels.get(i, j, 2)];
rgbdata[0] = (255 / r) * rgbdata[0];
rgbdata[1] = (255 / g) * rgbdata[1];
rgbdata[2] = (255 / b) * rgbdata[2];
pixelSetter(i, j, rgbdata, pixels);

g_data = pixels.get(i, j, 1);
g_new_data = (255 / g) * g_data;
pixels.set(i, j, 1, g_new_data);

b_data = pixels.get(i, j, 2);
b_new_data = (255 / b) * b_data;
pixels.set(i, j, 2, b_new_data);
}
}

Expand Down
45 changes: 14 additions & 31 deletions src/modules/Contrast/Contrast.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
var _ = require('lodash');
const pixelSetter = require('../../util/pixelSetter.js');

module.exports = exports = function(pixels, contrast) {
let oldpix = _.cloneDeep(pixels);
Expand All @@ -10,37 +11,19 @@ module.exports = exports = function(pixels, contrast) {

for (let i = 0; i < pixels.shape[0]; i++) {
for (let j = 0; j < pixels.shape[1]; j++) {
var r = oldpix.get(i, j, 0) / 255.0;
r -= 0.5;
r *= contrast;
r += 0.5;
r *= 255;
if (r < 0) r = 0;
if (r > 255) r = 255;


var g = oldpix.get(i, j, 1) / 255.0;
g -= 0.5;
g *= contrast;
g += 0.5;
g *= 255;
if (g < 0) g = 0;
if (g > 255) g = 255;


var b = oldpix.get(i, j, 2) / 255.0;
b -= 0.5;
b *= contrast;
b += 0.5;
b *= 255;
if (b < 0) b = 0;
if (b > 255) b = 255;


pixels.set(i, j, 0, r);
pixels.set(i, j, 1, g);
pixels.set(i, j, 2, b);


var rgbarray = [oldpix.get(i, j, 0) / 255.0, oldpix.get(i, j, 1) / 255.0, oldpix.get(i, j, 2) / 255.0];
for(var idx = 0;idx < 3;idx++){
rgbarray[idx] -= 0.5;
rgbarray[idx] *= contrast;
rgbarray[idx] += 0.5;
rgbarray[idx] *= 255;
if (rgbarray[idx] < 0) rgbarray[idx] = 0;
if (rgbarray[idx] > 255) rgbarray[idx] = 255;
}

pixelSetter(i, j, rgbarray, pixels);

}
}
return pixels;
Expand Down
7 changes: 4 additions & 3 deletions src/modules/Convolution/Convolution.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
var _ = require('lodash');
const pixelSetter = require('../../util/pixelSetter.js');

module.exports = exports = function(pixels, constantFactor, kernelValues, texMode) {
let kernel = kernelGenerator(constantFactor, kernelValues),
pixs = {
Expand All @@ -24,9 +26,8 @@ module.exports = exports = function(pixels, constantFactor, kernelValues, texMod

for (let y = 0; y < pixels.shape[1]; y++){
for (let x = 0; x < pixels.shape[0]; x++){
pixels.set(x, y, 0, Math.max(0, Math.min(conPix[0][y][x], 255)));
pixels.set(x, y, 1, Math.max(0, Math.min(conPix[1][y][x], 255)));
pixels.set(x, y, 2, Math.max(0, Math.min(conPix[2][y][x], 255)));
var value = [Math.max(0, Math.min(conPix[0][y][x], 255)), Math.max(0, Math.min(conPix[1][y][x], 255)), Math.max(0, Math.min(conPix[2][y][x], 255))];
pixelSetter(x, y, value, pixels);
}
}

Expand Down
7 changes: 3 additions & 4 deletions src/modules/DrawRectangle/DrawRectangle.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
module.exports = exports = function(pixels, options){
var defaults = require('./../../util/getDefaults.js')(require('./info.json'));
const pixelSetter = require('../../util/pixelSetter.js');

options.startingX = options.startingX || defaults.startingX;
options.startingY = options.startingY || defaults.startingY;
Expand All @@ -17,10 +18,8 @@ module.exports = exports = function(pixels, options){
var drawSide = function(startX, startY, endX, endY){
for (var n = startX; n <= endX + thickness; n++){
for (var k = startY; k <= endY + thickness; k++){
pixels.set(n, k, 0, color[0]);
pixels.set(n, k, 1, color[1]);
pixels.set(n, k, 2, color[2]);
//pixels.set(n, k, 3, color[3]);

pixelSetter(n, k, color, pixels); //to remove 4th channel - pixels.set(n, k, 3, color[3]);
}
}
};
Expand Down
15 changes: 6 additions & 9 deletions src/modules/EdgeDetect/EdgeUtils.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
// Define kernels for the sobel filter

const pixelSetter = require('../../util/pixelSetter.js');
const kernelx = [
[-1, 0, 1],
[-2, 0, 2],
Expand Down Expand Up @@ -41,19 +43,14 @@ module.exports = function(pixels, highThresholdRatio, lowThresholdRatio, useHyst
return pixels;
};


function supress(pixels, pixel) {
pixels.set(pixel[0], pixel[1], 0, 0);
pixels.set(pixel[0], pixel[1], 1, 0);
pixels.set(pixel[0], pixel[1], 2, 0);
pixels.set(pixel[0], pixel[1], 3, 255);
pixelSetter(pixel[0], pixel[1], [0, 0, 0, 255], pixels);

}

function preserve(pixels, pixel) {
pixels.set(pixel[0], pixel[1], 0, 255);
pixels.set(pixel[0], pixel[1], 1, 255);
pixels.set(pixel[0], pixel[1], 2, 255);
pixels.set(pixel[0], pixel[1], 3, 255);
pixelSetter(pixel[0], pixel[1], [255, 255, 255, 255], pixels);

}

// sobelFilter function that convolves sobel kernel over every pixel
Expand Down
8 changes: 4 additions & 4 deletions src/modules/FlipImage/flipImage.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
module.exports = function flipImage(oldPixels, pixels, axis) {
const pixelSetter = require('../../util/pixelSetter.js');

var width = oldPixels.shape[0],
height = oldPixels.shape[1];

function copyPixel(x1, y1, x2, y2){
pixels.set(x1, y1, 0, oldPixels.get(x2, y2, 0));
pixels.set(x1, y1, 1, oldPixels.get(x2, y2, 1));
pixels.set(x1, y1, 2, oldPixels.get(x2, y2, 2));
pixels.set(x1, y1, 3, oldPixels.get(x2, y2, 3));
pixelSetter(x1, y1, [oldPixels.get(x2, y2, 0), oldPixels.get(x2, y2, 1), oldPixels.get(x2, y2, 2), oldPixels.get(x2, y2, 3)], pixels);

}

function flip(){
Expand Down
10 changes: 5 additions & 5 deletions src/modules/Gradient/Module.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
module.exports = function Invert(options, UI) {
const pixelSetter = require('../../util/pixelSetter.js');

var output;

// The function which is called on every draw.
function draw(input, callback, progressObj) {
function draw(input, callback) {

var getPixels = require('get-pixels');
var savePixels = require('save-pixels');

Expand All @@ -21,10 +23,8 @@ module.exports = function Invert(options, UI) {
for (var i = 0; i < pixels.shape[0]; i++) {
for (var j = 0; j < pixels.shape[1]; j++) {
let val = (i / width) * 255;
pixels.set(i, j, 0, val);
pixels.set(i, j, 1, val);
pixels.set(i, j, 2, val);
pixels.set(i, j, 3, 255);
pixelSetter(i, j, [val, val, val, 255], pixels);

}
}
var chunks = [];
Expand Down
13 changes: 5 additions & 8 deletions src/modules/GridOverlay/GridOverlay.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
module.exports = exports = function(pixels, options){
var defaults = require('./../../util/getDefaults.js')(require('./info.json'));
const pixelSetter = require('../../util/pixelSetter.js');

options.x = Number(options.x) || defaults.x;
options.y = Number(options.y) || defaults.y;
Expand All @@ -9,19 +10,15 @@ module.exports = exports = function(pixels, options){

for(var x = 0; x < pixels.shape[0]; x += options.x){
for(var y = 0 ; y < pixels.shape[1]; y++){
pixels.set(x, y, 0, color[0]);
pixels.set(x, y, 1, color[1]);
pixels.set(x, y, 2, color[2]);
//pixels.set(x, y, 3, color[3]);
pixelSetter(x, y, color, pixels); // to remove 4th channel - pixels.set(x, y, 3, color[3]);

}
}

for(var y = 0; y < pixels.shape[1]; y += options.y){
for(var x = 0 ; x < pixels.shape[0]; x++){
pixels.set(x, y, 0, color[0]);
pixels.set(x, y, 1, color[1]);
pixels.set(x, y, 2, color[2]);
//pixels.set(x, y, 3, color[3]);
pixelSetter(x, y, color, pixels); // to remove 4th channel - pixels.set(x, y, 3, color[3]);

}
}

Expand Down
20 changes: 9 additions & 11 deletions src/modules/Histogram/Module.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ module.exports = function Channel(options, UI) {

function draw(input, callback, progressObj) {

var defaults = require('./../../util/getDefaults.js')(require('./info.json'));
const defaults = require('./../../util/getDefaults.js')(require('./info.json'));
const pixelSetter = require('../../util/pixelSetter.js');

options.gradient = options.gradient || defaults.gradient;
options.gradient = JSON.parse(options.gradient);

Expand All @@ -32,20 +34,17 @@ module.exports = function Channel(options, UI) {

for (let x = 0; x < 256; x++) {
for (let y = 0; y < 256; y++) {
pixels.set(x, y, 0, 255);
pixels.set(x, y, 1, 255);
pixels.set(x, y, 2, 255);
pixels.set(x, y, 3, 255);
pixelSetter(x, y, [255, 255, 255, 255], pixels);

}
}

let startY = options.gradient ? 10 : 0;
if (options.gradient) {
for (let x = 0; x < 256; x++) {
for (let y = 0; y < 10; y++) {
pixels.set(x, 255 - y, 0, x);
pixels.set(x, 255 - y, 1, x);
pixels.set(x, 255 - y, 2, x);
pixelSetter(x, 255 - y, [x, x, x], pixels);

}
}
}
Expand All @@ -56,9 +55,8 @@ module.exports = function Channel(options, UI) {
let pixCount = Math.round(convfactor * hist[x]);

for (let y = startY; y < pixCount; y++) {
pixels.set(x, 255 - y, 0, 204);
pixels.set(x, 255 - y, 1, 255);
pixels.set(x, 255 - y, 2, 153);
pixelSetter(x, 255 - y, [204, 255, 153], pixels);

}
}

Expand Down
7 changes: 3 additions & 4 deletions src/modules/PaintBucket/PaintBucket.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ module.exports = exports = function(pixels, options) {


let defaults = require('./../../util/getDefaults.js')(require('./info.json'));
const pixelSetter = require('../../util/pixelSetter.js');

let fillColor = options.fillColor || defaults.fillColor,
x = parseInt(options.startingX) || defaults.startingX,
Expand Down Expand Up @@ -47,10 +48,8 @@ module.exports = exports = function(pixels, options) {
} while (isSimilar(currx, south) && south < height);

for (n = north + 1; n < south; n += 1) {
pixels.set(currx, n, 0, fillColor[0]);
pixels.set(currx, n, 1, fillColor[1]);
pixels.set(currx, n, 2, fillColor[2]);
pixels.set(currx, n, 3, fillColor[3]);
pixelSetter(currx, n, fillColor, pixels);

if (isSimilar(currx - 1, n)) {
queuex.push(currx - 1);
queuey.push(n);
Expand Down
Loading

0 comments on commit 5b98d5c

Please sign in to comment.