{"version":3,"sources":["jsdelivr-header.js","/npm/glfx-es6@0.0.3/lib/index.js"],"names":[],"mappings":"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","file":"/npm/glfx-es6@0.0.3/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/glfx-es6@0.0.3/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.splineInterpolate = undefined;\n\nvar _util = require('./util');\n\nObject.defineProperty(exports, 'splineInterpolate', {\n  enumerable: true,\n  get: function get() {\n    return _util.splineInterpolate;\n  }\n});\nexports.canvas = canvas;\n\nvar _store = require('./store');\n\nvar store = _interopRequireWildcard(_store);\n\nvar _texture = require('./texture');\n\nvar _texture2 = _interopRequireDefault(_texture);\n\nvar _shader = require('./shader');\n\nvar _shader2 = _interopRequireDefault(_shader);\n\nvar _filters = require('./filters');\n\nvar filters = _interopRequireWildcard(_filters);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction wrapTexture(texture) {\n  return {\n    _: texture,\n    loadContentsOf: function loadContentsOf(element) {\n      // Make sure that we're using the correct global WebGL context\n      store.set({ gl: this._.gl });\n      this._.loadContentsOf(element);\n    },\n    destroy: function destroy() {\n      // Make sure that we're using the correct global WebGL context\n      store.set({ gl: this._.gl });\n      this._.destroy();\n    }\n  };\n}\n\nfunction texture(element) {\n  return wrapTexture(_texture2.default.fromElement(element));\n}\n\nfunction initialize(width, height) {\n  var gl = store.get('gl');\n  var type = gl.UNSIGNED_BYTE;\n\n  // Go for floating point buffer textures if we can, it'll make the bokeh\n  // filter look a lot better. Note that on Windows, ANGLE does not let you\n  // render to a floating-point texture when linear filtering is enabled.\n  // See http://crbug.com/172278 for more information.\n  if (gl.getExtension('OES_texture_float') && gl.getExtension('OES_texture_float_linear')) {\n    var testTexture = new _texture2.default(100, 100, gl.RGBA, gl.FLOAT);\n    try {\n      // Only use gl.FLOAT if we can render to it\n      testTexture.drawTo(function () {\n        type = gl.FLOAT;\n      });\n    } catch (e) {}\n    testTexture.destroy();\n  }\n\n  if (this._.texture) this._.texture.destroy();\n  if (this._.spareTexture) this._.spareTexture.destroy();\n  this.width = width;\n  this.height = height;\n  this._.texture = new _texture2.default(width, height, gl.RGBA, type);\n  this._.spareTexture = new _texture2.default(width, height, gl.RGBA, type);\n  this._.extraTexture = this._.extraTexture || new _texture2.default(0, 0, gl.RGBA, type);\n  this._.flippedShader = this._.flippedShader || new _shader2.default(null, '\\\n    uniform sampler2D texture;\\\n    varying vec2 texCoord;\\\n    void main() {\\\n      gl_FragColor = texture2D(texture, vec2(texCoord.x, 1.0 - texCoord.y));\\\n    }\\\n  ');\n  this._.isInitialized = true;\n}\n\n/*\n   Draw a texture to the canvas, with an optional width and height to scale to.\n   If no width and height are given then the original texture width and height\n   are used.\n*/\nfunction draw(texture, width, height) {\n  if (!this._.isInitialized || texture._.width != this.width || texture._.height != this.height) {\n    initialize.call(this, width ? width : texture._.width, height ? height : texture._.height);\n  }\n\n  texture._.use();\n  this._.texture.drawTo(function () {\n    _shader2.default.getDefaultShader().drawRect();\n  });\n\n  return this;\n}\n\nfunction update() {\n  this._.texture.use();\n  this._.flippedShader.drawRect();\n  return this;\n}\n\nfunction replace(node) {\n  node.parentNode.insertBefore(this, node);\n  node.parentNode.removeChild(node);\n  return this;\n}\n\nfunction contents() {\n  var gl = store.get('gl');\n  var texture = new _texture2.default(this._.texture.width, this._.texture.height, gl.RGBA, gl.UNSIGNED_BYTE);\n  this._.texture.use();\n  texture.drawTo(function () {\n    _shader2.default.getDefaultShader().drawRect();\n  });\n  return wrapTexture(texture);\n}\n\n/*\n   Get a Uint8 array of pixel values: [r, g, b, a, r, g, b, a, ...]\n   Length of the array will be width * height * 4.\n*/\nfunction getPixelArray() {\n  var gl = store.get('gl');\n  var w = this._.texture.width;\n  var h = this._.texture.height;\n  var array = new Uint8Array(w * h * 4);\n  this._.texture.drawTo(function () {\n    gl.readPixels(0, 0, w, h, gl.RGBA, gl.UNSIGNED_BYTE, array);\n  });\n  return array;\n}\n\nfunction wrap(func) {\n  return function () {\n    // Make sure that we're using the correct global WebGL context\n    store.set({ gl: this._.gl });\n\n    // Now that the context has been switched, we can call the wrapped function\n    return func.apply(this, arguments);\n  };\n}\n\nfunction canvas() {\n  var canvas = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.createElement('canvas');\n\n  try {\n    store.set({ gl: canvas.getContext('experimental-webgl', { premultipliedAlpha: false }) });\n  } catch (e) {\n    store.set({ gl: null });\n  }\n  var gl = store.get('gl');\n  if (!gl) {\n    throw 'This browser does not support WebGL';\n  }\n  canvas._ = {\n    gl: gl,\n    isInitialized: false,\n    texture: null,\n    spareTexture: null,\n    flippedShader: null\n  };\n\n  // Core methods\n  canvas.texture = wrap(texture);\n  canvas.draw = wrap(draw);\n  canvas.update = wrap(update);\n  canvas.replace = wrap(replace);\n  canvas.contents = wrap(contents);\n  canvas.getPixelArray = wrap(getPixelArray);\n\n  // // Filter methods\n  canvas.brightnessContrast = wrap(filters.brightnessContrast);\n  canvas.hexagonalPixelate = wrap(filters.hexagonalPixelate);\n  canvas.hueSaturation = wrap(filters.hueSaturation);\n  canvas.colorHalftone = wrap(filters.colorHalftone);\n  canvas.triangleBlur = wrap(filters.triangleBlur);\n  canvas.unsharpMask = wrap(filters.unsharpMask);\n  canvas.perspective = wrap(filters.perspective);\n  canvas.matrixWarp = wrap(filters.matrixWarp);\n  canvas.bulgePinch = wrap(filters.bulgePinch);\n  canvas.tiltShift = wrap(filters.tiltShift);\n  canvas.dotScreen = wrap(filters.dotScreen);\n  canvas.edgeWork = wrap(filters.edgeWork);\n  canvas.lensBlur = wrap(filters.lensBlur);\n  canvas.zoomBlur = wrap(filters.zoomBlur);\n  canvas.noise = wrap(filters.noise);\n  canvas.denoise = wrap(filters.denoise);\n  canvas.curves = wrap(filters.curves);\n  canvas.swirl = wrap(filters.swirl);\n  canvas.ink = wrap(filters.ink);\n  canvas.vignette = wrap(filters.vignette);\n  canvas.vibrance = wrap(filters.vibrance);\n  canvas.sepia = wrap(filters.sepia);\n\n  return canvas;\n}"]}