{"version":3,"file":"BackgroundSystem.mjs","sources":["../../src/background/BackgroundSystem.ts"],"sourcesContent":["import { extensions, ExtensionType } from 'pixijs/extensions';\nimport { hex2rgb, hex2string, string2hex } from 'pixijs/utils';\n\nimport type { ExtensionMetadata } from 'pixijs/extensions';\nimport type { ISystem } from '../system/ISystem';\n\nexport interface BackgroundOptions\n{\n    /** the main canvas background alpha. From 0 (fully transparent) to 1 (fully opaque). */\n    alpha: number,\n    /** the main canvas background color. */\n    color: number | string,\n    /** sets if the renderer will clear the canvas or not before the new render pass. */\n    clearBeforeRender: boolean,\n}\n\n/**\n * The background system manages the background color and alpha of the main view.\n * @memberof PIXI\n */\nexport class BackgroundSystem implements ISystem<BackgroundOptions>\n{\n    /** @ignore */\n    static extension: ExtensionMetadata = {\n        type: [\n            ExtensionType.RendererSystem,\n            ExtensionType.CanvasRendererSystem\n        ],\n        name: 'background',\n    };\n\n    /**\n     * This sets if the CanvasRenderer will clear the canvas or not before the new render pass.\n     * If the scene is NOT transparent PixiJS will use a canvas sized fillRect operation every\n     * frame to set the canvas background color. If the scene is transparent PixiJS will use clearRect\n     * to clear the canvas every frame. Disable this by setting this to false. For example, if\n     * your game has a canvas filling background image you often don't need this set.\n     * @member {boolean}\n     * @default\n     */\n    public clearBeforeRender: boolean;\n\n    private _backgroundColorString: string;\n    private _backgroundColorRgba: number[];\n    private _backgroundColor: number;\n\n    constructor()\n    {\n        this.clearBeforeRender = true;\n\n        this._backgroundColor = 0x000000;\n\n        this._backgroundColorRgba = [0, 0, 0, 1];\n\n        this._backgroundColorString = '#000000';\n\n        this.color = this._backgroundColor; // run bg color setter\n        this.alpha = 1;\n    }\n\n    /**\n     * initiates the background system\n     * @param {BackgroundOptions} options - the options for the background colors\n     */\n    init(options: BackgroundOptions): void\n    {\n        this.clearBeforeRender = options.clearBeforeRender;\n\n        if (options.color)\n        {\n            this.color = typeof options.color === 'string'\n                ? string2hex(options.color)\n                : options.color;\n        }\n\n        this.alpha = options.alpha;\n    }\n\n    /**\n     * The background color to fill if not transparent\n     * @member {number}\n     */\n    get color(): number\n    {\n        return this._backgroundColor;\n    }\n\n    set color(value: number)\n    {\n        this._backgroundColor = value;\n        this._backgroundColorString = hex2string(value);\n        hex2rgb(value, this._backgroundColorRgba);\n    }\n\n    /**\n     * The background color alpha. Setting this to 0 will make the canvas transparent.\n     * @member {number}\n     */\n    get alpha(): number\n    {\n        return this._backgroundColorRgba[3];\n    }\n\n    set alpha(value: number)\n    {\n        this._backgroundColorRgba[3] = value;\n    }\n\n    /**\n     * The background color as an [R, G, B, A] array.\n     * @member {number[]}\n     * @protected\n     */\n    get colorRgba(): number[]\n    {\n        return this._backgroundColorRgba;\n    }\n\n    /**\n     * The background color as a string.\n     * @member {string}\n     * @protected\n     */\n    get colorString(): string\n    {\n        return this._backgroundColorString;\n    }\n\n    destroy(): void\n    {\n        // ka boom!\n    }\n}\n\nextensions.add(BackgroundSystem);\n"],"names":[],"mappings":";;;AAoBO,MAAM,gBACb,CAAA;AAAA,EAyBI,WACA,GAAA;AACI,IAAA,IAAA,CAAK,iBAAoB,GAAA,IAAA,CAAA;AAEzB,IAAA,IAAA,CAAK,gBAAmB,GAAA,CAAA,CAAA;AAExB,IAAA,IAAA,CAAK,oBAAuB,GAAA,CAAC,CAAG,EAAA,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AAEvC,IAAA,IAAA,CAAK,sBAAyB,GAAA,SAAA,CAAA;AAE9B,IAAA,IAAA,CAAK,QAAQ,IAAK,CAAA,gBAAA,CAAA;AAClB,IAAA,IAAA,CAAK,KAAQ,GAAA,CAAA,CAAA;AAAA,GACjB;AAAA,EAMA,KAAK,OACL,EAAA;AACI,IAAA,IAAA,CAAK,oBAAoB,OAAQ,CAAA,iBAAA,CAAA;AAEjC,IAAA,IAAI,QAAQ,KACZ,EAAA;AACI,MAAK,IAAA,CAAA,KAAA,GAAQ,OAAO,OAAQ,CAAA,KAAA,KAAU,WAChC,UAAW,CAAA,OAAA,CAAQ,KAAK,CAAA,GACxB,OAAQ,CAAA,KAAA,CAAA;AAAA,KAClB;AAEA,IAAA,IAAA,CAAK,QAAQ,OAAQ,CAAA,KAAA,CAAA;AAAA,GACzB;AAAA,EAMA,IAAI,KACJ,GAAA;AACI,IAAA,OAAO,IAAK,CAAA,gBAAA,CAAA;AAAA,GAChB;AAAA,EAEA,IAAI,MAAM,KACV,EAAA;AACI,IAAA,IAAA,CAAK,gBAAmB,GAAA,KAAA,CAAA;AACxB,IAAK,IAAA,CAAA,sBAAA,GAAyB,WAAW,KAAK,CAAA,CAAA;AAC9C,IAAQ,OAAA,CAAA,KAAA,EAAO,KAAK,oBAAoB,CAAA,CAAA;AAAA,GAC5C;AAAA,EAMA,IAAI,KACJ,GAAA;AACI,IAAA,OAAO,KAAK,oBAAqB,CAAA,CAAA,CAAA,CAAA;AAAA,GACrC;AAAA,EAEA,IAAI,MAAM,KACV,EAAA;AACI,IAAA,IAAA,CAAK,qBAAqB,CAAK,CAAA,GAAA,KAAA,CAAA;AAAA,GACnC;AAAA,EAOA,IAAI,SACJ,GAAA;AACI,IAAA,OAAO,IAAK,CAAA,oBAAA,CAAA;AAAA,GAChB;AAAA,EAOA,IAAI,WACJ,GAAA;AACI,IAAA,OAAO,IAAK,CAAA,sBAAA,CAAA;AAAA,GAChB;AAAA,EAEA,OACA,GAAA;AAAA,GAEA;AACJ,CAAA;AAhHa,iBAGF,SAA+B,GAAA;AAAA,EAClC,IAAM,EAAA;AAAA,IACF,aAAc,CAAA,cAAA;AAAA,IACd,aAAc,CAAA,oBAAA;AAAA,GAClB;AAAA,EACA,IAAM,EAAA,YAAA;AACV,CAAA,CAAA;AAyGJ,UAAA,CAAW,IAAI,gBAAgB,CAAA;;;;"}