Newer
Older
pixi.js / packages / core / src / textures / resources / createResource.js
import ImageResource from './ImageResource';
import SVGResource from './SVGResource';
import CanvasResource from './CanvasResource';
import VideoResource from './VideoResource';

export default function createResource(source)
{
    if (typeof source === 'string')
    {
        // search for file extension: period, 3-4 chars, then ?, # or EOL
        const result = (/\.(\w{3,4})(?:$|\?|#)/i).exec(source);

        if (result)
        {
            const extension = result[1].toLowerCase();

            if (VideoResource.TYPES.indexOf(extension) > -1)
            {
                return new VideoResource.fromUrl(source);
            }
            else if (SVGResource.TYPES.indexOf(extension) > -1)
            {
                return SVGResource.from(source);
            }
        }

        // probably an image!
        return ImageResource.from(source);
    }
    else if (source instanceof HTMLImageElement)
    {
        return new ImageResource(source);
    }
    else if (source instanceof HTMLCanvasElement)
    {
        return new CanvasResource(source);
    }
    else if (source instanceof HTMLVideoElement)
    {
        return new VideoResource(source);
    }

    return source;
}