Browse Source

added ImageBitmapLoader

Jaume Sanchez 8 years ago
parent
commit
7fd77b7ef3
1 changed files with 76 additions and 0 deletions
  1. 76 0
      examples/js/loaders/ImageBitmapLoader.js

+ 76 - 0
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);
+
+		});
+	}
+
+};