@postermywall/fabricjs-2 6.0.0-rc2.0 → 6.0.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/CHANGELOG.md +18 -1
- package/dist/index.js +229 -491
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.min.mjs +1 -1
- package/dist/index.min.mjs.map +1 -1
- package/dist/index.mjs +229 -491
- package/dist/index.mjs.map +1 -1
- package/dist/index.node.cjs +229 -491
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +229 -491
- package/dist/index.node.mjs.map +1 -1
- package/dist/package.json.min.mjs +1 -1
- package/dist/package.json.mjs +1 -1
- package/dist/src/canvas/Canvas.d.ts.map +1 -1
- package/dist/src/canvas/Canvas.min.mjs +1 -1
- package/dist/src/canvas/Canvas.min.mjs.map +1 -1
- package/dist/src/canvas/Canvas.mjs +8 -9
- package/dist/src/canvas/Canvas.mjs.map +1 -1
- package/dist/src/canvas/SelectableCanvas.d.ts +1 -1
- package/dist/src/canvas/SelectableCanvas.d.ts.map +1 -1
- package/dist/src/canvas/SelectableCanvas.min.mjs +1 -1
- package/dist/src/canvas/SelectableCanvas.min.mjs.map +1 -1
- package/dist/src/canvas/SelectableCanvas.mjs +1 -1
- package/dist/src/canvas/SelectableCanvas.mjs.map +1 -1
- package/dist/src/canvas/StaticCanvas.d.ts +4 -4
- package/dist/src/canvas/StaticCanvas.d.ts.map +1 -1
- package/dist/src/canvas/StaticCanvas.min.mjs +1 -1
- package/dist/src/canvas/StaticCanvas.min.mjs.map +1 -1
- package/dist/src/canvas/StaticCanvas.mjs +0 -13
- package/dist/src/canvas/StaticCanvas.mjs.map +1 -1
- package/dist/src/color/Color.d.ts +1 -0
- package/dist/src/color/Color.d.ts.map +1 -1
- package/dist/src/color/Color.min.mjs +1 -1
- package/dist/src/color/Color.min.mjs.map +1 -1
- package/dist/src/color/Color.mjs +3 -1
- package/dist/src/color/Color.mjs.map +1 -1
- package/dist/src/filters/BaseFilter.d.ts +16 -23
- package/dist/src/filters/BaseFilter.d.ts.map +1 -1
- package/dist/src/filters/BaseFilter.min.mjs +1 -1
- package/dist/src/filters/BaseFilter.min.mjs.map +1 -1
- package/dist/src/filters/BaseFilter.mjs +24 -41
- package/dist/src/filters/BaseFilter.mjs.map +1 -1
- package/dist/src/filters/BlendColor.d.ts +13 -24
- package/dist/src/filters/BlendColor.d.ts.map +1 -1
- package/dist/src/filters/BlendColor.min.mjs +1 -1
- package/dist/src/filters/BlendColor.min.mjs.map +1 -1
- package/dist/src/filters/BlendColor.mjs +1 -25
- package/dist/src/filters/BlendColor.mjs.map +1 -1
- package/dist/src/filters/BlendImage.d.ts +18 -19
- package/dist/src/filters/BlendImage.d.ts.map +1 -1
- package/dist/src/filters/BlendImage.min.mjs +1 -1
- package/dist/src/filters/BlendImage.min.mjs.map +1 -1
- package/dist/src/filters/BlendImage.mjs +13 -24
- package/dist/src/filters/BlendImage.mjs.map +1 -1
- package/dist/src/filters/Blur.d.ts +10 -12
- package/dist/src/filters/Blur.d.ts.map +1 -1
- package/dist/src/filters/Blur.min.mjs +1 -1
- package/dist/src/filters/Blur.min.mjs.map +1 -1
- package/dist/src/filters/Blur.mjs +5 -14
- package/dist/src/filters/Blur.mjs.map +1 -1
- package/dist/src/filters/Boilerplate.d.ts +11 -13
- package/dist/src/filters/Boilerplate.d.ts.map +1 -1
- package/dist/src/filters/Brightness.d.ts +10 -12
- package/dist/src/filters/Brightness.d.ts.map +1 -1
- package/dist/src/filters/Brightness.min.mjs +1 -1
- package/dist/src/filters/Brightness.min.mjs.map +1 -1
- package/dist/src/filters/Brightness.mjs +4 -16
- package/dist/src/filters/Brightness.mjs.map +1 -1
- package/dist/src/filters/Canvas2dFilterBackend.d.ts +1 -1
- package/dist/src/filters/Canvas2dFilterBackend.d.ts.map +1 -1
- package/dist/src/filters/Canvas2dFilterBackend.min.mjs.map +1 -1
- package/dist/src/filters/Canvas2dFilterBackend.mjs.map +1 -1
- package/dist/src/filters/ColorMatrix.d.ts +17 -15
- package/dist/src/filters/ColorMatrix.d.ts.map +1 -1
- package/dist/src/filters/ColorMatrix.min.mjs +1 -1
- package/dist/src/filters/ColorMatrix.min.mjs.map +1 -1
- package/dist/src/filters/ColorMatrix.mjs +7 -27
- package/dist/src/filters/ColorMatrix.mjs.map +1 -1
- package/dist/src/filters/ColorMatrixFilters.d.ts +63 -497
- package/dist/src/filters/ColorMatrixFilters.d.ts.map +1 -1
- package/dist/src/filters/ColorMatrixFilters.min.mjs +1 -1
- package/dist/src/filters/ColorMatrixFilters.min.mjs.map +1 -1
- package/dist/src/filters/ColorMatrixFilters.mjs +13 -8
- package/dist/src/filters/ColorMatrixFilters.mjs.map +1 -1
- package/dist/src/filters/Composed.d.ts +11 -10
- package/dist/src/filters/Composed.d.ts.map +1 -1
- package/dist/src/filters/Composed.min.mjs +1 -1
- package/dist/src/filters/Composed.min.mjs.map +1 -1
- package/dist/src/filters/Composed.mjs +7 -12
- package/dist/src/filters/Composed.mjs.map +1 -1
- package/dist/src/filters/Contrast.d.ts +10 -12
- package/dist/src/filters/Contrast.d.ts.map +1 -1
- package/dist/src/filters/Contrast.min.mjs +1 -1
- package/dist/src/filters/Contrast.min.mjs.map +1 -1
- package/dist/src/filters/Contrast.mjs +6 -17
- package/dist/src/filters/Contrast.mjs.map +1 -1
- package/dist/src/filters/Convolute.d.ts +11 -14
- package/dist/src/filters/Convolute.d.ts.map +1 -1
- package/dist/src/filters/Convolute.min.mjs +1 -1
- package/dist/src/filters/Convolute.min.mjs.map +1 -1
- package/dist/src/filters/Convolute.mjs +1 -15
- package/dist/src/filters/Convolute.mjs.map +1 -1
- package/dist/src/filters/Gamma.d.ts +17 -14
- package/dist/src/filters/Gamma.d.ts.map +1 -1
- package/dist/src/filters/Gamma.min.mjs +1 -1
- package/dist/src/filters/Gamma.min.mjs.map +1 -1
- package/dist/src/filters/Gamma.mjs +20 -24
- package/dist/src/filters/Gamma.mjs.map +1 -1
- package/dist/src/filters/Grayscale.d.ts +8 -11
- package/dist/src/filters/Grayscale.d.ts.map +1 -1
- package/dist/src/filters/Grayscale.min.mjs +1 -1
- package/dist/src/filters/Grayscale.min.mjs.map +1 -1
- package/dist/src/filters/Grayscale.mjs +2 -14
- package/dist/src/filters/Grayscale.mjs.map +1 -1
- package/dist/src/filters/HueRotation.d.ts +11 -5
- package/dist/src/filters/HueRotation.d.ts.map +1 -1
- package/dist/src/filters/HueRotation.min.mjs +1 -1
- package/dist/src/filters/HueRotation.min.mjs.map +1 -1
- package/dist/src/filters/HueRotation.mjs +10 -5
- package/dist/src/filters/HueRotation.mjs.map +1 -1
- package/dist/src/filters/Invert.d.ts +10 -13
- package/dist/src/filters/Invert.d.ts.map +1 -1
- package/dist/src/filters/Invert.min.mjs +1 -1
- package/dist/src/filters/Invert.min.mjs.map +1 -1
- package/dist/src/filters/Invert.mjs +2 -15
- package/dist/src/filters/Invert.mjs.map +1 -1
- package/dist/src/filters/Noise.d.ts +9 -20
- package/dist/src/filters/Noise.d.ts.map +1 -1
- package/dist/src/filters/Noise.min.mjs +1 -1
- package/dist/src/filters/Noise.min.mjs.map +1 -1
- package/dist/src/filters/Noise.mjs +4 -27
- package/dist/src/filters/Noise.mjs.map +1 -1
- package/dist/src/filters/Pixelate.d.ts +8 -12
- package/dist/src/filters/Pixelate.d.ts.map +1 -1
- package/dist/src/filters/Pixelate.min.mjs +1 -1
- package/dist/src/filters/Pixelate.min.mjs.map +1 -1
- package/dist/src/filters/Pixelate.mjs +2 -16
- package/dist/src/filters/Pixelate.mjs.map +1 -1
- package/dist/src/filters/RemoveColor.d.ts +12 -23
- package/dist/src/filters/RemoveColor.d.ts.map +1 -1
- package/dist/src/filters/RemoveColor.min.mjs +1 -1
- package/dist/src/filters/RemoveColor.min.mjs.map +1 -1
- package/dist/src/filters/RemoveColor.mjs +2 -25
- package/dist/src/filters/RemoveColor.mjs.map +1 -1
- package/dist/src/filters/Resize.d.ts +14 -30
- package/dist/src/filters/Resize.d.ts.map +1 -1
- package/dist/src/filters/Resize.min.mjs +1 -1
- package/dist/src/filters/Resize.min.mjs.map +1 -1
- package/dist/src/filters/Resize.mjs +3 -30
- package/dist/src/filters/Resize.mjs.map +1 -1
- package/dist/src/filters/Saturation.d.ts +9 -12
- package/dist/src/filters/Saturation.d.ts.map +1 -1
- package/dist/src/filters/Saturation.min.mjs +1 -1
- package/dist/src/filters/Saturation.min.mjs.map +1 -1
- package/dist/src/filters/Saturation.mjs +8 -20
- package/dist/src/filters/Saturation.mjs.map +1 -1
- package/dist/src/filters/Vibrance.d.ts +10 -13
- package/dist/src/filters/Vibrance.d.ts.map +1 -1
- package/dist/src/filters/Vibrance.min.mjs +1 -1
- package/dist/src/filters/Vibrance.min.mjs.map +1 -1
- package/dist/src/filters/Vibrance.mjs +6 -18
- package/dist/src/filters/Vibrance.mjs.map +1 -1
- package/dist/src/filters/WebGLFilterBackend.d.ts +1 -1
- package/dist/src/filters/WebGLFilterBackend.d.ts.map +1 -1
- package/dist/src/filters/WebGLFilterBackend.min.mjs.map +1 -1
- package/dist/src/filters/WebGLFilterBackend.mjs.map +1 -1
- package/dist/src/filters/shaders/blendImage.d.ts +1 -0
- package/dist/src/filters/shaders/blendImage.d.ts.map +1 -1
- package/dist/src/filters/shaders/blendImage.min.mjs +1 -1
- package/dist/src/filters/shaders/blendImage.min.mjs.map +1 -1
- package/dist/src/filters/shaders/blendImage.mjs +2 -1
- package/dist/src/filters/shaders/blendImage.mjs.map +1 -1
- package/dist/src/filters/typedefs.d.ts +22 -0
- package/dist/src/filters/typedefs.d.ts.map +1 -1
- package/dist/src/parser/elements_parser.d.ts +1 -1
- package/dist/src/parser/elements_parser.d.ts.map +1 -1
- package/dist/src/parser/elements_parser.min.mjs.map +1 -1
- package/dist/src/parser/elements_parser.mjs.map +1 -1
- package/dist/src/shapes/ActiveSelection.d.ts +1 -1
- package/dist/src/shapes/ActiveSelection.d.ts.map +1 -1
- package/dist/src/shapes/ActiveSelection.min.mjs +1 -1
- package/dist/src/shapes/ActiveSelection.min.mjs.map +1 -1
- package/dist/src/shapes/ActiveSelection.mjs +13 -10
- package/dist/src/shapes/ActiveSelection.mjs.map +1 -1
- package/dist/src/shapes/Group.d.ts +9 -0
- package/dist/src/shapes/Group.d.ts.map +1 -1
- package/dist/src/shapes/Group.min.mjs +1 -1
- package/dist/src/shapes/Group.min.mjs.map +1 -1
- package/dist/src/shapes/Group.mjs +10 -1
- package/dist/src/shapes/Group.mjs.map +1 -1
- package/dist/src/shapes/Image.d.ts +4 -4
- package/dist/src/shapes/Image.d.ts.map +1 -1
- package/dist/src/shapes/Image.min.mjs.map +1 -1
- package/dist/src/shapes/Image.mjs.map +1 -1
- package/dist/src/shapes/Object/InteractiveObject.d.ts +3 -0
- package/dist/src/shapes/Object/InteractiveObject.d.ts.map +1 -1
- package/dist/src/shapes/Object/InteractiveObject.min.mjs +1 -1
- package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +1 -1
- package/dist/src/shapes/Object/InteractiveObject.mjs +3 -1
- package/dist/src/shapes/Object/InteractiveObject.mjs.map +1 -1
- package/dist/src/shapes/Object/Object.d.ts +1 -16
- package/dist/src/shapes/Object/Object.d.ts.map +1 -1
- package/dist/src/shapes/Object/Object.min.mjs +1 -1
- package/dist/src/shapes/Object/Object.min.mjs.map +1 -1
- package/dist/src/shapes/Object/Object.mjs +9 -10
- package/dist/src/shapes/Object/Object.mjs.map +1 -1
- package/dist/src/shapes/Object/StackedObject.d.ts +8 -15
- package/dist/src/shapes/Object/StackedObject.d.ts.map +1 -1
- package/dist/src/shapes/Object/StackedObject.min.mjs +1 -1
- package/dist/src/shapes/Object/StackedObject.min.mjs.map +1 -1
- package/dist/src/shapes/Object/StackedObject.mjs +11 -21
- package/dist/src/shapes/Object/StackedObject.mjs.map +1 -1
- package/dist/src/shapes/Path.d.ts +2 -2
- package/dist/src/shapes/Path.d.ts.map +1 -1
- package/dist/src/shapes/Path.min.mjs.map +1 -1
- package/dist/src/shapes/Path.mjs +2 -2
- package/dist/src/shapes/Path.mjs.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +1 -1
- package/dist/src/util/misc/objectEnlive.d.ts +2 -2
- package/dist/src/util/misc/objectEnlive.d.ts.map +1 -1
- package/dist/src/util/misc/objectEnlive.min.mjs.map +1 -1
- package/dist/src/util/misc/objectEnlive.mjs.map +1 -1
- package/package.json +2 -2
- package/src/canvas/Canvas.ts +6 -9
- package/src/canvas/SelectableCanvas.ts +2 -2
- package/src/canvas/StaticCanvas.ts +4 -18
- package/src/color/Color.ts +2 -1
- package/src/color/color.test.ts +6 -0
- package/src/filters/BaseFilter.ts +45 -51
- package/src/filters/BlendColor.ts +13 -35
- package/src/filters/BlendImage.ts +26 -40
- package/src/filters/Blur.ts +13 -20
- package/src/filters/Boilerplate.ts +13 -22
- package/src/filters/Brightness.ts +12 -21
- package/src/filters/Canvas2dFilterBackend.ts +1 -1
- package/src/filters/ColorMatrix.ts +29 -34
- package/src/filters/ColorMatrixFilters.ts +15 -9
- package/src/filters/Composed.ts +26 -16
- package/src/filters/Contrast.ts +15 -23
- package/src/filters/Convolute.ts +11 -23
- package/src/filters/Gamma.ts +32 -24
- package/src/filters/Grayscale.ts +8 -19
- package/src/filters/HueRotation.ts +21 -11
- package/src/filters/Invert.ts +11 -22
- package/src/filters/Noise.ts +11 -30
- package/src/filters/Pixelate.ts +9 -22
- package/src/filters/RemoveColor.ts +21 -35
- package/src/filters/Resize.ts +20 -44
- package/src/filters/Saturation.ts +16 -27
- package/src/filters/Vibrance.ts +14 -24
- package/src/filters/WebGLFilterBackend.ts +1 -1
- package/src/filters/shaders/blendImage.ts +12 -0
- package/src/filters/typedefs.ts +23 -0
- package/src/parser/elements_parser.ts +1 -1
- package/src/shapes/ActiveSelection.ts +8 -4
- package/src/shapes/Group.ts +16 -1
- package/src/shapes/Image.ts +8 -6
- package/src/shapes/Object/InteractiveObject.ts +3 -1
- package/src/shapes/Object/Object.ts +10 -35
- package/src/shapes/Object/StackedObject.ts +28 -44
- package/src/shapes/Path.ts +4 -4
- package/src/shapes/Text/TextSVGExportMixin.ts +1 -1
- package/src/util/misc/objectEnlive.ts +12 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Convolute.mjs","sources":["../../../src/filters/Convolute.ts"],"sourcesContent":["import type { TClassProperties } from '../typedefs';\nimport { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/convolute';\n\nexport const convoluteDefaultValues: Partial<TClassProperties<Convolute>> = {\n opaque: false,\n matrix: [0, 0, 0, 0, 1, 0, 0, 0, 0],\n};\n\n/**\n * Adapted from <a href=\"http://www.html5rocks.com/en/tutorials/canvas/imagefilters/\">html5rocks article</a>\n * @example <caption>Sharpen filter</caption>\n * const filter = new Convolute({\n * matrix: [ 0, -1, 0,\n * -1, 5, -1,\n * 0, -1, 0 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example <caption>Blur filter</caption>\n * const filter = new Convolute({\n * matrix: [ 1/9, 1/9, 1/9,\n * 1/9, 1/9, 1/9,\n * 1/9, 1/9, 1/9 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example <caption>Emboss filter</caption>\n * const filter = new Convolute({\n * matrix: [ 1, 1, 1,\n * 1, 0.7, -1,\n * -1, -1, -1 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example <caption>Emboss filter with opaqueness</caption>\n * const filter = new Convolute({\n * opaque: true,\n * matrix: [ 1, 1, 1,\n * 1, 0.7, -1,\n * -1, -1, -1 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\nexport class Convolute extends BaseFilter {\n /*\n * Opaque value (true/false)\n */\n declare opaque: boolean;\n\n /*\n * matrix for the filter, max 9x9\n */\n declare matrix: number[];\n\n static type = 'Convolute';\n\n static defaults = convoluteDefaultValues;\n\n getCacheKey() {\n return `${this.type}_${Math.sqrt(this.matrix.length)}_${\n this.opaque ? 1 : 0\n }` as keyof typeof fragmentSource;\n }\n\n getFragmentSource() {\n return fragmentSource[this.getCacheKey()];\n }\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d(options: T2DPipelineState) {\n const imageData = options.imageData,\n data = imageData.data,\n weights = this.matrix,\n side = Math.round(Math.sqrt(weights.length)),\n halfSide = Math.floor(side / 2),\n sw = imageData.width,\n sh = imageData.height,\n output = options.ctx.createImageData(sw, sh),\n dst = output.data,\n // go through the destination image pixels\n alphaFac = this.opaque ? 1 : 0;\n let r, g, b, a, dstOff, scx, scy, srcOff, wt, x, y, cx, cy;\n\n for (y = 0; y < sh; y++) {\n for (x = 0; x < sw; x++) {\n dstOff = (y * sw + x) * 4;\n // calculate the weighed sum of the source image pixels that\n // fall under the convolution matrix\n r = 0;\n g = 0;\n b = 0;\n a = 0;\n\n for (cy = 0; cy < side; cy++) {\n for (cx = 0; cx < side; cx++) {\n scy = y + cy - halfSide;\n scx = x + cx - halfSide;\n\n // eslint-disable-next-line max-depth\n if (scy < 0 || scy >= sh || scx < 0 || scx >= sw) {\n continue;\n }\n\n srcOff = (scy * sw + scx) * 4;\n wt = weights[cy * side + cx];\n\n r += data[srcOff] * wt;\n g += data[srcOff + 1] * wt;\n b += data[srcOff + 2] * wt;\n // eslint-disable-next-line max-depth\n if (!alphaFac) {\n a += data[srcOff + 3] * wt;\n }\n }\n }\n dst[dstOff] = r;\n dst[dstOff + 1] = g;\n dst[dstOff + 2] = b;\n if (!alphaFac) {\n dst[dstOff + 3] = a;\n } else {\n dst[dstOff + 3] = data[dstOff + 3];\n }\n }\n }\n options.imageData = output;\n }\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations(\n gl: WebGLRenderingContext,\n program: WebGLProgram\n ): TWebGLUniformLocationMap {\n return {\n uMatrix: gl.getUniformLocation(program, 'uMatrix'),\n uOpaque: gl.getUniformLocation(program, 'uOpaque'),\n uHalfSize: gl.getUniformLocation(program, 'uHalfSize'),\n uSize: gl.getUniformLocation(program, 'uSize'),\n };\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n gl.uniform1fv(uniformLocations.uMatrix, this.matrix);\n }\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject() {\n return {\n ...super.toObject(),\n opaque: this.opaque,\n matrix: [...this.matrix],\n };\n }\n}\n\nclassRegistry.setClass(Convolute);\n"],"names":["convoluteDefaultValues","opaque","matrix","Convolute","BaseFilter","getCacheKey","concat","type","Math","sqrt","length","getFragmentSource","fragmentSource","applyTo2d","options","imageData","data","weights","side","round","halfSide","floor","sw","width","sh","height","output","ctx","createImageData","dst","alphaFac","r","g","b","a","dstOff","scx","scy","srcOff","wt","x","y","cx","cy","getUniformLocations","gl","program","uMatrix","getUniformLocation","uOpaque","uHalfSize","uSize","sendUniformData","uniformLocations","uniform1fv","toObject","_objectSpread","_defineProperty","classRegistry","setClass"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Convolute.mjs","sources":["../../../src/filters/Convolute.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/convolute';\n\nexport type ConvoluteOwnProps = {\n opaque: boolean;\n matrix: number[];\n};\n\nexport const convoluteDefaultValues: ConvoluteOwnProps = {\n opaque: false,\n matrix: [0, 0, 0, 0, 1, 0, 0, 0, 0],\n};\n\n/**\n * Adapted from <a href=\"http://www.html5rocks.com/en/tutorials/canvas/imagefilters/\">html5rocks article</a>\n * @example <caption>Sharpen filter</caption>\n * const filter = new Convolute({\n * matrix: [ 0, -1, 0,\n * -1, 5, -1,\n * 0, -1, 0 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example <caption>Blur filter</caption>\n * const filter = new Convolute({\n * matrix: [ 1/9, 1/9, 1/9,\n * 1/9, 1/9, 1/9,\n * 1/9, 1/9, 1/9 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example <caption>Emboss filter</caption>\n * const filter = new Convolute({\n * matrix: [ 1, 1, 1,\n * 1, 0.7, -1,\n * -1, -1, -1 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example <caption>Emboss filter with opaqueness</caption>\n * const filter = new Convolute({\n * opaque: true,\n * matrix: [ 1, 1, 1,\n * 1, 0.7, -1,\n * -1, -1, -1 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\nexport class Convolute extends BaseFilter<'Convolute', ConvoluteOwnProps> {\n /*\n * Opaque value (true/false)\n */\n declare opaque: ConvoluteOwnProps['opaque'];\n\n /*\n * matrix for the filter, max 9x9\n */\n declare matrix: ConvoluteOwnProps['matrix'];\n\n static type = 'Convolute';\n\n static defaults = convoluteDefaultValues;\n\n static uniformLocations = ['uMatrix', 'uOpaque', 'uHalfSize', 'uSize'];\n\n getCacheKey() {\n return `${this.type}_${Math.sqrt(this.matrix.length)}_${\n this.opaque ? 1 : 0\n }` as keyof typeof fragmentSource;\n }\n\n getFragmentSource() {\n return fragmentSource[this.getCacheKey()];\n }\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d(options: T2DPipelineState) {\n const imageData = options.imageData,\n data = imageData.data,\n weights = this.matrix,\n side = Math.round(Math.sqrt(weights.length)),\n halfSide = Math.floor(side / 2),\n sw = imageData.width,\n sh = imageData.height,\n output = options.ctx.createImageData(sw, sh),\n dst = output.data,\n // go through the destination image pixels\n alphaFac = this.opaque ? 1 : 0;\n let r, g, b, a, dstOff, scx, scy, srcOff, wt, x, y, cx, cy;\n\n for (y = 0; y < sh; y++) {\n for (x = 0; x < sw; x++) {\n dstOff = (y * sw + x) * 4;\n // calculate the weighed sum of the source image pixels that\n // fall under the convolution matrix\n r = 0;\n g = 0;\n b = 0;\n a = 0;\n\n for (cy = 0; cy < side; cy++) {\n for (cx = 0; cx < side; cx++) {\n scy = y + cy - halfSide;\n scx = x + cx - halfSide;\n\n // eslint-disable-next-line max-depth\n if (scy < 0 || scy >= sh || scx < 0 || scx >= sw) {\n continue;\n }\n\n srcOff = (scy * sw + scx) * 4;\n wt = weights[cy * side + cx];\n\n r += data[srcOff] * wt;\n g += data[srcOff + 1] * wt;\n b += data[srcOff + 2] * wt;\n // eslint-disable-next-line max-depth\n if (!alphaFac) {\n a += data[srcOff + 3] * wt;\n }\n }\n }\n dst[dstOff] = r;\n dst[dstOff + 1] = g;\n dst[dstOff + 2] = b;\n if (!alphaFac) {\n dst[dstOff + 3] = a;\n } else {\n dst[dstOff + 3] = data[dstOff + 3];\n }\n }\n }\n options.imageData = output;\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n gl.uniform1fv(uniformLocations.uMatrix, this.matrix);\n }\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject() {\n return {\n ...super.toObject(),\n opaque: this.opaque,\n matrix: [...this.matrix],\n };\n }\n}\n\nclassRegistry.setClass(Convolute);\n"],"names":["convoluteDefaultValues","opaque","matrix","Convolute","BaseFilter","getCacheKey","concat","type","Math","sqrt","length","getFragmentSource","fragmentSource","applyTo2d","options","imageData","data","weights","side","round","halfSide","floor","sw","width","sh","height","output","ctx","createImageData","dst","alphaFac","r","g","b","a","dstOff","scx","scy","srcOff","wt","x","y","cx","cy","sendUniformData","gl","uniformLocations","uniform1fv","uMatrix","toObject","_objectSpread","_defineProperty","classRegistry","setClass"],"mappings":"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"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import type { TClassProperties } from '../typedefs';
|
|
2
1
|
import { BaseFilter } from './BaseFilter';
|
|
3
2
|
import type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';
|
|
3
|
+
declare const GAMMA: "Gamma";
|
|
4
4
|
export type GammaInput = [number, number, number];
|
|
5
|
-
export
|
|
5
|
+
export type GammaOwnProps = {
|
|
6
|
+
gamma: GammaInput;
|
|
7
|
+
};
|
|
8
|
+
export declare const gammaDefaultValues: GammaOwnProps;
|
|
6
9
|
/**
|
|
7
10
|
* Gamma filter class
|
|
8
11
|
* @example
|
|
@@ -12,22 +15,23 @@ export declare const gammaDefaultValues: Partial<TClassProperties<Gamma>>;
|
|
|
12
15
|
* object.filters.push(filter);
|
|
13
16
|
* object.applyFilters();
|
|
14
17
|
*/
|
|
15
|
-
export declare class Gamma extends BaseFilter {
|
|
18
|
+
export declare class Gamma extends BaseFilter<typeof GAMMA, GammaOwnProps> {
|
|
16
19
|
/**
|
|
17
20
|
* Gamma array value, from 0.01 to 2.2.
|
|
18
21
|
* @param {Array} gamma
|
|
19
22
|
* @default
|
|
20
23
|
*/
|
|
21
|
-
gamma:
|
|
24
|
+
gamma: GammaOwnProps['gamma'];
|
|
22
25
|
rgbValues?: {
|
|
23
26
|
r: Uint8Array;
|
|
24
27
|
g: Uint8Array;
|
|
25
28
|
b: Uint8Array;
|
|
26
29
|
};
|
|
27
|
-
static type:
|
|
28
|
-
static defaults:
|
|
30
|
+
static type: "Gamma";
|
|
31
|
+
static defaults: GammaOwnProps;
|
|
32
|
+
static uniformLocations: string[];
|
|
29
33
|
getFragmentSource(): string;
|
|
30
|
-
constructor(
|
|
34
|
+
constructor(options?: {
|
|
31
35
|
gamma?: GammaInput;
|
|
32
36
|
});
|
|
33
37
|
/**
|
|
@@ -37,13 +41,6 @@ export declare class Gamma extends BaseFilter {
|
|
|
37
41
|
* @param {ImageData} options.imageData The Uint8Array to be filtered.
|
|
38
42
|
*/
|
|
39
43
|
applyTo2d({ imageData: { data } }: T2DPipelineState): void;
|
|
40
|
-
/**
|
|
41
|
-
* Return WebGL uniform locations for this filter's shader.
|
|
42
|
-
*
|
|
43
|
-
* @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
|
|
44
|
-
* @param {WebGLShaderProgram} program This filter's compiled shader program.
|
|
45
|
-
*/
|
|
46
|
-
getUniformLocations(gl: WebGLRenderingContext, program: WebGLProgram): TWebGLUniformLocationMap;
|
|
47
44
|
/**
|
|
48
45
|
* Send data from this filter to its shader program's uniforms.
|
|
49
46
|
*
|
|
@@ -51,5 +48,11 @@ export declare class Gamma extends BaseFilter {
|
|
|
51
48
|
* @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
|
|
52
49
|
*/
|
|
53
50
|
sendUniformData(gl: WebGLRenderingContext, uniformLocations: TWebGLUniformLocationMap): void;
|
|
51
|
+
isNeutralState(): boolean;
|
|
52
|
+
toObject(): {
|
|
53
|
+
type: typeof GAMMA;
|
|
54
|
+
gamma: GammaInput;
|
|
55
|
+
};
|
|
54
56
|
}
|
|
57
|
+
export {};
|
|
55
58
|
//# sourceMappingURL=Gamma.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gamma.d.ts","sourceRoot":"","sources":["../../../src/filters/Gamma.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Gamma.d.ts","sourceRoot":"","sources":["../../../src/filters/Gamma.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE7E,QAAA,MAAM,KAAK,SAAmB,CAAC;AAE/B,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,aAEhC,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,KAAM,SAAQ,UAAU,CAAC,OAAO,KAAK,EAAE,aAAa,CAAC;IAChE;;;;OAIG;IACK,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE;QAClB,CAAC,EAAE,UAAU,CAAC;QACd,CAAC,EAAE,UAAU,CAAC;QACd,CAAC,EAAE,UAAU,CAAC;KACf,CAAC;IAEF,MAAM,CAAC,IAAI,UAAS;IAEpB,MAAM,CAAC,QAAQ,gBAAsB;IAErC,MAAM,CAAC,gBAAgB,WAAc;IAErC,iBAAiB;gBAIL,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,UAAU,CAAA;KAAO;IAShD;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB;IA6BnD;;;;;OAKG;IACH,eAAe,CACb,EAAE,EAAE,qBAAqB,EACzB,gBAAgB,EAAE,wBAAwB;IAK5C,cAAc;IAKd,QAAQ,IAAI;QAAE,IAAI,EAAE,OAAO,KAAK,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE;CAMtD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as
|
|
1
|
+
import{defineProperty as t}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{BaseFilter as a}from"./BaseFilter.min.mjs";import{classRegistry as r}from"../ClassRegistry.min.mjs";import{fragmentSource as m}from"./shaders/gamma.min.mjs";const e="Gamma",s={gamma:[1,1,1]};class o extends a{getFragmentSource(){return m}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(t),this.gamma=t.gamma||this.constructor.defaults.gamma.concat()}applyTo2d(t){let{imageData:{data:a}}=t;const r=this.gamma,m=1/r[0],e=1/r[1],s=1/r[2];this.rgbValues||(this.rgbValues={r:new Uint8Array(256),g:new Uint8Array(256),b:new Uint8Array(256)});const o=this.rgbValues;for(let t=0;t<256;t++)o.r[t]=255*Math.pow(t/255,m),o.g[t]=255*Math.pow(t/255,e),o.b[t]=255*Math.pow(t/255,s);for(let t=0;t<a.length;t+=4)a[t]=o.r[a[t]],a[t+1]=o.g[a[t+1]],a[t+2]=o.b[a[t+2]]}sendUniformData(t,a){t.uniform3fv(a.uGamma,this.gamma)}isNeutralState(){const{gamma:t}=this;return 1===t[0]&&1===t[1]&&1===t[2]}toObject(){return{type:e,gamma:this.gamma.concat()}}}t(o,"type",e),t(o,"defaults",s),t(o,"uniformLocations",["uGamma"]),r.setClass(o);export{o as Gamma,s as gammaDefaultValues};
|
|
2
2
|
//# sourceMappingURL=Gamma.min.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gamma.min.mjs","sources":["../../../src/filters/Gamma.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"Gamma.min.mjs","sources":["../../../src/filters/Gamma.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/gamma';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\n\nconst GAMMA = 'Gamma' as const;\n\nexport type GammaInput = [number, number, number];\n\nexport type GammaOwnProps = {\n gamma: GammaInput;\n};\n\nexport const gammaDefaultValues: GammaOwnProps = {\n gamma: [1, 1, 1],\n};\n\n/**\n * Gamma filter class\n * @example\n * const filter = new Gamma({\n * gamma: [1, 0.5, 2.1]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Gamma extends BaseFilter<typeof GAMMA, GammaOwnProps> {\n /**\n * Gamma array value, from 0.01 to 2.2.\n * @param {Array} gamma\n * @default\n */\n declare gamma: GammaOwnProps['gamma'];\n declare rgbValues?: {\n r: Uint8Array;\n g: Uint8Array;\n b: Uint8Array;\n };\n\n static type = GAMMA;\n\n static defaults = gammaDefaultValues;\n\n static uniformLocations = ['uGamma'];\n\n getFragmentSource() {\n return fragmentSource;\n }\n\n constructor(options: { gamma?: GammaInput } = {}) {\n super(options);\n this.gamma =\n options.gamma ||\n ((\n this.constructor as typeof Gamma\n ).defaults.gamma.concat() as GammaInput);\n }\n\n /**\n * Apply the Gamma operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d({ imageData: { data } }: T2DPipelineState) {\n const gamma = this.gamma,\n rInv = 1 / gamma[0],\n gInv = 1 / gamma[1],\n bInv = 1 / gamma[2];\n\n if (!this.rgbValues) {\n this.rgbValues = {\n r: new Uint8Array(256),\n g: new Uint8Array(256),\n b: new Uint8Array(256),\n };\n }\n\n // This is an optimization - pre-compute a look-up table for each color channel\n // instead of performing these pow calls for each pixel in the image.\n const rgb = this.rgbValues;\n for (let i = 0; i < 256; i++) {\n rgb.r[i] = Math.pow(i / 255, rInv) * 255;\n rgb.g[i] = Math.pow(i / 255, gInv) * 255;\n rgb.b[i] = Math.pow(i / 255, bInv) * 255;\n }\n for (let i = 0; i < data.length; i += 4) {\n data[i] = rgb.r[data[i]];\n data[i + 1] = rgb.g[data[i + 1]];\n data[i + 2] = rgb.b[data[i + 2]];\n }\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n gl.uniform3fv(uniformLocations.uGamma, this.gamma);\n }\n\n isNeutralState() {\n const { gamma } = this;\n return gamma[0] === 1 && gamma[1] === 1 && gamma[2] === 1;\n }\n\n toObject(): { type: typeof GAMMA; gamma: GammaInput } {\n return {\n type: GAMMA,\n gamma: this.gamma.concat() as GammaInput,\n };\n }\n}\n\nclassRegistry.setClass(Gamma);\n"],"names":["GAMMA","gammaDefaultValues","gamma","Gamma","BaseFilter","getFragmentSource","fragmentSource","constructor","options","arguments","length","undefined","super","this","defaults","concat","applyTo2d","_ref","imageData","data","rInv","gInv","bInv","rgbValues","r","Uint8Array","g","b","rgb","i","Math","pow","sendUniformData","gl","uniformLocations","uniform3fv","uGamma","isNeutralState","toObject","type","_defineProperty","classRegistry","setClass"],"mappings":"sPAKA,MAAMA,EAAQ,QAQDC,EAAoC,CAC/CC,MAAO,CAAC,EAAG,EAAG,IAYT,MAAMC,UAAcC,EAmBzBC,iBAAAA,GACE,OAAOC,CACT,CAEAC,WAAAA,GAAkD,IAAtCC,EAA+BC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAA,EAC5CG,MAAMJ,GACNK,KAAKX,MACHM,EAAQN,OAENW,KAAKN,YACLO,SAASZ,MAAMa,QACrB,CAQAC,SAAAA,CAASC,GAA4C,IAAzCC,WAAWC,KAAEA,IAA0BF,EACjD,MAAMf,EAAQW,KAAKX,MACjBkB,EAAO,EAAIlB,EAAM,GACjBmB,EAAO,EAAInB,EAAM,GACjBoB,EAAO,EAAIpB,EAAM,GAEdW,KAAKU,YACRV,KAAKU,UAAY,CACfC,EAAG,IAAIC,WAAW,KAClBC,EAAG,IAAID,WAAW,KAClBE,EAAG,IAAIF,WAAW,OAMtB,MAAMG,EAAMf,KAAKU,UACjB,IAAK,IAAIM,EAAI,EAAGA,EAAI,IAAKA,IACvBD,EAAIJ,EAAEK,GAA+B,IAA1BC,KAAKC,IAAIF,EAAI,IAAKT,GAC7BQ,EAAIF,EAAEG,GAA+B,IAA1BC,KAAKC,IAAIF,EAAI,IAAKR,GAC7BO,EAAID,EAAEE,GAA+B,IAA1BC,KAAKC,IAAIF,EAAI,IAAKP,GAE/B,IAAK,IAAIO,EAAI,EAAGA,EAAIV,EAAKT,OAAQmB,GAAK,EACpCV,EAAKU,GAAKD,EAAIJ,EAAEL,EAAKU,IACrBV,EAAKU,EAAI,GAAKD,EAAIF,EAAEP,EAAKU,EAAI,IAC7BV,EAAKU,EAAI,GAAKD,EAAID,EAAER,EAAKU,EAAI,GAEjC,CAQAG,eAAAA,CACEC,EACAC,GAEAD,EAAGE,WAAWD,EAAiBE,OAAQvB,KAAKX,MAC9C,CAEAmC,cAAAA,GACE,MAAMnC,MAAEA,GAAUW,KAClB,OAAoB,IAAbX,EAAM,IAAyB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,EACnD,CAEAoC,QAAAA,GACE,MAAO,CACLC,KAAMvC,EACNE,MAAOW,KAAKX,MAAMa,SAEtB,EAzFAyB,EADWrC,EAAK,OAaFH,GAAKwC,EAbRrC,EAAK,WAeEF,GAAkBuC,EAfzBrC,EAiBe,mBAAA,CAAC,WA4E7BsC,EAAcC,SAASvC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { defineProperty as _defineProperty
|
|
1
|
+
import { defineProperty as _defineProperty } from '../../_virtual/_rollupPluginBabelHelpers.mjs';
|
|
2
2
|
import { BaseFilter } from './BaseFilter.mjs';
|
|
3
3
|
import { classRegistry } from '../ClassRegistry.mjs';
|
|
4
4
|
import { fragmentSource } from './shaders/gamma.mjs';
|
|
5
5
|
|
|
6
|
-
const
|
|
6
|
+
const GAMMA = 'Gamma';
|
|
7
7
|
const gammaDefaultValues = {
|
|
8
|
-
mainParameter: 'gamma',
|
|
9
8
|
gamma: [1, 1, 1]
|
|
10
9
|
};
|
|
11
10
|
|
|
@@ -23,13 +22,9 @@ class Gamma extends BaseFilter {
|
|
|
23
22
|
return fragmentSource;
|
|
24
23
|
}
|
|
25
24
|
constructor() {
|
|
26
|
-
let
|
|
27
|
-
{
|
|
28
|
-
gamma = [1, 1, 1]
|
|
29
|
-
} = _ref,
|
|
30
|
-
options = _objectWithoutProperties(_ref, _excluded);
|
|
25
|
+
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
31
26
|
super(options);
|
|
32
|
-
this.gamma = gamma;
|
|
27
|
+
this.gamma = options.gamma || this.constructor.defaults.gamma.concat();
|
|
33
28
|
}
|
|
34
29
|
|
|
35
30
|
/**
|
|
@@ -38,12 +33,12 @@ class Gamma extends BaseFilter {
|
|
|
38
33
|
* @param {Object} options
|
|
39
34
|
* @param {ImageData} options.imageData The Uint8Array to be filtered.
|
|
40
35
|
*/
|
|
41
|
-
applyTo2d(
|
|
36
|
+
applyTo2d(_ref) {
|
|
42
37
|
let {
|
|
43
38
|
imageData: {
|
|
44
39
|
data
|
|
45
40
|
}
|
|
46
|
-
} =
|
|
41
|
+
} = _ref;
|
|
47
42
|
const gamma = this.gamma,
|
|
48
43
|
rInv = 1 / gamma[0],
|
|
49
44
|
gInv = 1 / gamma[1],
|
|
@@ -71,18 +66,6 @@ class Gamma extends BaseFilter {
|
|
|
71
66
|
}
|
|
72
67
|
}
|
|
73
68
|
|
|
74
|
-
/**
|
|
75
|
-
* Return WebGL uniform locations for this filter's shader.
|
|
76
|
-
*
|
|
77
|
-
* @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
|
|
78
|
-
* @param {WebGLShaderProgram} program This filter's compiled shader program.
|
|
79
|
-
*/
|
|
80
|
-
getUniformLocations(gl, program) {
|
|
81
|
-
return {
|
|
82
|
-
uGamma: gl.getUniformLocation(program, 'uGamma')
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
|
|
86
69
|
/**
|
|
87
70
|
* Send data from this filter to its shader program's uniforms.
|
|
88
71
|
*
|
|
@@ -92,14 +75,27 @@ class Gamma extends BaseFilter {
|
|
|
92
75
|
sendUniformData(gl, uniformLocations) {
|
|
93
76
|
gl.uniform3fv(uniformLocations.uGamma, this.gamma);
|
|
94
77
|
}
|
|
78
|
+
isNeutralState() {
|
|
79
|
+
const {
|
|
80
|
+
gamma
|
|
81
|
+
} = this;
|
|
82
|
+
return gamma[0] === 1 && gamma[1] === 1 && gamma[2] === 1;
|
|
83
|
+
}
|
|
84
|
+
toObject() {
|
|
85
|
+
return {
|
|
86
|
+
type: GAMMA,
|
|
87
|
+
gamma: this.gamma.concat()
|
|
88
|
+
};
|
|
89
|
+
}
|
|
95
90
|
}
|
|
96
91
|
/**
|
|
97
92
|
* Gamma array value, from 0.01 to 2.2.
|
|
98
93
|
* @param {Array} gamma
|
|
99
94
|
* @default
|
|
100
95
|
*/
|
|
101
|
-
_defineProperty(Gamma, "type",
|
|
96
|
+
_defineProperty(Gamma, "type", GAMMA);
|
|
102
97
|
_defineProperty(Gamma, "defaults", gammaDefaultValues);
|
|
98
|
+
_defineProperty(Gamma, "uniformLocations", ['uGamma']);
|
|
103
99
|
classRegistry.setClass(Gamma);
|
|
104
100
|
|
|
105
101
|
export { Gamma, gammaDefaultValues };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gamma.mjs","sources":["../../../src/filters/Gamma.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"Gamma.mjs","sources":["../../../src/filters/Gamma.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/gamma';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\n\nconst GAMMA = 'Gamma' as const;\n\nexport type GammaInput = [number, number, number];\n\nexport type GammaOwnProps = {\n gamma: GammaInput;\n};\n\nexport const gammaDefaultValues: GammaOwnProps = {\n gamma: [1, 1, 1],\n};\n\n/**\n * Gamma filter class\n * @example\n * const filter = new Gamma({\n * gamma: [1, 0.5, 2.1]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Gamma extends BaseFilter<typeof GAMMA, GammaOwnProps> {\n /**\n * Gamma array value, from 0.01 to 2.2.\n * @param {Array} gamma\n * @default\n */\n declare gamma: GammaOwnProps['gamma'];\n declare rgbValues?: {\n r: Uint8Array;\n g: Uint8Array;\n b: Uint8Array;\n };\n\n static type = GAMMA;\n\n static defaults = gammaDefaultValues;\n\n static uniformLocations = ['uGamma'];\n\n getFragmentSource() {\n return fragmentSource;\n }\n\n constructor(options: { gamma?: GammaInput } = {}) {\n super(options);\n this.gamma =\n options.gamma ||\n ((\n this.constructor as typeof Gamma\n ).defaults.gamma.concat() as GammaInput);\n }\n\n /**\n * Apply the Gamma operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d({ imageData: { data } }: T2DPipelineState) {\n const gamma = this.gamma,\n rInv = 1 / gamma[0],\n gInv = 1 / gamma[1],\n bInv = 1 / gamma[2];\n\n if (!this.rgbValues) {\n this.rgbValues = {\n r: new Uint8Array(256),\n g: new Uint8Array(256),\n b: new Uint8Array(256),\n };\n }\n\n // This is an optimization - pre-compute a look-up table for each color channel\n // instead of performing these pow calls for each pixel in the image.\n const rgb = this.rgbValues;\n for (let i = 0; i < 256; i++) {\n rgb.r[i] = Math.pow(i / 255, rInv) * 255;\n rgb.g[i] = Math.pow(i / 255, gInv) * 255;\n rgb.b[i] = Math.pow(i / 255, bInv) * 255;\n }\n for (let i = 0; i < data.length; i += 4) {\n data[i] = rgb.r[data[i]];\n data[i + 1] = rgb.g[data[i + 1]];\n data[i + 2] = rgb.b[data[i + 2]];\n }\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n gl.uniform3fv(uniformLocations.uGamma, this.gamma);\n }\n\n isNeutralState() {\n const { gamma } = this;\n return gamma[0] === 1 && gamma[1] === 1 && gamma[2] === 1;\n }\n\n toObject(): { type: typeof GAMMA; gamma: GammaInput } {\n return {\n type: GAMMA,\n gamma: this.gamma.concat() as GammaInput,\n };\n }\n}\n\nclassRegistry.setClass(Gamma);\n"],"names":["GAMMA","gammaDefaultValues","gamma","Gamma","BaseFilter","getFragmentSource","fragmentSource","constructor","options","arguments","length","undefined","defaults","concat","applyTo2d","_ref","imageData","data","rInv","gInv","bInv","rgbValues","r","Uint8Array","g","b","rgb","i","Math","pow","sendUniformData","gl","uniformLocations","uniform3fv","uGamma","isNeutralState","toObject","type","_defineProperty","classRegistry","setClass"],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type { TClassProperties } from '../typedefs';
|
|
2
1
|
import { BaseFilter } from './BaseFilter';
|
|
3
2
|
import type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';
|
|
4
3
|
export type TGrayscaleMode = 'average' | 'lightness' | 'luminosity';
|
|
5
|
-
|
|
4
|
+
type GrayscaleOwnProps = {
|
|
5
|
+
mode: TGrayscaleMode;
|
|
6
|
+
};
|
|
7
|
+
export declare const grayscaleDefaultValues: GrayscaleOwnProps;
|
|
6
8
|
/**
|
|
7
9
|
* Grayscale image filter class
|
|
8
10
|
* @example
|
|
@@ -10,10 +12,11 @@ export declare const grayscaleDefaultValues: Partial<TClassProperties<Grayscale>
|
|
|
10
12
|
* object.filters.push(filter);
|
|
11
13
|
* object.applyFilters();
|
|
12
14
|
*/
|
|
13
|
-
export declare class Grayscale extends BaseFilter {
|
|
15
|
+
export declare class Grayscale extends BaseFilter<'Grayscale', GrayscaleOwnProps> {
|
|
14
16
|
mode: TGrayscaleMode;
|
|
15
17
|
static type: string;
|
|
16
|
-
static defaults:
|
|
18
|
+
static defaults: GrayscaleOwnProps;
|
|
19
|
+
static uniformLocations: string[];
|
|
17
20
|
/**
|
|
18
21
|
* Apply the Grayscale operation to a Uint8Array representing the pixels of an image.
|
|
19
22
|
*
|
|
@@ -23,13 +26,6 @@ export declare class Grayscale extends BaseFilter {
|
|
|
23
26
|
applyTo2d({ imageData: { data } }: T2DPipelineState): void;
|
|
24
27
|
getCacheKey(): string;
|
|
25
28
|
getFragmentSource(): string;
|
|
26
|
-
/**
|
|
27
|
-
* Return WebGL uniform locations for this filter's shader.
|
|
28
|
-
*
|
|
29
|
-
* @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
|
|
30
|
-
* @param {WebGLShaderProgram} program This filter's compiled shader program.
|
|
31
|
-
*/
|
|
32
|
-
getUniformLocations(gl: WebGLRenderingContext, program: WebGLProgram): TWebGLUniformLocationMap;
|
|
33
29
|
/**
|
|
34
30
|
* Send data from this filter to its shader program's uniforms.
|
|
35
31
|
*
|
|
@@ -44,4 +40,5 @@ export declare class Grayscale extends BaseFilter {
|
|
|
44
40
|
**/
|
|
45
41
|
isNeutralState(): boolean;
|
|
46
42
|
}
|
|
43
|
+
export {};
|
|
47
44
|
//# sourceMappingURL=Grayscale.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grayscale.d.ts","sourceRoot":"","sources":["../../../src/filters/Grayscale.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Grayscale.d.ts","sourceRoot":"","sources":["../../../src/filters/Grayscale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAI7E,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,CAAC;AAEpE,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,cAAc,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,iBAEpC,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,SAAU,SAAQ,UAAU,CAAC,WAAW,EAAE,iBAAiB,CAAC;IAC/D,IAAI,EAAE,cAAc,CAAC;IAE7B,MAAM,CAAC,IAAI,SAAe;IAE1B,MAAM,CAAC,QAAQ,oBAA0B;IAEzC,MAAM,CAAC,gBAAgB,WAAa;IAEpC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB;IAuBnD,WAAW;IAIX,iBAAiB;IAIjB;;;;;OAKG;IACH,eAAe,CACb,EAAE,EAAE,qBAAqB,EACzB,gBAAgB,EAAE,wBAAwB;IAM5C;;;;QAII;IACJ,cAAc;CAGf"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as e}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{BaseFilter as t}from"./BaseFilter.min.mjs";import{classRegistry as a}from"../ClassRegistry.min.mjs";import{fragmentSource as r}from"./shaders/grayscale.min.mjs";const s={mode:"average"
|
|
1
|
+
import{defineProperty as e}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{BaseFilter as t}from"./BaseFilter.min.mjs";import{classRegistry as a}from"../ClassRegistry.min.mjs";import{fragmentSource as r}from"./shaders/grayscale.min.mjs";const s={mode:"average"};class i extends t{applyTo2d(e){let{imageData:{data:t}}=e;for(let e,a=0;a<t.length;a+=4){switch(this.mode){case"average":e=(t[a]+t[a+1]+t[a+2])/3;break;case"lightness":e=(Math.min(t[a],t[a+1],t[a+2])+Math.max(t[a],t[a+1],t[a+2]))/2;break;case"luminosity":e=.21*t[a]+.72*t[a+1]+.07*t[a+2]}t[a]=e,t[a+1]=e,t[a+2]=e}}getCacheKey(){return"".concat(this.type,"_").concat(this.mode)}getFragmentSource(){return r[this.mode]}sendUniformData(e,t){e.uniform1i(t.uMode,1)}isNeutralState(){return!1}}e(i,"type","Grayscale"),e(i,"defaults",s),e(i,"uniformLocations",["uMode"]),a.setClass(i);export{i as Grayscale,s as grayscaleDefaultValues};
|
|
2
2
|
//# sourceMappingURL=Grayscale.min.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grayscale.min.mjs","sources":["../../../src/filters/Grayscale.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"Grayscale.min.mjs","sources":["../../../src/filters/Grayscale.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/grayscale';\n\nexport type TGrayscaleMode = 'average' | 'lightness' | 'luminosity';\n\ntype GrayscaleOwnProps = {\n mode: TGrayscaleMode;\n};\n\nexport const grayscaleDefaultValues: GrayscaleOwnProps = {\n mode: 'average',\n};\n\n/**\n * Grayscale image filter class\n * @example\n * const filter = new Grayscale();\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Grayscale extends BaseFilter<'Grayscale', GrayscaleOwnProps> {\n declare mode: TGrayscaleMode;\n\n static type = 'Grayscale';\n\n static defaults = grayscaleDefaultValues;\n\n static uniformLocations = ['uMode'];\n\n /**\n * Apply the Grayscale operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d({ imageData: { data } }: T2DPipelineState) {\n for (let i = 0, value: number; i < data.length; i += 4) {\n switch (this.mode) {\n case 'average':\n value = (data[i] + data[i + 1] + data[i + 2]) / 3;\n break;\n case 'lightness':\n value =\n (Math.min(data[i], data[i + 1], data[i + 2]) +\n Math.max(data[i], data[i + 1], data[i + 2])) /\n 2;\n break;\n case 'luminosity':\n value = 0.21 * data[i] + 0.72 * data[i + 1] + 0.07 * data[i + 2];\n break;\n }\n\n data[i] = value;\n data[i + 1] = value;\n data[i + 2] = value;\n }\n }\n\n getCacheKey() {\n return `${this.type}_${this.mode}`;\n }\n\n getFragmentSource() {\n return fragmentSource[this.mode];\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n const mode = 1;\n gl.uniform1i(uniformLocations.uMode, mode);\n }\n\n /**\n * Grayscale filter isNeutralState implementation\n * The filter is never neutral\n * on the image\n **/\n isNeutralState() {\n return false;\n }\n}\n\nclassRegistry.setClass(Grayscale);\n"],"names":["grayscaleDefaultValues","mode","Grayscale","BaseFilter","applyTo2d","_ref","imageData","data","value","i","length","this","Math","min","max","getCacheKey","concat","type","getFragmentSource","fragmentSource","sendUniformData","gl","uniformLocations","uniform1i","uMode","isNeutralState","_defineProperty","classRegistry","setClass"],"mappings":"0PAWO,MAAMA,EAA4C,CACvDC,KAAM,WAUD,MAAMC,UAAkBC,EAe7BC,SAAAA,CAASC,GAA4C,IAAzCC,WAAWC,KAAEA,IAA0BF,EACjD,IAAK,IAAWG,EAAPC,EAAI,EAAkBA,EAAIF,EAAKG,OAAQD,GAAK,EAAG,CACtD,OAAQE,KAAKV,MACX,IAAK,UACHO,GAASD,EAAKE,GAAKF,EAAKE,EAAI,GAAKF,EAAKE,EAAI,IAAM,EAChD,MACF,IAAK,YACHD,GACGI,KAAKC,IAAIN,EAAKE,GAAIF,EAAKE,EAAI,GAAIF,EAAKE,EAAI,IACvCG,KAAKE,IAAIP,EAAKE,GAAIF,EAAKE,EAAI,GAAIF,EAAKE,EAAI,KAC1C,EACF,MACF,IAAK,aACHD,EAAQ,IAAOD,EAAKE,GAAK,IAAOF,EAAKE,EAAI,GAAK,IAAOF,EAAKE,EAAI,GAIlEF,EAAKE,GAAKD,EACVD,EAAKE,EAAI,GAAKD,EACdD,EAAKE,EAAI,GAAKD,CAChB,CACF,CAEAO,WAAAA,GACE,MAAAC,GAAAA,OAAUL,KAAKM,UAAID,OAAIL,KAAKV,KAC9B,CAEAiB,iBAAAA,GACE,OAAOC,EAAeR,KAAKV,KAC7B,CAQAmB,eAAAA,CACEC,EACAC,GAGAD,EAAGE,UAAUD,EAAiBE,MADjB,EAEf,CAOAC,cAAAA,GACE,OAAO,CACT,EACDC,EApEYxB,EAAS,OAGN,aAAWwB,EAHdxB,EAAS,WAKFF,GAAsB0B,EAL7BxB,EAOe,mBAAA,CAAC,UA+D7ByB,EAAcC,SAAS1B"}
|
|
@@ -4,8 +4,7 @@ import { classRegistry } from '../ClassRegistry.mjs';
|
|
|
4
4
|
import { fragmentSource } from './shaders/grayscale.mjs';
|
|
5
5
|
|
|
6
6
|
const grayscaleDefaultValues = {
|
|
7
|
-
mode: 'average'
|
|
8
|
-
mainParameter: 'mode'
|
|
7
|
+
mode: 'average'
|
|
9
8
|
};
|
|
10
9
|
|
|
11
10
|
/**
|
|
@@ -52,18 +51,6 @@ class Grayscale extends BaseFilter {
|
|
|
52
51
|
return fragmentSource[this.mode];
|
|
53
52
|
}
|
|
54
53
|
|
|
55
|
-
/**
|
|
56
|
-
* Return WebGL uniform locations for this filter's shader.
|
|
57
|
-
*
|
|
58
|
-
* @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
|
|
59
|
-
* @param {WebGLShaderProgram} program This filter's compiled shader program.
|
|
60
|
-
*/
|
|
61
|
-
getUniformLocations(gl, program) {
|
|
62
|
-
return {
|
|
63
|
-
uMode: gl.getUniformLocation(program, 'uMode')
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
|
|
67
54
|
/**
|
|
68
55
|
* Send data from this filter to its shader program's uniforms.
|
|
69
56
|
*
|
|
@@ -86,6 +73,7 @@ class Grayscale extends BaseFilter {
|
|
|
86
73
|
}
|
|
87
74
|
_defineProperty(Grayscale, "type", 'Grayscale');
|
|
88
75
|
_defineProperty(Grayscale, "defaults", grayscaleDefaultValues);
|
|
76
|
+
_defineProperty(Grayscale, "uniformLocations", ['uMode']);
|
|
89
77
|
classRegistry.setClass(Grayscale);
|
|
90
78
|
|
|
91
79
|
export { Grayscale, grayscaleDefaultValues };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grayscale.mjs","sources":["../../../src/filters/Grayscale.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"Grayscale.mjs","sources":["../../../src/filters/Grayscale.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/grayscale';\n\nexport type TGrayscaleMode = 'average' | 'lightness' | 'luminosity';\n\ntype GrayscaleOwnProps = {\n mode: TGrayscaleMode;\n};\n\nexport const grayscaleDefaultValues: GrayscaleOwnProps = {\n mode: 'average',\n};\n\n/**\n * Grayscale image filter class\n * @example\n * const filter = new Grayscale();\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Grayscale extends BaseFilter<'Grayscale', GrayscaleOwnProps> {\n declare mode: TGrayscaleMode;\n\n static type = 'Grayscale';\n\n static defaults = grayscaleDefaultValues;\n\n static uniformLocations = ['uMode'];\n\n /**\n * Apply the Grayscale operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d({ imageData: { data } }: T2DPipelineState) {\n for (let i = 0, value: number; i < data.length; i += 4) {\n switch (this.mode) {\n case 'average':\n value = (data[i] + data[i + 1] + data[i + 2]) / 3;\n break;\n case 'lightness':\n value =\n (Math.min(data[i], data[i + 1], data[i + 2]) +\n Math.max(data[i], data[i + 1], data[i + 2])) /\n 2;\n break;\n case 'luminosity':\n value = 0.21 * data[i] + 0.72 * data[i + 1] + 0.07 * data[i + 2];\n break;\n }\n\n data[i] = value;\n data[i + 1] = value;\n data[i + 2] = value;\n }\n }\n\n getCacheKey() {\n return `${this.type}_${this.mode}`;\n }\n\n getFragmentSource() {\n return fragmentSource[this.mode];\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n const mode = 1;\n gl.uniform1i(uniformLocations.uMode, mode);\n }\n\n /**\n * Grayscale filter isNeutralState implementation\n * The filter is never neutral\n * on the image\n **/\n isNeutralState() {\n return false;\n }\n}\n\nclassRegistry.setClass(Grayscale);\n"],"names":["grayscaleDefaultValues","mode","Grayscale","BaseFilter","applyTo2d","_ref","imageData","data","i","value","length","Math","min","max","getCacheKey","concat","type","getFragmentSource","fragmentSource","sendUniformData","gl","uniformLocations","uniform1i","uMode","isNeutralState","_defineProperty","classRegistry","setClass"],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import type { TClassProperties } from '../typedefs';
|
|
2
1
|
import { ColorMatrix } from './ColorMatrix';
|
|
3
2
|
import type { TWebGLPipelineState, T2DPipelineState } from './typedefs';
|
|
4
|
-
export
|
|
3
|
+
export type HueRotationOwnProps = {
|
|
4
|
+
rotation: number;
|
|
5
|
+
};
|
|
6
|
+
export declare const hueRotationDefaultValues: HueRotationOwnProps;
|
|
5
7
|
/**
|
|
6
8
|
* HueRotation filter class
|
|
7
9
|
* @example
|
|
@@ -11,15 +13,19 @@ export declare const hueRotationDefaultValues: Partial<TClassProperties<HueRotat
|
|
|
11
13
|
* object.filters.push(filter);
|
|
12
14
|
* object.applyFilters();
|
|
13
15
|
*/
|
|
14
|
-
export declare class HueRotation extends ColorMatrix {
|
|
16
|
+
export declare class HueRotation extends ColorMatrix<'HueRotation', HueRotationOwnProps> {
|
|
15
17
|
/**
|
|
16
18
|
* HueRotation value, from -1 to 1.
|
|
17
19
|
*/
|
|
18
|
-
rotation:
|
|
20
|
+
rotation: HueRotationOwnProps['rotation'];
|
|
19
21
|
static type: string;
|
|
20
|
-
static defaults:
|
|
22
|
+
static defaults: HueRotationOwnProps;
|
|
21
23
|
calculateMatrix(): void;
|
|
22
24
|
isNeutralState(): boolean;
|
|
23
25
|
applyTo(options: TWebGLPipelineState | T2DPipelineState): void;
|
|
26
|
+
toObject(): {
|
|
27
|
+
type: 'HueRotation';
|
|
28
|
+
rotation: number;
|
|
29
|
+
};
|
|
24
30
|
}
|
|
25
31
|
//# sourceMappingURL=HueRotation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HueRotation.d.ts","sourceRoot":"","sources":["../../../src/filters/HueRotation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HueRotation.d.ts","sourceRoot":"","sources":["../../../src/filters/HueRotation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGxE,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,mBAEtC,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,WAAY,SAAQ,WAAW,CAC1C,aAAa,EACb,mBAAmB,CACpB;IACC;;OAEG;IACK,QAAQ,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAElD,MAAM,CAAC,IAAI,SAAiB;IAE5B,MAAM,CAAC,QAAQ,sBAA4B;IAE3C,eAAe;IAmBf,cAAc;IAId,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,gBAAgB;IAMvD,QAAQ,IAAI;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;CAMtD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as t}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{cos as i}from"../util/misc/cos.min.mjs";import{sin as r}from"../util/misc/sin.min.mjs";import{ColorMatrix as
|
|
1
|
+
import{defineProperty as t}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{cos as i}from"../util/misc/cos.min.mjs";import{sin as r}from"../util/misc/sin.min.mjs";import{ColorMatrix as s}from"./ColorMatrix.min.mjs";import{classRegistry as a}from"../ClassRegistry.min.mjs";const o={rotation:0};class m extends s{calculateMatrix(){const t=this.rotation*Math.PI,s=i(t),a=r(t),o=1/3,m=Math.sqrt(o)*a,e=1-s;this.matrix=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],this.matrix[0]=s+e/3,this.matrix[1]=o*e-m,this.matrix[2]=o*e+m,this.matrix[5]=o*e+m,this.matrix[6]=s+o*e,this.matrix[7]=o*e-m,this.matrix[10]=o*e-m,this.matrix[11]=o*e+m,this.matrix[12]=s+o*e}isNeutralState(){return 0===this.rotation}applyTo(t){this.calculateMatrix(),super.applyTo(t)}toObject(){return{type:this.type,rotation:this.rotation}}}t(m,"type","HueRotation"),t(m,"defaults",o),a.setClass(m);export{m as HueRotation,o as hueRotationDefaultValues};
|
|
2
2
|
//# sourceMappingURL=HueRotation.min.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HueRotation.min.mjs","sources":["../../../src/filters/HueRotation.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"HueRotation.min.mjs","sources":["../../../src/filters/HueRotation.ts"],"sourcesContent":["import { cos } from '../util/misc/cos';\nimport { sin } from '../util/misc/sin';\nimport { ColorMatrix } from './ColorMatrix';\nimport type { TWebGLPipelineState, T2DPipelineState } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\n\nexport type HueRotationOwnProps = {\n rotation: number;\n};\n\nexport const hueRotationDefaultValues: HueRotationOwnProps = {\n rotation: 0,\n};\n\n/**\n * HueRotation filter class\n * @example\n * const filter = new HueRotation({\n * rotation: -0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class HueRotation extends ColorMatrix<\n 'HueRotation',\n HueRotationOwnProps\n> {\n /**\n * HueRotation value, from -1 to 1.\n */\n declare rotation: HueRotationOwnProps['rotation'];\n\n static type = 'HueRotation';\n\n static defaults = hueRotationDefaultValues;\n\n calculateMatrix() {\n const rad = this.rotation * Math.PI,\n cosine = cos(rad),\n sine = sin(rad),\n aThird = 1 / 3,\n aThirdSqtSin = Math.sqrt(aThird) * sine,\n OneMinusCos = 1 - cosine;\n this.matrix = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0];\n this.matrix[0] = cosine + OneMinusCos / 3;\n this.matrix[1] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[2] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[5] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[6] = cosine + aThird * OneMinusCos;\n this.matrix[7] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[10] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[11] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[12] = cosine + aThird * OneMinusCos;\n }\n\n isNeutralState() {\n return this.rotation === 0;\n }\n\n applyTo(options: TWebGLPipelineState | T2DPipelineState) {\n this.calculateMatrix();\n super.applyTo(options);\n }\n\n //@ts-expect-error TS and classes with different methods\n toObject(): { type: 'HueRotation'; rotation: number } {\n return {\n type: this.type,\n rotation: this.rotation,\n };\n }\n}\n\nclassRegistry.setClass(HueRotation);\n"],"names":["hueRotationDefaultValues","rotation","HueRotation","ColorMatrix","calculateMatrix","rad","this","Math","PI","cosine","cos","sine","sin","aThird","aThirdSqtSin","sqrt","OneMinusCos","matrix","isNeutralState","applyTo","options","super","toObject","type","_defineProperty","classRegistry","setClass"],"mappings":"6RAUO,MAAMA,EAAgD,CAC3DC,SAAU,GAYL,MAAMC,UAAoBC,EAa/BC,eAAAA,GACE,MAAMC,EAAMC,KAAKL,SAAWM,KAAKC,GAC/BC,EAASC,EAAIL,GACbM,EAAOC,EAAIP,GACXQ,EAAS,EAAI,EACbC,EAAeP,KAAKQ,KAAKF,GAAUF,EACnCK,EAAc,EAAIP,EACpBH,KAAKW,OAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACxEX,KAAKW,OAAO,GAAKR,EAASO,EAAc,EACxCV,KAAKW,OAAO,GAAKJ,EAASG,EAAcF,EACxCR,KAAKW,OAAO,GAAKJ,EAASG,EAAcF,EACxCR,KAAKW,OAAO,GAAKJ,EAASG,EAAcF,EACxCR,KAAKW,OAAO,GAAKR,EAASI,EAASG,EACnCV,KAAKW,OAAO,GAAKJ,EAASG,EAAcF,EACxCR,KAAKW,OAAO,IAAMJ,EAASG,EAAcF,EACzCR,KAAKW,OAAO,IAAMJ,EAASG,EAAcF,EACzCR,KAAKW,OAAO,IAAMR,EAASI,EAASG,CACtC,CAEAE,cAAAA,GACE,OAAyB,IAAlBZ,KAAKL,QACd,CAEAkB,OAAAA,CAAQC,GACNd,KAAKF,kBACLiB,MAAMF,QAAQC,EAChB,CAGAE,QAAAA,GACE,MAAO,CACLC,KAAMjB,KAAKiB,KACXtB,SAAUK,KAAKL,SAEnB,EA3CAuB,EAJWtB,EAAW,OASR,eAAasB,EAThBtB,EAAW,WAWJF,GAuCpByB,EAAcC,SAASxB"}
|
|
@@ -5,8 +5,7 @@ import { ColorMatrix } from './ColorMatrix.mjs';
|
|
|
5
5
|
import { classRegistry } from '../ClassRegistry.mjs';
|
|
6
6
|
|
|
7
7
|
const hueRotationDefaultValues = {
|
|
8
|
-
rotation: 0
|
|
9
|
-
mainParameter: 'rotation'
|
|
8
|
+
rotation: 0
|
|
10
9
|
};
|
|
11
10
|
|
|
12
11
|
/**
|
|
@@ -18,7 +17,6 @@ const hueRotationDefaultValues = {
|
|
|
18
17
|
* object.filters.push(filter);
|
|
19
18
|
* object.applyFilters();
|
|
20
19
|
*/
|
|
21
|
-
// @ts-expect-error some babbling about mainParameter
|
|
22
20
|
class HueRotation extends ColorMatrix {
|
|
23
21
|
calculateMatrix() {
|
|
24
22
|
const rad = this.rotation * Math.PI,
|
|
@@ -39,13 +37,20 @@ class HueRotation extends ColorMatrix {
|
|
|
39
37
|
this.matrix[12] = cosine + aThird * OneMinusCos;
|
|
40
38
|
}
|
|
41
39
|
isNeutralState() {
|
|
42
|
-
this.
|
|
43
|
-
return super.isNeutralState();
|
|
40
|
+
return this.rotation === 0;
|
|
44
41
|
}
|
|
45
42
|
applyTo(options) {
|
|
46
43
|
this.calculateMatrix();
|
|
47
44
|
super.applyTo(options);
|
|
48
45
|
}
|
|
46
|
+
|
|
47
|
+
//@ts-expect-error TS and classes with different methods
|
|
48
|
+
toObject() {
|
|
49
|
+
return {
|
|
50
|
+
type: this.type,
|
|
51
|
+
rotation: this.rotation
|
|
52
|
+
};
|
|
53
|
+
}
|
|
49
54
|
}
|
|
50
55
|
/**
|
|
51
56
|
* HueRotation value, from -1 to 1.
|