Skip to content

Commit

Permalink
circular gradient module (#1496)
Browse files Browse the repository at this point in the history
* circular gradient module

* circular gradient option inside gradient module

* Added test for gradient module

* final shadow module with module test

Co-authored-by: Jeffrey Warren <jeff@unterbahn.com>
  • Loading branch information
niravasher and jywarren committed Jan 28, 2020
1 parent 8c4c607 commit 9260bc2
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 8 deletions.
26 changes: 21 additions & 5 deletions src/modules/Gradient/Module.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ const pixelSetter = require('../../util/pixelSetter.js'),

module.exports = function Gradient(options, UI) {

var defaults = require('./../../util/getDefaults.js')(require('./info.json'));
options.gradientType = options.gradientType || defaults.gradientType;

var output;

// The function which is called on every draw.
Expand All @@ -15,11 +18,24 @@ module.exports = function Gradient(options, UI) {

function extraManipulation(pixels) {
const [w, h] = pixels.shape;
for (var i = 0; i < w; i++) {
for (var j = 0; j < h; j++) {
let val = (i / w) * 255;

pixelSetter(i, j, [val, val, val, 255], pixels);
if (options.gradientType === 'linear') {
for (var i = 0; i < w; i++) {
for (var j = 0; j < h; j++) {
let val = (i / w) * 255;

pixelSetter(i, j, [val, val, val, 255], pixels);
}
}
}
else {
for (var i = 0; i < w; i++) {
for (var j = 0; j < h; j++) {
var distX = Math.abs(w / 2 - i);
var distY = Math.abs(h / 2 - j);
var distance = Math.sqrt(Math.pow(distX, 2) + Math.pow(distY, 2));
val = 255 * (distance / pixels.shape[0]);
pixelSetter(i, j, [val, val, val, 255], pixels);
}
}
}

Expand Down
9 changes: 8 additions & 1 deletion src/modules/Gradient/info.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
{
"name": "gradient",
"description": "Gives a gradient of the image",
"inputs": {},
"inputs": {
"gradientType": {
"type": "select",
"desc": "Choose between linear or circular gradient",
"default": "linear",
"values": ["linear", "circular"]
}
},
"docs-link":"https://github.com/publiclab/image-sequencer/blob/main/docs/MODULES.md#gradient-module"
}
1 change: 1 addition & 0 deletions test/core/images/flower.js

Large diffs are not rendered by default.

9 changes: 7 additions & 2 deletions test/core/modules/gradient.js

Large diffs are not rendered by default.

0 comments on commit 9260bc2

Please sign in to comment.