From 7fd77b7ef30a74446dbe91179fcb0317ecc92eb5 Mon Sep 17 00:00:00 2001 From: Jaume Sanchez Date: Wed, 14 Jun 2017 16:35:55 +0200 Subject: [PATCH] added ImageBitmapLoader --- examples/js/loaders/ImageBitmapLoader.js | 76 ++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 examples/js/loaders/ImageBitmapLoader.js diff --git a/examples/js/loaders/ImageBitmapLoader.js b/examples/js/loaders/ImageBitmapLoader.js new file mode 100644 index 0000000000..89e4fc130a --- /dev/null +++ b/examples/js/loaders/ImageBitmapLoader.js @@ -0,0 +1,76 @@ +'use strict'; + +/** + * @author thespite / http://clicktorelease.com/ + */ + +THREE.ImageBitmapLoader = function (manager) { + + this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager; + this.options = {}; + +}; + +THREE.ImageBitmapLoader.prototype = { + + constructor: THREE.ImageBitmapLoader, + + setOptions: function setOptions(options) { + + this.options = options; + return this; + + }, + + load: function load(url, onLoad, onProgress, onError) { + + if (url === undefined) url = ''; + + if (this.path !== undefined) url = this.path + url; + + var scope = this; + + var cached = THREE.Cache.get(url); + + if (cached !== undefined) { + + scope.manager.itemStart(url); + + setTimeout(function () { + + if (onLoad) onLoad(cached); + + scope.manager.itemEnd(url); + + }, 0); + + return cached; + } + + fetch(url).then(function (res) { + + return res.blob(); + + }).then(function (res) { + + return createImageBitmap(res, scope.options); + + }).then(function (res) { + + THREE.Cache.add(url, res); + + if (onLoad) onLoad(res); + + scope.manager.itemEnd(url); + + }).catch(function (e) { + + if (onError) onError(e); + + scope.manager.itemEnd(url); + scope.manager.itemError(url); + + }); + } + +}; -- GitLab