Newer
Older
pixi.js / src / core / textures / resources / ImageResource.js
@Mat Groves Mat Groves on 28 Apr 2017 2 KB Sprite texture
import determineCrossOrigin from '../../utils/determineCrossOrigin';
import TextureResource from './TextureResource';

export default class ImageResource extends TextureResource
{
    constructor(source)
    {
        super(source);

        this.load = new Promise((resolve, reject) => {

            const source = this.source;

            source.onload = () => {
                this.loaded = true;
                source.onload = null;
                source.onerror = null;
                this.width = source.width;
                this.height = source.height;

                if(window.createImageBitmap)
                {
                    createImageBitmap(source).then((imageBitmap)=>{

                        this.source = imageBitmap;

                        resolve(this);

                    })
                }
                else
                {
                    resolve(this);
                }



            }



            if(source.complete && source.src)
            {
                this.loaded = true;
                source.onload = null;
                source.onerror = null;
                this.width = source.width;
                this.height = source.height;

                if(window.createImageBitmap)
                {
                    createImageBitmap(source).then((imageBitmap)=>{

                        this.source = imageBitmap;

                        resolve(this);

                    })
                }
                else
                {
                    resolve(this);
                }
            }

        //    source.onerror = () => {
          //      reject('unable to load "' + source.src + '" resource cannot be found')
            //}
        })
    }

    destroy()
    {
        this.source.src = '';
    }

    static from(url, crossorigin)
    {
        var image = new Image();

        if (crossorigin === undefined && url.indexOf('data:') !== 0)
        {
            image.crossOrigin = determineCrossOrigin(url);
        }

        image.src = url;
        return new ImageResource(image);
    }


}