forked from LeenkxTeam/LNXSDK
73 lines
2.4 KiB
Haxe
73 lines
2.4 KiB
Haxe
package leenkx.logicnode;
|
|
|
|
|
|
class GetBlobUrlNode extends LogicNode {
|
|
public var value: Dynamic;
|
|
public var property0: String;
|
|
public function new(tree:LogicTree) {
|
|
super(tree);
|
|
}
|
|
|
|
public function canvasToBlob(canvas : Dynamic) : js.html.Blob{
|
|
//No toBlob from Google so followed the help here - https://code.google.com/p/chromium/issues/detail?id=67587
|
|
var extractPattern = ~/data:([^;]*)(;base64)?,([0-9A-Za-z+\/]+)/;
|
|
extractPattern.match(canvas.toDataURL());
|
|
//assume base64 encoding
|
|
var binStr = js.Browser.window.atob(extractPattern.matched(3));
|
|
//convert to binary in ArrayBuffer
|
|
var buf = new js.lib.ArrayBuffer(binStr.length);
|
|
var view = new js.lib.Uint8Array(buf);
|
|
for(i in 0...view.length){
|
|
view[i] = binStr.charCodeAt(i);
|
|
}
|
|
var blob = new js.html.Blob([view], {type: extractPattern.matched(1)});
|
|
return blob;
|
|
}
|
|
|
|
public function videoToDataUrl(video: Dynamic){
|
|
|
|
var canvas:js.html.CanvasElement = new js.html.CanvasElement();
|
|
var ctx = canvas.getContext('2d');
|
|
|
|
ctx.drawImage(video, 0, 0);
|
|
|
|
}
|
|
|
|
|
|
override function get(from: Int): Dynamic {
|
|
return switch (property0) {
|
|
case 'file':
|
|
var data: Dynamic = inputs[0].get();
|
|
data.getBlobURL(function(err, url) {
|
|
value = url;
|
|
});
|
|
value;
|
|
case 'object':
|
|
var data: Dynamic = inputs[0].get();
|
|
value = js.html.URL.createObjectURL(data);
|
|
value;
|
|
case 'canvas':
|
|
var data: Dynamic = inputs[0].get();
|
|
var blob = canvasToBlob(data);
|
|
value = js.html.URL.createObjectURL(blob);
|
|
trace(value);
|
|
value;
|
|
case 'video':
|
|
var video: js.html.VideoElement = inputs[0].get();
|
|
var canvas: js.html.CanvasElement = cast js.Browser.document.createElement('canvas');
|
|
canvas.width = video.width;
|
|
canvas.height = video.height;
|
|
var ctx = canvas.getContext('2d');
|
|
ctx.drawImage(video, 0, 0);
|
|
canvas.toDataURL();
|
|
default:
|
|
var data: Dynamic = inputs[0].get();
|
|
value = js.html.URL.createObjectURL(data);
|
|
value;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|