three.fbo-helper
Version:
FrameBuffer Object inspector for three.js
82 lines (46 loc) • 1.33 kB
JavaScript
import { XHRLoader } from './XHRLoader';
import { DefaultLoadingManager } from './LoadingManager';
/**
* @author mrdoob / http://mrdoob.com/
*/
function ImageLoader( manager ) {
this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;
}
Object.assign( ImageLoader.prototype, {
load: function ( url, onLoad, onProgress, onError ) {
var scope = this;
var image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );
image.onload = function () {
image.onload = null;
URL.revokeObjectURL( image.src );
if ( onLoad ) onLoad( image );
scope.manager.itemEnd( url );
};
if ( url.indexOf( 'data:' ) === 0 ) {
image.src = url;
} else {
var loader = new XHRLoader();
loader.setPath( this.path );
loader.setResponseType( 'blob' );
loader.setWithCredentials( this.withCredentials );
loader.load( url, function ( blob ) {
image.src = URL.createObjectURL( blob );
}, onProgress, onError );
}
scope.manager.itemStart( url );
return image;
},
setCrossOrigin: function ( value ) {
this.crossOrigin = value;
return this;
},
setWithCredentials: function ( value ) {
this.withCredentials = value;
return this;
},
setPath: function ( value ) {
this.path = value;
return this;
}
} );
export { ImageLoader };