{"version":3,"sources":["jsdelivr-header.js","/npm/@jimp/plugin-gaussian@0.22.12/src/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,2FCNA,IAAA,OAAA,QAAA,eAEA,SAMe,MACb,SAAS,EAAG,GAEV,GAAiB,iBAAN,EACT,OAAO,kBAAW,KAAK,KAAM,qBAAsB,GAGrD,GAAI,EAAI,EACN,OAAO,kBAAW,KAAK,KAAM,2BAA4B,GAG3D,MAAM,EAAK,KAAK,KAAS,KAAJ,GACf,EAAa,EAAL,EAAS,EACjB,EAAM,EAAI,EAAI,EACd,EAAQ,EAAM,KAAK,GAEnB,EAAU,GAEhB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,EAAQ,GAAK,GACb,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,MAAM,GAAO,EAAI,IAAO,GAAK,EAAI,IAAO,EACxC,EAAQ,GAAG,GAAK,KAAK,KAAK,EAAM,GAAO,CACzC,CACF,CAEA,IAAK,IAAI,EAAI,EAAG,EAAI,KAAK,OAAO,OAAQ,IACtC,IAAK,IAAI,EAAI,EAAG,EAAI,KAAK,OAAO,MAAO,IAAK,CAC1C,IAAI,EAAM,EACN,EAAQ,EACR,EAAO,EACP,EAAQ,EACR,EAAO,EAEX,IAAK,IAAI,EAAK,EAAG,EAAK,EAAO,IAAM,CACjC,IAAK,IAAI,EAAK,EAAG,EAAK,EAAO,IAAM,CACjC,MAAM,EAAK,KAAK,IACd,KAAK,OAAO,MAAQ,EACpB,KAAK,IAAI,EAAG,EAAK,EAAI,IAEjB,EAAK,KAAK,IACd,KAAK,OAAO,OAAS,EACrB,KAAK,IAAI,EAAG,EAAK,EAAI,IAEjB,EAAS,EAAQ,GAAI,GACrB,EAAO,EAAK,KAAK,OAAO,MAAQ,GAAO,EAE7C,GAAO,KAAK,OAAO,KAAK,GAAO,EAC/B,GAAS,KAAK,OAAO,KAAK,EAAM,GAAK,EACrC,GAAQ,KAAK,OAAO,KAAK,EAAM,GAAK,EACpC,GAAS,KAAK,OAAO,KAAK,EAAM,GAAK,EACrC,GAAQ,CACV,CAEA,MAAM,EAAO,EAAI,KAAK,OAAO,MAAQ,GAAM,EAE3C,KAAK,OAAO,KAAK,GAAO,KAAK,MAAM,EAAM,GACzC,KAAK,OAAO,KAAK,EAAM,GAAK,KAAK,MAAM,EAAQ,GAC/C,KAAK,OAAO,KAAK,EAAM,GAAK,KAAK,MAAM,EAAO,GAC9C,KAAK,OAAO,KAAK,EAAM,GAAK,KAAK,MAAM,EAAQ,EACjD,CACF,CAOF,OAJI,EAAA,sBAAc,IAChB,EAAG,KAAK,KAAM,KAAM,MAGf,IACT,IACA,QAAA,QAAA,SAAA,OAAA,gBAAA,QAAA,OAAA,QAAA,QAAA,QAAA","file":"/npm/@jimp/plugin-gaussian@0.22.12/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@jimp/plugin-gaussian@0.22.12/dist/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","import { isNodePattern, throwError } from \"@jimp/utils\";\n\n/**\n * Applies a true Gaussian blur to the image (warning: this is VERY slow)\n * @param {number} r the pixel radius of the blur\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\nexport default () => ({\n  gaussian(r, cb) {\n    // http://blog.ivank.net/fastest-gaussian-blur.html\n    if (typeof r !== \"number\") {\n      return throwError.call(this, \"r must be a number\", cb);\n    }\n\n    if (r < 1) {\n      return throwError.call(this, \"r must be greater than 0\", cb);\n    }\n\n    const rs = Math.ceil(r * 2.57); // significant radius\n    const range = rs * 2 + 1;\n    const rr2 = r * r * 2;\n    const rr2pi = rr2 * Math.PI;\n\n    const weights = [];\n\n    for (let y = 0; y < range; y++) {\n      weights[y] = [];\n      for (let x = 0; x < range; x++) {\n        const dsq = (x - rs) ** 2 + (y - rs) ** 2;\n        weights[y][x] = Math.exp(-dsq / rr2) / rr2pi;\n      }\n    }\n\n    for (let y = 0; y < this.bitmap.height; y++) {\n      for (let x = 0; x < this.bitmap.width; x++) {\n        let red = 0;\n        let green = 0;\n        let blue = 0;\n        let alpha = 0;\n        let wsum = 0;\n\n        for (let iy = 0; iy < range; iy++) {\n          for (let ix = 0; ix < range; ix++) {\n            const x1 = Math.min(\n              this.bitmap.width - 1,\n              Math.max(0, ix + x - rs)\n            );\n            const y1 = Math.min(\n              this.bitmap.height - 1,\n              Math.max(0, iy + y - rs)\n            );\n            const weight = weights[iy][ix];\n            const idx = (y1 * this.bitmap.width + x1) << 2;\n\n            red += this.bitmap.data[idx] * weight;\n            green += this.bitmap.data[idx + 1] * weight;\n            blue += this.bitmap.data[idx + 2] * weight;\n            alpha += this.bitmap.data[idx + 3] * weight;\n            wsum += weight;\n          }\n\n          const idx = (y * this.bitmap.width + x) << 2;\n\n          this.bitmap.data[idx] = Math.round(red / wsum);\n          this.bitmap.data[idx + 1] = Math.round(green / wsum);\n          this.bitmap.data[idx + 2] = Math.round(blue / wsum);\n          this.bitmap.data[idx + 3] = Math.round(alpha / wsum);\n        }\n      }\n    }\n\n    if (isNodePattern(cb)) {\n      cb.call(this, null, this);\n    }\n\n    return this;\n  },\n});\n"]}