Skip to content

Commit

Permalink
fbx2three: Restore ImageUtils, move getDataURL method.
Browse files Browse the repository at this point in the history
  • Loading branch information
donmccurdy committed Jul 11, 2018
1 parent 5350a3c commit 2c6716c
Show file tree
Hide file tree
Showing 5 changed files with 87 additions and 69 deletions.
49 changes: 23 additions & 26 deletions src/Three.Legacy.js
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ import { WebGLRenderer } from './renderers/WebGLRenderer.js';
import { WebGLRenderTarget } from './renderers/WebGLRenderTarget.js';
import { WebGLShadowMap } from './renderers/webgl/WebGLShadowMap.js';
import { WebVRManager } from './renderers/webvr/WebVRManager.js';
import { ImageUtils } from './extras/ImageUtils.js';
import { Shape } from './extras/core/Shape.js';
import { CubeCamera } from './cameras/CubeCamera.js';

Expand Down Expand Up @@ -1757,51 +1758,47 @@ export var GeometryUtils = {

};

export var ImageUtils = {
ImageUtils.crossOrigin = undefined;

crossOrigin: undefined,
ImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {

loadTexture: function ( url, mapping, onLoad, onError ) {
console.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );

console.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );
var loader = new TextureLoader();
loader.setCrossOrigin( this.crossOrigin );

var loader = new TextureLoader();
loader.setCrossOrigin( this.crossOrigin );
var texture = loader.load( url, onLoad, undefined, onError );

var texture = loader.load( url, onLoad, undefined, onError );
if ( mapping ) texture.mapping = mapping;

if ( mapping ) texture.mapping = mapping;
return texture;

return texture;

},

loadTextureCube: function ( urls, mapping, onLoad, onError ) {
};

console.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );
ImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {

var loader = new CubeTextureLoader();
loader.setCrossOrigin( this.crossOrigin );
console.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );

var texture = loader.load( urls, onLoad, undefined, onError );
var loader = new CubeTextureLoader();
loader.setCrossOrigin( this.crossOrigin );

if ( mapping ) texture.mapping = mapping;
var texture = loader.load( urls, onLoad, undefined, onError );

return texture;
if ( mapping ) texture.mapping = mapping;

},
return texture;

loadCompressedTexture: function () {
};

console.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );
ImageUtils.loadCompressedTexture = function () {

},
console.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );

loadCompressedTextureCube: function () {
};

console.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );
ImageUtils.loadCompressedTextureCube = function () {

}
console.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );

};

Expand Down
1 change: 1 addition & 0 deletions src/Three.js
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ export { ShapePath } from './extras/core/ShapePath.js';
export { Font } from './extras/core/Font.js';
export { CurvePath } from './extras/core/CurvePath.js';
export { Curve } from './extras/core/Curve.js';
export { ImageUtils } from './extras/ImageUtils.js';
export { ShapeUtils } from './extras/ShapeUtils.js';
export { WebGLUtils } from './renderers/webgl/WebGLUtils.js';
export * from './constants.js';
Expand Down
59 changes: 59 additions & 0 deletions src/extras/ImageUtils.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/**
* @author mrdoob / http://mrdoob.com/
* @author alteredq / http://alteredqualia.com/
* @author szimek / https://github.com/szimek/
*/

var ImageUtils = {

getDataURL: function ( image ) {

var canvas;

if ( image instanceof HTMLCanvasElement ) {

canvas = image;

} else {

if ( typeof OffscreenCanvas !== 'undefined' ) {

canvas = new OffscreenCanvas( image.width, image.height );

} else {

canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );
canvas.width = image.width;
canvas.height = image.height;

}

var context = canvas.getContext( '2d' );

if ( image instanceof ImageData ) {

context.putImageData( image, 0, 0 );

} else {

context.drawImage( image, 0, 0, image.width, image.height );

}

}

if ( canvas.width > 2048 || canvas.height > 2048 ) {

return canvas.toDataURL( 'image/jpeg', 0.6 );

} else {

return canvas.toDataURL( 'image/png' );

}

}

};

export { ImageUtils };
45 changes: 3 additions & 42 deletions src/textures/Texture.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, LinearEnco
import { _Math } from '../math/Math.js';
import { Vector2 } from '../math/Vector2.js';
import { Matrix3 } from '../math/Matrix3.js';
import { ImageUtils } from '../extras/ImageUtils.js';

var textureId = 0;

Expand Down Expand Up @@ -183,15 +184,15 @@ Texture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {

for ( var i = 0, l = image.length; i < l; i ++ ) {

url.push( this._getDataURL( image ) );
url.push( ImageUtils.getDataURL( image ) );

}

} else {

// process single image

url = this._getDataURL( image );
url = ImageUtils.getDataURL( image );

}

Expand All @@ -216,46 +217,6 @@ Texture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {

},

_getDataURL: function ( image ) {

var canvas;

if ( image instanceof HTMLCanvasElement ) {

canvas = image;

} else {

canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );
canvas.width = image.width;
canvas.height = image.height;

var context = canvas.getContext( '2d' );

if ( image instanceof ImageData ) {

context.putImageData( image, 0, 0 );

} else {

context.drawImage( image, 0, 0, image.width, image.height );

}

}

if ( canvas.width > 2048 || canvas.height > 2048 ) {

return canvas.toDataURL( 'image/jpeg', 0.6 );

} else {

return canvas.toDataURL( 'image/png' );

}

},

dispose: function () {

this.dispatchEvent( { type: 'dispose' } );
Expand Down
2 changes: 1 addition & 1 deletion utils/converters/fbx2three.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ THREE.ImageLoader.prototype.load = function ( url, onLoad ) {
};

// Convert image buffer to data URL.
THREE.Texture.prototype._getDataURL = function ( image ) {
THREE.ImageUtils.getDataURL = function ( image ) {

if ( !( image instanceof Buffer ) ) {

Expand Down

0 comments on commit 2c6716c

Please sign in to comment.