diff --git a/packages/core/src/textures/resources/ImageResource.js b/packages/core/src/textures/resources/ImageResource.js index ab36110..ce552a8 100644 --- a/packages/core/src/textures/resources/ImageResource.js +++ b/packages/core/src/textures/resources/ImageResource.js @@ -12,8 +12,8 @@ /** * @param {HTMLImageElement|string} source - image source or URL * @param {boolean} [options.autoLoad=true] start loading process - * @param {boolean} [options.createBitmap=true] whether its required to create - * a bitmap before upload defaults true + * @param {boolean} [options.createBitmap=PIXI.settings.CREATE_IMAGE_BITMAP] whether its required to create + * a bitmap before upload * @param {boolean} [options.crossorigin=true] - Load image using cross origin * @param {boolean} [options.premultiplyAlpha=true] - Premultiply image alpha in bitmap */ @@ -58,7 +58,8 @@ * @member {boolean} * @default PIXI.settings.CREATE_IMAGE_BITMAP */ - this.createBitmap = options.createBitmap !== false && settings.CREATE_IMAGE_BITMAP && !!window.createImageBitmap; + this.createBitmap = (options.createBitmap !== undefined + ? options.createBitmap : settings.CREATE_IMAGE_BITMAP) && !!window.createImageBitmap; /** * Controls texture premultiplyAlpha field diff --git a/packages/core/src/textures/resources/ImageResource.js b/packages/core/src/textures/resources/ImageResource.js index ab36110..ce552a8 100644 --- a/packages/core/src/textures/resources/ImageResource.js +++ b/packages/core/src/textures/resources/ImageResource.js @@ -12,8 +12,8 @@ /** * @param {HTMLImageElement|string} source - image source or URL * @param {boolean} [options.autoLoad=true] start loading process - * @param {boolean} [options.createBitmap=true] whether its required to create - * a bitmap before upload defaults true + * @param {boolean} [options.createBitmap=PIXI.settings.CREATE_IMAGE_BITMAP] whether its required to create + * a bitmap before upload * @param {boolean} [options.crossorigin=true] - Load image using cross origin * @param {boolean} [options.premultiplyAlpha=true] - Premultiply image alpha in bitmap */ @@ -58,7 +58,8 @@ * @member {boolean} * @default PIXI.settings.CREATE_IMAGE_BITMAP */ - this.createBitmap = options.createBitmap !== false && settings.CREATE_IMAGE_BITMAP && !!window.createImageBitmap; + this.createBitmap = (options.createBitmap !== undefined + ? options.createBitmap : settings.CREATE_IMAGE_BITMAP) && !!window.createImageBitmap; /** * Controls texture premultiplyAlpha field diff --git a/packages/core/src/textures/resources/autoDetectResource.js b/packages/core/src/textures/resources/autoDetectResource.js index a081b69..bb8e7c7 100644 --- a/packages/core/src/textures/resources/autoDetectResource.js +++ b/packages/core/src/textures/resources/autoDetectResource.js @@ -50,7 +50,7 @@ * @param {number} [options.height] - BufferResource's height * @param {boolean} [options.autoLoad=true] - Image, SVG and Video flag to start loading * @param {number} [options.scale=1] - SVG source scale - * @param {boolean} [options.createBitmap=true] - Image option to create Bitmap object + * @param {boolean} [options.createBitmap=PIXI.settings.CREATE_IMAGE_BITMAP] - Image option to create Bitmap object * @param {boolean} [options.crossorigin=true] - Image and Video option to set crossOrigin * @param {boolean} [options.autoPlay=true] - Video option to start playing video immediately * @param {number} [options.updateFPS=0] - Video option to update how many times a second the diff --git a/packages/core/src/textures/resources/ImageResource.js b/packages/core/src/textures/resources/ImageResource.js index ab36110..ce552a8 100644 --- a/packages/core/src/textures/resources/ImageResource.js +++ b/packages/core/src/textures/resources/ImageResource.js @@ -12,8 +12,8 @@ /** * @param {HTMLImageElement|string} source - image source or URL * @param {boolean} [options.autoLoad=true] start loading process - * @param {boolean} [options.createBitmap=true] whether its required to create - * a bitmap before upload defaults true + * @param {boolean} [options.createBitmap=PIXI.settings.CREATE_IMAGE_BITMAP] whether its required to create + * a bitmap before upload * @param {boolean} [options.crossorigin=true] - Load image using cross origin * @param {boolean} [options.premultiplyAlpha=true] - Premultiply image alpha in bitmap */ @@ -58,7 +58,8 @@ * @member {boolean} * @default PIXI.settings.CREATE_IMAGE_BITMAP */ - this.createBitmap = options.createBitmap !== false && settings.CREATE_IMAGE_BITMAP && !!window.createImageBitmap; + this.createBitmap = (options.createBitmap !== undefined + ? options.createBitmap : settings.CREATE_IMAGE_BITMAP) && !!window.createImageBitmap; /** * Controls texture premultiplyAlpha field diff --git a/packages/core/src/textures/resources/autoDetectResource.js b/packages/core/src/textures/resources/autoDetectResource.js index a081b69..bb8e7c7 100644 --- a/packages/core/src/textures/resources/autoDetectResource.js +++ b/packages/core/src/textures/resources/autoDetectResource.js @@ -50,7 +50,7 @@ * @param {number} [options.height] - BufferResource's height * @param {boolean} [options.autoLoad=true] - Image, SVG and Video flag to start loading * @param {number} [options.scale=1] - SVG source scale - * @param {boolean} [options.createBitmap=true] - Image option to create Bitmap object + * @param {boolean} [options.createBitmap=PIXI.settings.CREATE_IMAGE_BITMAP] - Image option to create Bitmap object * @param {boolean} [options.crossorigin=true] - Image and Video option to set crossOrigin * @param {boolean} [options.autoPlay=true] - Video option to start playing video immediately * @param {number} [options.updateFPS=0] - Video option to update how many times a second the diff --git a/packages/core/test/ImageResource.js b/packages/core/test/ImageResource.js index 3118cc7..33e6dbe 100644 --- a/packages/core/test/ImageResource.js +++ b/packages/core/test/ImageResource.js @@ -1,4 +1,5 @@ const { resources } = require('../'); +const { settings } = require('@pixi/settings'); const { ImageResource } = resources; const path = require('path'); @@ -53,7 +54,10 @@ image.src = this.slugUrl; - const resource = new ImageResource(image, { autoLoad: false }); + const resource = new ImageResource(image, { + autoLoad: false, + createBitmap: true, + }); return resource.load().then((res) => { @@ -85,4 +89,48 @@ expect(resource.bitmap).to.be.null; }); }); + + it('should handle the loaded event with createBitmapImage using global setting', function () + { + const old = settings.CREATE_IMAGE_BITMAP; + const image = new Image(); + + settings.CREATE_IMAGE_BITMAP = true; + image.src = this.slugUrl; + + const resource = new ImageResource(image, { autoLoad: false }); + + return resource.load().then((res) => + { + expect(res).to.equal(resource); + expect(resource.createBitmap).to.equal(true); + expect(resource.width).to.equal(100); + expect(resource.height).to.equal(100); + expect(resource.valid).to.be.true; + expect(resource.bitmap).to.be.instanceof(ImageBitmap); + settings.CREATE_IMAGE_BITMAP = old; + }); + }); + + it('should handle the loaded event with no createBitmapImage using global setting', function () + { + const old = settings.CREATE_IMAGE_BITMAP; + const image = new Image(); + + settings.CREATE_IMAGE_BITMAP = false; + image.src = this.slugUrl; + + const resource = new ImageResource(image, { autoLoad: false }); + + return resource.load().then((res) => + { + expect(res).to.equal(resource); + expect(resource.createBitmap).to.equal(false); + expect(resource.width).to.equal(100); + expect(resource.height).to.equal(100); + expect(resource.valid).to.be.true; + expect(resource.bitmap).to.be.null; + settings.CREATE_IMAGE_BITMAP = old; + }); + }); }); diff --git a/packages/core/src/textures/resources/ImageResource.js b/packages/core/src/textures/resources/ImageResource.js index ab36110..ce552a8 100644 --- a/packages/core/src/textures/resources/ImageResource.js +++ b/packages/core/src/textures/resources/ImageResource.js @@ -12,8 +12,8 @@ /** * @param {HTMLImageElement|string} source - image source or URL * @param {boolean} [options.autoLoad=true] start loading process - * @param {boolean} [options.createBitmap=true] whether its required to create - * a bitmap before upload defaults true + * @param {boolean} [options.createBitmap=PIXI.settings.CREATE_IMAGE_BITMAP] whether its required to create + * a bitmap before upload * @param {boolean} [options.crossorigin=true] - Load image using cross origin * @param {boolean} [options.premultiplyAlpha=true] - Premultiply image alpha in bitmap */ @@ -58,7 +58,8 @@ * @member {boolean} * @default PIXI.settings.CREATE_IMAGE_BITMAP */ - this.createBitmap = options.createBitmap !== false && settings.CREATE_IMAGE_BITMAP && !!window.createImageBitmap; + this.createBitmap = (options.createBitmap !== undefined + ? options.createBitmap : settings.CREATE_IMAGE_BITMAP) && !!window.createImageBitmap; /** * Controls texture premultiplyAlpha field diff --git a/packages/core/src/textures/resources/autoDetectResource.js b/packages/core/src/textures/resources/autoDetectResource.js index a081b69..bb8e7c7 100644 --- a/packages/core/src/textures/resources/autoDetectResource.js +++ b/packages/core/src/textures/resources/autoDetectResource.js @@ -50,7 +50,7 @@ * @param {number} [options.height] - BufferResource's height * @param {boolean} [options.autoLoad=true] - Image, SVG and Video flag to start loading * @param {number} [options.scale=1] - SVG source scale - * @param {boolean} [options.createBitmap=true] - Image option to create Bitmap object + * @param {boolean} [options.createBitmap=PIXI.settings.CREATE_IMAGE_BITMAP] - Image option to create Bitmap object * @param {boolean} [options.crossorigin=true] - Image and Video option to set crossOrigin * @param {boolean} [options.autoPlay=true] - Video option to start playing video immediately * @param {number} [options.updateFPS=0] - Video option to update how many times a second the diff --git a/packages/core/test/ImageResource.js b/packages/core/test/ImageResource.js index 3118cc7..33e6dbe 100644 --- a/packages/core/test/ImageResource.js +++ b/packages/core/test/ImageResource.js @@ -1,4 +1,5 @@ const { resources } = require('../'); +const { settings } = require('@pixi/settings'); const { ImageResource } = resources; const path = require('path'); @@ -53,7 +54,10 @@ image.src = this.slugUrl; - const resource = new ImageResource(image, { autoLoad: false }); + const resource = new ImageResource(image, { + autoLoad: false, + createBitmap: true, + }); return resource.load().then((res) => { @@ -85,4 +89,48 @@ expect(resource.bitmap).to.be.null; }); }); + + it('should handle the loaded event with createBitmapImage using global setting', function () + { + const old = settings.CREATE_IMAGE_BITMAP; + const image = new Image(); + + settings.CREATE_IMAGE_BITMAP = true; + image.src = this.slugUrl; + + const resource = new ImageResource(image, { autoLoad: false }); + + return resource.load().then((res) => + { + expect(res).to.equal(resource); + expect(resource.createBitmap).to.equal(true); + expect(resource.width).to.equal(100); + expect(resource.height).to.equal(100); + expect(resource.valid).to.be.true; + expect(resource.bitmap).to.be.instanceof(ImageBitmap); + settings.CREATE_IMAGE_BITMAP = old; + }); + }); + + it('should handle the loaded event with no createBitmapImage using global setting', function () + { + const old = settings.CREATE_IMAGE_BITMAP; + const image = new Image(); + + settings.CREATE_IMAGE_BITMAP = false; + image.src = this.slugUrl; + + const resource = new ImageResource(image, { autoLoad: false }); + + return resource.load().then((res) => + { + expect(res).to.equal(resource); + expect(resource.createBitmap).to.equal(false); + expect(resource.width).to.equal(100); + expect(resource.height).to.equal(100); + expect(resource.valid).to.be.true; + expect(resource.bitmap).to.be.null; + settings.CREATE_IMAGE_BITMAP = old; + }); + }); }); diff --git a/packages/settings/src/settings.js b/packages/settings/src/settings.js index ba20829..47abd10 100644 --- a/packages/settings/src/settings.js +++ b/packages/settings/src/settings.js @@ -201,15 +201,15 @@ CAN_UPLOAD_SAME_BUFFER: canUploadSameBuffer(), /** - * Enables bitmap creation before image load + * Enables bitmap creation before image load. This feature is experimental. * * @static * @name CREATE_IMAGE_BITMAP * @memberof PIXI.settings * @type {boolean} - * @default true + * @default false */ - CREATE_IMAGE_BITMAP: true, + CREATE_IMAGE_BITMAP: false, /** * If true PixiJS will Math.floor() x/y values when rendering, stopping pixel interpolation.