shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$CanvasPool = function(global, require, module, exports) {
  var adapter = require("module$node_modules$pixi_DOT_js$lib$environment$adapter"), pow2 = require("module$node_modules$pixi_DOT_js$lib$maths$misc$pow2");
  global = require("module$node_modules$pixi_DOT_js$lib$utils$pool$GlobalResourceRegistry");
  "use strict";
  class CanvasPoolClass {
    constructor(canvasOptions) {
      this._canvasPool = Object.create(null);
      this.canvasOptions = canvasOptions || {};
      this.enableFullScreen = !1;
    }
    _createCanvasAndContext(pixelWidth, pixelHeight) {
      const canvas = adapter.DOMAdapter.get().createCanvas();
      canvas.width = pixelWidth;
      canvas.height = pixelHeight;
      pixelWidth = canvas.getContext("2d");
      return {canvas, context:pixelWidth};
    }
    getOptimalCanvasAndContext(minWidth, minHeight, resolution = 1) {
      minWidth = Math.ceil(minWidth * resolution - 1e-6);
      minHeight = Math.ceil(minHeight * resolution - 1e-6);
      minWidth = pow2.nextPow2(minWidth);
      minHeight = pow2.nextPow2(minHeight);
      resolution = (minWidth << 17) + (minHeight << 1);
      this._canvasPool[resolution] || (this._canvasPool[resolution] = []);
      (resolution = this._canvasPool[resolution].pop()) || (resolution = this._createCanvasAndContext(minWidth, minHeight));
      return resolution;
    }
    returnCanvasAndContext(canvasAndContext) {
      const {width, height} = canvasAndContext.canvas, key = (width << 17) + (height << 1);
      canvasAndContext.context.resetTransform();
      canvasAndContext.context.clearRect(0, 0, width, height);
      this._canvasPool[key].push(canvasAndContext);
    }
    clear() {
      this._canvasPool = {};
    }
  }
  require = new CanvasPoolClass();
  global.GlobalResourceRegistry.register(require);
  exports.CanvasPool = require;
  exports.CanvasPoolClass = CanvasPoolClass;
};

//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$CanvasPool.js.map
