mirror of
https://github.com/publiclab/image-sequencer.git
synced 2025-12-14 12:19:58 +01:00
LoadImages will return nothing, only call a callback
This commit is contained in:
25
dist/image-sequencer.js
vendored
25
dist/image-sequencer.js
vendored
@@ -34708,14 +34708,13 @@ ImageSequencer = function ImageSequencer(options) {
|
|||||||
|
|
||||||
function loadImages() {
|
function loadImages() {
|
||||||
var args = [];
|
var args = [];
|
||||||
|
var sequencer = this;
|
||||||
for (var arg in arguments) args.push(copy(arguments[arg]));
|
for (var arg in arguments) args.push(copy(arguments[arg]));
|
||||||
var json_q = formatInput.call(this,args,"l");
|
var json_q = formatInput.call(this,args,"l");
|
||||||
|
|
||||||
inputlog.push({method:"loadImages", json_q:copy(json_q)});
|
inputlog.push({method:"loadImages", json_q:copy(json_q)});
|
||||||
var loadedimages = this.copy(json_q.loadedimages);
|
var loadedimages = this.copy(json_q.loadedimages);
|
||||||
|
// require('./LoadImage')(this,i,json_q.images[i]);
|
||||||
for (var i in json_q.images)
|
|
||||||
require('./LoadImage')(this,i,json_q.images[i])
|
|
||||||
|
|
||||||
var ret = {
|
var ret = {
|
||||||
name: "ImageSequencer Wrapper",
|
name: "ImageSequencer Wrapper",
|
||||||
@@ -34728,7 +34727,20 @@ ImageSequencer = function ImageSequencer(options) {
|
|||||||
setUI: this.setUI,
|
setUI: this.setUI,
|
||||||
images: loadedimages
|
images: loadedimages
|
||||||
};
|
};
|
||||||
json_q.callback.call(ret);
|
|
||||||
|
function load(i) {
|
||||||
|
if(i==loadedimages.length) {
|
||||||
|
json_q.callback.call(ret);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var img = loadedimages[i];
|
||||||
|
require('./LoadImage')(sequencer,img,json_q.images[img],function(){
|
||||||
|
load(++i);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
load(0);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34799,7 +34811,7 @@ function InsertStep(ref, image, index, name, o) {
|
|||||||
module.exports = InsertStep;
|
module.exports = InsertStep;
|
||||||
|
|
||||||
},{}],115:[function(require,module,exports){
|
},{}],115:[function(require,module,exports){
|
||||||
function LoadImage(ref, name, src) {
|
function LoadImage(ref, name, src, main_callback) {
|
||||||
function makeImage(datauri) {
|
function makeImage(datauri) {
|
||||||
var image = {
|
var image = {
|
||||||
src: datauri,
|
src: datauri,
|
||||||
@@ -34868,6 +34880,7 @@ function LoadImage(ref, name, src) {
|
|||||||
ref.images[name].steps[0].UI.onSetup();
|
ref.images[name].steps[0].UI.onSetup();
|
||||||
ref.images[name].steps[0].UI.onDraw();
|
ref.images[name].steps[0].UI.onDraw();
|
||||||
ref.images[name].steps[0].UI.onComplete(image.steps[0].output.src);
|
ref.images[name].steps[0].UI.onComplete(image.steps[0].output.src);
|
||||||
|
main_callback();
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -35481,7 +35494,7 @@ module.exports = function PixelManipulation(image, options) {
|
|||||||
// but node modules and their documentation are essentially arcane on this point
|
// but node modules and their documentation are essentially arcane on this point
|
||||||
var chunks = [];
|
var chunks = [];
|
||||||
var totalLength = 0;
|
var totalLength = 0;
|
||||||
var r = savePixels(pixels, options.format);
|
var r = savePixels(pixels, options.format, {quality: 100});
|
||||||
|
|
||||||
r.on('data', function(chunk){
|
r.on('data', function(chunk){
|
||||||
totalLength += chunk.length;
|
totalLength += chunk.length;
|
||||||
|
|||||||
@@ -133,14 +133,13 @@ ImageSequencer = function ImageSequencer(options) {
|
|||||||
|
|
||||||
function loadImages() {
|
function loadImages() {
|
||||||
var args = [];
|
var args = [];
|
||||||
|
var sequencer = this;
|
||||||
for (var arg in arguments) args.push(copy(arguments[arg]));
|
for (var arg in arguments) args.push(copy(arguments[arg]));
|
||||||
var json_q = formatInput.call(this,args,"l");
|
var json_q = formatInput.call(this,args,"l");
|
||||||
|
|
||||||
inputlog.push({method:"loadImages", json_q:copy(json_q)});
|
inputlog.push({method:"loadImages", json_q:copy(json_q)});
|
||||||
var loadedimages = this.copy(json_q.loadedimages);
|
var loadedimages = this.copy(json_q.loadedimages);
|
||||||
|
// require('./LoadImage')(this,i,json_q.images[i]);
|
||||||
for (var i in json_q.images)
|
|
||||||
require('./LoadImage')(this,i,json_q.images[i])
|
|
||||||
|
|
||||||
var ret = {
|
var ret = {
|
||||||
name: "ImageSequencer Wrapper",
|
name: "ImageSequencer Wrapper",
|
||||||
@@ -153,8 +152,19 @@ ImageSequencer = function ImageSequencer(options) {
|
|||||||
setUI: this.setUI,
|
setUI: this.setUI,
|
||||||
images: loadedimages
|
images: loadedimages
|
||||||
};
|
};
|
||||||
json_q.callback.call(ret);
|
|
||||||
return ret;
|
function load(i) {
|
||||||
|
if(i==loadedimages.length) {
|
||||||
|
json_q.callback.call(ret);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var img = loadedimages[i];
|
||||||
|
require('./LoadImage')(sequencer,img,json_q.images[img],function(){
|
||||||
|
load(++i);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
load(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
function replaceImage(selector,steps,options) {
|
function replaceImage(selector,steps,options) {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
function LoadImage(ref, name, src) {
|
function LoadImage(ref, name, src, main_callback) {
|
||||||
function makeImage(datauri) {
|
function makeImage(datauri) {
|
||||||
var image = {
|
var image = {
|
||||||
src: datauri,
|
src: datauri,
|
||||||
@@ -67,6 +67,7 @@ function LoadImage(ref, name, src) {
|
|||||||
ref.images[name].steps[0].UI.onSetup();
|
ref.images[name].steps[0].UI.onSetup();
|
||||||
ref.images[name].steps[0].UI.onDraw();
|
ref.images[name].steps[0].UI.onDraw();
|
||||||
ref.images[name].steps[0].UI.onComplete(image.steps[0].output.src);
|
ref.images[name].steps[0].UI.onComplete(image.steps[0].output.src);
|
||||||
|
main_callback();
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,22 +17,27 @@ test('loadImages/loadImage has a name generator.', function (t){
|
|||||||
t.end();
|
t.end();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('loadImages/loadImage returns a wrapper.', function (t){
|
test('loadImages/loadImage returns a wrapper in the callback.', function (t){
|
||||||
var returnval = sequencer.loadImage(red);
|
sequencer.loadImage(red, function() {
|
||||||
t.equal(returnval.name,"ImageSequencer Wrapper", "Wrapper is returned");
|
var returnval = this;
|
||||||
t.equal(returnval.images[0],"image2","Image scope is defined");
|
t.equal(returnval.name,"ImageSequencer Wrapper", "Wrapper is returned");
|
||||||
t.end();
|
t.equal(returnval.images[0],"image2","Image scope is defined");
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('addSteps is two-way chainable.', function (t){
|
test('addSteps is two-way chainable.', function (t){
|
||||||
var returnval = sequencer.loadImage(red).addSteps('invert');
|
sequencer.loadImage(red, function(){
|
||||||
t.equal(returnval.name,"ImageSequencer Wrapper", "Wrapper is returned");
|
var returnval = this;
|
||||||
t.equal(returnval.images[0],"image3","Image scope is defined");
|
this.addSteps('invert');
|
||||||
t.equal(sequencer.images.image3.steps.length,2,"Loaded image is affected");
|
t.equal(returnval.name,"ImageSequencer Wrapper", "Wrapper is returned");
|
||||||
t.equal(sequencer.images.image3.steps[1].options.name,"invert","Correct Step Added");
|
t.equal(returnval.images[0],"image3","Image scope is defined");
|
||||||
t.equal(sequencer.images.image2.steps.length,1,"Other images are not affected");
|
t.equal(sequencer.images.image3.steps.length,2,"Loaded image is affected");
|
||||||
t.equal(sequencer.images.image1.steps.length,1,"Other images are not affected");
|
t.equal(sequencer.images.image3.steps[1].options.name,"invert","Correct Step Added");
|
||||||
t.end();
|
t.equal(sequencer.images.image2.steps.length,1,"Other images are not affected");
|
||||||
|
t.equal(sequencer.images.image1.steps.length,1,"Other images are not affected");
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('addSteps is two-way chainable without loadImages.', function (t){
|
test('addSteps is two-way chainable without loadImages.', function (t){
|
||||||
@@ -44,11 +49,14 @@ test('addSteps is two-way chainable without loadImages.', function (t){
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('removeSteps is two-way chainable.', function (t){
|
test('removeSteps is two-way chainable.', function (t){
|
||||||
var returnval = sequencer.loadImage(red).addSteps('invert').removeSteps(1);
|
sequencer.loadImage(red,function(){
|
||||||
t.equal(returnval.name,"ImageSequencer Wrapper", "Wrapper is returned");
|
var returnval = this;
|
||||||
t.equal(returnval.images[0],"image4","Image scope is defined");
|
this.addSteps('invert').removeSteps(1);
|
||||||
t.equal(sequencer.images.image4.steps.length,1);
|
t.equal(returnval.name,"ImageSequencer Wrapper", "Wrapper is returned");
|
||||||
t.end();
|
t.equal(returnval.images[0],"image4","Image scope is defined");
|
||||||
|
t.equal(sequencer.images.image4.steps.length,1);
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('removeSteps is two-way chainable without loadImages.', function (t){
|
test('removeSteps is two-way chainable without loadImages.', function (t){
|
||||||
@@ -59,12 +67,15 @@ test('removeSteps is two-way chainable without loadImages.', function (t){
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('insertSteps is two-way chainable.', function (t){
|
test('insertSteps is two-way chainable.', function (t){
|
||||||
var returnval = sequencer.loadImage(red).insertSteps(1,'invert');
|
sequencer.loadImage(red,function() {
|
||||||
t.equal(returnval.name,"ImageSequencer Wrapper","Wrapper is returned");
|
var returnval = this;
|
||||||
t.equal(returnval.images[0],"image5","Image scope is defined");
|
this.insertSteps(1,'invert');
|
||||||
t.equal(sequencer.images.image5.steps.length,2);
|
t.equal(returnval.name,"ImageSequencer Wrapper","Wrapper is returned");
|
||||||
t.equal(sequencer.images.image5.steps[1].options.name,"invert","Correct Step Inserrted");
|
t.equal(returnval.images[0],"image5","Image scope is defined");
|
||||||
t.end();
|
t.equal(sequencer.images.image5.steps.length,2);
|
||||||
|
t.equal(sequencer.images.image5.steps[1].options.name,"invert","Correct Step Inserrted");
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('insertSteps is two-way chainable without loadImages.', function (t){
|
test('insertSteps is two-way chainable without loadImages.', function (t){
|
||||||
|
|||||||
@@ -10,11 +10,10 @@ require('../src/ImageSequencer.js');
|
|||||||
//require image files as DataURLs so they can be tested alike on browser and Node.
|
//require image files as DataURLs so they can be tested alike on browser and Node.
|
||||||
var sequencer = ImageSequencer({ ui: false });
|
var sequencer = ImageSequencer({ ui: false });
|
||||||
|
|
||||||
var image = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQABADASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAABgj/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABykX//Z";
|
|
||||||
var test_png = require('../examples/test.png.js');
|
var test_png = require('../examples/test.png.js');
|
||||||
var test_gif = require('../examples/test.gif.js');
|
var test_gif = require('../examples/test.gif.js');
|
||||||
|
|
||||||
sequencer.loadImages(image);
|
sequencer.loadImages(test_png);
|
||||||
sequencer.addSteps(['do-nothing-pix','invert','invert']);
|
sequencer.addSteps(['do-nothing-pix','invert','invert']);
|
||||||
|
|
||||||
test("Preload", function(t) {
|
test("Preload", function(t) {
|
||||||
@@ -34,15 +33,19 @@ test("Twice inverted image is identical to original image", function (t) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("PixelManipulation works for PNG images", function (t) {
|
test("PixelManipulation works for PNG images", function (t) {
|
||||||
sequencer.loadImages(test_png).addSteps('invert').run(function(out){
|
sequencer.loadImages(test_png,function(){
|
||||||
t.equal(1,1)
|
this.addSteps('invert').run(function(out){
|
||||||
t.end();
|
t.equal(1,1)
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test("PixelManipulation works for GIF images", function (t) {
|
test("PixelManipulation works for GIF images", function (t) {
|
||||||
sequencer.loadImages(test_gif).addSteps('invert').run(function(out){
|
sequencer.loadImages(test_gif,function(){
|
||||||
t.equal(1,1)
|
this.addSteps('invert').run(function(out){
|
||||||
t.end();
|
t.equal(1,1)
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ test('loadImages loads a DataURL image and creates a step.', function (t){
|
|||||||
|
|
||||||
test('loadImages loads a PATH image and creates a step. (NodeJS)', function (t){
|
test('loadImages loads a PATH image and creates a step. (NodeJS)', function (t){
|
||||||
if(sequencer.options.inBrowser){
|
if(sequencer.options.inBrowser){
|
||||||
t.equal("not applicable","not applicable","Not applicable for Browser");
|
t.equal(1,1,"Not applicable for Browser");
|
||||||
t.end();
|
t.end();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
Reference in New Issue
Block a user