@midscene/android-playground 1.0.1-beta-20251021060907.0 → 1.0.1-beta-20251024063839.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es/bin.mjs +5 -3
- package/dist/lib/bin.js +5 -3
- package/package.json +5 -5
- package/static/index.html +1 -1
- package/static/static/js/142.64c1e0d5.js +697 -0
- package/static/static/js/{825.c5ade4c6.js.map → 142.64c1e0d5.js.map} +1 -1
- package/static/static/js/async/150.d439b38c.js +158 -0
- package/static/static/js/async/{212.850ade70.js.map → 150.d439b38c.js.map} +1 -1
- package/static/static/js/async/{624.8a1fe2e8.js → 195.aa1e3152.js} +3 -3
- package/static/static/js/async/{624.8a1fe2e8.js.map → 195.aa1e3152.js.map} +1 -1
- package/static/static/js/async/260.d838b3b7.js +2 -0
- package/static/static/js/async/{544.18ac9afb.js.map → 260.d838b3b7.js.map} +1 -1
- package/static/static/js/async/271.71b3326b.js +3 -0
- package/static/static/js/async/{173.f2381e64.js.map → 271.71b3326b.js.map} +1 -1
- package/static/static/js/async/355.76c31308.js +1 -0
- package/static/static/js/async/{644.910ce3d0.js → 441.675c15a8.js} +1 -1
- package/static/static/js/async/45.ce50b37f.js +21 -0
- package/static/static/js/async/45.ce50b37f.js.map +1 -0
- package/static/static/js/async/586.ffc417d5.js +26 -0
- package/static/static/js/async/{329.261bc4a1.js.map → 586.ffc417d5.js.map} +1 -1
- package/static/static/js/async/631.9799e85f.js +30 -0
- package/static/static/js/async/{364.d88c3cff.js.map → 631.9799e85f.js.map} +1 -1
- package/static/static/js/async/{702.1f38a17e.js → 779.e7bfc2ed.js} +15 -15
- package/static/static/js/async/{702.1f38a17e.js.map → 779.e7bfc2ed.js.map} +1 -1
- package/static/static/js/async/782.f77f2205.js +2 -0
- package/static/static/js/async/782.f77f2205.js.map +1 -0
- package/static/static/js/index.dd3aa15e.js +30 -0
- package/static/static/js/index.dd3aa15e.js.map +1 -0
- package/static/static/js/lib-react.d7dec362.js +3 -0
- package/static/static/js/{lib-react.c74a0742.js.map → lib-react.d7dec362.js.map} +1 -1
- package/static/static/js/825.c5ade4c6.js +0 -697
- package/static/static/js/async/166.834644b5.js +0 -2
- package/static/static/js/async/166.834644b5.js.map +0 -1
- package/static/static/js/async/173.f2381e64.js +0 -3
- package/static/static/js/async/212.850ade70.js +0 -158
- package/static/static/js/async/329.261bc4a1.js +0 -26
- package/static/static/js/async/364.d88c3cff.js +0 -30
- package/static/static/js/async/544.18ac9afb.js +0 -2
- package/static/static/js/async/582.8f4b5264.js +0 -21
- package/static/static/js/async/582.8f4b5264.js.map +0 -1
- package/static/static/js/async/983.b98b40af.js +0 -1
- package/static/static/js/index.eb785992.js +0 -30
- package/static/static/js/index.eb785992.js.map +0 -1
- package/static/static/js/lib-react.c74a0742.js +0 -3
- /package/static/static/js/{825.c5ade4c6.js.LICENSE.txt → 142.64c1e0d5.js.LICENSE.txt} +0 -0
- /package/static/static/js/{index.eb785992.js.LICENSE.txt → index.dd3aa15e.js.LICENSE.txt} +0 -0
- /package/static/static/js/{lib-react.c74a0742.js.LICENSE.txt → lib-react.d7dec362.js.LICENSE.txt} +0 -0
- /package/static/static/wasm/{9e906fbf55e08f98.module.wasm → 9e906fbf.module.wasm} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/js/async/624.8a1fe2e8.js","sources":["webpack://android-playground/../../node_modules/.pnpm/@silvia-odwyer+photon@0.3.3/node_modules/@silvia-odwyer/photon/photon_rs.js"],"sourcesContent":["let wasm;\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\n/**\n * Alter a select channel by incrementing or decrementing its value by a constant.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `channel` - The channel you wish to alter, it should be either 0, 1 or 2,\n * representing R, G, or B respectively. (O=Red, 1=Green, 2=Blue)\n * * `amount` - The amount to increment/decrement the channel's value by for that pixel.\n * A positive value will increment/decrement the channel's value, a negative value will decrement the channel's value.\n *\n * ## Example\n *\n * ```no_run\n * // For example, to increase the Red channel for all pixels by 10:\n * use photon_rs::channels::alter_channel;\n * use photon_rs::native::{open_image};\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * alter_channel(&mut img, 0_usize, 10_i16);\n * ```\n *\n * Adds a constant to a select R, G, or B channel's value.\n *\n * ### Decrease a channel's value\n * // For example, to decrease the Green channel for all pixels by 20:\n * ```no_run\n * use photon_rs::channels::alter_channel;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * alter_channel(&mut img, 1_usize, -20_i16);\n * ```\n * **Note**: Note the use of a minus symbol when decreasing the channel.\n * @param {PhotonImage} img\n * @param {number} channel\n * @param {number} amt\n */\nexport function alter_channel(img, channel, amt) {\n _assertClass(img, PhotonImage);\n wasm.alter_channel(img.__wbg_ptr, channel, amt);\n}\n\n/**\n * Increment or decrement every pixel's Red channel by a constant.\n *\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `amt` - The amount to increment or decrement the channel's value by for that pixel.\n *\n * # Example\n *\n * ```no_run\n * // For example, to increase the Red channel for all pixels by 10:\n * use photon_rs::channels::alter_red_channel;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * alter_red_channel(&mut img, 10_i16);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} amt\n */\nexport function alter_red_channel(photon_image, amt) {\n _assertClass(photon_image, PhotonImage);\n wasm.alter_red_channel(photon_image.__wbg_ptr, amt);\n}\n\n/**\n * Increment or decrement every pixel's Green channel by a constant.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `amt` - The amount to increment/decrement the channel's value by for that pixel.\n *\n * # Example\n *\n * ```no_run\n * // For example, to increase the Green channel for all pixels by 20:\n * use photon_rs::channels::alter_green_channel;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * alter_green_channel(&mut img, 20_i16);\n * ```\n * @param {PhotonImage} img\n * @param {number} amt\n */\nexport function alter_green_channel(img, amt) {\n _assertClass(img, PhotonImage);\n wasm.alter_green_channel(img.__wbg_ptr, amt);\n}\n\n/**\n * Increment or decrement every pixel's Blue channel by a constant.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `amt` - The amount to increment or decrement the channel's value by for that pixel.\n *\n * # Example\n *\n * ```no_run\n * // For example, to increase the Blue channel for all pixels by 10:\n * use photon_rs::channels::alter_blue_channel;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * alter_blue_channel(&mut img, 10_i16);\n * ```\n * @param {PhotonImage} img\n * @param {number} amt\n */\nexport function alter_blue_channel(img, amt) {\n _assertClass(img, PhotonImage);\n wasm.alter_blue_channel(img.__wbg_ptr, amt);\n}\n\n/**\n * Increment/decrement two channels' values simultaneously by adding an amt to each channel per pixel.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `channel1` - A usize from 0 to 2 that represents either the R, G or B channels.\n * * `amt1` - The amount to increment/decrement the channel's value by for that pixel.\n * * `channel2` -A usize from 0 to 2 that represents either the R, G or B channels.\n * * `amt2` - The amount to increment/decrement the channel's value by for that pixel.\n *\n * # Example\n *\n * ```no_run\n * // For example, to increase the values of the Red and Blue channels per pixel:\n * use photon_rs::channels::alter_two_channels;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * alter_two_channels(&mut img, 0_usize, 10_i16, 2_usize, 20_i16);\n * ```\n * @param {PhotonImage} img\n * @param {number} channel1\n * @param {number} amt1\n * @param {number} channel2\n * @param {number} amt2\n */\nexport function alter_two_channels(img, channel1, amt1, channel2, amt2) {\n _assertClass(img, PhotonImage);\n wasm.alter_two_channels(img.__wbg_ptr, channel1, amt1, channel2, amt2);\n}\n\n/**\n * Increment all 3 channels' values by adding an amt to each channel per pixel.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `r_amt` - The amount to increment/decrement the Red channel by.\n * * `g_amt` - The amount to increment/decrement the Green channel by.\n * * `b_amt` - The amount to increment/decrement the Blue channel by.\n *\n * # Example\n *\n * ```no_run\n * // For example, to increase the values of the Red channel by 10, the Green channel by 20,\n * // and the Blue channel by 50:\n * use photon_rs::channels::alter_channels;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * alter_channels(&mut img, 10_i16, 20_i16, 50_i16);\n * ```\n * @param {PhotonImage} img\n * @param {number} r_amt\n * @param {number} g_amt\n * @param {number} b_amt\n */\nexport function alter_channels(img, r_amt, g_amt, b_amt) {\n _assertClass(img, PhotonImage);\n wasm.alter_channels(img.__wbg_ptr, r_amt, g_amt, b_amt);\n}\n\n/**\n * Set a certain channel to zero, thus removing the channel's influence in the pixels' final rendered colour.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `channel` - The channel to be removed; must be a usize from 0 to 2, with 0 representing Red, 1 representing Green, and 2 representing Blue.\n * * `min_filter` - Minimum filter. Value between 0 and 255. Only remove the channel if the current pixel's channel value is less than this minimum filter. To completely\n * remove the channel, set this value to 255, to leave the channel as is, set to 0, and to set a channel to zero for a pixel whose red value is greater than 50,\n * then channel would be 0 and min_filter would be 50.\n *\n * # Example\n *\n * ```no_run\n * // For example, to remove the Red channel with a min_filter of 100:\n * use photon_rs::channels::remove_channel;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * remove_channel(&mut img, 0_usize, 100_u8);\n * ```\n * @param {PhotonImage} img\n * @param {number} channel\n * @param {number} min_filter\n */\nexport function remove_channel(img, channel, min_filter) {\n _assertClass(img, PhotonImage);\n wasm.remove_channel(img.__wbg_ptr, channel, min_filter);\n}\n\n/**\n * Remove the Red channel's influence in an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `min_filter` - Only remove the channel if the current pixel's channel value is less than this minimum filter.\n *\n * # Example\n *\n * ```no_run\n * // For example, to remove the red channel for red channel pixel values less than 50:\n * use photon_rs::channels::remove_red_channel;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * remove_red_channel(&mut img, 50_u8);\n * ```\n * @param {PhotonImage} img\n * @param {number} min_filter\n */\nexport function remove_red_channel(img, min_filter) {\n _assertClass(img, PhotonImage);\n wasm.remove_red_channel(img.__wbg_ptr, min_filter);\n}\n\n/**\n * Remove the Green channel's influence in an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `min_filter` - Only remove the channel if the current pixel's channel value is less than this minimum filter.\n *\n * # Example\n *\n * ```no_run\n * // For example, to remove the green channel for green channel pixel values less than 50:\n * use photon_rs::channels::remove_green_channel;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * remove_green_channel(&mut img, 50_u8);\n * ```\n * @param {PhotonImage} img\n * @param {number} min_filter\n */\nexport function remove_green_channel(img, min_filter) {\n _assertClass(img, PhotonImage);\n wasm.remove_green_channel(img.__wbg_ptr, min_filter);\n}\n\n/**\n * Remove the Blue channel's influence in an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `min_filter` - Only remove the channel if the current pixel's channel value is less than this minimum filter.\n *\n * # Example\n *\n * ```no_run\n * // For example, to remove the blue channel for blue channel pixel values less than 50:\n * use photon_rs::channels::remove_blue_channel;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * remove_blue_channel(&mut img, 50_u8);\n * ```\n * @param {PhotonImage} img\n * @param {number} min_filter\n */\nexport function remove_blue_channel(img, min_filter) {\n _assertClass(img, PhotonImage);\n wasm.remove_blue_channel(img.__wbg_ptr, min_filter);\n}\n\n/**\n * Swap two channels.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `channel1` - An index from 0 to 2, representing the Red, Green or Blue channels respectively. Red would be represented by 0, Green by 1, and Blue by 2.\n * * `channel2` - An index from 0 to 2, representing the Red, Green or Blue channels respectively. Same as above.\n *\n * # Example\n *\n * ```no_run\n * // For example, to swap the values of the Red channel with the values of the Blue channel:\n * use photon_rs::channels::swap_channels;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * swap_channels(&mut img, 0_usize, 2_usize);\n * ```\n * @param {PhotonImage} img\n * @param {number} channel1\n * @param {number} channel2\n */\nexport function swap_channels(img, channel1, channel2) {\n _assertClass(img, PhotonImage);\n wasm.swap_channels(img.__wbg_ptr, channel1, channel2);\n}\n\n/**\n * Invert RGB value of an image.\n *\n * # Arguments\n * * `photon_image` - A DynamicImage that contains a view into the image.\n * # Example\n *\n * ```no_run\n * use photon_rs::channels::invert;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * invert(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function invert(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.invert(photon_image.__wbg_ptr);\n}\n\n/**\n * Selective hue rotation.\n *\n * Only rotate the hue of a pixel if its RGB values are within a specified range.\n * This function only rotates a pixel's hue to another if it is visually similar to the colour specified.\n * For example, if a user wishes all pixels that are blue to be changed to red, they can selectively specify only the blue pixels to be changed.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `ref_color` - The `RGB` value of the reference color (to be compared to)\n * * `degrees` - The amount of degrees to hue rotate by.\n *\n * # Example\n *\n * ```no_run\n * // For example, to only rotate the pixels that are of RGB value RGB{20, 40, 60}:\n * use photon_rs::Rgb;\n * use photon_rs::channels::selective_hue_rotate;\n * use photon_rs::native::open_image;\n *\n * let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * selective_hue_rotate(&mut img, ref_color, 180_f32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {Rgb} ref_color\n * @param {number} degrees\n */\nexport function selective_hue_rotate(photon_image, ref_color, degrees) {\n _assertClass(photon_image, PhotonImage);\n _assertClass(ref_color, Rgb);\n var ptr0 = ref_color.__destroy_into_raw();\n wasm.selective_hue_rotate(photon_image.__wbg_ptr, ptr0, degrees);\n}\n\n/**\n * Selectively change pixel colours which are similar to the reference colour provided.\n *\n * Similarity between two colours is calculated via the CIE76 formula.\n * Only changes the color of a pixel if its similarity to the reference colour is within the range in the algorithm.\n * For example, with this function, a user can change the color of all blue pixels by mixing them with red by 10%.\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `ref_color` - The `RGB` value of the reference color (to be compared to)\n * * `new_color` - The `RGB` value of the new color (to be mixed with the matched pixels)\n * * `fraction` - The amount of mixing the new colour with the matched pixels\n *\n * # Example\n *\n * ```no_run\n * // For example, to only change the color of pixels that are similar to the RGB value RGB{200, 120, 30} by mixing RGB{30, 120, 200} with 25%:\n * use photon_rs::Rgb;\n * use photon_rs::channels::selective_color_convert;\n * use photon_rs::native::open_image;\n *\n * let ref_color = Rgb::new(200, 120, 30);\n * let new_color = Rgb::new(30, 120, 200);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * selective_color_convert(&mut img, ref_color, new_color, 0.25);\n * ```\n * @param {PhotonImage} photon_image\n * @param {Rgb} ref_color\n * @param {Rgb} new_color\n * @param {number} fraction\n */\nexport function selective_color_convert(photon_image, ref_color, new_color, fraction) {\n _assertClass(photon_image, PhotonImage);\n _assertClass(ref_color, Rgb);\n var ptr0 = ref_color.__destroy_into_raw();\n _assertClass(new_color, Rgb);\n var ptr1 = new_color.__destroy_into_raw();\n wasm.selective_color_convert(photon_image.__wbg_ptr, ptr0, ptr1, fraction);\n}\n\n/**\n * Selectively lighten an image.\n *\n * Only lighten the hue of a pixel if its colour matches or is similar to the RGB colour specified.\n * For example, if a user wishes all pixels that are blue to be lightened, they can selectively specify only the blue pixels to be changed.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `ref_color` - The `RGB` value of the reference color (to be compared to)\n * * `amt` - The level from 0 to 1 to lighten the hue by. Increasing by 10% would have an `amt` of 0.1\n *\n * # Example\n *\n * ```no_run\n * // For example, to only lighten the pixels that are of or similar to RGB value RGB{20, 40, 60}:\n * use photon_rs::Rgb;\n * use photon_rs::channels::selective_lighten;\n * use photon_rs::native::open_image;\n *\n * let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * selective_lighten(&mut img, ref_color, 0.2_f32);\n * ```\n * @param {PhotonImage} img\n * @param {Rgb} ref_color\n * @param {number} amt\n */\nexport function selective_lighten(img, ref_color, amt) {\n _assertClass(img, PhotonImage);\n _assertClass(ref_color, Rgb);\n var ptr0 = ref_color.__destroy_into_raw();\n wasm.selective_lighten(img.__wbg_ptr, ptr0, amt);\n}\n\n/**\n * Selectively desaturate pixel colours which are similar to the reference colour provided.\n *\n * Similarity between two colours is calculated via the CIE76 formula.\n * Only desaturates the hue of a pixel if its similarity to the reference colour is within the range in the algorithm.\n * For example, if a user wishes all pixels that are blue to be desaturated by 0.1, they can selectively specify only the blue pixels to be changed.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `ref_color` - The `RGB` value of the reference color (to be compared to)\n * * `amt` - The amount of desaturate the colour by.\n *\n * # Example\n *\n * ```no_run\n * // For example, to only desaturate the pixels that are similar to the RGB value RGB{20, 40, 60}:\n * use photon_rs::Rgb;\n * use photon_rs::channels::selective_desaturate;\n * use photon_rs::native::open_image;\n *\n * let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * selective_desaturate(&mut img, ref_color, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {Rgb} ref_color\n * @param {number} amt\n */\nexport function selective_desaturate(img, ref_color, amt) {\n _assertClass(img, PhotonImage);\n _assertClass(ref_color, Rgb);\n var ptr0 = ref_color.__destroy_into_raw();\n wasm.selective_desaturate(img.__wbg_ptr, ptr0, amt);\n}\n\n/**\n * Selectively saturate pixel colours which are similar to the reference colour provided.\n *\n * Similarity between two colours is calculated via the CIE76 formula.\n * Only saturates the hue of a pixel if its similarity to the reference colour is within the range in the algorithm.\n * For example, if a user wishes all pixels that are blue to have an increase in saturation by 10%, they can selectively specify only the blue pixels to be changed.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `ref_color` - The `RGB` value of the reference color (to be compared to)\n * * `amt` - The amount of saturate the colour by.\n *\n * # Example\n *\n * ```no_run\n * // For example, to only increase the saturation of pixels that are similar to the RGB value RGB{20, 40, 60}:\n * use photon_rs::Rgb;\n * use photon_rs::channels::selective_saturate;\n * use photon_rs::native::open_image;\n *\n * let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * selective_saturate(&mut img, ref_color, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {Rgb} ref_color\n * @param {number} amt\n */\nexport function selective_saturate(img, ref_color, amt) {\n _assertClass(img, PhotonImage);\n _assertClass(ref_color, Rgb);\n var ptr0 = ref_color.__destroy_into_raw();\n wasm.selective_saturate(img.__wbg_ptr, ptr0, amt);\n}\n\n/**\n * Selectively changes a pixel to greyscale if it is *not* visually similar or close to the colour specified.\n * Only changes the colour of a pixel if its RGB values are within a specified range.\n *\n * (Similarity between two colours is calculated via the CIE76 formula.)\n * For example, if a user wishes all pixels that are *NOT* blue to be displayed in greyscale, they can selectively specify only the blue pixels to be\n * kept in the photo.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `ref_color` - The `RGB` value of the reference color (to be compared to)\n *\n * # Example\n *\n * ```no_run\n * // For example, to greyscale all pixels that are *not* visually similar to the RGB colour RGB{20, 40, 60}:\n * use photon_rs::Rgb;\n * use photon_rs::channels::selective_greyscale;\n * use photon_rs::native::open_image;\n *\n * let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * selective_greyscale(img, ref_color);\n * ```\n * @param {PhotonImage} photon_image\n * @param {Rgb} ref_color\n */\nexport function selective_greyscale(photon_image, ref_color) {\n _assertClass(photon_image, PhotonImage);\n var ptr0 = photon_image.__destroy_into_raw();\n _assertClass(ref_color, Rgb);\n var ptr1 = ref_color.__destroy_into_raw();\n wasm.selective_greyscale(ptr0, ptr1);\n}\n\n/**\n * Apply a monochrome effect of a certain colour.\n *\n * It does so by averaging the R, G, and B values of a pixel, and then adding a\n * separate value to that averaged value for each channel to produce a tint.\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `r_offset` - The value to add to the Red channel per pixel.\n * * `g_offset` - The value to add to the Green channel per pixel.\n * * `b_offset` - The value to add to the Blue channel per pixel.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a monochrome effect to an image:\n * use photon_rs::monochrome::monochrome;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * monochrome(&mut img, 40_u32, 50_u32, 100_u32);\n * ```\n * @param {PhotonImage} img\n * @param {number} r_offset\n * @param {number} g_offset\n * @param {number} b_offset\n */\nexport function monochrome(img, r_offset, g_offset, b_offset) {\n _assertClass(img, PhotonImage);\n wasm.monochrome(img.__wbg_ptr, r_offset, g_offset, b_offset);\n}\n\n/**\n * Convert an image to sepia.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * // For example, to sepia an image of type `PhotonImage`:\n * use photon_rs::monochrome::sepia;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * sepia(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function sepia(img) {\n _assertClass(img, PhotonImage);\n wasm.sepia(img.__wbg_ptr);\n}\n\n/**\n * Convert an image to grayscale using the conventional averaging algorithm.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * // For example, to convert an image of type `PhotonImage` to grayscale:\n * use photon_rs::monochrome::grayscale;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * grayscale(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function grayscale(img) {\n _assertClass(img, PhotonImage);\n wasm.grayscale(img.__wbg_ptr);\n}\n\n/**\n * Convert an image to grayscale with a human corrected factor, to account for human vision.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * // For example, to convert an image of type `PhotonImage` to grayscale with a human corrected factor:\n * use photon_rs::monochrome::grayscale_human_corrected;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * grayscale_human_corrected(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function grayscale_human_corrected(img) {\n _assertClass(img, PhotonImage);\n wasm.grayscale_human_corrected(img.__wbg_ptr);\n}\n\n/**\n * Desaturate an image by getting the min/max of each pixel's RGB values.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * // For example, to desaturate an image:\n * use photon_rs::monochrome::desaturate;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * desaturate(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function desaturate(img) {\n _assertClass(img, PhotonImage);\n wasm.desaturate(img.__wbg_ptr);\n}\n\n/**\n * Uses a min. decomposition algorithm to convert an image to greyscale.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to decompose an image with min decomposition:\n * use photon_rs::monochrome::decompose_min;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * decompose_min(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function decompose_min(img) {\n _assertClass(img, PhotonImage);\n wasm.decompose_min(img.__wbg_ptr);\n}\n\n/**\n * Uses a max. decomposition algorithm to convert an image to greyscale.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to decompose an image with max decomposition:\n * use photon_rs::monochrome::decompose_max;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * decompose_max(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function decompose_max(img) {\n _assertClass(img, PhotonImage);\n wasm.decompose_max(img.__wbg_ptr);\n}\n\n/**\n * Employ only a limited number of gray shades in an image.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `num_shades` - The number of grayscale shades to be displayed in the image.\n *\n * # Example\n *\n * ```no_run\n * // For example, to limit an image to four shades of gray only:\n * use photon_rs::monochrome::grayscale_shades;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * grayscale_shades(&mut img, 4_u8);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} num_shades\n */\nexport function grayscale_shades(photon_image, num_shades) {\n _assertClass(photon_image, PhotonImage);\n wasm.grayscale_shades(photon_image.__wbg_ptr, num_shades);\n}\n\n/**\n * Convert an image to grayscale by setting a pixel's 3 RGB values to the Red channel's value.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * use photon_rs::monochrome::r_grayscale;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * r_grayscale(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function r_grayscale(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.r_grayscale(photon_image.__wbg_ptr);\n}\n\n/**\n * Convert an image to grayscale by setting a pixel's 3 RGB values to the Green channel's value.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * use photon_rs::monochrome::g_grayscale;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * g_grayscale(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function g_grayscale(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.g_grayscale(photon_image.__wbg_ptr);\n}\n\n/**\n * Convert an image to grayscale by setting a pixel's 3 RGB values to the Blue channel's value.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * use photon_rs::monochrome::b_grayscale;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * b_grayscale(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function b_grayscale(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.b_grayscale(photon_image.__wbg_ptr);\n}\n\n/**\n * Convert an image to grayscale by setting a pixel's 3 RGB values to a chosen channel's value.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `channel` - A usize representing the channel from 0 to 2. O represents the Red channel, 1 the Green channel, and 2 the Blue channel.\n *\n * # Example\n * To grayscale using only values from the Red channel:\n * ```no_run\n * use photon_rs::monochrome::single_channel_grayscale;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * single_channel_grayscale(&mut img, 0_usize);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} channel\n */\nexport function single_channel_grayscale(photon_image, channel) {\n _assertClass(photon_image, PhotonImage);\n wasm.single_channel_grayscale(photon_image.__wbg_ptr, channel);\n}\n\n/**\n * Threshold an image using a standard thresholding algorithm.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `threshold` - The amount the image should be thresholded by from 0 to 255.\n * # Example\n *\n * ```no_run\n * // For example, to threshold an image of type `PhotonImage`:\n * use photon_rs::monochrome::threshold;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * threshold(&mut img, 30_u32);\n * ```\n * @param {PhotonImage} img\n * @param {number} threshold\n */\nexport function threshold(img, threshold) {\n _assertClass(img, PhotonImage);\n wasm.threshold(img.__wbg_ptr, threshold);\n}\n\n/**\n * Applies gamma correction to an image.\n * # Arguments\n * * `photon_image` - A PhotonImage that contains a view into the image.\n * * `red` - Gamma value for red channel.\n * * `green` - Gamma value for green channel.\n * * `blue` - Gamma value for blue channel.\n * # Example\n *\n * ```no_run\n * // For example, to turn an image of type `PhotonImage` into a gamma corrected image:\n * use photon_rs::colour_spaces::gamma_correction;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * gamma_correction(&mut img, 2.2, 2.2, 2.2);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} red\n * @param {number} green\n * @param {number} blue\n */\nexport function gamma_correction(photon_image, red, green, blue) {\n _assertClass(photon_image, PhotonImage);\n wasm.gamma_correction(photon_image.__wbg_ptr, red, green, blue);\n}\n\n/**\n * Image manipulation effects in the HSLuv colour space\n *\n * Effects include:\n * * **saturate** - Saturation increase.\n * * **desaturate** - Desaturate the image.\n * * **shift_hue** - Hue rotation by a specified number of degrees.\n * * **darken** - Decrease the brightness.\n * * **lighten** - Increase the brightness.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `mode` - The effect desired to be applied. Choose from: `saturate`, `desaturate`, `shift_hue`, `darken`, `lighten`\n * * `amt` - A float value from 0 to 1 which represents the amount the effect should be increased by.\n * # Example\n * ```no_run\n * // For example to increase the saturation by 10%:\n * use photon_rs::colour_spaces::hsluv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * hsluv(&mut img, \"saturate\", 0.1_f32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {string} mode\n * @param {number} amt\n */\nexport function hsluv(photon_image, mode, amt) {\n _assertClass(photon_image, PhotonImage);\n const ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.hsluv(photon_image.__wbg_ptr, ptr0, len0, amt);\n}\n\n/**\n * Image manipulation effects in the LCh colour space\n *\n * Effects include:\n * * **saturate** - Saturation increase.\n * * **desaturate** - Desaturate the image.\n * * **shift_hue** - Hue rotation by a specified number of degrees.\n * * **darken** - Decrease the brightness.\n * * **lighten** - Increase the brightness.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `mode` - The effect desired to be applied. Choose from: `saturate`, `desaturate`, `shift_hue`, `darken`, `lighten`\n * * `amt` - A float value from 0 to 1 which represents the amount the effect should be increased by.\n * # Example\n * ```no_run\n * // For example to increase the saturation by 10%:\n * use photon_rs::colour_spaces::lch;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * lch(&mut img, \"saturate\", 0.1_f32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {string} mode\n * @param {number} amt\n */\nexport function lch(photon_image, mode, amt) {\n _assertClass(photon_image, PhotonImage);\n const ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.lch(photon_image.__wbg_ptr, ptr0, len0, amt);\n}\n\n/**\n * Image manipulation effects in the HSL colour space.\n *\n * Effects include:\n * * **saturate** - Saturation increase.\n * * **desaturate** - Desaturate the image.\n * * **shift_hue** - Hue rotation by a specified number of degrees.\n * * **darken** - Decrease the brightness.\n * * **lighten** - Increase the brightness.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `mode` - The effect desired to be applied. Choose from: `saturate`, `desaturate`, `shift_hue`, `darken`, `lighten`\n * * `amt` - A float value from 0 to 1 which represents the amount the effect should be increased by.\n * # Example\n * ```no_run\n * // For example to increase the saturation by 10%:\n * use photon_rs::colour_spaces::hsl;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * hsl(&mut img, \"saturate\", 0.1_f32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {string} mode\n * @param {number} amt\n */\nexport function hsl(photon_image, mode, amt) {\n _assertClass(photon_image, PhotonImage);\n const ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.hsl(photon_image.__wbg_ptr, ptr0, len0, amt);\n}\n\n/**\n * Image manipulation in the HSV colour space.\n *\n * Effects include:\n * * **saturate** - Saturation increase.\n * * **desaturate** - Desaturate the image.\n * * **shift_hue** - Hue rotation by a specified number of degrees.\n * * **darken** - Decrease the brightness.\n * * **lighten** - Increase the brightness.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `mode` - The effect desired to be applied. Choose from: `saturate`, `desaturate`, `shift_hue`, `darken`, `lighten`\n * * `amt` - A float value from 0 to 1 which represents the amount the effect should be increased by.\n *\n * # Example\n * ```no_run\n * // For example to increase the saturation by 10%:\n * use photon_rs::colour_spaces::hsv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * hsv(&mut img, \"saturate\", 0.1_f32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {string} mode\n * @param {number} amt\n */\nexport function hsv(photon_image, mode, amt) {\n _assertClass(photon_image, PhotonImage);\n const ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.hsv(photon_image.__wbg_ptr, ptr0, len0, amt);\n}\n\n/**\n * Shift hue by a specified number of degrees in the HSL colour space.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `mode` - A float value from 0 to 1 which is the amount to shift the hue by, or hue rotate by.\n *\n * # Example\n * ```no_run\n * // For example to hue rotate/shift the hue by 120 degrees in the HSL colour space:\n * use photon_rs::colour_spaces::hue_rotate_hsl;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * hue_rotate_hsl(&mut img, 120_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} degrees\n */\nexport function hue_rotate_hsl(img, degrees) {\n _assertClass(img, PhotonImage);\n wasm.hue_rotate_hsl(img.__wbg_ptr, degrees);\n}\n\n/**\n * Shift hue by a specified number of degrees in the HSV colour space.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `mode` - A float value from 0 to 1 which is the amount to shift the hue by, or hue rotate by.\n *\n * # Example\n * ```no_run\n * // For example to hue rotate/shift the hue by 120 degrees in the HSV colour space:\n * use photon_rs::colour_spaces::hue_rotate_hsv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * hue_rotate_hsv(&mut img, 120_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} degrees\n */\nexport function hue_rotate_hsv(img, degrees) {\n _assertClass(img, PhotonImage);\n wasm.hue_rotate_hsv(img.__wbg_ptr, degrees);\n}\n\n/**\n * Shift hue by a specified number of degrees in the LCh colour space.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `mode` - A float value from 0 to 1 which is the amount to shift the hue by, or hue rotate by.\n *\n * # Example\n * ```no_run\n * // For example to hue rotate/shift the hue by 120 degrees in the HSL colour space:\n * use photon_rs::colour_spaces::hue_rotate_lch;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * hue_rotate_lch(&mut img, 120_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} degrees\n */\nexport function hue_rotate_lch(img, degrees) {\n _assertClass(img, PhotonImage);\n wasm.hue_rotate_lch(img.__wbg_ptr, degrees);\n}\n\n/**\n * Shift hue by a specified number of degrees in the HSLuv colour space.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `mode` - A float value from 0 to 1 which is the amount to shift the hue by, or hue rotate by.\n *\n * # Example\n * ```no_run\n * // For example to hue rotate/shift the hue by 120 degrees in the HSL colour space:\n * use photon_rs::colour_spaces::hue_rotate_hsluv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * hue_rotate_hsluv(&mut img, 120_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} degrees\n */\nexport function hue_rotate_hsluv(img, degrees) {\n _assertClass(img, PhotonImage);\n wasm.hue_rotate_hsluv(img.__wbg_ptr, degrees);\n}\n\n/**\n * Increase the image's saturation by converting each pixel's colour to the HSL colour space\n * and increasing the colour's saturation.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to increase the saturation by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Increasing saturation by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to increase saturation by 10% in the HSL colour space:\n * use photon_rs::colour_spaces::saturate_hsl;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * saturate_hsl(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function saturate_hsl(img, level) {\n _assertClass(img, PhotonImage);\n wasm.saturate_hsl(img.__wbg_ptr, level);\n}\n\n/**\n * Increase the image's saturation in the LCh colour space.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to increase the saturation by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Increasing saturation by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to increase saturation by 40% in the Lch colour space:\n * use photon_rs::colour_spaces::saturate_lch;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * saturate_lch(&mut img, 0.4_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function saturate_lch(img, level) {\n _assertClass(img, PhotonImage);\n wasm.saturate_lch(img.__wbg_ptr, level);\n}\n\n/**\n * Increase the image's saturation in the HSLuv colour space.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to increase the saturation by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Increasing saturation by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to increase saturation by 40% in the HSLuv colour space:\n * use photon_rs::colour_spaces::saturate_hsluv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * saturate_hsluv(&mut img, 0.4_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function saturate_hsluv(img, level) {\n _assertClass(img, PhotonImage);\n wasm.saturate_hsluv(img.__wbg_ptr, level);\n}\n\n/**\n * Increase the image's saturation in the HSV colour space.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level by which to increase the saturation by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Increasing saturation by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to increase saturation by 30% in the HSV colour space:\n * use photon_rs::colour_spaces::saturate_hsv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * saturate_hsv(&mut img, 0.3_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function saturate_hsv(img, level) {\n _assertClass(img, PhotonImage);\n wasm.saturate_hsv(img.__wbg_ptr, level);\n}\n\n/**\n * Lighten an image by a specified amount in the LCh colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to lighten the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Lightening by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to lighten an image by 10% in the LCh colour space:\n * use photon_rs::colour_spaces::lighten_lch;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * lighten_lch(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function lighten_lch(img, level) {\n _assertClass(img, PhotonImage);\n wasm.lighten_lch(img.__wbg_ptr, level);\n}\n\n/**\n * Lighten an image by a specified amount in the HSLuv colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to lighten the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Lightening by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to lighten an image by 10% in the HSLuv colour space:\n * use photon_rs::colour_spaces::lighten_hsluv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * lighten_hsluv(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function lighten_hsluv(img, level) {\n _assertClass(img, PhotonImage);\n wasm.lighten_hsluv(img.__wbg_ptr, level);\n}\n\n/**\n * Lighten an image by a specified amount in the HSL colour space.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to lighten the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Lightening by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to lighten an image by 10% in the HSL colour space:\n * use photon_rs::colour_spaces::lighten_hsl;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * lighten_hsl(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function lighten_hsl(img, level) {\n _assertClass(img, PhotonImage);\n wasm.lighten_hsl(img.__wbg_ptr, level);\n}\n\n/**\n * Lighten an image by a specified amount in the HSV colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to lighten the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Lightening by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to lighten an image by 10% in the HSV colour space:\n * use photon_rs::colour_spaces::lighten_hsv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * lighten_hsv(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function lighten_hsv(img, level) {\n _assertClass(img, PhotonImage);\n wasm.lighten_hsv(img.__wbg_ptr, level);\n}\n\n/**\n * Darken the image by a specified amount in the LCh colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to darken the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Darkening by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to darken an image by 10% in the LCh colour space:\n * use photon_rs::colour_spaces::darken_lch;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * darken_lch(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function darken_lch(img, level) {\n _assertClass(img, PhotonImage);\n wasm.darken_lch(img.__wbg_ptr, level);\n}\n\n/**\n * Darken the image by a specified amount in the HSLuv colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to darken the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Darkening by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to darken an image by 10% in the HSLuv colour space:\n * use photon_rs::colour_spaces::darken_hsluv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * darken_hsluv(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function darken_hsluv(img, level) {\n _assertClass(img, PhotonImage);\n wasm.darken_hsluv(img.__wbg_ptr, level);\n}\n\n/**\n * Darken the image by a specified amount in the HSL colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to darken the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Darkening by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to darken an image by 10% in the HSL colour space:\n * use photon_rs::colour_spaces::darken_hsl;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * darken_hsl(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function darken_hsl(img, level) {\n _assertClass(img, PhotonImage);\n wasm.darken_hsl(img.__wbg_ptr, level);\n}\n\n/**\n * Darken the image's colours by a specified amount in the HSV colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to darken the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Darkening by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to darken an image by 10% in the HSV colour space:\n * use photon_rs::colour_spaces::darken_hsv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * darken_hsv(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function darken_hsv(img, level) {\n _assertClass(img, PhotonImage);\n wasm.darken_hsv(img.__wbg_ptr, level);\n}\n\n/**\n * Desaturate the image by a specified amount in the HSV colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to desaturate the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Desaturating by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to desaturate an image by 10% in the HSV colour space:\n * use photon_rs::colour_spaces::desaturate_hsv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * desaturate_hsv(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function desaturate_hsv(img, level) {\n _assertClass(img, PhotonImage);\n wasm.desaturate_hsv(img.__wbg_ptr, level);\n}\n\n/**\n * Desaturate the image by a specified amount in the HSL colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to desaturate the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Desaturating by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to desaturate an image by 10% in the LCh colour space:\n * use photon_rs::colour_spaces::desaturate_hsl;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * desaturate_hsl(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function desaturate_hsl(img, level) {\n _assertClass(img, PhotonImage);\n wasm.desaturate_hsl(img.__wbg_ptr, level);\n}\n\n/**\n * Desaturate the image by a specified amount in the LCh colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to desaturate the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Desaturating by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to desaturate an image by 10% in the LCh colour space:\n * use photon_rs::colour_spaces::desaturate_lch;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * desaturate_lch(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function desaturate_lch(img, level) {\n _assertClass(img, PhotonImage);\n wasm.desaturate_lch(img.__wbg_ptr, level);\n}\n\n/**\n * Desaturate the image by a specified amount in the HSLuv colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to desaturate the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Desaturating by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to desaturate an image by 10% in the HSLuv colour space:\n * use photon_rs::colour_spaces::desaturate_hsluv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * desaturate_hsluv(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function desaturate_hsluv(img, level) {\n _assertClass(img, PhotonImage);\n wasm.desaturate_hsluv(img.__wbg_ptr, level);\n}\n\n/**\n * Mix image with a single color, supporting passing `opacity`.\n * The algorithm comes from Jimp. See `function mix` and `function colorFn` at following link:\n * https://github.com/oliver-moran/jimp/blob/29679faa597228ff2f20d34c5758e4d2257065a3/packages/plugin-color/src/index.js\n * Specifically, result_value = (mix_color_value - origin_value) * opacity + origin_value =\n * mix_color_value * opacity + (1 - opacity) * origin_value for each\n * of RGB channel.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage that contains a view into the image.\n * * `mix_color` - the color to be mixed in, as an RGB value.\n * * `opacity` - the opacity of color when mixed to image. Float value from 0 to 1.\n * # Example\n *\n * ```no_run\n * // For example, to mix an image with rgb (50, 255, 254) and opacity 0.4:\n * use photon_rs::Rgb;\n * use photon_rs::colour_spaces::mix_with_colour;\n * use photon_rs::native::open_image;\n *\n * let mix_colour = Rgb::new(50_u8, 255_u8, 254_u8);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * mix_with_colour(&mut img, mix_colour, 0.4_f32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {Rgb} mix_colour\n * @param {number} opacity\n */\nexport function mix_with_colour(photon_image, mix_colour, opacity) {\n _assertClass(photon_image, PhotonImage);\n _assertClass(mix_colour, Rgb);\n var ptr0 = mix_colour.__destroy_into_raw();\n wasm.mix_with_colour(photon_image.__wbg_ptr, ptr0, opacity);\n}\n\n/**\n * Noise reduction.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to noise reduct an image:\n * use photon_rs::conv::noise_reduction;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * noise_reduction(&mut img);\n * ```\n * Adds a constant to a select R, G, or B channel's value.\n * @param {PhotonImage} photon_image\n */\nexport function noise_reduction(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.noise_reduction(photon_image.__wbg_ptr);\n}\n\n/**\n * Sharpen an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to sharpen an image:\n * use photon_rs::conv::sharpen;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * sharpen(&mut img);\n * ```\n * Adds a constant to a select R, G, or B channel's value.\n * @param {PhotonImage} photon_image\n */\nexport function sharpen(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.sharpen(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply edge detection to an image, to create a dark version with its edges highlighted.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to increase the Red channel for all pixels by 10:\n * use photon_rs::conv::edge_detection;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * edge_detection(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function edge_detection(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.edge_detection(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply an identity kernel convolution to an image.\n *\n * # Arguments\n * * `img` -A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply an identity kernel convolution:\n * use photon_rs::conv::identity;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * identity(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function identity(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.identity(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply a box blur effect.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a box blur effect:\n * use photon_rs::conv::box_blur;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * box_blur(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function box_blur(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.box_blur(photon_image.__wbg_ptr);\n}\n\n/**\n * Gaussian blur in linear time.\n *\n * Reference: http://blog.ivank.net/fastest-gaussian-blur.html\n *\n * # Arguments\n * * `photon_image` - A PhotonImage\n * * `radius` - blur radius\n * # Example\n *\n * ```no_run\n * use photon_rs::conv::gaussian_blur;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * gaussian_blur(&mut img, 3_i32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} radius\n */\nexport function gaussian_blur(photon_image, radius) {\n _assertClass(photon_image, PhotonImage);\n wasm.gaussian_blur(photon_image.__wbg_ptr, radius);\n}\n\n/**\n * Detect horizontal lines in an image, and highlight these only.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to display the horizontal lines in an image:\n * use photon_rs::conv::detect_horizontal_lines;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * detect_horizontal_lines(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function detect_horizontal_lines(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.detect_horizontal_lines(photon_image.__wbg_ptr);\n}\n\n/**\n * Detect vertical lines in an image, and highlight these only.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to display the vertical lines in an image:\n * use photon_rs::conv::detect_vertical_lines;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * detect_vertical_lines(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function detect_vertical_lines(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.detect_vertical_lines(photon_image.__wbg_ptr);\n}\n\n/**\n * Detect lines at a forty five degree angle in an image, and highlight these only.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to display the lines at a forty five degree angle in an image:\n * use photon_rs::conv::detect_45_deg_lines;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * detect_45_deg_lines(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function detect_45_deg_lines(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.detect_45_deg_lines(photon_image.__wbg_ptr);\n}\n\n/**\n * Detect lines at a 135 degree angle in an image, and highlight these only.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to display the lines at a 135 degree angle in an image:\n * use photon_rs::conv::detect_135_deg_lines;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * detect_135_deg_lines(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function detect_135_deg_lines(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.detect_135_deg_lines(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply a standard laplace convolution.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a laplace effect:\n * use photon_rs::conv::laplace;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * laplace(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function laplace(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.laplace(photon_image.__wbg_ptr);\n}\n\n/**\n * Preset edge effect.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply this effect:\n * use photon_rs::conv::edge_one;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * edge_one(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function edge_one(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.edge_one(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply an emboss effect to an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply an emboss effect:\n * use photon_rs::conv::emboss;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * emboss(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function emboss(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.emboss(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply a horizontal Sobel filter to an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a horizontal Sobel filter:\n * use photon_rs::conv::sobel_horizontal;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * sobel_horizontal(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function sobel_horizontal(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.sobel_horizontal(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply a horizontal Prewitt convolution to an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a horizontal Prewitt convolution effect:\n * use photon_rs::conv::prewitt_horizontal;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * prewitt_horizontal(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function prewitt_horizontal(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.prewitt_horizontal(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply a vertical Sobel filter to an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a vertical Sobel filter:\n * use photon_rs::conv::sobel_vertical;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * sobel_vertical(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function sobel_vertical(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.sobel_vertical(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply a global Sobel filter to an image\n *\n * Each pixel is calculated as the magnitude of the horizontal and vertical components of the Sobel filter,\n * ie if X is the horizontal sobel and Y is the vertical, for each pixel, we calculate sqrt(X^2 + Y^2)\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a global Sobel filter:\n * use photon_rs::conv::sobel_global;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * sobel_global(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function sobel_global(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.sobel_global(photon_image.__wbg_ptr);\n}\n\n/**\n * Add randomized noise to an image.\n * This function adds a Gaussian Noise Sample to each pixel through incrementing each channel by a randomized offset.\n * This randomized offset is generated by creating a randomized thread pool.\n * **[WASM SUPPORT IS AVAILABLE]**: Randomized thread pools cannot be created with WASM, but\n * a workaround using js_sys::Math::random works now.\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example:\n * use photon_rs::native::open_image;\n * use photon_rs::noise::add_noise_rand;\n * use photon_rs::PhotonImage;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * add_noise_rand(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function add_noise_rand(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.add_noise_rand(photon_image.__wbg_ptr);\n}\n\n/**\n * Add pink-tinted noise to an image.\n *\n * **[WASM SUPPORT IS AVAILABLE]**: Randomized thread pools cannot be created with WASM, but\n * a workaround using js_sys::Math::random works now.\n * # Arguments\n * * `name` - A PhotonImage that contains a view into the image.\n *\n * # Example\n *\n * ```no_run\n * // For example, to add pink-tinted noise to an image:\n * use photon_rs::native::open_image;\n * use photon_rs::noise::pink_noise;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * pink_noise(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function pink_noise(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.pink_noise(photon_image.__wbg_ptr);\n}\n\n/**\n * Add a watermark to an image.\n *\n * # Arguments\n * * `img` - A DynamicImage that contains a view into the image.\n * * `watermark` - The watermark to be placed onto the `img` image.\n * * `x` - The x coordinate where the watermark's top corner should be positioned.\n * * `y` - The y coordinate where the watermark's top corner should be positioned.\n * # Example\n *\n * ```no_run\n * // For example, to add a watermark to an image at x: 30, y: 40:\n * use photon_rs::multiple::watermark;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let water_mark = open_image(\"watermark.jpg\").expect(\"File should open\");\n * watermark(&mut img, &water_mark, 30_i64, 40_i64);\n * ```\n * @param {PhotonImage} img\n * @param {PhotonImage} watermark\n * @param {bigint} x\n * @param {bigint} y\n */\nexport function watermark(img, watermark, x, y) {\n _assertClass(img, PhotonImage);\n _assertClass(watermark, PhotonImage);\n wasm.watermark(img.__wbg_ptr, watermark.__wbg_ptr, x, y);\n}\n\n/**\n * Blend two images together.\n *\n * The `blend_mode` (3rd param) determines which blending mode to use; change this for varying effects.\n * The blend modes available include: `overlay`, `over`, `atop`, `xor`, `plus`, `multiply`, `burn`,\n * `difference`, `soft_light`, `screen`, `hard_light`, `dodge`, `exclusion`, `lighten`, `darken` (more to come)\n * NOTE: The first image must be smaller than the second image passed as params.\n * If the first image were larger than the second, then there would be overflowing pixels which would have no corresponding pixels\n * in the second image.\n * # Arguments\n * * `img` - A DynamicImage that contains a view into the image.\n * * `img2` - The 2nd DynamicImage to be blended with the first.\n * * `blend_mode` - The blending mode to use. See above for complete list of blend modes available.\n * # Example\n *\n * ```no_run\n * // For example, to blend two images with the `multiply` blend mode:\n * use photon_rs::multiple::blend;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let img2 = open_image(\"img2.jpg\").expect(\"File should open\");\n * blend(&mut img, &img2, \"multiply\");\n * ```\n * @param {PhotonImage} photon_image\n * @param {PhotonImage} photon_image2\n * @param {string} blend_mode\n */\nexport function blend(photon_image, photon_image2, blend_mode) {\n _assertClass(photon_image, PhotonImage);\n _assertClass(photon_image2, PhotonImage);\n const ptr0 = passStringToWasm0(blend_mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.blend(photon_image.__wbg_ptr, photon_image2.__wbg_ptr, ptr0, len0);\n}\n\n/**\n * @param {number} width\n * @param {number} height\n * @returns {PhotonImage}\n */\nexport function create_gradient(width, height) {\n const ret = wasm.create_gradient(width, height);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Apply a gradient to an image.\n * @param {PhotonImage} image\n */\nexport function apply_gradient(image) {\n _assertClass(image, PhotonImage);\n wasm.apply_gradient(image.__wbg_ptr);\n}\n\n/**\n * Solarization on the Blue channel.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::neue;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * neue(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function neue(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.neue(photon_image.__wbg_ptr);\n}\n\n/**\n * Solarization on the Red and Green channels.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::lix;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * lix(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function lix(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.lix(photon_image.__wbg_ptr);\n}\n\n/**\n * Solarization on the Red and Blue channels.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::ryo;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * ryo(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function ryo(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.ryo(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply a filter to an image. Over 20 filters are available.\n * The filters are as follows:\n * * **oceanic**: Add an aquamarine-tinted hue to an image.\n * * **islands**: Aquamarine tint.\n * * **marine**: Add a green/blue mixed hue to an image.\n * * **seagreen**: Dark green hue, with tones of blue.\n * * **flagblue**: Royal blue tint\n * * **liquid**: Blue-inspired tint.\n * * **diamante**: Custom filter with a blue/turquoise tint.\n * * **radio**: Fallout-style radio effect.\n * * **twenties**: Slight-blue tinted historical effect.\n * * **rosetint**: Rose-tinted filter.\n * * **mauve**: Purple-infused filter.\n * * **bluechrome**: Blue monochrome effect.\n * * **vintage**: Vintage filter with a red tint.\n * * **perfume**: Increase the blue channel, with moderate increases in the Red and Green channels.\n * * **serenity**: Custom filter with an increase in the Blue channel's values.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `filter_name` - The filter's name. Choose from the selection above, eg: \"oceanic\"\n * # Example\n *\n * ```no_run\n * // For example, to add a filter called \"vintage\" to an image:\n * use photon_rs::filters::filter;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * filter(&mut img, \"vintage\");\n * ```\n * @param {PhotonImage} img\n * @param {string} filter_name\n */\nexport function filter(img, filter_name) {\n _assertClass(img, PhotonImage);\n const ptr0 = passStringToWasm0(filter_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.filter(img.__wbg_ptr, ptr0, len0);\n}\n\n/**\n * Apply a lofi effect to an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::lofi;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * lofi(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function lofi(img) {\n _assertClass(img, PhotonImage);\n wasm.lofi(img.__wbg_ptr);\n}\n\n/**\n * Apply a rose tint to an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::pastel_pink;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * pastel_pink(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function pastel_pink(img) {\n _assertClass(img, PhotonImage);\n wasm.pastel_pink(img.__wbg_ptr);\n}\n\n/**\n * Apply a vintage, golden hue to an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::golden;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * golden(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function golden(img) {\n _assertClass(img, PhotonImage);\n wasm.golden(img.__wbg_ptr);\n}\n\n/**\n * Increased contrast filter effect.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::cali;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * cali(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function cali(img) {\n _assertClass(img, PhotonImage);\n wasm.cali(img.__wbg_ptr);\n}\n\n/**\n * Greyscale effect with increased contrast.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::dramatic;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * dramatic(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function dramatic(img) {\n _assertClass(img, PhotonImage);\n wasm.dramatic(img.__wbg_ptr);\n}\n\n/**\n * Monochrome tint effect with increased contrast\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `rgb_color` - RGB color\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::monochrome_tint;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgb;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rgb_color = Rgb::new(12, 12, 10);\n * monochrome_tint(&mut img, rgb_color);\n * ```\n * @param {PhotonImage} img\n * @param {Rgb} rgb_color\n */\nexport function monochrome_tint(img, rgb_color) {\n _assertClass(img, PhotonImage);\n _assertClass(rgb_color, Rgb);\n var ptr0 = rgb_color.__destroy_into_raw();\n wasm.monochrome_tint(img.__wbg_ptr, ptr0);\n}\n\n/**\n * Duotone effect with blue and purple tones.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::duotone_violette;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * duotone_violette(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function duotone_violette(img) {\n _assertClass(img, PhotonImage);\n wasm.duotone_violette(img.__wbg_ptr);\n}\n\n/**\n * Duotone effect with purple tones.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::duotone_horizon;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * duotone_horizon(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function duotone_horizon(img) {\n _assertClass(img, PhotonImage);\n wasm.duotone_horizon(img.__wbg_ptr);\n}\n\n/**\n * A duotone filter with a user-specified color and a gray color\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `rgb_color` - RGB color\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::duotone_tint;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgb;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rgb_color = Rgb::new(12, 12, 10);\n * duotone_tint(&mut img, rgb_color);\n * ```\n * @param {PhotonImage} img\n * @param {Rgb} rgb_color\n */\nexport function duotone_tint(img, rgb_color) {\n _assertClass(img, PhotonImage);\n _assertClass(rgb_color, Rgb);\n var ptr0 = rgb_color.__destroy_into_raw();\n wasm.duotone_tint(img.__wbg_ptr, ptr0);\n}\n\n/**\n * Duotone effect with a lilac hue\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::duotone_lilac;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * duotone_lilac(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function duotone_lilac(img) {\n _assertClass(img, PhotonImage);\n wasm.duotone_lilac(img.__wbg_ptr);\n}\n\n/**\n * A duotone ochre tint effect\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::duotone_ochre;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * duotone_ochre(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function duotone_ochre(img) {\n _assertClass(img, PhotonImage);\n wasm.duotone_ochre(img.__wbg_ptr);\n}\n\n/**\n * Apply a red hue, with increased contrast and brightness.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::firenze;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * firenze(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function firenze(img) {\n _assertClass(img, PhotonImage);\n wasm.firenze(img.__wbg_ptr);\n}\n\n/**\n * Apply a greyscale effect with increased contrast.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::obsidian;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * obsidian(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function obsidian(img) {\n _assertClass(img, PhotonImage);\n wasm.obsidian(img.__wbg_ptr);\n}\n\n/**\n * Crop an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to crop an image at (0, 0) to (500, 800)\n * use photon_rs::native::{open_image};\n * use photon_rs::transform::crop;\n * use photon_rs::PhotonImage;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let cropped_img: PhotonImage = crop(&img, 0_u32, 0_u32, 500_u32, 800_u32);\n * // Write the contents of this image in JPG format.\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @returns {PhotonImage}\n */\nexport function crop(photon_image, x1, y1, x2, y2) {\n _assertClass(photon_image, PhotonImage);\n const ret = wasm.crop(photon_image.__wbg_ptr, x1, y1, x2, y2);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * @param {HTMLCanvasElement} source_canvas\n * @param {number} width\n * @param {number} height\n * @param {number} left\n * @param {number} top\n * @returns {HTMLCanvasElement}\n */\nexport function crop_img_browser(source_canvas, width, height, left, top) {\n const ret = wasm.crop_img_browser(source_canvas, width, height, left, top);\n return ret;\n}\n\n/**\n * Flip an image horizontally.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to flip an image horizontally:\n * use photon_rs::native::open_image;\n * use photon_rs::transform::fliph;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * fliph(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function fliph(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.fliph(photon_image.__wbg_ptr);\n}\n\n/**\n * Flip an image vertically.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to flip an image vertically:\n * use photon_rs::native::open_image;\n * use photon_rs::transform::flipv;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * flipv(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function flipv(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.flipv(photon_image.__wbg_ptr);\n}\n\n/**\n * Resize an image on the web.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `width` - New width.\n * * `height` - New height.\n * * `sampling_filter` - Nearest = 1, Triangle = 2, CatmullRom = 3, Gaussian = 4, Lanczos3 = 5\n * @param {PhotonImage} photon_img\n * @param {number} width\n * @param {number} height\n * @param {SamplingFilter} sampling_filter\n * @returns {HTMLCanvasElement}\n */\nexport function resize_img_browser(photon_img, width, height, sampling_filter) {\n _assertClass(photon_img, PhotonImage);\n const ret = wasm.resize_img_browser(photon_img.__wbg_ptr, width, height, sampling_filter);\n return ret;\n}\n\n/**\n * Resize an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `width` - New width.\n * * `height` - New height.\n * * `sampling_filter` - Nearest = 1, Triangle = 2, CatmullRom = 3, Gaussian = 4, Lanczos3 = 5\n * @param {PhotonImage} photon_img\n * @param {number} width\n * @param {number} height\n * @param {SamplingFilter} sampling_filter\n * @returns {PhotonImage}\n */\nexport function resize(photon_img, width, height, sampling_filter) {\n _assertClass(photon_img, PhotonImage);\n const ret = wasm.resize(photon_img.__wbg_ptr, width, height, sampling_filter);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Resize image using seam carver.\n * Resize only if new dimensions are smaller, than original image.\n * # NOTE: This is still experimental feature, and pretty slow.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `width` - New width.\n * * `height` - New height.\n *\n * # Example\n *\n * ```no_run\n * // For example, resize image using seam carver:\n * use photon_rs::native::open_image;\n * use photon_rs::transform::seam_carve;\n * use photon_rs::PhotonImage;\n *\n * let img = open_image(\"img.jpg\").expect(\"File should open\");\n * let result: PhotonImage = seam_carve(&img, 100_u32, 100_u32);\n * ```\n * @param {PhotonImage} img\n * @param {number} width\n * @param {number} height\n * @returns {PhotonImage}\n */\nexport function seam_carve(img, width, height) {\n _assertClass(img, PhotonImage);\n const ret = wasm.seam_carve(img.__wbg_ptr, width, height);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Shear the image along the X axis.\n * A sheared PhotonImage is returned.\n *\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `shear` - Amount to shear.\n *\n * # Example\n *\n * ```no_run\n * // For example, to shear an image by 0.5:\n * use photon_rs::native::open_image;\n * use photon_rs::transform::shearx;\n *\n * let img = open_image(\"img.jpg\").expect(\"File should open\");\n * let sheared_img = shearx(&img, 0.5);\n * ```\n * @param {PhotonImage} photon_img\n * @param {number} shear\n * @returns {PhotonImage}\n */\nexport function shearx(photon_img, shear) {\n _assertClass(photon_img, PhotonImage);\n const ret = wasm.shearx(photon_img.__wbg_ptr, shear);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Shear the image along the Y axis.\n * A sheared PhotonImage is returned.\n *\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `shear` - Amount to shear.\n *\n * # Example\n *\n * ```no_run\n * // For example, to shear an image by 0.5:\n * use photon_rs::native::open_image;\n * use photon_rs::transform::sheary;\n *\n * let img = open_image(\"img.jpg\").expect(\"File should open\");\n * let sheared_img = sheary(&img, 0.5);\n * ```\n * @param {PhotonImage} photon_img\n * @param {number} shear\n * @returns {PhotonImage}\n */\nexport function sheary(photon_img, shear) {\n _assertClass(photon_img, PhotonImage);\n const ret = wasm.sheary(photon_img.__wbg_ptr, shear);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Apply uniform padding around the PhotonImage\n * A padded PhotonImage is returned.\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `padding` - The amount of padding to be applied to the PhotonImage.\n * * `padding_rgba` - Tuple containing the RGBA code for padding color.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a padding of 10 pixels around a PhotonImage:\n * use photon_rs::transform::padding_uniform;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgba;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n * padding_uniform(&img, 10_u32, rgba);\n * ```\n * @param {PhotonImage} img\n * @param {number} padding\n * @param {Rgba} padding_rgba\n * @returns {PhotonImage}\n */\nexport function padding_uniform(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n _assertClass(padding_rgba, Rgba);\n var ptr0 = padding_rgba.__destroy_into_raw();\n const ret = wasm.padding_uniform(img.__wbg_ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Apply padding on the left side of the PhotonImage\n * A padded PhotonImage is returned.\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `padding` - The amount of padding to be applied to the PhotonImage.\n * * `padding_rgba` - Tuple containing the RGBA code for padding color.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a padding of 10 pixels on the left side of a PhotonImage:\n * use photon_rs::transform::padding_left;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgba;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n * padding_left(&img, 10_u32, rgba);\n * ```\n * @param {PhotonImage} img\n * @param {number} padding\n * @param {Rgba} padding_rgba\n * @returns {PhotonImage}\n */\nexport function padding_left(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n _assertClass(padding_rgba, Rgba);\n var ptr0 = padding_rgba.__destroy_into_raw();\n const ret = wasm.padding_left(img.__wbg_ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Apply padding on the left side of the PhotonImage\n * A padded PhotonImage is returned.\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `padding` - The amount of padding to be applied to the PhotonImage.\n * * `padding_rgba` - Tuple containing the RGBA code for padding color.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a padding of 10 pixels on the right side of a PhotonImage:\n * use photon_rs::transform::padding_right;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgba;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n * padding_right(&img, 10_u32, rgba);\n * ```\n * @param {PhotonImage} img\n * @param {number} padding\n * @param {Rgba} padding_rgba\n * @returns {PhotonImage}\n */\nexport function padding_right(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n _assertClass(padding_rgba, Rgba);\n var ptr0 = padding_rgba.__destroy_into_raw();\n const ret = wasm.padding_right(img.__wbg_ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Apply padding on the left side of the PhotonImage\n * A padded PhotonImage is returned.\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `padding` - The amount of padding to be applied to the PhotonImage.\n * * `padding_rgba` - Tuple containing the RGBA code for padding color.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a padding of 10 pixels on the top of a PhotonImage:\n * use photon_rs::transform::padding_top;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgba;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n * padding_top(&img, 10_u32, rgba);\n * ```\n * @param {PhotonImage} img\n * @param {number} padding\n * @param {Rgba} padding_rgba\n * @returns {PhotonImage}\n */\nexport function padding_top(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n _assertClass(padding_rgba, Rgba);\n var ptr0 = padding_rgba.__destroy_into_raw();\n const ret = wasm.padding_top(img.__wbg_ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Apply padding on the left side of the PhotonImage\n * A padded PhotonImage is returned.\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `padding` - The amount of padding to be applied to the PhotonImage.\n * * `padding_rgba` - Tuple containing the RGBA code for padding color.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a padding of 10 pixels on the bottom of a PhotonImage:\n * use photon_rs::transform::padding_bottom;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgba;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n * padding_bottom(&img, 10_u32, rgba);\n * ```\n * @param {PhotonImage} img\n * @param {number} padding\n * @param {Rgba} padding_rgba\n * @returns {PhotonImage}\n */\nexport function padding_bottom(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n _assertClass(padding_rgba, Rgba);\n var ptr0 = padding_rgba.__destroy_into_raw();\n const ret = wasm.padding_bottom(img.__wbg_ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Rotate the PhotonImage on an arbitrary angle\n * A rotated PhotonImage is returned.\n *\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `angle` - Rotation angle in degrees.\n *\n * # Example\n *\n * ```no_run\n * // For example, to rotate a PhotonImage by 30 degrees:\n * use photon_rs::native::open_image;\n * use photon_rs::transform::rotate;\n *\n * let img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rotated_img = rotate(&img, 30.0);\n * ```\n * @param {PhotonImage} photon_img\n * @param {number} angle\n * @returns {PhotonImage}\n */\nexport function rotate(photon_img, angle) {\n _assertClass(photon_img, PhotonImage);\n const ret = wasm.rotate(photon_img.__wbg_ptr, angle);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Resample the PhotonImage.\n *\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `dst_width` - Target width.\n * * `dst_height` - Target height.\n *\n * # Example\n *\n * ```no_run\n * // For example, to resample a PhotonImage to 1920x1080 size:\n * use photon_rs::native::open_image;\n * use photon_rs::transform::resample;\n *\n * let img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rotated_img = resample(&img, 1920, 1080);\n * ```\n * @param {PhotonImage} img\n * @param {number} dst_width\n * @param {number} dst_height\n * @returns {PhotonImage}\n */\nexport function resample(img, dst_width, dst_height) {\n _assertClass(img, PhotonImage);\n const ret = wasm.resample(img.__wbg_ptr, dst_width, dst_height);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Adds an offset to the image by a certain number of pixels.\n *\n * This creates an RGB shift effect.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `channel_index`: The index of the channel to increment. 0 for red, 1 for green and 2 for blue.\n * * `offset` - The offset is added to the pixels in the image.\n * # Example\n *\n * ```no_run\n * // For example, to offset pixels by 30 pixels on the red channel:\n * use photon_rs::effects::offset;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * offset(&mut img, 0_usize, 30_u32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} channel_index\n * @param {number} offset\n */\nexport function offset(photon_image, channel_index, offset) {\n _assertClass(photon_image, PhotonImage);\n wasm.offset(photon_image.__wbg_ptr, channel_index, offset);\n}\n\n/**\n * Adds an offset to the red channel by a certain number of pixels.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `offset` - The offset you want to move the red channel by.\n * # Example\n *\n * ```no_run\n * // For example, to add an offset to the red channel by 30 pixels.\n * use photon_rs::effects::offset_red;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * offset_red(&mut img, 30_u32);\n * ```\n * @param {PhotonImage} img\n * @param {number} offset_amt\n */\nexport function offset_red(img, offset_amt) {\n _assertClass(img, PhotonImage);\n wasm.offset_red(img.__wbg_ptr, offset_amt);\n}\n\n/**\n * Adds an offset to the green channel by a certain number of pixels.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `offset` - The offset you want to move the green channel by.\n * # Example\n *\n * ```no_run\n * // For example, to add an offset to the green channel by 30 pixels.\n * use photon_rs::effects::offset_green;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * offset_green(&mut img, 30_u32);\n * ```\n * @param {PhotonImage} img\n * @param {number} offset_amt\n */\nexport function offset_green(img, offset_amt) {\n _assertClass(img, PhotonImage);\n wasm.offset_green(img.__wbg_ptr, offset_amt);\n}\n\n/**\n * Adds an offset to the blue channel by a certain number of pixels.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `offset_amt` - The offset you want to move the blue channel by.\n * # Example\n * // For example, to add an offset to the green channel by 40 pixels.\n *\n * ```no_run\n * use photon_rs::effects::offset_blue;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * offset_blue(&mut img, 40_u32);\n * ```\n * @param {PhotonImage} img\n * @param {number} offset_amt\n */\nexport function offset_blue(img, offset_amt) {\n _assertClass(img, PhotonImage);\n wasm.offset_blue(img.__wbg_ptr, offset_amt);\n}\n\n/**\n * Adds multiple offsets to the image by a certain number of pixels (on two channels).\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `offset` - The offset is added to the pixels in the image.\n * # Example\n *\n * ```no_run\n * // For example, to add a 30-pixel offset to both the red and blue channels:\n * use photon_rs::effects::multiple_offsets;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * multiple_offsets(&mut img, 30_u32, 0_usize, 2_usize);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} offset\n * @param {number} channel_index\n * @param {number} channel_index2\n */\nexport function multiple_offsets(photon_image, offset, channel_index, channel_index2) {\n _assertClass(photon_image, PhotonImage);\n wasm.multiple_offsets(photon_image.__wbg_ptr, offset, channel_index, channel_index2);\n}\n\n/**\n * Halftoning effect.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * # Example\n *\n * ```no_run\n * // For example:\n * use photon_rs::effects::halftone;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * halftone(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function halftone(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.halftone(photon_image.__wbg_ptr);\n}\n\n/**\n * Reduces an image to the primary colours.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * # Example\n *\n * ```no_run\n * // For example, to add a primary colour effect to an image of type `DynamicImage`:\n * use photon_rs::effects::primary;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * primary(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function primary(img) {\n _assertClass(img, PhotonImage);\n wasm.primary(img.__wbg_ptr);\n}\n\n/**\n * Colorizes the green channels of the image.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * # Example\n *\n * ```no_run\n * // For example, to colorize an image of type `PhotonImage`:\n * use photon_rs::effects::colorize;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * colorize(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function colorize(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.colorize(photon_image.__wbg_ptr);\n}\n\n/**\n * Applies a solarizing effect to an image.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * # Example\n *\n * ```no_run\n * // For example, to colorize an image of type `PhotonImage`:\n * use photon_rs::effects::solarize;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * solarize(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function solarize(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.solarize(photon_image.__wbg_ptr);\n}\n\n/**\n * Applies a solarizing effect to an image and returns the resulting PhotonImage.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * # Example\n *\n * ```no_run\n * // For example, to solarize \"retimg\" an image of type `PhotonImage`:\n * use photon_rs::effects::solarize_retimg;\n * use photon_rs::native::open_image;\n * use photon_rs::PhotonImage;\n *\n * let img = open_image(\"img.jpg\").expect(\"File should open\");\n * let result: PhotonImage = solarize_retimg(&img);\n * ```\n * @param {PhotonImage} photon_image\n * @returns {PhotonImage}\n */\nexport function solarize_retimg(photon_image) {\n _assertClass(photon_image, PhotonImage);\n const ret = wasm.solarize_retimg(photon_image.__wbg_ptr);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Adjust the brightness of an image by a factor.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `brightness` - A u8 to add or subtract to the brightness. To increase\n * the brightness, pass a positive number (up to 255). To decrease the brightness,\n * pass a negative number instead.\n * # Example\n *\n * ```no_run\n * use photon_rs::effects::adjust_brightness;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * adjust_brightness(&mut img, 10_i16);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} brightness\n */\nexport function adjust_brightness(photon_image, brightness) {\n _assertClass(photon_image, PhotonImage);\n wasm.adjust_brightness(photon_image.__wbg_ptr, brightness);\n}\n\n/**\n * Increase the brightness of an image by a constant.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `brightness` - A u8 to add to the brightness.\n * # Example\n *\n * ```no_run\n * use photon_rs::effects::inc_brightness;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * inc_brightness(&mut img, 10_u8);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} brightness\n */\nexport function inc_brightness(photon_image, brightness) {\n _assertClass(photon_image, PhotonImage);\n wasm.inc_brightness(photon_image.__wbg_ptr, brightness);\n}\n\n/**\n * Decrease the brightness of an image by a constant.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `brightness` - A u8 to subtract from the brightness. It should be a positive number,\n * and this value will then be subtracted from the brightness.\n * # Example\n *\n * ```no_run\n * use photon_rs::effects::dec_brightness;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * dec_brightness(&mut img, 10_u8);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} brightness\n */\nexport function dec_brightness(photon_image, brightness) {\n _assertClass(photon_image, PhotonImage);\n wasm.dec_brightness(photon_image.__wbg_ptr, brightness);\n}\n\n/**\n * Adjust the contrast of an image by a factor.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage that contains a view into the image.\n * * `contrast` - An f32 factor used to adjust contrast. Between [-255.0, 255.0]. The algorithm will\n * clamp results if passed factor is out of range.\n * # Example\n *\n * ```no_run\n * use photon_rs::effects::adjust_contrast;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * adjust_contrast(&mut img, 30_f32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} contrast\n */\nexport function adjust_contrast(photon_image, contrast) {\n _assertClass(photon_image, PhotonImage);\n wasm.adjust_contrast(photon_image.__wbg_ptr, contrast);\n}\n\n/**\n * Tint an image by adding an offset to averaged RGB channel values.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `r_offset` - The amount the R channel should be incremented by.\n * * `g_offset` - The amount the G channel should be incremented by.\n * * `b_offset` - The amount the B channel should be incremented by.\n * # Example\n *\n * ```no_run\n * // For example, to tint an image of type `PhotonImage`:\n * use photon_rs::effects::tint;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * tint(&mut img, 10_u32, 20_u32, 15_u32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} r_offset\n * @param {number} g_offset\n * @param {number} b_offset\n */\nexport function tint(photon_image, r_offset, g_offset, b_offset) {\n _assertClass(photon_image, PhotonImage);\n wasm.tint(photon_image.__wbg_ptr, r_offset, g_offset, b_offset);\n}\n\n/**\n * Horizontal strips. Divide an image into a series of equal-height strips, for an artistic effect.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `num_strips` - The number of strips\n * # Example\n *\n * ```no_run\n * // For example, to draw horizontal strips on a `PhotonImage`:\n * use photon_rs::effects::horizontal_strips;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * horizontal_strips(&mut img, 8u8);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} num_strips\n */\nexport function horizontal_strips(photon_image, num_strips) {\n _assertClass(photon_image, PhotonImage);\n wasm.horizontal_strips(photon_image.__wbg_ptr, num_strips);\n}\n\n/**\n * Horizontal strips. Divide an image into a series of equal-width strips, for an artistic effect. Sepcify a color as well.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `num_strips` - The numbder of strips\n * * `color` - Color of strips.\n * # Example\n *\n * ```no_run\n * // For example, to draw blue horizontal strips on a `PhotonImage`:\n * use photon_rs::effects::color_horizontal_strips;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgb;\n *\n * let color = Rgb::new(255u8, 0u8, 0u8);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * color_horizontal_strips(&mut img, 8u8, color);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} num_strips\n * @param {Rgb} color\n */\nexport function color_horizontal_strips(photon_image, num_strips, color) {\n _assertClass(photon_image, PhotonImage);\n _assertClass(color, Rgb);\n var ptr0 = color.__destroy_into_raw();\n wasm.color_horizontal_strips(photon_image.__wbg_ptr, num_strips, ptr0);\n}\n\n/**\n * Vertical strips. Divide an image into a series of equal-width strips, for an artistic effect.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `num_strips` - The numbder of strips\n * # Example\n *\n * ```no_run\n * // For example, to draw vertical strips on a `PhotonImage`:\n * use photon_rs::effects::vertical_strips;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * vertical_strips(&mut img, 8u8);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} num_strips\n */\nexport function vertical_strips(photon_image, num_strips) {\n _assertClass(photon_image, PhotonImage);\n wasm.vertical_strips(photon_image.__wbg_ptr, num_strips);\n}\n\n/**\n * Vertical strips. Divide an image into a series of equal-width strips, for an artistic effect. Sepcify a color as well.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `num_strips` - The numbder of strips\n * * `color` - Color of strips.\n * # Example\n *\n * ```no_run\n * // For example, to draw red vertical strips on a `PhotonImage`:\n * use photon_rs::effects::color_vertical_strips;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgb;\n *\n * let color = Rgb::new(255u8, 0u8, 0u8);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * color_vertical_strips(&mut img, 8u8, color);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} num_strips\n * @param {Rgb} color\n */\nexport function color_vertical_strips(photon_image, num_strips, color) {\n _assertClass(photon_image, PhotonImage);\n _assertClass(color, Rgb);\n var ptr0 = color.__destroy_into_raw();\n wasm.color_vertical_strips(photon_image.__wbg_ptr, num_strips, ptr0);\n}\n\n/**\n * Turn an image into an oil painting\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `radius` - Radius of each paint particle\n * * `intesnity` - How artsy an Image should be\n * # Example\n *\n * ```no_run\n * // For example, to oil an image of type `PhotonImage`:\n * use photon_rs::effects::oil;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * oil(&mut img, 4i32, 55.0);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} radius\n * @param {number} intensity\n */\nexport function oil(photon_image, radius, intensity) {\n _assertClass(photon_image, PhotonImage);\n wasm.oil(photon_image.__wbg_ptr, radius, intensity);\n}\n\n/**\n * Turn an image into an frosted glass see through\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * # Example\n *\n * ```no_run\n * // For example, to turn an image of type `PhotonImage` into frosted glass see through:\n * use photon_rs::effects::frosted_glass;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * frosted_glass(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function frosted_glass(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.frosted_glass(photon_image.__wbg_ptr);\n}\n\n/**\n * Pixelize an image.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage that contains a view into the image.\n * * `pixel_size` - Targeted pixel size of generated image.\n * # Example\n *\n * ```no_run\n * // For example, to turn an image of type `PhotonImage` into a pixelized image with 50 pixels blocks:\n * use photon_rs::effects::pixelize;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * pixelize(&mut img, 50);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} pixel_size\n */\nexport function pixelize(photon_image, pixel_size) {\n _assertClass(photon_image, PhotonImage);\n wasm.pixelize(photon_image.__wbg_ptr, pixel_size);\n}\n\n/**\n * Normalizes an image by remapping its range of pixels values. Only RGB\n * channels are processed and each channel is stretched to \\[0, 255\\] range\n * independently. This process is also known as contrast stretching.\n * # Arguments\n * * `photon_image` - A PhotonImage that contains a view into the image.\n * # Example\n *\n * ```no_run\n * // For example, to turn an image of type `PhotonImage` into a normalized image:\n * use photon_rs::effects::normalize;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * normalize(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function normalize(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.normalize(photon_image.__wbg_ptr);\n}\n\n/**\n * Applies Floyd-Steinberg dithering to an image.\n * Only RGB channels are processed, alpha remains unchanged.\n * # Arguments\n * * `photon_image` - A PhotonImage that contains a view into the image.\n * * `depth` - bits per channel. Clamped between 1 and 8.\n * # Example\n *\n * ```no_run\n * // For example, to turn an image of type `PhotonImage` into a dithered image:\n * use photon_rs::effects::dither;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let depth = 1;\n * dither(&mut img, depth);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} depth\n */\nexport function dither(photon_image, depth) {\n _assertClass(photon_image, PhotonImage);\n wasm.dither(photon_image.__wbg_ptr, depth);\n}\n\n/**\n * @param {PhotonImage} photon_image\n * @param {Rgb} color_a\n * @param {Rgb} color_b\n */\nexport function duotone(photon_image, color_a, color_b) {\n _assertClass(photon_image, PhotonImage);\n _assertClass(color_a, Rgb);\n var ptr0 = color_a.__destroy_into_raw();\n _assertClass(color_b, Rgb);\n var ptr1 = color_b.__destroy_into_raw();\n wasm.duotone(photon_image.__wbg_ptr, ptr0, ptr1);\n}\n\n/**\n * Add bordered-text to an image.\n * The only font available as of now is Roboto.\n * Note: A graphic design/text-drawing library is currently being developed, so stay tuned.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `text` - Text string to be drawn to the image.\n * * `x` - x-coordinate of where first letter's 1st pixel should be drawn.\n * * `y` - y-coordinate of where first letter's 1st pixel should be drawn.\n * * `font_size` - Font size in pixels of the text to be drawn.\n *\n * # Example\n *\n * ```no_run\n * // For example to draw the string \"Welcome to Photon!\" at 10, 10:\n * use photon_rs::native::open_image;\n * use photon_rs::text::draw_text_with_border;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * draw_text_with_border(&mut img, \"Welcome to Photon!\", 10_i32, 10_i32, 90_f32);\n * ```\n * @param {PhotonImage} photon_img\n * @param {string} text\n * @param {number} x\n * @param {number} y\n * @param {number} font_size\n */\nexport function draw_text_with_border(photon_img, text, x, y, font_size) {\n _assertClass(photon_img, PhotonImage);\n const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.draw_text_with_border(photon_img.__wbg_ptr, ptr0, len0, x, y, font_size);\n}\n\n/**\n * Add text to an image.\n * The only font available as of now is Roboto.\n * Note: A graphic design/text-drawing library is currently being developed, so stay tuned.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `text` - Text string to be drawn to the image.\n * * `x` - x-coordinate of where first letter's 1st pixel should be drawn.\n * * `y` - y-coordinate of where first letter's 1st pixel should be drawn.\n * * `font_size` - Font size in pixels of the text to be drawn.\n *\n * # Example\n *\n * ```no_run\n * // For example to draw the string \"Welcome to Photon!\" at 10, 10:\n * use photon_rs::native::open_image;\n * use photon_rs::text::draw_text;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * draw_text(&mut img, \"Welcome to Photon!\", 10_i32, 10_i32, 90_f32);\n * ```\n * @param {PhotonImage} photon_img\n * @param {string} text\n * @param {number} x\n * @param {number} y\n * @param {number} font_size\n */\nexport function draw_text(photon_img, text, x, y, font_size) {\n _assertClass(photon_img, PhotonImage);\n const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.draw_text(photon_img.__wbg_ptr, ptr0, len0, x, y, font_size);\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_export_2.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n/**\n *! [temp] Check if WASM is supported.\n */\nexport function run() {\n const ret = wasm.run();\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n}\n\n/**\n * Get the ImageData from a 2D canvas context\n * @param {HTMLCanvasElement} canvas\n * @param {CanvasRenderingContext2D} ctx\n * @returns {ImageData}\n */\nexport function get_image_data(canvas, ctx) {\n const ret = wasm.get_image_data(canvas, ctx);\n return ret;\n}\n\n/**\n * Place a PhotonImage onto a 2D canvas.\n * @param {HTMLCanvasElement} canvas\n * @param {CanvasRenderingContext2D} ctx\n * @param {PhotonImage} new_image\n */\nexport function putImageData(canvas, ctx, new_image) {\n _assertClass(new_image, PhotonImage);\n var ptr0 = new_image.__destroy_into_raw();\n wasm.putImageData(canvas, ctx, ptr0);\n}\n\n/**\n * Convert a HTML5 Canvas Element to a PhotonImage.\n *\n * This converts the ImageData found in the canvas context to a PhotonImage,\n * which can then have effects or filters applied to it.\n * @param {HTMLCanvasElement} canvas\n * @param {CanvasRenderingContext2D} ctx\n * @returns {PhotonImage}\n */\nexport function open_image(canvas, ctx) {\n const ret = wasm.open_image(canvas, ctx);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Convert ImageData to a raw pixel vec of u8s.\n * @param {ImageData} imgdata\n * @returns {Uint8Array}\n */\nexport function to_raw_pixels(imgdata) {\n const ret = wasm.to_raw_pixels(imgdata);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n}\n\n/**\n * Convert a base64 string to a PhotonImage.\n * @param {string} base64\n * @returns {PhotonImage}\n */\nexport function base64_to_image(base64) {\n const ptr0 = passStringToWasm0(base64, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.base64_to_image(ptr0, len0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Convert a base64 string to a Vec of u8s.\n * @param {string} base64\n * @returns {Uint8Array}\n */\nexport function base64_to_vec(base64) {\n const ptr0 = passStringToWasm0(base64, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.base64_to_vec(ptr0, len0);\n var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v2;\n}\n\n/**\n * Convert a PhotonImage to JS-compatible ImageData.\n * @param {PhotonImage} photon_image\n * @returns {ImageData}\n */\nexport function to_image_data(photon_image) {\n _assertClass(photon_image, PhotonImage);\n var ptr0 = photon_image.__destroy_into_raw();\n const ret = wasm.to_image_data(ptr0);\n return ret;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_2.set(idx, obj);\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nlet cachedUint8ClampedArrayMemory0 = null;\n\nfunction getUint8ClampedArrayMemory0() {\n if (cachedUint8ClampedArrayMemory0 === null || cachedUint8ClampedArrayMemory0.byteLength === 0) {\n cachedUint8ClampedArrayMemory0 = new Uint8ClampedArray(wasm.memory.buffer);\n }\n return cachedUint8ClampedArrayMemory0;\n}\n\nfunction getClampedArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ClampedArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nexport const SamplingFilter = Object.freeze({ Nearest:1,\"1\":\"Nearest\",Triangle:2,\"2\":\"Triangle\",CatmullRom:3,\"3\":\"CatmullRom\",Gaussian:4,\"4\":\"Gaussian\",Lanczos3:5,\"5\":\"Lanczos3\", });\n\nconst PhotonImageFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_photonimage_free(ptr >>> 0, 1));\n/**\n * Provides the image's height, width, and contains the image's raw pixels.\n * For use when communicating between JS and WASM, and also natively.\n */\nexport class PhotonImage {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(PhotonImage.prototype);\n obj.__wbg_ptr = ptr;\n PhotonImageFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n PhotonImageFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_photonimage_free(ptr, 0);\n }\n /**\n * Create a new PhotonImage from a Vec of u8s, which represent raw pixels.\n * @param {Uint8Array} raw_pixels\n * @param {number} width\n * @param {number} height\n */\n constructor(raw_pixels, width, height) {\n const ptr0 = passArray8ToWasm0(raw_pixels, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.photonimage_new(ptr0, len0, width, height);\n this.__wbg_ptr = ret >>> 0;\n PhotonImageFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * Create a new PhotonImage from a base64 string.\n * @param {string} base64\n * @returns {PhotonImage}\n */\n static new_from_base64(base64) {\n const ptr0 = passStringToWasm0(base64, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.base64_to_image(ptr0, len0);\n return PhotonImage.__wrap(ret);\n }\n /**\n * Create a new PhotonImage from a byteslice.\n * @param {Uint8Array} vec\n * @returns {PhotonImage}\n */\n static new_from_byteslice(vec) {\n const ptr0 = passArray8ToWasm0(vec, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.photonimage_new_from_byteslice(ptr0, len0);\n return PhotonImage.__wrap(ret);\n }\n /**\n * Create a new PhotonImage from a Blob/File.\n * @param {Blob} blob\n * @returns {PhotonImage}\n */\n static new_from_blob(blob) {\n const ret = wasm.photonimage_new_from_blob(blob);\n return PhotonImage.__wrap(ret);\n }\n /**\n * Create a new PhotonImage from a HTMLImageElement\n * @param {HTMLImageElement} image\n * @returns {PhotonImage}\n */\n static new_from_image(image) {\n const ret = wasm.photonimage_new_from_image(image);\n return PhotonImage.__wrap(ret);\n }\n /**\n * Get the width of the PhotonImage.\n * @returns {number}\n */\n get_width() {\n const ret = wasm.photonimage_get_width(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * Get the PhotonImage's pixels as a Vec of u8s.\n * @returns {Uint8Array}\n */\n get_raw_pixels() {\n const ret = wasm.photonimage_get_raw_pixels(this.__wbg_ptr);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n }\n /**\n * Get the height of the PhotonImage.\n * @returns {number}\n */\n get_height() {\n const ret = wasm.photonimage_get_height(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * Convert the PhotonImage to base64.\n * @returns {string}\n */\n get_base64() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.photonimage_get_base64(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * Convert the PhotonImage to raw bytes. Returns PNG.\n * @returns {Uint8Array}\n */\n get_bytes() {\n const ret = wasm.photonimage_get_bytes(this.__wbg_ptr);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n }\n /**\n * Convert the PhotonImage to raw bytes. Returns a JPEG.\n * @param {number} quality\n * @returns {Uint8Array}\n */\n get_bytes_jpeg(quality) {\n const ret = wasm.photonimage_get_bytes_jpeg(this.__wbg_ptr, quality);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n }\n /**\n * Convert the PhotonImage to raw bytes. Returns a WEBP.\n * @returns {Uint8Array}\n */\n get_bytes_webp() {\n const ret = wasm.photonimage_get_bytes_webp(this.__wbg_ptr);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n }\n /**\n * Convert the PhotonImage's raw pixels to JS-compatible ImageData.\n * @returns {ImageData}\n */\n get_image_data() {\n const ret = wasm.photonimage_get_image_data(this.__wbg_ptr);\n return ret;\n }\n /**\n * Convert ImageData to raw pixels, and update the PhotonImage's raw pixels to this.\n * @param {ImageData} img_data\n */\n set_imgdata(img_data) {\n wasm.photonimage_set_imgdata(this.__wbg_ptr, img_data);\n }\n /**\n * Calculates estimated filesize and returns number of bytes\n * @returns {bigint}\n */\n get_estimated_filesize() {\n const ret = wasm.photonimage_get_estimated_filesize(this.__wbg_ptr);\n return BigInt.asUintN(64, ret);\n }\n}\n\nconst RgbFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_rgb_free(ptr >>> 0, 1));\n/**\n * RGB color type.\n */\nexport class Rgb {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n RgbFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_rgb_free(ptr, 0);\n }\n /**\n * Create a new RGB struct.\n * @param {number} r\n * @param {number} g\n * @param {number} b\n */\n constructor(r, g, b) {\n const ret = wasm.rgb_new(r, g, b);\n this.__wbg_ptr = ret >>> 0;\n RgbFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * Set the Red value.\n * @param {number} r\n */\n set_red(r) {\n wasm.rgb_set_red(this.__wbg_ptr, r);\n }\n /**\n * Get the Green value.\n * @param {number} g\n */\n set_green(g) {\n wasm.rgb_set_green(this.__wbg_ptr, g);\n }\n /**\n * Set the Blue value.\n * @param {number} b\n */\n set_blue(b) {\n wasm.rgb_set_blue(this.__wbg_ptr, b);\n }\n /**\n * Get the Red value.\n * @returns {number}\n */\n get_red() {\n const ret = wasm.rgb_get_red(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the Green value.\n * @returns {number}\n */\n get_green() {\n const ret = wasm.rgb_get_green(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the Blue value.\n * @returns {number}\n */\n get_blue() {\n const ret = wasm.rgb_get_blue(this.__wbg_ptr);\n return ret;\n }\n}\n\nconst RgbaFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_rgba_free(ptr >>> 0, 1));\n/**\n * RGBA color type.\n */\nexport class Rgba {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n RgbaFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_rgba_free(ptr, 0);\n }\n /**\n * Create a new RGBA struct.\n * @param {number} r\n * @param {number} g\n * @param {number} b\n * @param {number} a\n */\n constructor(r, g, b, a) {\n const ret = wasm.rgba_new(r, g, b, a);\n this.__wbg_ptr = ret >>> 0;\n RgbaFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * Set the Red value.\n * @param {number} r\n */\n set_red(r) {\n wasm.rgb_set_red(this.__wbg_ptr, r);\n }\n /**\n * Get the Green value.\n * @param {number} g\n */\n set_green(g) {\n wasm.rgb_set_green(this.__wbg_ptr, g);\n }\n /**\n * Set the Blue value.\n * @param {number} b\n */\n set_blue(b) {\n wasm.rgb_set_blue(this.__wbg_ptr, b);\n }\n /**\n * Set the alpha value.\n * @param {number} a\n */\n set_alpha(a) {\n wasm.rgba_set_alpha(this.__wbg_ptr, a);\n }\n /**\n * Get the Red value.\n * @returns {number}\n */\n get_red() {\n const ret = wasm.rgb_get_red(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the Green value.\n * @returns {number}\n */\n get_green() {\n const ret = wasm.rgb_get_green(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the Blue value.\n * @returns {number}\n */\n get_blue() {\n const ret = wasm.rgb_get_blue(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the alpha value for this color.\n * @returns {number}\n */\n get_alpha() {\n const ret = wasm.rgba_get_alpha(this.__wbg_ptr);\n return ret;\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_new_abda76e883ba8a5f = function() {\n const ret = new Error();\n return ret;\n };\n imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbg_instanceof_Window_c4b70662a0d2c5ec = function(arg0) {\n let result;\n try {\n result = arg0 instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_document_e5c1786dea6542e4 = function(arg0) {\n const ret = arg0.document;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_body_e70ae6abd01ae584 = function(arg0) {\n const ret = arg0.body;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_createElement_5d4c76f218b78145 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.createElement(getStringFromWasm0(arg1, arg2));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_width_4c6f0048d64cf86b = function(arg0) {\n const ret = arg0.width;\n return ret;\n };\n imports.wbg.__wbg_height_21f0d3fd8f753394 = function(arg0) {\n const ret = arg0.height;\n return ret;\n };\n imports.wbg.__wbg_width_79e0847ed5883b03 = function(arg0) {\n const ret = arg0.width;\n return ret;\n };\n imports.wbg.__wbg_height_e4e4e4779f8feac0 = function(arg0) {\n const ret = arg0.height;\n return ret;\n };\n imports.wbg.__wbg_data_fda507064d127f5b = function(arg0, arg1) {\n const ret = arg1.data;\n const ptr1 = passArray8ToWasm0(ret, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_newwithu8clampedarrayandsh_1fddccb3a94a5e05 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = new ImageData(getClampedArrayU8FromWasm0(arg0, arg1), arg2 >>> 0, arg3 >>> 0);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae = function(arg0) {\n let result;\n try {\n result = arg0 instanceof CanvasRenderingContext2D;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_drawImage_fede06db74e39a60 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n arg0.drawImage(arg1, arg2, arg3);\n }, arguments) };\n imports.wbg.__wbg_drawImage_f395c8e43c79a909 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {\n arg0.drawImage(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);\n }, arguments) };\n imports.wbg.__wbg_getImageData_5e1c242046e6b59e = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n const ret = arg0.getImageData(arg1, arg2, arg3, arg4);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_putImageData_a8b3e177ee06d521 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n arg0.putImageData(arg1, arg2, arg3);\n }, arguments) };\n imports.wbg.__wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e = function(arg0) {\n let result;\n try {\n result = arg0 instanceof HTMLCanvasElement;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_width_dc225e55343b745e = function(arg0) {\n const ret = arg0.width;\n return ret;\n };\n imports.wbg.__wbg_setwidth_488780db69b08846 = function(arg0, arg1) {\n arg0.width = arg1 >>> 0;\n };\n imports.wbg.__wbg_height_3a8bec2f3fe71b26 = function(arg0) {\n const ret = arg0.height;\n return ret;\n };\n imports.wbg.__wbg_setheight_1761808c18403921 = function(arg0, arg1) {\n arg0.height = arg1 >>> 0;\n };\n imports.wbg.__wbg_getContext_fc99dbd3a9a7e318 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.getContext(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n }, arguments) };\n imports.wbg.__wbg_settextContent_f82a86a8df347e1c = function(arg0, arg1, arg2) {\n arg0.textContent = arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_appendChild_fa3b00dade9fc4cf = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.appendChild(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_newnoargs_e643855c6572a4a8 = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_call_f96b398515635514 = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_self_b9aad7f1c618bfaf = function() { return handleError(function () {\n const ret = self.self;\n return ret;\n }, arguments) };\n imports.wbg.__wbg_window_55e469842c98b086 = function() { return handleError(function () {\n const ret = window.window;\n return ret;\n }, arguments) };\n imports.wbg.__wbg_globalThis_d0957e302752547e = function() { return handleError(function () {\n const ret = globalThis.globalThis;\n return ret;\n }, arguments) };\n imports.wbg.__wbg_global_ae2f87312b8987fb = function() { return handleError(function () {\n const ret = global.global;\n return ret;\n }, arguments) };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n };\n imports.wbg.__wbg_buffer_fcbfb6d88b2732e9 = function(arg0) {\n const ret = arg0.buffer;\n return ret;\n };\n imports.wbg.__wbg_new_bc5d9aad3f9ac80e = function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n };\n imports.wbg.__wbg_set_4b3aa8445ac1e91c = function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n };\n imports.wbg.__wbg_length_d9c4ded7e708c6a1 = function(arg0) {\n const ret = arg0.length;\n return ret;\n };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_memory = function() {\n const ret = wasm.memory;\n return ret;\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_2;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n cachedUint8ClampedArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('photon_rs_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n"],"names":["Uint8Array","TextEncoder","Error","DataView","TextDecoder","r","Object","FinalizationRegistry","BigInt","Response","WebAssembly","console","Window","arguments","ImageData","Uint8ClampedArray","CanvasRenderingContext2D","a","HTMLCanvasElement","Function","self","window","globalThis","Array","toString","JSON","t","URL","Request","fetch"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"static/js/async/195.aa1e3152.js","sources":["webpack://android-playground/../../node_modules/.pnpm/@silvia-odwyer+photon@0.3.3/node_modules/@silvia-odwyer/photon/photon_rs.js"],"sourcesContent":["let wasm;\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\n/**\n * Alter a select channel by incrementing or decrementing its value by a constant.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `channel` - The channel you wish to alter, it should be either 0, 1 or 2,\n * representing R, G, or B respectively. (O=Red, 1=Green, 2=Blue)\n * * `amount` - The amount to increment/decrement the channel's value by for that pixel.\n * A positive value will increment/decrement the channel's value, a negative value will decrement the channel's value.\n *\n * ## Example\n *\n * ```no_run\n * // For example, to increase the Red channel for all pixels by 10:\n * use photon_rs::channels::alter_channel;\n * use photon_rs::native::{open_image};\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * alter_channel(&mut img, 0_usize, 10_i16);\n * ```\n *\n * Adds a constant to a select R, G, or B channel's value.\n *\n * ### Decrease a channel's value\n * // For example, to decrease the Green channel for all pixels by 20:\n * ```no_run\n * use photon_rs::channels::alter_channel;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * alter_channel(&mut img, 1_usize, -20_i16);\n * ```\n * **Note**: Note the use of a minus symbol when decreasing the channel.\n * @param {PhotonImage} img\n * @param {number} channel\n * @param {number} amt\n */\nexport function alter_channel(img, channel, amt) {\n _assertClass(img, PhotonImage);\n wasm.alter_channel(img.__wbg_ptr, channel, amt);\n}\n\n/**\n * Increment or decrement every pixel's Red channel by a constant.\n *\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `amt` - The amount to increment or decrement the channel's value by for that pixel.\n *\n * # Example\n *\n * ```no_run\n * // For example, to increase the Red channel for all pixels by 10:\n * use photon_rs::channels::alter_red_channel;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * alter_red_channel(&mut img, 10_i16);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} amt\n */\nexport function alter_red_channel(photon_image, amt) {\n _assertClass(photon_image, PhotonImage);\n wasm.alter_red_channel(photon_image.__wbg_ptr, amt);\n}\n\n/**\n * Increment or decrement every pixel's Green channel by a constant.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `amt` - The amount to increment/decrement the channel's value by for that pixel.\n *\n * # Example\n *\n * ```no_run\n * // For example, to increase the Green channel for all pixels by 20:\n * use photon_rs::channels::alter_green_channel;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * alter_green_channel(&mut img, 20_i16);\n * ```\n * @param {PhotonImage} img\n * @param {number} amt\n */\nexport function alter_green_channel(img, amt) {\n _assertClass(img, PhotonImage);\n wasm.alter_green_channel(img.__wbg_ptr, amt);\n}\n\n/**\n * Increment or decrement every pixel's Blue channel by a constant.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `amt` - The amount to increment or decrement the channel's value by for that pixel.\n *\n * # Example\n *\n * ```no_run\n * // For example, to increase the Blue channel for all pixels by 10:\n * use photon_rs::channels::alter_blue_channel;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * alter_blue_channel(&mut img, 10_i16);\n * ```\n * @param {PhotonImage} img\n * @param {number} amt\n */\nexport function alter_blue_channel(img, amt) {\n _assertClass(img, PhotonImage);\n wasm.alter_blue_channel(img.__wbg_ptr, amt);\n}\n\n/**\n * Increment/decrement two channels' values simultaneously by adding an amt to each channel per pixel.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `channel1` - A usize from 0 to 2 that represents either the R, G or B channels.\n * * `amt1` - The amount to increment/decrement the channel's value by for that pixel.\n * * `channel2` -A usize from 0 to 2 that represents either the R, G or B channels.\n * * `amt2` - The amount to increment/decrement the channel's value by for that pixel.\n *\n * # Example\n *\n * ```no_run\n * // For example, to increase the values of the Red and Blue channels per pixel:\n * use photon_rs::channels::alter_two_channels;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * alter_two_channels(&mut img, 0_usize, 10_i16, 2_usize, 20_i16);\n * ```\n * @param {PhotonImage} img\n * @param {number} channel1\n * @param {number} amt1\n * @param {number} channel2\n * @param {number} amt2\n */\nexport function alter_two_channels(img, channel1, amt1, channel2, amt2) {\n _assertClass(img, PhotonImage);\n wasm.alter_two_channels(img.__wbg_ptr, channel1, amt1, channel2, amt2);\n}\n\n/**\n * Increment all 3 channels' values by adding an amt to each channel per pixel.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `r_amt` - The amount to increment/decrement the Red channel by.\n * * `g_amt` - The amount to increment/decrement the Green channel by.\n * * `b_amt` - The amount to increment/decrement the Blue channel by.\n *\n * # Example\n *\n * ```no_run\n * // For example, to increase the values of the Red channel by 10, the Green channel by 20,\n * // and the Blue channel by 50:\n * use photon_rs::channels::alter_channels;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * alter_channels(&mut img, 10_i16, 20_i16, 50_i16);\n * ```\n * @param {PhotonImage} img\n * @param {number} r_amt\n * @param {number} g_amt\n * @param {number} b_amt\n */\nexport function alter_channels(img, r_amt, g_amt, b_amt) {\n _assertClass(img, PhotonImage);\n wasm.alter_channels(img.__wbg_ptr, r_amt, g_amt, b_amt);\n}\n\n/**\n * Set a certain channel to zero, thus removing the channel's influence in the pixels' final rendered colour.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `channel` - The channel to be removed; must be a usize from 0 to 2, with 0 representing Red, 1 representing Green, and 2 representing Blue.\n * * `min_filter` - Minimum filter. Value between 0 and 255. Only remove the channel if the current pixel's channel value is less than this minimum filter. To completely\n * remove the channel, set this value to 255, to leave the channel as is, set to 0, and to set a channel to zero for a pixel whose red value is greater than 50,\n * then channel would be 0 and min_filter would be 50.\n *\n * # Example\n *\n * ```no_run\n * // For example, to remove the Red channel with a min_filter of 100:\n * use photon_rs::channels::remove_channel;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * remove_channel(&mut img, 0_usize, 100_u8);\n * ```\n * @param {PhotonImage} img\n * @param {number} channel\n * @param {number} min_filter\n */\nexport function remove_channel(img, channel, min_filter) {\n _assertClass(img, PhotonImage);\n wasm.remove_channel(img.__wbg_ptr, channel, min_filter);\n}\n\n/**\n * Remove the Red channel's influence in an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `min_filter` - Only remove the channel if the current pixel's channel value is less than this minimum filter.\n *\n * # Example\n *\n * ```no_run\n * // For example, to remove the red channel for red channel pixel values less than 50:\n * use photon_rs::channels::remove_red_channel;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * remove_red_channel(&mut img, 50_u8);\n * ```\n * @param {PhotonImage} img\n * @param {number} min_filter\n */\nexport function remove_red_channel(img, min_filter) {\n _assertClass(img, PhotonImage);\n wasm.remove_red_channel(img.__wbg_ptr, min_filter);\n}\n\n/**\n * Remove the Green channel's influence in an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `min_filter` - Only remove the channel if the current pixel's channel value is less than this minimum filter.\n *\n * # Example\n *\n * ```no_run\n * // For example, to remove the green channel for green channel pixel values less than 50:\n * use photon_rs::channels::remove_green_channel;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * remove_green_channel(&mut img, 50_u8);\n * ```\n * @param {PhotonImage} img\n * @param {number} min_filter\n */\nexport function remove_green_channel(img, min_filter) {\n _assertClass(img, PhotonImage);\n wasm.remove_green_channel(img.__wbg_ptr, min_filter);\n}\n\n/**\n * Remove the Blue channel's influence in an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `min_filter` - Only remove the channel if the current pixel's channel value is less than this minimum filter.\n *\n * # Example\n *\n * ```no_run\n * // For example, to remove the blue channel for blue channel pixel values less than 50:\n * use photon_rs::channels::remove_blue_channel;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * remove_blue_channel(&mut img, 50_u8);\n * ```\n * @param {PhotonImage} img\n * @param {number} min_filter\n */\nexport function remove_blue_channel(img, min_filter) {\n _assertClass(img, PhotonImage);\n wasm.remove_blue_channel(img.__wbg_ptr, min_filter);\n}\n\n/**\n * Swap two channels.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `channel1` - An index from 0 to 2, representing the Red, Green or Blue channels respectively. Red would be represented by 0, Green by 1, and Blue by 2.\n * * `channel2` - An index from 0 to 2, representing the Red, Green or Blue channels respectively. Same as above.\n *\n * # Example\n *\n * ```no_run\n * // For example, to swap the values of the Red channel with the values of the Blue channel:\n * use photon_rs::channels::swap_channels;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * swap_channels(&mut img, 0_usize, 2_usize);\n * ```\n * @param {PhotonImage} img\n * @param {number} channel1\n * @param {number} channel2\n */\nexport function swap_channels(img, channel1, channel2) {\n _assertClass(img, PhotonImage);\n wasm.swap_channels(img.__wbg_ptr, channel1, channel2);\n}\n\n/**\n * Invert RGB value of an image.\n *\n * # Arguments\n * * `photon_image` - A DynamicImage that contains a view into the image.\n * # Example\n *\n * ```no_run\n * use photon_rs::channels::invert;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * invert(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function invert(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.invert(photon_image.__wbg_ptr);\n}\n\n/**\n * Selective hue rotation.\n *\n * Only rotate the hue of a pixel if its RGB values are within a specified range.\n * This function only rotates a pixel's hue to another if it is visually similar to the colour specified.\n * For example, if a user wishes all pixels that are blue to be changed to red, they can selectively specify only the blue pixels to be changed.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `ref_color` - The `RGB` value of the reference color (to be compared to)\n * * `degrees` - The amount of degrees to hue rotate by.\n *\n * # Example\n *\n * ```no_run\n * // For example, to only rotate the pixels that are of RGB value RGB{20, 40, 60}:\n * use photon_rs::Rgb;\n * use photon_rs::channels::selective_hue_rotate;\n * use photon_rs::native::open_image;\n *\n * let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * selective_hue_rotate(&mut img, ref_color, 180_f32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {Rgb} ref_color\n * @param {number} degrees\n */\nexport function selective_hue_rotate(photon_image, ref_color, degrees) {\n _assertClass(photon_image, PhotonImage);\n _assertClass(ref_color, Rgb);\n var ptr0 = ref_color.__destroy_into_raw();\n wasm.selective_hue_rotate(photon_image.__wbg_ptr, ptr0, degrees);\n}\n\n/**\n * Selectively change pixel colours which are similar to the reference colour provided.\n *\n * Similarity between two colours is calculated via the CIE76 formula.\n * Only changes the color of a pixel if its similarity to the reference colour is within the range in the algorithm.\n * For example, with this function, a user can change the color of all blue pixels by mixing them with red by 10%.\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `ref_color` - The `RGB` value of the reference color (to be compared to)\n * * `new_color` - The `RGB` value of the new color (to be mixed with the matched pixels)\n * * `fraction` - The amount of mixing the new colour with the matched pixels\n *\n * # Example\n *\n * ```no_run\n * // For example, to only change the color of pixels that are similar to the RGB value RGB{200, 120, 30} by mixing RGB{30, 120, 200} with 25%:\n * use photon_rs::Rgb;\n * use photon_rs::channels::selective_color_convert;\n * use photon_rs::native::open_image;\n *\n * let ref_color = Rgb::new(200, 120, 30);\n * let new_color = Rgb::new(30, 120, 200);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * selective_color_convert(&mut img, ref_color, new_color, 0.25);\n * ```\n * @param {PhotonImage} photon_image\n * @param {Rgb} ref_color\n * @param {Rgb} new_color\n * @param {number} fraction\n */\nexport function selective_color_convert(photon_image, ref_color, new_color, fraction) {\n _assertClass(photon_image, PhotonImage);\n _assertClass(ref_color, Rgb);\n var ptr0 = ref_color.__destroy_into_raw();\n _assertClass(new_color, Rgb);\n var ptr1 = new_color.__destroy_into_raw();\n wasm.selective_color_convert(photon_image.__wbg_ptr, ptr0, ptr1, fraction);\n}\n\n/**\n * Selectively lighten an image.\n *\n * Only lighten the hue of a pixel if its colour matches or is similar to the RGB colour specified.\n * For example, if a user wishes all pixels that are blue to be lightened, they can selectively specify only the blue pixels to be changed.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `ref_color` - The `RGB` value of the reference color (to be compared to)\n * * `amt` - The level from 0 to 1 to lighten the hue by. Increasing by 10% would have an `amt` of 0.1\n *\n * # Example\n *\n * ```no_run\n * // For example, to only lighten the pixels that are of or similar to RGB value RGB{20, 40, 60}:\n * use photon_rs::Rgb;\n * use photon_rs::channels::selective_lighten;\n * use photon_rs::native::open_image;\n *\n * let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * selective_lighten(&mut img, ref_color, 0.2_f32);\n * ```\n * @param {PhotonImage} img\n * @param {Rgb} ref_color\n * @param {number} amt\n */\nexport function selective_lighten(img, ref_color, amt) {\n _assertClass(img, PhotonImage);\n _assertClass(ref_color, Rgb);\n var ptr0 = ref_color.__destroy_into_raw();\n wasm.selective_lighten(img.__wbg_ptr, ptr0, amt);\n}\n\n/**\n * Selectively desaturate pixel colours which are similar to the reference colour provided.\n *\n * Similarity between two colours is calculated via the CIE76 formula.\n * Only desaturates the hue of a pixel if its similarity to the reference colour is within the range in the algorithm.\n * For example, if a user wishes all pixels that are blue to be desaturated by 0.1, they can selectively specify only the blue pixels to be changed.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `ref_color` - The `RGB` value of the reference color (to be compared to)\n * * `amt` - The amount of desaturate the colour by.\n *\n * # Example\n *\n * ```no_run\n * // For example, to only desaturate the pixels that are similar to the RGB value RGB{20, 40, 60}:\n * use photon_rs::Rgb;\n * use photon_rs::channels::selective_desaturate;\n * use photon_rs::native::open_image;\n *\n * let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * selective_desaturate(&mut img, ref_color, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {Rgb} ref_color\n * @param {number} amt\n */\nexport function selective_desaturate(img, ref_color, amt) {\n _assertClass(img, PhotonImage);\n _assertClass(ref_color, Rgb);\n var ptr0 = ref_color.__destroy_into_raw();\n wasm.selective_desaturate(img.__wbg_ptr, ptr0, amt);\n}\n\n/**\n * Selectively saturate pixel colours which are similar to the reference colour provided.\n *\n * Similarity between two colours is calculated via the CIE76 formula.\n * Only saturates the hue of a pixel if its similarity to the reference colour is within the range in the algorithm.\n * For example, if a user wishes all pixels that are blue to have an increase in saturation by 10%, they can selectively specify only the blue pixels to be changed.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `ref_color` - The `RGB` value of the reference color (to be compared to)\n * * `amt` - The amount of saturate the colour by.\n *\n * # Example\n *\n * ```no_run\n * // For example, to only increase the saturation of pixels that are similar to the RGB value RGB{20, 40, 60}:\n * use photon_rs::Rgb;\n * use photon_rs::channels::selective_saturate;\n * use photon_rs::native::open_image;\n *\n * let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * selective_saturate(&mut img, ref_color, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {Rgb} ref_color\n * @param {number} amt\n */\nexport function selective_saturate(img, ref_color, amt) {\n _assertClass(img, PhotonImage);\n _assertClass(ref_color, Rgb);\n var ptr0 = ref_color.__destroy_into_raw();\n wasm.selective_saturate(img.__wbg_ptr, ptr0, amt);\n}\n\n/**\n * Selectively changes a pixel to greyscale if it is *not* visually similar or close to the colour specified.\n * Only changes the colour of a pixel if its RGB values are within a specified range.\n *\n * (Similarity between two colours is calculated via the CIE76 formula.)\n * For example, if a user wishes all pixels that are *NOT* blue to be displayed in greyscale, they can selectively specify only the blue pixels to be\n * kept in the photo.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `ref_color` - The `RGB` value of the reference color (to be compared to)\n *\n * # Example\n *\n * ```no_run\n * // For example, to greyscale all pixels that are *not* visually similar to the RGB colour RGB{20, 40, 60}:\n * use photon_rs::Rgb;\n * use photon_rs::channels::selective_greyscale;\n * use photon_rs::native::open_image;\n *\n * let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * selective_greyscale(img, ref_color);\n * ```\n * @param {PhotonImage} photon_image\n * @param {Rgb} ref_color\n */\nexport function selective_greyscale(photon_image, ref_color) {\n _assertClass(photon_image, PhotonImage);\n var ptr0 = photon_image.__destroy_into_raw();\n _assertClass(ref_color, Rgb);\n var ptr1 = ref_color.__destroy_into_raw();\n wasm.selective_greyscale(ptr0, ptr1);\n}\n\n/**\n * Apply a monochrome effect of a certain colour.\n *\n * It does so by averaging the R, G, and B values of a pixel, and then adding a\n * separate value to that averaged value for each channel to produce a tint.\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `r_offset` - The value to add to the Red channel per pixel.\n * * `g_offset` - The value to add to the Green channel per pixel.\n * * `b_offset` - The value to add to the Blue channel per pixel.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a monochrome effect to an image:\n * use photon_rs::monochrome::monochrome;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * monochrome(&mut img, 40_u32, 50_u32, 100_u32);\n * ```\n * @param {PhotonImage} img\n * @param {number} r_offset\n * @param {number} g_offset\n * @param {number} b_offset\n */\nexport function monochrome(img, r_offset, g_offset, b_offset) {\n _assertClass(img, PhotonImage);\n wasm.monochrome(img.__wbg_ptr, r_offset, g_offset, b_offset);\n}\n\n/**\n * Convert an image to sepia.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * // For example, to sepia an image of type `PhotonImage`:\n * use photon_rs::monochrome::sepia;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * sepia(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function sepia(img) {\n _assertClass(img, PhotonImage);\n wasm.sepia(img.__wbg_ptr);\n}\n\n/**\n * Convert an image to grayscale using the conventional averaging algorithm.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * // For example, to convert an image of type `PhotonImage` to grayscale:\n * use photon_rs::monochrome::grayscale;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * grayscale(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function grayscale(img) {\n _assertClass(img, PhotonImage);\n wasm.grayscale(img.__wbg_ptr);\n}\n\n/**\n * Convert an image to grayscale with a human corrected factor, to account for human vision.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * // For example, to convert an image of type `PhotonImage` to grayscale with a human corrected factor:\n * use photon_rs::monochrome::grayscale_human_corrected;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * grayscale_human_corrected(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function grayscale_human_corrected(img) {\n _assertClass(img, PhotonImage);\n wasm.grayscale_human_corrected(img.__wbg_ptr);\n}\n\n/**\n * Desaturate an image by getting the min/max of each pixel's RGB values.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * // For example, to desaturate an image:\n * use photon_rs::monochrome::desaturate;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * desaturate(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function desaturate(img) {\n _assertClass(img, PhotonImage);\n wasm.desaturate(img.__wbg_ptr);\n}\n\n/**\n * Uses a min. decomposition algorithm to convert an image to greyscale.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to decompose an image with min decomposition:\n * use photon_rs::monochrome::decompose_min;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * decompose_min(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function decompose_min(img) {\n _assertClass(img, PhotonImage);\n wasm.decompose_min(img.__wbg_ptr);\n}\n\n/**\n * Uses a max. decomposition algorithm to convert an image to greyscale.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to decompose an image with max decomposition:\n * use photon_rs::monochrome::decompose_max;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * decompose_max(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function decompose_max(img) {\n _assertClass(img, PhotonImage);\n wasm.decompose_max(img.__wbg_ptr);\n}\n\n/**\n * Employ only a limited number of gray shades in an image.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `num_shades` - The number of grayscale shades to be displayed in the image.\n *\n * # Example\n *\n * ```no_run\n * // For example, to limit an image to four shades of gray only:\n * use photon_rs::monochrome::grayscale_shades;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * grayscale_shades(&mut img, 4_u8);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} num_shades\n */\nexport function grayscale_shades(photon_image, num_shades) {\n _assertClass(photon_image, PhotonImage);\n wasm.grayscale_shades(photon_image.__wbg_ptr, num_shades);\n}\n\n/**\n * Convert an image to grayscale by setting a pixel's 3 RGB values to the Red channel's value.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * use photon_rs::monochrome::r_grayscale;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * r_grayscale(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function r_grayscale(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.r_grayscale(photon_image.__wbg_ptr);\n}\n\n/**\n * Convert an image to grayscale by setting a pixel's 3 RGB values to the Green channel's value.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * use photon_rs::monochrome::g_grayscale;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * g_grayscale(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function g_grayscale(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.g_grayscale(photon_image.__wbg_ptr);\n}\n\n/**\n * Convert an image to grayscale by setting a pixel's 3 RGB values to the Blue channel's value.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * use photon_rs::monochrome::b_grayscale;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * b_grayscale(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function b_grayscale(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.b_grayscale(photon_image.__wbg_ptr);\n}\n\n/**\n * Convert an image to grayscale by setting a pixel's 3 RGB values to a chosen channel's value.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `channel` - A usize representing the channel from 0 to 2. O represents the Red channel, 1 the Green channel, and 2 the Blue channel.\n *\n * # Example\n * To grayscale using only values from the Red channel:\n * ```no_run\n * use photon_rs::monochrome::single_channel_grayscale;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * single_channel_grayscale(&mut img, 0_usize);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} channel\n */\nexport function single_channel_grayscale(photon_image, channel) {\n _assertClass(photon_image, PhotonImage);\n wasm.single_channel_grayscale(photon_image.__wbg_ptr, channel);\n}\n\n/**\n * Threshold an image using a standard thresholding algorithm.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `threshold` - The amount the image should be thresholded by from 0 to 255.\n * # Example\n *\n * ```no_run\n * // For example, to threshold an image of type `PhotonImage`:\n * use photon_rs::monochrome::threshold;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * threshold(&mut img, 30_u32);\n * ```\n * @param {PhotonImage} img\n * @param {number} threshold\n */\nexport function threshold(img, threshold) {\n _assertClass(img, PhotonImage);\n wasm.threshold(img.__wbg_ptr, threshold);\n}\n\n/**\n * Applies gamma correction to an image.\n * # Arguments\n * * `photon_image` - A PhotonImage that contains a view into the image.\n * * `red` - Gamma value for red channel.\n * * `green` - Gamma value for green channel.\n * * `blue` - Gamma value for blue channel.\n * # Example\n *\n * ```no_run\n * // For example, to turn an image of type `PhotonImage` into a gamma corrected image:\n * use photon_rs::colour_spaces::gamma_correction;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * gamma_correction(&mut img, 2.2, 2.2, 2.2);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} red\n * @param {number} green\n * @param {number} blue\n */\nexport function gamma_correction(photon_image, red, green, blue) {\n _assertClass(photon_image, PhotonImage);\n wasm.gamma_correction(photon_image.__wbg_ptr, red, green, blue);\n}\n\n/**\n * Image manipulation effects in the HSLuv colour space\n *\n * Effects include:\n * * **saturate** - Saturation increase.\n * * **desaturate** - Desaturate the image.\n * * **shift_hue** - Hue rotation by a specified number of degrees.\n * * **darken** - Decrease the brightness.\n * * **lighten** - Increase the brightness.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `mode` - The effect desired to be applied. Choose from: `saturate`, `desaturate`, `shift_hue`, `darken`, `lighten`\n * * `amt` - A float value from 0 to 1 which represents the amount the effect should be increased by.\n * # Example\n * ```no_run\n * // For example to increase the saturation by 10%:\n * use photon_rs::colour_spaces::hsluv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * hsluv(&mut img, \"saturate\", 0.1_f32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {string} mode\n * @param {number} amt\n */\nexport function hsluv(photon_image, mode, amt) {\n _assertClass(photon_image, PhotonImage);\n const ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.hsluv(photon_image.__wbg_ptr, ptr0, len0, amt);\n}\n\n/**\n * Image manipulation effects in the LCh colour space\n *\n * Effects include:\n * * **saturate** - Saturation increase.\n * * **desaturate** - Desaturate the image.\n * * **shift_hue** - Hue rotation by a specified number of degrees.\n * * **darken** - Decrease the brightness.\n * * **lighten** - Increase the brightness.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `mode` - The effect desired to be applied. Choose from: `saturate`, `desaturate`, `shift_hue`, `darken`, `lighten`\n * * `amt` - A float value from 0 to 1 which represents the amount the effect should be increased by.\n * # Example\n * ```no_run\n * // For example to increase the saturation by 10%:\n * use photon_rs::colour_spaces::lch;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * lch(&mut img, \"saturate\", 0.1_f32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {string} mode\n * @param {number} amt\n */\nexport function lch(photon_image, mode, amt) {\n _assertClass(photon_image, PhotonImage);\n const ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.lch(photon_image.__wbg_ptr, ptr0, len0, amt);\n}\n\n/**\n * Image manipulation effects in the HSL colour space.\n *\n * Effects include:\n * * **saturate** - Saturation increase.\n * * **desaturate** - Desaturate the image.\n * * **shift_hue** - Hue rotation by a specified number of degrees.\n * * **darken** - Decrease the brightness.\n * * **lighten** - Increase the brightness.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `mode` - The effect desired to be applied. Choose from: `saturate`, `desaturate`, `shift_hue`, `darken`, `lighten`\n * * `amt` - A float value from 0 to 1 which represents the amount the effect should be increased by.\n * # Example\n * ```no_run\n * // For example to increase the saturation by 10%:\n * use photon_rs::colour_spaces::hsl;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * hsl(&mut img, \"saturate\", 0.1_f32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {string} mode\n * @param {number} amt\n */\nexport function hsl(photon_image, mode, amt) {\n _assertClass(photon_image, PhotonImage);\n const ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.hsl(photon_image.__wbg_ptr, ptr0, len0, amt);\n}\n\n/**\n * Image manipulation in the HSV colour space.\n *\n * Effects include:\n * * **saturate** - Saturation increase.\n * * **desaturate** - Desaturate the image.\n * * **shift_hue** - Hue rotation by a specified number of degrees.\n * * **darken** - Decrease the brightness.\n * * **lighten** - Increase the brightness.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `mode` - The effect desired to be applied. Choose from: `saturate`, `desaturate`, `shift_hue`, `darken`, `lighten`\n * * `amt` - A float value from 0 to 1 which represents the amount the effect should be increased by.\n *\n * # Example\n * ```no_run\n * // For example to increase the saturation by 10%:\n * use photon_rs::colour_spaces::hsv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * hsv(&mut img, \"saturate\", 0.1_f32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {string} mode\n * @param {number} amt\n */\nexport function hsv(photon_image, mode, amt) {\n _assertClass(photon_image, PhotonImage);\n const ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.hsv(photon_image.__wbg_ptr, ptr0, len0, amt);\n}\n\n/**\n * Shift hue by a specified number of degrees in the HSL colour space.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `mode` - A float value from 0 to 1 which is the amount to shift the hue by, or hue rotate by.\n *\n * # Example\n * ```no_run\n * // For example to hue rotate/shift the hue by 120 degrees in the HSL colour space:\n * use photon_rs::colour_spaces::hue_rotate_hsl;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * hue_rotate_hsl(&mut img, 120_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} degrees\n */\nexport function hue_rotate_hsl(img, degrees) {\n _assertClass(img, PhotonImage);\n wasm.hue_rotate_hsl(img.__wbg_ptr, degrees);\n}\n\n/**\n * Shift hue by a specified number of degrees in the HSV colour space.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `mode` - A float value from 0 to 1 which is the amount to shift the hue by, or hue rotate by.\n *\n * # Example\n * ```no_run\n * // For example to hue rotate/shift the hue by 120 degrees in the HSV colour space:\n * use photon_rs::colour_spaces::hue_rotate_hsv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * hue_rotate_hsv(&mut img, 120_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} degrees\n */\nexport function hue_rotate_hsv(img, degrees) {\n _assertClass(img, PhotonImage);\n wasm.hue_rotate_hsv(img.__wbg_ptr, degrees);\n}\n\n/**\n * Shift hue by a specified number of degrees in the LCh colour space.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `mode` - A float value from 0 to 1 which is the amount to shift the hue by, or hue rotate by.\n *\n * # Example\n * ```no_run\n * // For example to hue rotate/shift the hue by 120 degrees in the HSL colour space:\n * use photon_rs::colour_spaces::hue_rotate_lch;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * hue_rotate_lch(&mut img, 120_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} degrees\n */\nexport function hue_rotate_lch(img, degrees) {\n _assertClass(img, PhotonImage);\n wasm.hue_rotate_lch(img.__wbg_ptr, degrees);\n}\n\n/**\n * Shift hue by a specified number of degrees in the HSLuv colour space.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `mode` - A float value from 0 to 1 which is the amount to shift the hue by, or hue rotate by.\n *\n * # Example\n * ```no_run\n * // For example to hue rotate/shift the hue by 120 degrees in the HSL colour space:\n * use photon_rs::colour_spaces::hue_rotate_hsluv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * hue_rotate_hsluv(&mut img, 120_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} degrees\n */\nexport function hue_rotate_hsluv(img, degrees) {\n _assertClass(img, PhotonImage);\n wasm.hue_rotate_hsluv(img.__wbg_ptr, degrees);\n}\n\n/**\n * Increase the image's saturation by converting each pixel's colour to the HSL colour space\n * and increasing the colour's saturation.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to increase the saturation by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Increasing saturation by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to increase saturation by 10% in the HSL colour space:\n * use photon_rs::colour_spaces::saturate_hsl;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * saturate_hsl(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function saturate_hsl(img, level) {\n _assertClass(img, PhotonImage);\n wasm.saturate_hsl(img.__wbg_ptr, level);\n}\n\n/**\n * Increase the image's saturation in the LCh colour space.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to increase the saturation by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Increasing saturation by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to increase saturation by 40% in the Lch colour space:\n * use photon_rs::colour_spaces::saturate_lch;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * saturate_lch(&mut img, 0.4_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function saturate_lch(img, level) {\n _assertClass(img, PhotonImage);\n wasm.saturate_lch(img.__wbg_ptr, level);\n}\n\n/**\n * Increase the image's saturation in the HSLuv colour space.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to increase the saturation by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Increasing saturation by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to increase saturation by 40% in the HSLuv colour space:\n * use photon_rs::colour_spaces::saturate_hsluv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * saturate_hsluv(&mut img, 0.4_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function saturate_hsluv(img, level) {\n _assertClass(img, PhotonImage);\n wasm.saturate_hsluv(img.__wbg_ptr, level);\n}\n\n/**\n * Increase the image's saturation in the HSV colour space.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level by which to increase the saturation by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Increasing saturation by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to increase saturation by 30% in the HSV colour space:\n * use photon_rs::colour_spaces::saturate_hsv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * saturate_hsv(&mut img, 0.3_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function saturate_hsv(img, level) {\n _assertClass(img, PhotonImage);\n wasm.saturate_hsv(img.__wbg_ptr, level);\n}\n\n/**\n * Lighten an image by a specified amount in the LCh colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to lighten the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Lightening by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to lighten an image by 10% in the LCh colour space:\n * use photon_rs::colour_spaces::lighten_lch;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * lighten_lch(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function lighten_lch(img, level) {\n _assertClass(img, PhotonImage);\n wasm.lighten_lch(img.__wbg_ptr, level);\n}\n\n/**\n * Lighten an image by a specified amount in the HSLuv colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to lighten the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Lightening by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to lighten an image by 10% in the HSLuv colour space:\n * use photon_rs::colour_spaces::lighten_hsluv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * lighten_hsluv(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function lighten_hsluv(img, level) {\n _assertClass(img, PhotonImage);\n wasm.lighten_hsluv(img.__wbg_ptr, level);\n}\n\n/**\n * Lighten an image by a specified amount in the HSL colour space.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to lighten the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Lightening by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to lighten an image by 10% in the HSL colour space:\n * use photon_rs::colour_spaces::lighten_hsl;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * lighten_hsl(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function lighten_hsl(img, level) {\n _assertClass(img, PhotonImage);\n wasm.lighten_hsl(img.__wbg_ptr, level);\n}\n\n/**\n * Lighten an image by a specified amount in the HSV colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to lighten the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Lightening by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to lighten an image by 10% in the HSV colour space:\n * use photon_rs::colour_spaces::lighten_hsv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * lighten_hsv(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function lighten_hsv(img, level) {\n _assertClass(img, PhotonImage);\n wasm.lighten_hsv(img.__wbg_ptr, level);\n}\n\n/**\n * Darken the image by a specified amount in the LCh colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to darken the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Darkening by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to darken an image by 10% in the LCh colour space:\n * use photon_rs::colour_spaces::darken_lch;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * darken_lch(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function darken_lch(img, level) {\n _assertClass(img, PhotonImage);\n wasm.darken_lch(img.__wbg_ptr, level);\n}\n\n/**\n * Darken the image by a specified amount in the HSLuv colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to darken the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Darkening by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to darken an image by 10% in the HSLuv colour space:\n * use photon_rs::colour_spaces::darken_hsluv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * darken_hsluv(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function darken_hsluv(img, level) {\n _assertClass(img, PhotonImage);\n wasm.darken_hsluv(img.__wbg_ptr, level);\n}\n\n/**\n * Darken the image by a specified amount in the HSL colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to darken the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Darkening by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to darken an image by 10% in the HSL colour space:\n * use photon_rs::colour_spaces::darken_hsl;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * darken_hsl(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function darken_hsl(img, level) {\n _assertClass(img, PhotonImage);\n wasm.darken_hsl(img.__wbg_ptr, level);\n}\n\n/**\n * Darken the image's colours by a specified amount in the HSV colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to darken the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Darkening by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to darken an image by 10% in the HSV colour space:\n * use photon_rs::colour_spaces::darken_hsv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * darken_hsv(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function darken_hsv(img, level) {\n _assertClass(img, PhotonImage);\n wasm.darken_hsv(img.__wbg_ptr, level);\n}\n\n/**\n * Desaturate the image by a specified amount in the HSV colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to desaturate the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Desaturating by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to desaturate an image by 10% in the HSV colour space:\n * use photon_rs::colour_spaces::desaturate_hsv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * desaturate_hsv(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function desaturate_hsv(img, level) {\n _assertClass(img, PhotonImage);\n wasm.desaturate_hsv(img.__wbg_ptr, level);\n}\n\n/**\n * Desaturate the image by a specified amount in the HSL colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to desaturate the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Desaturating by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to desaturate an image by 10% in the LCh colour space:\n * use photon_rs::colour_spaces::desaturate_hsl;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * desaturate_hsl(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function desaturate_hsl(img, level) {\n _assertClass(img, PhotonImage);\n wasm.desaturate_hsl(img.__wbg_ptr, level);\n}\n\n/**\n * Desaturate the image by a specified amount in the LCh colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to desaturate the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Desaturating by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to desaturate an image by 10% in the LCh colour space:\n * use photon_rs::colour_spaces::desaturate_lch;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * desaturate_lch(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function desaturate_lch(img, level) {\n _assertClass(img, PhotonImage);\n wasm.desaturate_lch(img.__wbg_ptr, level);\n}\n\n/**\n * Desaturate the image by a specified amount in the HSLuv colour space.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `level` - Float value from 0 to 1 representing the level to which to desaturate the image by.\n * The `level` must be from 0 to 1 in floating-point, `f32` format.\n * Desaturating by 80% would be represented by a `level` of 0.8\n *\n * # Example\n * ```no_run\n * // For example to desaturate an image by 10% in the HSLuv colour space:\n * use photon_rs::colour_spaces::desaturate_hsluv;\n * use photon_rs::native::open_image;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * desaturate_hsluv(&mut img, 0.1_f32);\n * ```\n * @param {PhotonImage} img\n * @param {number} level\n */\nexport function desaturate_hsluv(img, level) {\n _assertClass(img, PhotonImage);\n wasm.desaturate_hsluv(img.__wbg_ptr, level);\n}\n\n/**\n * Mix image with a single color, supporting passing `opacity`.\n * The algorithm comes from Jimp. See `function mix` and `function colorFn` at following link:\n * https://github.com/oliver-moran/jimp/blob/29679faa597228ff2f20d34c5758e4d2257065a3/packages/plugin-color/src/index.js\n * Specifically, result_value = (mix_color_value - origin_value) * opacity + origin_value =\n * mix_color_value * opacity + (1 - opacity) * origin_value for each\n * of RGB channel.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage that contains a view into the image.\n * * `mix_color` - the color to be mixed in, as an RGB value.\n * * `opacity` - the opacity of color when mixed to image. Float value from 0 to 1.\n * # Example\n *\n * ```no_run\n * // For example, to mix an image with rgb (50, 255, 254) and opacity 0.4:\n * use photon_rs::Rgb;\n * use photon_rs::colour_spaces::mix_with_colour;\n * use photon_rs::native::open_image;\n *\n * let mix_colour = Rgb::new(50_u8, 255_u8, 254_u8);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * mix_with_colour(&mut img, mix_colour, 0.4_f32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {Rgb} mix_colour\n * @param {number} opacity\n */\nexport function mix_with_colour(photon_image, mix_colour, opacity) {\n _assertClass(photon_image, PhotonImage);\n _assertClass(mix_colour, Rgb);\n var ptr0 = mix_colour.__destroy_into_raw();\n wasm.mix_with_colour(photon_image.__wbg_ptr, ptr0, opacity);\n}\n\n/**\n * Noise reduction.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to noise reduct an image:\n * use photon_rs::conv::noise_reduction;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * noise_reduction(&mut img);\n * ```\n * Adds a constant to a select R, G, or B channel's value.\n * @param {PhotonImage} photon_image\n */\nexport function noise_reduction(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.noise_reduction(photon_image.__wbg_ptr);\n}\n\n/**\n * Sharpen an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to sharpen an image:\n * use photon_rs::conv::sharpen;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * sharpen(&mut img);\n * ```\n * Adds a constant to a select R, G, or B channel's value.\n * @param {PhotonImage} photon_image\n */\nexport function sharpen(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.sharpen(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply edge detection to an image, to create a dark version with its edges highlighted.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to increase the Red channel for all pixels by 10:\n * use photon_rs::conv::edge_detection;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * edge_detection(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function edge_detection(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.edge_detection(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply an identity kernel convolution to an image.\n *\n * # Arguments\n * * `img` -A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply an identity kernel convolution:\n * use photon_rs::conv::identity;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * identity(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function identity(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.identity(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply a box blur effect.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a box blur effect:\n * use photon_rs::conv::box_blur;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * box_blur(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function box_blur(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.box_blur(photon_image.__wbg_ptr);\n}\n\n/**\n * Gaussian blur in linear time.\n *\n * Reference: http://blog.ivank.net/fastest-gaussian-blur.html\n *\n * # Arguments\n * * `photon_image` - A PhotonImage\n * * `radius` - blur radius\n * # Example\n *\n * ```no_run\n * use photon_rs::conv::gaussian_blur;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * gaussian_blur(&mut img, 3_i32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} radius\n */\nexport function gaussian_blur(photon_image, radius) {\n _assertClass(photon_image, PhotonImage);\n wasm.gaussian_blur(photon_image.__wbg_ptr, radius);\n}\n\n/**\n * Detect horizontal lines in an image, and highlight these only.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to display the horizontal lines in an image:\n * use photon_rs::conv::detect_horizontal_lines;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * detect_horizontal_lines(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function detect_horizontal_lines(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.detect_horizontal_lines(photon_image.__wbg_ptr);\n}\n\n/**\n * Detect vertical lines in an image, and highlight these only.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to display the vertical lines in an image:\n * use photon_rs::conv::detect_vertical_lines;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * detect_vertical_lines(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function detect_vertical_lines(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.detect_vertical_lines(photon_image.__wbg_ptr);\n}\n\n/**\n * Detect lines at a forty five degree angle in an image, and highlight these only.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to display the lines at a forty five degree angle in an image:\n * use photon_rs::conv::detect_45_deg_lines;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * detect_45_deg_lines(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function detect_45_deg_lines(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.detect_45_deg_lines(photon_image.__wbg_ptr);\n}\n\n/**\n * Detect lines at a 135 degree angle in an image, and highlight these only.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to display the lines at a 135 degree angle in an image:\n * use photon_rs::conv::detect_135_deg_lines;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * detect_135_deg_lines(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function detect_135_deg_lines(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.detect_135_deg_lines(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply a standard laplace convolution.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a laplace effect:\n * use photon_rs::conv::laplace;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * laplace(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function laplace(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.laplace(photon_image.__wbg_ptr);\n}\n\n/**\n * Preset edge effect.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply this effect:\n * use photon_rs::conv::edge_one;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * edge_one(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function edge_one(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.edge_one(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply an emboss effect to an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply an emboss effect:\n * use photon_rs::conv::emboss;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * emboss(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function emboss(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.emboss(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply a horizontal Sobel filter to an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a horizontal Sobel filter:\n * use photon_rs::conv::sobel_horizontal;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * sobel_horizontal(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function sobel_horizontal(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.sobel_horizontal(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply a horizontal Prewitt convolution to an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a horizontal Prewitt convolution effect:\n * use photon_rs::conv::prewitt_horizontal;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * prewitt_horizontal(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function prewitt_horizontal(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.prewitt_horizontal(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply a vertical Sobel filter to an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a vertical Sobel filter:\n * use photon_rs::conv::sobel_vertical;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * sobel_vertical(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function sobel_vertical(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.sobel_vertical(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply a global Sobel filter to an image\n *\n * Each pixel is calculated as the magnitude of the horizontal and vertical components of the Sobel filter,\n * ie if X is the horizontal sobel and Y is the vertical, for each pixel, we calculate sqrt(X^2 + Y^2)\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a global Sobel filter:\n * use photon_rs::conv::sobel_global;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * sobel_global(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function sobel_global(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.sobel_global(photon_image.__wbg_ptr);\n}\n\n/**\n * Add randomized noise to an image.\n * This function adds a Gaussian Noise Sample to each pixel through incrementing each channel by a randomized offset.\n * This randomized offset is generated by creating a randomized thread pool.\n * **[WASM SUPPORT IS AVAILABLE]**: Randomized thread pools cannot be created with WASM, but\n * a workaround using js_sys::Math::random works now.\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example:\n * use photon_rs::native::open_image;\n * use photon_rs::noise::add_noise_rand;\n * use photon_rs::PhotonImage;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * add_noise_rand(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function add_noise_rand(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.add_noise_rand(photon_image.__wbg_ptr);\n}\n\n/**\n * Add pink-tinted noise to an image.\n *\n * **[WASM SUPPORT IS AVAILABLE]**: Randomized thread pools cannot be created with WASM, but\n * a workaround using js_sys::Math::random works now.\n * # Arguments\n * * `name` - A PhotonImage that contains a view into the image.\n *\n * # Example\n *\n * ```no_run\n * // For example, to add pink-tinted noise to an image:\n * use photon_rs::native::open_image;\n * use photon_rs::noise::pink_noise;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * pink_noise(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function pink_noise(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.pink_noise(photon_image.__wbg_ptr);\n}\n\n/**\n * Add a watermark to an image.\n *\n * # Arguments\n * * `img` - A DynamicImage that contains a view into the image.\n * * `watermark` - The watermark to be placed onto the `img` image.\n * * `x` - The x coordinate where the watermark's top corner should be positioned.\n * * `y` - The y coordinate where the watermark's top corner should be positioned.\n * # Example\n *\n * ```no_run\n * // For example, to add a watermark to an image at x: 30, y: 40:\n * use photon_rs::multiple::watermark;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let water_mark = open_image(\"watermark.jpg\").expect(\"File should open\");\n * watermark(&mut img, &water_mark, 30_i64, 40_i64);\n * ```\n * @param {PhotonImage} img\n * @param {PhotonImage} watermark\n * @param {bigint} x\n * @param {bigint} y\n */\nexport function watermark(img, watermark, x, y) {\n _assertClass(img, PhotonImage);\n _assertClass(watermark, PhotonImage);\n wasm.watermark(img.__wbg_ptr, watermark.__wbg_ptr, x, y);\n}\n\n/**\n * Blend two images together.\n *\n * The `blend_mode` (3rd param) determines which blending mode to use; change this for varying effects.\n * The blend modes available include: `overlay`, `over`, `atop`, `xor`, `plus`, `multiply`, `burn`,\n * `difference`, `soft_light`, `screen`, `hard_light`, `dodge`, `exclusion`, `lighten`, `darken` (more to come)\n * NOTE: The first image must be smaller than the second image passed as params.\n * If the first image were larger than the second, then there would be overflowing pixels which would have no corresponding pixels\n * in the second image.\n * # Arguments\n * * `img` - A DynamicImage that contains a view into the image.\n * * `img2` - The 2nd DynamicImage to be blended with the first.\n * * `blend_mode` - The blending mode to use. See above for complete list of blend modes available.\n * # Example\n *\n * ```no_run\n * // For example, to blend two images with the `multiply` blend mode:\n * use photon_rs::multiple::blend;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let img2 = open_image(\"img2.jpg\").expect(\"File should open\");\n * blend(&mut img, &img2, \"multiply\");\n * ```\n * @param {PhotonImage} photon_image\n * @param {PhotonImage} photon_image2\n * @param {string} blend_mode\n */\nexport function blend(photon_image, photon_image2, blend_mode) {\n _assertClass(photon_image, PhotonImage);\n _assertClass(photon_image2, PhotonImage);\n const ptr0 = passStringToWasm0(blend_mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.blend(photon_image.__wbg_ptr, photon_image2.__wbg_ptr, ptr0, len0);\n}\n\n/**\n * @param {number} width\n * @param {number} height\n * @returns {PhotonImage}\n */\nexport function create_gradient(width, height) {\n const ret = wasm.create_gradient(width, height);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Apply a gradient to an image.\n * @param {PhotonImage} image\n */\nexport function apply_gradient(image) {\n _assertClass(image, PhotonImage);\n wasm.apply_gradient(image.__wbg_ptr);\n}\n\n/**\n * Solarization on the Blue channel.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::neue;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * neue(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function neue(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.neue(photon_image.__wbg_ptr);\n}\n\n/**\n * Solarization on the Red and Green channels.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::lix;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * lix(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function lix(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.lix(photon_image.__wbg_ptr);\n}\n\n/**\n * Solarization on the Red and Blue channels.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::ryo;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * ryo(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function ryo(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.ryo(photon_image.__wbg_ptr);\n}\n\n/**\n * Apply a filter to an image. Over 20 filters are available.\n * The filters are as follows:\n * * **oceanic**: Add an aquamarine-tinted hue to an image.\n * * **islands**: Aquamarine tint.\n * * **marine**: Add a green/blue mixed hue to an image.\n * * **seagreen**: Dark green hue, with tones of blue.\n * * **flagblue**: Royal blue tint\n * * **liquid**: Blue-inspired tint.\n * * **diamante**: Custom filter with a blue/turquoise tint.\n * * **radio**: Fallout-style radio effect.\n * * **twenties**: Slight-blue tinted historical effect.\n * * **rosetint**: Rose-tinted filter.\n * * **mauve**: Purple-infused filter.\n * * **bluechrome**: Blue monochrome effect.\n * * **vintage**: Vintage filter with a red tint.\n * * **perfume**: Increase the blue channel, with moderate increases in the Red and Green channels.\n * * **serenity**: Custom filter with an increase in the Blue channel's values.\n * # Arguments\n * * `img` - A PhotonImage.\n * * `filter_name` - The filter's name. Choose from the selection above, eg: \"oceanic\"\n * # Example\n *\n * ```no_run\n * // For example, to add a filter called \"vintage\" to an image:\n * use photon_rs::filters::filter;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * filter(&mut img, \"vintage\");\n * ```\n * @param {PhotonImage} img\n * @param {string} filter_name\n */\nexport function filter(img, filter_name) {\n _assertClass(img, PhotonImage);\n const ptr0 = passStringToWasm0(filter_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.filter(img.__wbg_ptr, ptr0, len0);\n}\n\n/**\n * Apply a lofi effect to an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::lofi;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * lofi(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function lofi(img) {\n _assertClass(img, PhotonImage);\n wasm.lofi(img.__wbg_ptr);\n}\n\n/**\n * Apply a rose tint to an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::pastel_pink;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * pastel_pink(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function pastel_pink(img) {\n _assertClass(img, PhotonImage);\n wasm.pastel_pink(img.__wbg_ptr);\n}\n\n/**\n * Apply a vintage, golden hue to an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::golden;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * golden(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function golden(img) {\n _assertClass(img, PhotonImage);\n wasm.golden(img.__wbg_ptr);\n}\n\n/**\n * Increased contrast filter effect.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::cali;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * cali(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function cali(img) {\n _assertClass(img, PhotonImage);\n wasm.cali(img.__wbg_ptr);\n}\n\n/**\n * Greyscale effect with increased contrast.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::dramatic;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * dramatic(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function dramatic(img) {\n _assertClass(img, PhotonImage);\n wasm.dramatic(img.__wbg_ptr);\n}\n\n/**\n * Monochrome tint effect with increased contrast\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `rgb_color` - RGB color\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::monochrome_tint;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgb;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rgb_color = Rgb::new(12, 12, 10);\n * monochrome_tint(&mut img, rgb_color);\n * ```\n * @param {PhotonImage} img\n * @param {Rgb} rgb_color\n */\nexport function monochrome_tint(img, rgb_color) {\n _assertClass(img, PhotonImage);\n _assertClass(rgb_color, Rgb);\n var ptr0 = rgb_color.__destroy_into_raw();\n wasm.monochrome_tint(img.__wbg_ptr, ptr0);\n}\n\n/**\n * Duotone effect with blue and purple tones.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::duotone_violette;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * duotone_violette(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function duotone_violette(img) {\n _assertClass(img, PhotonImage);\n wasm.duotone_violette(img.__wbg_ptr);\n}\n\n/**\n * Duotone effect with purple tones.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::duotone_horizon;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * duotone_horizon(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function duotone_horizon(img) {\n _assertClass(img, PhotonImage);\n wasm.duotone_horizon(img.__wbg_ptr);\n}\n\n/**\n * A duotone filter with a user-specified color and a gray color\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `rgb_color` - RGB color\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::duotone_tint;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgb;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rgb_color = Rgb::new(12, 12, 10);\n * duotone_tint(&mut img, rgb_color);\n * ```\n * @param {PhotonImage} img\n * @param {Rgb} rgb_color\n */\nexport function duotone_tint(img, rgb_color) {\n _assertClass(img, PhotonImage);\n _assertClass(rgb_color, Rgb);\n var ptr0 = rgb_color.__destroy_into_raw();\n wasm.duotone_tint(img.__wbg_ptr, ptr0);\n}\n\n/**\n * Duotone effect with a lilac hue\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::duotone_lilac;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * duotone_lilac(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function duotone_lilac(img) {\n _assertClass(img, PhotonImage);\n wasm.duotone_lilac(img.__wbg_ptr);\n}\n\n/**\n * A duotone ochre tint effect\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::duotone_ochre;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * duotone_ochre(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function duotone_ochre(img) {\n _assertClass(img, PhotonImage);\n wasm.duotone_ochre(img.__wbg_ptr);\n}\n\n/**\n * Apply a red hue, with increased contrast and brightness.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::firenze;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * firenze(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function firenze(img) {\n _assertClass(img, PhotonImage);\n wasm.firenze(img.__wbg_ptr);\n}\n\n/**\n * Apply a greyscale effect with increased contrast.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * # Example\n *\n * ```no_run\n * use photon_rs::filters::obsidian;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * obsidian(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function obsidian(img) {\n _assertClass(img, PhotonImage);\n wasm.obsidian(img.__wbg_ptr);\n}\n\n/**\n * Crop an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to crop an image at (0, 0) to (500, 800)\n * use photon_rs::native::{open_image};\n * use photon_rs::transform::crop;\n * use photon_rs::PhotonImage;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let cropped_img: PhotonImage = crop(&img, 0_u32, 0_u32, 500_u32, 800_u32);\n * // Write the contents of this image in JPG format.\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @returns {PhotonImage}\n */\nexport function crop(photon_image, x1, y1, x2, y2) {\n _assertClass(photon_image, PhotonImage);\n const ret = wasm.crop(photon_image.__wbg_ptr, x1, y1, x2, y2);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * @param {HTMLCanvasElement} source_canvas\n * @param {number} width\n * @param {number} height\n * @param {number} left\n * @param {number} top\n * @returns {HTMLCanvasElement}\n */\nexport function crop_img_browser(source_canvas, width, height, left, top) {\n const ret = wasm.crop_img_browser(source_canvas, width, height, left, top);\n return ret;\n}\n\n/**\n * Flip an image horizontally.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to flip an image horizontally:\n * use photon_rs::native::open_image;\n * use photon_rs::transform::fliph;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * fliph(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function fliph(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.fliph(photon_image.__wbg_ptr);\n}\n\n/**\n * Flip an image vertically.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n *\n * # Example\n *\n * ```no_run\n * // For example, to flip an image vertically:\n * use photon_rs::native::open_image;\n * use photon_rs::transform::flipv;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * flipv(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function flipv(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.flipv(photon_image.__wbg_ptr);\n}\n\n/**\n * Resize an image on the web.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `width` - New width.\n * * `height` - New height.\n * * `sampling_filter` - Nearest = 1, Triangle = 2, CatmullRom = 3, Gaussian = 4, Lanczos3 = 5\n * @param {PhotonImage} photon_img\n * @param {number} width\n * @param {number} height\n * @param {SamplingFilter} sampling_filter\n * @returns {HTMLCanvasElement}\n */\nexport function resize_img_browser(photon_img, width, height, sampling_filter) {\n _assertClass(photon_img, PhotonImage);\n const ret = wasm.resize_img_browser(photon_img.__wbg_ptr, width, height, sampling_filter);\n return ret;\n}\n\n/**\n * Resize an image.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `width` - New width.\n * * `height` - New height.\n * * `sampling_filter` - Nearest = 1, Triangle = 2, CatmullRom = 3, Gaussian = 4, Lanczos3 = 5\n * @param {PhotonImage} photon_img\n * @param {number} width\n * @param {number} height\n * @param {SamplingFilter} sampling_filter\n * @returns {PhotonImage}\n */\nexport function resize(photon_img, width, height, sampling_filter) {\n _assertClass(photon_img, PhotonImage);\n const ret = wasm.resize(photon_img.__wbg_ptr, width, height, sampling_filter);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Resize image using seam carver.\n * Resize only if new dimensions are smaller, than original image.\n * # NOTE: This is still experimental feature, and pretty slow.\n *\n * # Arguments\n * * `img` - A PhotonImage.\n * * `width` - New width.\n * * `height` - New height.\n *\n * # Example\n *\n * ```no_run\n * // For example, resize image using seam carver:\n * use photon_rs::native::open_image;\n * use photon_rs::transform::seam_carve;\n * use photon_rs::PhotonImage;\n *\n * let img = open_image(\"img.jpg\").expect(\"File should open\");\n * let result: PhotonImage = seam_carve(&img, 100_u32, 100_u32);\n * ```\n * @param {PhotonImage} img\n * @param {number} width\n * @param {number} height\n * @returns {PhotonImage}\n */\nexport function seam_carve(img, width, height) {\n _assertClass(img, PhotonImage);\n const ret = wasm.seam_carve(img.__wbg_ptr, width, height);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Shear the image along the X axis.\n * A sheared PhotonImage is returned.\n *\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `shear` - Amount to shear.\n *\n * # Example\n *\n * ```no_run\n * // For example, to shear an image by 0.5:\n * use photon_rs::native::open_image;\n * use photon_rs::transform::shearx;\n *\n * let img = open_image(\"img.jpg\").expect(\"File should open\");\n * let sheared_img = shearx(&img, 0.5);\n * ```\n * @param {PhotonImage} photon_img\n * @param {number} shear\n * @returns {PhotonImage}\n */\nexport function shearx(photon_img, shear) {\n _assertClass(photon_img, PhotonImage);\n const ret = wasm.shearx(photon_img.__wbg_ptr, shear);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Shear the image along the Y axis.\n * A sheared PhotonImage is returned.\n *\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `shear` - Amount to shear.\n *\n * # Example\n *\n * ```no_run\n * // For example, to shear an image by 0.5:\n * use photon_rs::native::open_image;\n * use photon_rs::transform::sheary;\n *\n * let img = open_image(\"img.jpg\").expect(\"File should open\");\n * let sheared_img = sheary(&img, 0.5);\n * ```\n * @param {PhotonImage} photon_img\n * @param {number} shear\n * @returns {PhotonImage}\n */\nexport function sheary(photon_img, shear) {\n _assertClass(photon_img, PhotonImage);\n const ret = wasm.sheary(photon_img.__wbg_ptr, shear);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Apply uniform padding around the PhotonImage\n * A padded PhotonImage is returned.\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `padding` - The amount of padding to be applied to the PhotonImage.\n * * `padding_rgba` - Tuple containing the RGBA code for padding color.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a padding of 10 pixels around a PhotonImage:\n * use photon_rs::transform::padding_uniform;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgba;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n * padding_uniform(&img, 10_u32, rgba);\n * ```\n * @param {PhotonImage} img\n * @param {number} padding\n * @param {Rgba} padding_rgba\n * @returns {PhotonImage}\n */\nexport function padding_uniform(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n _assertClass(padding_rgba, Rgba);\n var ptr0 = padding_rgba.__destroy_into_raw();\n const ret = wasm.padding_uniform(img.__wbg_ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Apply padding on the left side of the PhotonImage\n * A padded PhotonImage is returned.\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `padding` - The amount of padding to be applied to the PhotonImage.\n * * `padding_rgba` - Tuple containing the RGBA code for padding color.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a padding of 10 pixels on the left side of a PhotonImage:\n * use photon_rs::transform::padding_left;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgba;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n * padding_left(&img, 10_u32, rgba);\n * ```\n * @param {PhotonImage} img\n * @param {number} padding\n * @param {Rgba} padding_rgba\n * @returns {PhotonImage}\n */\nexport function padding_left(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n _assertClass(padding_rgba, Rgba);\n var ptr0 = padding_rgba.__destroy_into_raw();\n const ret = wasm.padding_left(img.__wbg_ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Apply padding on the left side of the PhotonImage\n * A padded PhotonImage is returned.\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `padding` - The amount of padding to be applied to the PhotonImage.\n * * `padding_rgba` - Tuple containing the RGBA code for padding color.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a padding of 10 pixels on the right side of a PhotonImage:\n * use photon_rs::transform::padding_right;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgba;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n * padding_right(&img, 10_u32, rgba);\n * ```\n * @param {PhotonImage} img\n * @param {number} padding\n * @param {Rgba} padding_rgba\n * @returns {PhotonImage}\n */\nexport function padding_right(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n _assertClass(padding_rgba, Rgba);\n var ptr0 = padding_rgba.__destroy_into_raw();\n const ret = wasm.padding_right(img.__wbg_ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Apply padding on the left side of the PhotonImage\n * A padded PhotonImage is returned.\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `padding` - The amount of padding to be applied to the PhotonImage.\n * * `padding_rgba` - Tuple containing the RGBA code for padding color.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a padding of 10 pixels on the top of a PhotonImage:\n * use photon_rs::transform::padding_top;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgba;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n * padding_top(&img, 10_u32, rgba);\n * ```\n * @param {PhotonImage} img\n * @param {number} padding\n * @param {Rgba} padding_rgba\n * @returns {PhotonImage}\n */\nexport function padding_top(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n _assertClass(padding_rgba, Rgba);\n var ptr0 = padding_rgba.__destroy_into_raw();\n const ret = wasm.padding_top(img.__wbg_ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Apply padding on the left side of the PhotonImage\n * A padded PhotonImage is returned.\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `padding` - The amount of padding to be applied to the PhotonImage.\n * * `padding_rgba` - Tuple containing the RGBA code for padding color.\n *\n * # Example\n *\n * ```no_run\n * // For example, to apply a padding of 10 pixels on the bottom of a PhotonImage:\n * use photon_rs::transform::padding_bottom;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgba;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n * padding_bottom(&img, 10_u32, rgba);\n * ```\n * @param {PhotonImage} img\n * @param {number} padding\n * @param {Rgba} padding_rgba\n * @returns {PhotonImage}\n */\nexport function padding_bottom(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n _assertClass(padding_rgba, Rgba);\n var ptr0 = padding_rgba.__destroy_into_raw();\n const ret = wasm.padding_bottom(img.__wbg_ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Rotate the PhotonImage on an arbitrary angle\n * A rotated PhotonImage is returned.\n *\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `angle` - Rotation angle in degrees.\n *\n * # Example\n *\n * ```no_run\n * // For example, to rotate a PhotonImage by 30 degrees:\n * use photon_rs::native::open_image;\n * use photon_rs::transform::rotate;\n *\n * let img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rotated_img = rotate(&img, 30.0);\n * ```\n * @param {PhotonImage} photon_img\n * @param {number} angle\n * @returns {PhotonImage}\n */\nexport function rotate(photon_img, angle) {\n _assertClass(photon_img, PhotonImage);\n const ret = wasm.rotate(photon_img.__wbg_ptr, angle);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Resample the PhotonImage.\n *\n * # Arguments\n * * `img` - A PhotonImage. See the PhotonImage struct for details.\n * * `dst_width` - Target width.\n * * `dst_height` - Target height.\n *\n * # Example\n *\n * ```no_run\n * // For example, to resample a PhotonImage to 1920x1080 size:\n * use photon_rs::native::open_image;\n * use photon_rs::transform::resample;\n *\n * let img = open_image(\"img.jpg\").expect(\"File should open\");\n * let rotated_img = resample(&img, 1920, 1080);\n * ```\n * @param {PhotonImage} img\n * @param {number} dst_width\n * @param {number} dst_height\n * @returns {PhotonImage}\n */\nexport function resample(img, dst_width, dst_height) {\n _assertClass(img, PhotonImage);\n const ret = wasm.resample(img.__wbg_ptr, dst_width, dst_height);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Adds an offset to the image by a certain number of pixels.\n *\n * This creates an RGB shift effect.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `channel_index`: The index of the channel to increment. 0 for red, 1 for green and 2 for blue.\n * * `offset` - The offset is added to the pixels in the image.\n * # Example\n *\n * ```no_run\n * // For example, to offset pixels by 30 pixels on the red channel:\n * use photon_rs::effects::offset;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * offset(&mut img, 0_usize, 30_u32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} channel_index\n * @param {number} offset\n */\nexport function offset(photon_image, channel_index, offset) {\n _assertClass(photon_image, PhotonImage);\n wasm.offset(photon_image.__wbg_ptr, channel_index, offset);\n}\n\n/**\n * Adds an offset to the red channel by a certain number of pixels.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `offset` - The offset you want to move the red channel by.\n * # Example\n *\n * ```no_run\n * // For example, to add an offset to the red channel by 30 pixels.\n * use photon_rs::effects::offset_red;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * offset_red(&mut img, 30_u32);\n * ```\n * @param {PhotonImage} img\n * @param {number} offset_amt\n */\nexport function offset_red(img, offset_amt) {\n _assertClass(img, PhotonImage);\n wasm.offset_red(img.__wbg_ptr, offset_amt);\n}\n\n/**\n * Adds an offset to the green channel by a certain number of pixels.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `offset` - The offset you want to move the green channel by.\n * # Example\n *\n * ```no_run\n * // For example, to add an offset to the green channel by 30 pixels.\n * use photon_rs::effects::offset_green;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * offset_green(&mut img, 30_u32);\n * ```\n * @param {PhotonImage} img\n * @param {number} offset_amt\n */\nexport function offset_green(img, offset_amt) {\n _assertClass(img, PhotonImage);\n wasm.offset_green(img.__wbg_ptr, offset_amt);\n}\n\n/**\n * Adds an offset to the blue channel by a certain number of pixels.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `offset_amt` - The offset you want to move the blue channel by.\n * # Example\n * // For example, to add an offset to the green channel by 40 pixels.\n *\n * ```no_run\n * use photon_rs::effects::offset_blue;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * offset_blue(&mut img, 40_u32);\n * ```\n * @param {PhotonImage} img\n * @param {number} offset_amt\n */\nexport function offset_blue(img, offset_amt) {\n _assertClass(img, PhotonImage);\n wasm.offset_blue(img.__wbg_ptr, offset_amt);\n}\n\n/**\n * Adds multiple offsets to the image by a certain number of pixels (on two channels).\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `offset` - The offset is added to the pixels in the image.\n * # Example\n *\n * ```no_run\n * // For example, to add a 30-pixel offset to both the red and blue channels:\n * use photon_rs::effects::multiple_offsets;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * multiple_offsets(&mut img, 30_u32, 0_usize, 2_usize);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} offset\n * @param {number} channel_index\n * @param {number} channel_index2\n */\nexport function multiple_offsets(photon_image, offset, channel_index, channel_index2) {\n _assertClass(photon_image, PhotonImage);\n wasm.multiple_offsets(photon_image.__wbg_ptr, offset, channel_index, channel_index2);\n}\n\n/**\n * Halftoning effect.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * # Example\n *\n * ```no_run\n * // For example:\n * use photon_rs::effects::halftone;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * halftone(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function halftone(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.halftone(photon_image.__wbg_ptr);\n}\n\n/**\n * Reduces an image to the primary colours.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * # Example\n *\n * ```no_run\n * // For example, to add a primary colour effect to an image of type `DynamicImage`:\n * use photon_rs::effects::primary;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * primary(&mut img);\n * ```\n * @param {PhotonImage} img\n */\nexport function primary(img) {\n _assertClass(img, PhotonImage);\n wasm.primary(img.__wbg_ptr);\n}\n\n/**\n * Colorizes the green channels of the image.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * # Example\n *\n * ```no_run\n * // For example, to colorize an image of type `PhotonImage`:\n * use photon_rs::effects::colorize;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * colorize(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function colorize(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.colorize(photon_image.__wbg_ptr);\n}\n\n/**\n * Applies a solarizing effect to an image.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * # Example\n *\n * ```no_run\n * // For example, to colorize an image of type `PhotonImage`:\n * use photon_rs::effects::solarize;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * solarize(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function solarize(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.solarize(photon_image.__wbg_ptr);\n}\n\n/**\n * Applies a solarizing effect to an image and returns the resulting PhotonImage.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * # Example\n *\n * ```no_run\n * // For example, to solarize \"retimg\" an image of type `PhotonImage`:\n * use photon_rs::effects::solarize_retimg;\n * use photon_rs::native::open_image;\n * use photon_rs::PhotonImage;\n *\n * let img = open_image(\"img.jpg\").expect(\"File should open\");\n * let result: PhotonImage = solarize_retimg(&img);\n * ```\n * @param {PhotonImage} photon_image\n * @returns {PhotonImage}\n */\nexport function solarize_retimg(photon_image) {\n _assertClass(photon_image, PhotonImage);\n const ret = wasm.solarize_retimg(photon_image.__wbg_ptr);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Adjust the brightness of an image by a factor.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `brightness` - A u8 to add or subtract to the brightness. To increase\n * the brightness, pass a positive number (up to 255). To decrease the brightness,\n * pass a negative number instead.\n * # Example\n *\n * ```no_run\n * use photon_rs::effects::adjust_brightness;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * adjust_brightness(&mut img, 10_i16);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} brightness\n */\nexport function adjust_brightness(photon_image, brightness) {\n _assertClass(photon_image, PhotonImage);\n wasm.adjust_brightness(photon_image.__wbg_ptr, brightness);\n}\n\n/**\n * Increase the brightness of an image by a constant.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `brightness` - A u8 to add to the brightness.\n * # Example\n *\n * ```no_run\n * use photon_rs::effects::inc_brightness;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * inc_brightness(&mut img, 10_u8);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} brightness\n */\nexport function inc_brightness(photon_image, brightness) {\n _assertClass(photon_image, PhotonImage);\n wasm.inc_brightness(photon_image.__wbg_ptr, brightness);\n}\n\n/**\n * Decrease the brightness of an image by a constant.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `brightness` - A u8 to subtract from the brightness. It should be a positive number,\n * and this value will then be subtracted from the brightness.\n * # Example\n *\n * ```no_run\n * use photon_rs::effects::dec_brightness;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * dec_brightness(&mut img, 10_u8);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} brightness\n */\nexport function dec_brightness(photon_image, brightness) {\n _assertClass(photon_image, PhotonImage);\n wasm.dec_brightness(photon_image.__wbg_ptr, brightness);\n}\n\n/**\n * Adjust the contrast of an image by a factor.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage that contains a view into the image.\n * * `contrast` - An f32 factor used to adjust contrast. Between [-255.0, 255.0]. The algorithm will\n * clamp results if passed factor is out of range.\n * # Example\n *\n * ```no_run\n * use photon_rs::effects::adjust_contrast;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * adjust_contrast(&mut img, 30_f32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} contrast\n */\nexport function adjust_contrast(photon_image, contrast) {\n _assertClass(photon_image, PhotonImage);\n wasm.adjust_contrast(photon_image.__wbg_ptr, contrast);\n}\n\n/**\n * Tint an image by adding an offset to averaged RGB channel values.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `r_offset` - The amount the R channel should be incremented by.\n * * `g_offset` - The amount the G channel should be incremented by.\n * * `b_offset` - The amount the B channel should be incremented by.\n * # Example\n *\n * ```no_run\n * // For example, to tint an image of type `PhotonImage`:\n * use photon_rs::effects::tint;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * tint(&mut img, 10_u32, 20_u32, 15_u32);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} r_offset\n * @param {number} g_offset\n * @param {number} b_offset\n */\nexport function tint(photon_image, r_offset, g_offset, b_offset) {\n _assertClass(photon_image, PhotonImage);\n wasm.tint(photon_image.__wbg_ptr, r_offset, g_offset, b_offset);\n}\n\n/**\n * Horizontal strips. Divide an image into a series of equal-height strips, for an artistic effect.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `num_strips` - The number of strips\n * # Example\n *\n * ```no_run\n * // For example, to draw horizontal strips on a `PhotonImage`:\n * use photon_rs::effects::horizontal_strips;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * horizontal_strips(&mut img, 8u8);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} num_strips\n */\nexport function horizontal_strips(photon_image, num_strips) {\n _assertClass(photon_image, PhotonImage);\n wasm.horizontal_strips(photon_image.__wbg_ptr, num_strips);\n}\n\n/**\n * Horizontal strips. Divide an image into a series of equal-width strips, for an artistic effect. Sepcify a color as well.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `num_strips` - The numbder of strips\n * * `color` - Color of strips.\n * # Example\n *\n * ```no_run\n * // For example, to draw blue horizontal strips on a `PhotonImage`:\n * use photon_rs::effects::color_horizontal_strips;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgb;\n *\n * let color = Rgb::new(255u8, 0u8, 0u8);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * color_horizontal_strips(&mut img, 8u8, color);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} num_strips\n * @param {Rgb} color\n */\nexport function color_horizontal_strips(photon_image, num_strips, color) {\n _assertClass(photon_image, PhotonImage);\n _assertClass(color, Rgb);\n var ptr0 = color.__destroy_into_raw();\n wasm.color_horizontal_strips(photon_image.__wbg_ptr, num_strips, ptr0);\n}\n\n/**\n * Vertical strips. Divide an image into a series of equal-width strips, for an artistic effect.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `num_strips` - The numbder of strips\n * # Example\n *\n * ```no_run\n * // For example, to draw vertical strips on a `PhotonImage`:\n * use photon_rs::effects::vertical_strips;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * vertical_strips(&mut img, 8u8);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} num_strips\n */\nexport function vertical_strips(photon_image, num_strips) {\n _assertClass(photon_image, PhotonImage);\n wasm.vertical_strips(photon_image.__wbg_ptr, num_strips);\n}\n\n/**\n * Vertical strips. Divide an image into a series of equal-width strips, for an artistic effect. Sepcify a color as well.\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `num_strips` - The numbder of strips\n * * `color` - Color of strips.\n * # Example\n *\n * ```no_run\n * // For example, to draw red vertical strips on a `PhotonImage`:\n * use photon_rs::effects::color_vertical_strips;\n * use photon_rs::native::open_image;\n * use photon_rs::Rgb;\n *\n * let color = Rgb::new(255u8, 0u8, 0u8);\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * color_vertical_strips(&mut img, 8u8, color);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} num_strips\n * @param {Rgb} color\n */\nexport function color_vertical_strips(photon_image, num_strips, color) {\n _assertClass(photon_image, PhotonImage);\n _assertClass(color, Rgb);\n var ptr0 = color.__destroy_into_raw();\n wasm.color_vertical_strips(photon_image.__wbg_ptr, num_strips, ptr0);\n}\n\n/**\n * Turn an image into an oil painting\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * * `radius` - Radius of each paint particle\n * * `intesnity` - How artsy an Image should be\n * # Example\n *\n * ```no_run\n * // For example, to oil an image of type `PhotonImage`:\n * use photon_rs::effects::oil;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * oil(&mut img, 4i32, 55.0);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} radius\n * @param {number} intensity\n */\nexport function oil(photon_image, radius, intensity) {\n _assertClass(photon_image, PhotonImage);\n wasm.oil(photon_image.__wbg_ptr, radius, intensity);\n}\n\n/**\n * Turn an image into an frosted glass see through\n *\n * # Arguments\n * * `img` - A PhotonImage that contains a view into the image.\n * # Example\n *\n * ```no_run\n * // For example, to turn an image of type `PhotonImage` into frosted glass see through:\n * use photon_rs::effects::frosted_glass;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * frosted_glass(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function frosted_glass(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.frosted_glass(photon_image.__wbg_ptr);\n}\n\n/**\n * Pixelize an image.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage that contains a view into the image.\n * * `pixel_size` - Targeted pixel size of generated image.\n * # Example\n *\n * ```no_run\n * // For example, to turn an image of type `PhotonImage` into a pixelized image with 50 pixels blocks:\n * use photon_rs::effects::pixelize;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * pixelize(&mut img, 50);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} pixel_size\n */\nexport function pixelize(photon_image, pixel_size) {\n _assertClass(photon_image, PhotonImage);\n wasm.pixelize(photon_image.__wbg_ptr, pixel_size);\n}\n\n/**\n * Normalizes an image by remapping its range of pixels values. Only RGB\n * channels are processed and each channel is stretched to \\[0, 255\\] range\n * independently. This process is also known as contrast stretching.\n * # Arguments\n * * `photon_image` - A PhotonImage that contains a view into the image.\n * # Example\n *\n * ```no_run\n * // For example, to turn an image of type `PhotonImage` into a normalized image:\n * use photon_rs::effects::normalize;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * normalize(&mut img);\n * ```\n * @param {PhotonImage} photon_image\n */\nexport function normalize(photon_image) {\n _assertClass(photon_image, PhotonImage);\n wasm.normalize(photon_image.__wbg_ptr);\n}\n\n/**\n * Applies Floyd-Steinberg dithering to an image.\n * Only RGB channels are processed, alpha remains unchanged.\n * # Arguments\n * * `photon_image` - A PhotonImage that contains a view into the image.\n * * `depth` - bits per channel. Clamped between 1 and 8.\n * # Example\n *\n * ```no_run\n * // For example, to turn an image of type `PhotonImage` into a dithered image:\n * use photon_rs::effects::dither;\n * use photon_rs::native::open_image;\n *\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * let depth = 1;\n * dither(&mut img, depth);\n * ```\n * @param {PhotonImage} photon_image\n * @param {number} depth\n */\nexport function dither(photon_image, depth) {\n _assertClass(photon_image, PhotonImage);\n wasm.dither(photon_image.__wbg_ptr, depth);\n}\n\n/**\n * @param {PhotonImage} photon_image\n * @param {Rgb} color_a\n * @param {Rgb} color_b\n */\nexport function duotone(photon_image, color_a, color_b) {\n _assertClass(photon_image, PhotonImage);\n _assertClass(color_a, Rgb);\n var ptr0 = color_a.__destroy_into_raw();\n _assertClass(color_b, Rgb);\n var ptr1 = color_b.__destroy_into_raw();\n wasm.duotone(photon_image.__wbg_ptr, ptr0, ptr1);\n}\n\n/**\n * Add bordered-text to an image.\n * The only font available as of now is Roboto.\n * Note: A graphic design/text-drawing library is currently being developed, so stay tuned.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `text` - Text string to be drawn to the image.\n * * `x` - x-coordinate of where first letter's 1st pixel should be drawn.\n * * `y` - y-coordinate of where first letter's 1st pixel should be drawn.\n * * `font_size` - Font size in pixels of the text to be drawn.\n *\n * # Example\n *\n * ```no_run\n * // For example to draw the string \"Welcome to Photon!\" at 10, 10:\n * use photon_rs::native::open_image;\n * use photon_rs::text::draw_text_with_border;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * draw_text_with_border(&mut img, \"Welcome to Photon!\", 10_i32, 10_i32, 90_f32);\n * ```\n * @param {PhotonImage} photon_img\n * @param {string} text\n * @param {number} x\n * @param {number} y\n * @param {number} font_size\n */\nexport function draw_text_with_border(photon_img, text, x, y, font_size) {\n _assertClass(photon_img, PhotonImage);\n const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.draw_text_with_border(photon_img.__wbg_ptr, ptr0, len0, x, y, font_size);\n}\n\n/**\n * Add text to an image.\n * The only font available as of now is Roboto.\n * Note: A graphic design/text-drawing library is currently being developed, so stay tuned.\n *\n * # Arguments\n * * `photon_image` - A PhotonImage.\n * * `text` - Text string to be drawn to the image.\n * * `x` - x-coordinate of where first letter's 1st pixel should be drawn.\n * * `y` - y-coordinate of where first letter's 1st pixel should be drawn.\n * * `font_size` - Font size in pixels of the text to be drawn.\n *\n * # Example\n *\n * ```no_run\n * // For example to draw the string \"Welcome to Photon!\" at 10, 10:\n * use photon_rs::native::open_image;\n * use photon_rs::text::draw_text;\n *\n * // Open the image. A PhotonImage is returned.\n * let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n * draw_text(&mut img, \"Welcome to Photon!\", 10_i32, 10_i32, 90_f32);\n * ```\n * @param {PhotonImage} photon_img\n * @param {string} text\n * @param {number} x\n * @param {number} y\n * @param {number} font_size\n */\nexport function draw_text(photon_img, text, x, y, font_size) {\n _assertClass(photon_img, PhotonImage);\n const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.draw_text(photon_img.__wbg_ptr, ptr0, len0, x, y, font_size);\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_export_2.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n/**\n *! [temp] Check if WASM is supported.\n */\nexport function run() {\n const ret = wasm.run();\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n}\n\n/**\n * Get the ImageData from a 2D canvas context\n * @param {HTMLCanvasElement} canvas\n * @param {CanvasRenderingContext2D} ctx\n * @returns {ImageData}\n */\nexport function get_image_data(canvas, ctx) {\n const ret = wasm.get_image_data(canvas, ctx);\n return ret;\n}\n\n/**\n * Place a PhotonImage onto a 2D canvas.\n * @param {HTMLCanvasElement} canvas\n * @param {CanvasRenderingContext2D} ctx\n * @param {PhotonImage} new_image\n */\nexport function putImageData(canvas, ctx, new_image) {\n _assertClass(new_image, PhotonImage);\n var ptr0 = new_image.__destroy_into_raw();\n wasm.putImageData(canvas, ctx, ptr0);\n}\n\n/**\n * Convert a HTML5 Canvas Element to a PhotonImage.\n *\n * This converts the ImageData found in the canvas context to a PhotonImage,\n * which can then have effects or filters applied to it.\n * @param {HTMLCanvasElement} canvas\n * @param {CanvasRenderingContext2D} ctx\n * @returns {PhotonImage}\n */\nexport function open_image(canvas, ctx) {\n const ret = wasm.open_image(canvas, ctx);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Convert ImageData to a raw pixel vec of u8s.\n * @param {ImageData} imgdata\n * @returns {Uint8Array}\n */\nexport function to_raw_pixels(imgdata) {\n const ret = wasm.to_raw_pixels(imgdata);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n}\n\n/**\n * Convert a base64 string to a PhotonImage.\n * @param {string} base64\n * @returns {PhotonImage}\n */\nexport function base64_to_image(base64) {\n const ptr0 = passStringToWasm0(base64, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.base64_to_image(ptr0, len0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n * Convert a base64 string to a Vec of u8s.\n * @param {string} base64\n * @returns {Uint8Array}\n */\nexport function base64_to_vec(base64) {\n const ptr0 = passStringToWasm0(base64, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.base64_to_vec(ptr0, len0);\n var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v2;\n}\n\n/**\n * Convert a PhotonImage to JS-compatible ImageData.\n * @param {PhotonImage} photon_image\n * @returns {ImageData}\n */\nexport function to_image_data(photon_image) {\n _assertClass(photon_image, PhotonImage);\n var ptr0 = photon_image.__destroy_into_raw();\n const ret = wasm.to_image_data(ptr0);\n return ret;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_2.set(idx, obj);\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nlet cachedUint8ClampedArrayMemory0 = null;\n\nfunction getUint8ClampedArrayMemory0() {\n if (cachedUint8ClampedArrayMemory0 === null || cachedUint8ClampedArrayMemory0.byteLength === 0) {\n cachedUint8ClampedArrayMemory0 = new Uint8ClampedArray(wasm.memory.buffer);\n }\n return cachedUint8ClampedArrayMemory0;\n}\n\nfunction getClampedArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ClampedArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nexport const SamplingFilter = Object.freeze({ Nearest:1,\"1\":\"Nearest\",Triangle:2,\"2\":\"Triangle\",CatmullRom:3,\"3\":\"CatmullRom\",Gaussian:4,\"4\":\"Gaussian\",Lanczos3:5,\"5\":\"Lanczos3\", });\n\nconst PhotonImageFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_photonimage_free(ptr >>> 0, 1));\n/**\n * Provides the image's height, width, and contains the image's raw pixels.\n * For use when communicating between JS and WASM, and also natively.\n */\nexport class PhotonImage {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(PhotonImage.prototype);\n obj.__wbg_ptr = ptr;\n PhotonImageFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n PhotonImageFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_photonimage_free(ptr, 0);\n }\n /**\n * Create a new PhotonImage from a Vec of u8s, which represent raw pixels.\n * @param {Uint8Array} raw_pixels\n * @param {number} width\n * @param {number} height\n */\n constructor(raw_pixels, width, height) {\n const ptr0 = passArray8ToWasm0(raw_pixels, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.photonimage_new(ptr0, len0, width, height);\n this.__wbg_ptr = ret >>> 0;\n PhotonImageFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * Create a new PhotonImage from a base64 string.\n * @param {string} base64\n * @returns {PhotonImage}\n */\n static new_from_base64(base64) {\n const ptr0 = passStringToWasm0(base64, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.base64_to_image(ptr0, len0);\n return PhotonImage.__wrap(ret);\n }\n /**\n * Create a new PhotonImage from a byteslice.\n * @param {Uint8Array} vec\n * @returns {PhotonImage}\n */\n static new_from_byteslice(vec) {\n const ptr0 = passArray8ToWasm0(vec, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.photonimage_new_from_byteslice(ptr0, len0);\n return PhotonImage.__wrap(ret);\n }\n /**\n * Create a new PhotonImage from a Blob/File.\n * @param {Blob} blob\n * @returns {PhotonImage}\n */\n static new_from_blob(blob) {\n const ret = wasm.photonimage_new_from_blob(blob);\n return PhotonImage.__wrap(ret);\n }\n /**\n * Create a new PhotonImage from a HTMLImageElement\n * @param {HTMLImageElement} image\n * @returns {PhotonImage}\n */\n static new_from_image(image) {\n const ret = wasm.photonimage_new_from_image(image);\n return PhotonImage.__wrap(ret);\n }\n /**\n * Get the width of the PhotonImage.\n * @returns {number}\n */\n get_width() {\n const ret = wasm.photonimage_get_width(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * Get the PhotonImage's pixels as a Vec of u8s.\n * @returns {Uint8Array}\n */\n get_raw_pixels() {\n const ret = wasm.photonimage_get_raw_pixels(this.__wbg_ptr);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n }\n /**\n * Get the height of the PhotonImage.\n * @returns {number}\n */\n get_height() {\n const ret = wasm.photonimage_get_height(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * Convert the PhotonImage to base64.\n * @returns {string}\n */\n get_base64() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.photonimage_get_base64(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * Convert the PhotonImage to raw bytes. Returns PNG.\n * @returns {Uint8Array}\n */\n get_bytes() {\n const ret = wasm.photonimage_get_bytes(this.__wbg_ptr);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n }\n /**\n * Convert the PhotonImage to raw bytes. Returns a JPEG.\n * @param {number} quality\n * @returns {Uint8Array}\n */\n get_bytes_jpeg(quality) {\n const ret = wasm.photonimage_get_bytes_jpeg(this.__wbg_ptr, quality);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n }\n /**\n * Convert the PhotonImage to raw bytes. Returns a WEBP.\n * @returns {Uint8Array}\n */\n get_bytes_webp() {\n const ret = wasm.photonimage_get_bytes_webp(this.__wbg_ptr);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n }\n /**\n * Convert the PhotonImage's raw pixels to JS-compatible ImageData.\n * @returns {ImageData}\n */\n get_image_data() {\n const ret = wasm.photonimage_get_image_data(this.__wbg_ptr);\n return ret;\n }\n /**\n * Convert ImageData to raw pixels, and update the PhotonImage's raw pixels to this.\n * @param {ImageData} img_data\n */\n set_imgdata(img_data) {\n wasm.photonimage_set_imgdata(this.__wbg_ptr, img_data);\n }\n /**\n * Calculates estimated filesize and returns number of bytes\n * @returns {bigint}\n */\n get_estimated_filesize() {\n const ret = wasm.photonimage_get_estimated_filesize(this.__wbg_ptr);\n return BigInt.asUintN(64, ret);\n }\n}\n\nconst RgbFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_rgb_free(ptr >>> 0, 1));\n/**\n * RGB color type.\n */\nexport class Rgb {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n RgbFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_rgb_free(ptr, 0);\n }\n /**\n * Create a new RGB struct.\n * @param {number} r\n * @param {number} g\n * @param {number} b\n */\n constructor(r, g, b) {\n const ret = wasm.rgb_new(r, g, b);\n this.__wbg_ptr = ret >>> 0;\n RgbFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * Set the Red value.\n * @param {number} r\n */\n set_red(r) {\n wasm.rgb_set_red(this.__wbg_ptr, r);\n }\n /**\n * Get the Green value.\n * @param {number} g\n */\n set_green(g) {\n wasm.rgb_set_green(this.__wbg_ptr, g);\n }\n /**\n * Set the Blue value.\n * @param {number} b\n */\n set_blue(b) {\n wasm.rgb_set_blue(this.__wbg_ptr, b);\n }\n /**\n * Get the Red value.\n * @returns {number}\n */\n get_red() {\n const ret = wasm.rgb_get_red(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the Green value.\n * @returns {number}\n */\n get_green() {\n const ret = wasm.rgb_get_green(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the Blue value.\n * @returns {number}\n */\n get_blue() {\n const ret = wasm.rgb_get_blue(this.__wbg_ptr);\n return ret;\n }\n}\n\nconst RgbaFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_rgba_free(ptr >>> 0, 1));\n/**\n * RGBA color type.\n */\nexport class Rgba {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n RgbaFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_rgba_free(ptr, 0);\n }\n /**\n * Create a new RGBA struct.\n * @param {number} r\n * @param {number} g\n * @param {number} b\n * @param {number} a\n */\n constructor(r, g, b, a) {\n const ret = wasm.rgba_new(r, g, b, a);\n this.__wbg_ptr = ret >>> 0;\n RgbaFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * Set the Red value.\n * @param {number} r\n */\n set_red(r) {\n wasm.rgb_set_red(this.__wbg_ptr, r);\n }\n /**\n * Get the Green value.\n * @param {number} g\n */\n set_green(g) {\n wasm.rgb_set_green(this.__wbg_ptr, g);\n }\n /**\n * Set the Blue value.\n * @param {number} b\n */\n set_blue(b) {\n wasm.rgb_set_blue(this.__wbg_ptr, b);\n }\n /**\n * Set the alpha value.\n * @param {number} a\n */\n set_alpha(a) {\n wasm.rgba_set_alpha(this.__wbg_ptr, a);\n }\n /**\n * Get the Red value.\n * @returns {number}\n */\n get_red() {\n const ret = wasm.rgb_get_red(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the Green value.\n * @returns {number}\n */\n get_green() {\n const ret = wasm.rgb_get_green(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the Blue value.\n * @returns {number}\n */\n get_blue() {\n const ret = wasm.rgb_get_blue(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the alpha value for this color.\n * @returns {number}\n */\n get_alpha() {\n const ret = wasm.rgba_get_alpha(this.__wbg_ptr);\n return ret;\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_new_abda76e883ba8a5f = function() {\n const ret = new Error();\n return ret;\n };\n imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbg_instanceof_Window_c4b70662a0d2c5ec = function(arg0) {\n let result;\n try {\n result = arg0 instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_document_e5c1786dea6542e4 = function(arg0) {\n const ret = arg0.document;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_body_e70ae6abd01ae584 = function(arg0) {\n const ret = arg0.body;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_createElement_5d4c76f218b78145 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.createElement(getStringFromWasm0(arg1, arg2));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_width_4c6f0048d64cf86b = function(arg0) {\n const ret = arg0.width;\n return ret;\n };\n imports.wbg.__wbg_height_21f0d3fd8f753394 = function(arg0) {\n const ret = arg0.height;\n return ret;\n };\n imports.wbg.__wbg_width_79e0847ed5883b03 = function(arg0) {\n const ret = arg0.width;\n return ret;\n };\n imports.wbg.__wbg_height_e4e4e4779f8feac0 = function(arg0) {\n const ret = arg0.height;\n return ret;\n };\n imports.wbg.__wbg_data_fda507064d127f5b = function(arg0, arg1) {\n const ret = arg1.data;\n const ptr1 = passArray8ToWasm0(ret, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_newwithu8clampedarrayandsh_1fddccb3a94a5e05 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = new ImageData(getClampedArrayU8FromWasm0(arg0, arg1), arg2 >>> 0, arg3 >>> 0);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae = function(arg0) {\n let result;\n try {\n result = arg0 instanceof CanvasRenderingContext2D;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_drawImage_fede06db74e39a60 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n arg0.drawImage(arg1, arg2, arg3);\n }, arguments) };\n imports.wbg.__wbg_drawImage_f395c8e43c79a909 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {\n arg0.drawImage(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);\n }, arguments) };\n imports.wbg.__wbg_getImageData_5e1c242046e6b59e = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n const ret = arg0.getImageData(arg1, arg2, arg3, arg4);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_putImageData_a8b3e177ee06d521 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n arg0.putImageData(arg1, arg2, arg3);\n }, arguments) };\n imports.wbg.__wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e = function(arg0) {\n let result;\n try {\n result = arg0 instanceof HTMLCanvasElement;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_width_dc225e55343b745e = function(arg0) {\n const ret = arg0.width;\n return ret;\n };\n imports.wbg.__wbg_setwidth_488780db69b08846 = function(arg0, arg1) {\n arg0.width = arg1 >>> 0;\n };\n imports.wbg.__wbg_height_3a8bec2f3fe71b26 = function(arg0) {\n const ret = arg0.height;\n return ret;\n };\n imports.wbg.__wbg_setheight_1761808c18403921 = function(arg0, arg1) {\n arg0.height = arg1 >>> 0;\n };\n imports.wbg.__wbg_getContext_fc99dbd3a9a7e318 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.getContext(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n }, arguments) };\n imports.wbg.__wbg_settextContent_f82a86a8df347e1c = function(arg0, arg1, arg2) {\n arg0.textContent = arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_appendChild_fa3b00dade9fc4cf = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.appendChild(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_newnoargs_e643855c6572a4a8 = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_call_f96b398515635514 = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_self_b9aad7f1c618bfaf = function() { return handleError(function () {\n const ret = self.self;\n return ret;\n }, arguments) };\n imports.wbg.__wbg_window_55e469842c98b086 = function() { return handleError(function () {\n const ret = window.window;\n return ret;\n }, arguments) };\n imports.wbg.__wbg_globalThis_d0957e302752547e = function() { return handleError(function () {\n const ret = globalThis.globalThis;\n return ret;\n }, arguments) };\n imports.wbg.__wbg_global_ae2f87312b8987fb = function() { return handleError(function () {\n const ret = global.global;\n return ret;\n }, arguments) };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n };\n imports.wbg.__wbg_buffer_fcbfb6d88b2732e9 = function(arg0) {\n const ret = arg0.buffer;\n return ret;\n };\n imports.wbg.__wbg_new_bc5d9aad3f9ac80e = function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n };\n imports.wbg.__wbg_set_4b3aa8445ac1e91c = function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n };\n imports.wbg.__wbg_length_d9c4ded7e708c6a1 = function(arg0) {\n const ret = arg0.length;\n return ret;\n };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n const ret = debugString(arg1);\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_memory = function() {\n const ret = wasm.memory;\n return ret;\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_2;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n cachedUint8ClampedArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('photon_rs_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n"],"names":["Uint8Array","TextEncoder","Error","DataView","TextDecoder","r","Object","FinalizationRegistry","BigInt","Response","WebAssembly","console","Window","arguments","ImageData","Uint8ClampedArray","CanvasRenderingContext2D","a","HTMLCanvasElement","Function","self","window","globalThis","Array","toString","JSON","t","URL","Request","fetch"],"mappings":"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"}
|