@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.
Files changed (268) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/dist/index.js +229 -491
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.min.js +1 -1
  5. package/dist/index.min.js.map +1 -1
  6. package/dist/index.min.mjs +1 -1
  7. package/dist/index.min.mjs.map +1 -1
  8. package/dist/index.mjs +229 -491
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/index.node.cjs +229 -491
  11. package/dist/index.node.cjs.map +1 -1
  12. package/dist/index.node.mjs +229 -491
  13. package/dist/index.node.mjs.map +1 -1
  14. package/dist/package.json.min.mjs +1 -1
  15. package/dist/package.json.mjs +1 -1
  16. package/dist/src/canvas/Canvas.d.ts.map +1 -1
  17. package/dist/src/canvas/Canvas.min.mjs +1 -1
  18. package/dist/src/canvas/Canvas.min.mjs.map +1 -1
  19. package/dist/src/canvas/Canvas.mjs +8 -9
  20. package/dist/src/canvas/Canvas.mjs.map +1 -1
  21. package/dist/src/canvas/SelectableCanvas.d.ts +1 -1
  22. package/dist/src/canvas/SelectableCanvas.d.ts.map +1 -1
  23. package/dist/src/canvas/SelectableCanvas.min.mjs +1 -1
  24. package/dist/src/canvas/SelectableCanvas.min.mjs.map +1 -1
  25. package/dist/src/canvas/SelectableCanvas.mjs +1 -1
  26. package/dist/src/canvas/SelectableCanvas.mjs.map +1 -1
  27. package/dist/src/canvas/StaticCanvas.d.ts +4 -4
  28. package/dist/src/canvas/StaticCanvas.d.ts.map +1 -1
  29. package/dist/src/canvas/StaticCanvas.min.mjs +1 -1
  30. package/dist/src/canvas/StaticCanvas.min.mjs.map +1 -1
  31. package/dist/src/canvas/StaticCanvas.mjs +0 -13
  32. package/dist/src/canvas/StaticCanvas.mjs.map +1 -1
  33. package/dist/src/color/Color.d.ts +1 -0
  34. package/dist/src/color/Color.d.ts.map +1 -1
  35. package/dist/src/color/Color.min.mjs +1 -1
  36. package/dist/src/color/Color.min.mjs.map +1 -1
  37. package/dist/src/color/Color.mjs +3 -1
  38. package/dist/src/color/Color.mjs.map +1 -1
  39. package/dist/src/filters/BaseFilter.d.ts +16 -23
  40. package/dist/src/filters/BaseFilter.d.ts.map +1 -1
  41. package/dist/src/filters/BaseFilter.min.mjs +1 -1
  42. package/dist/src/filters/BaseFilter.min.mjs.map +1 -1
  43. package/dist/src/filters/BaseFilter.mjs +24 -41
  44. package/dist/src/filters/BaseFilter.mjs.map +1 -1
  45. package/dist/src/filters/BlendColor.d.ts +13 -24
  46. package/dist/src/filters/BlendColor.d.ts.map +1 -1
  47. package/dist/src/filters/BlendColor.min.mjs +1 -1
  48. package/dist/src/filters/BlendColor.min.mjs.map +1 -1
  49. package/dist/src/filters/BlendColor.mjs +1 -25
  50. package/dist/src/filters/BlendColor.mjs.map +1 -1
  51. package/dist/src/filters/BlendImage.d.ts +18 -19
  52. package/dist/src/filters/BlendImage.d.ts.map +1 -1
  53. package/dist/src/filters/BlendImage.min.mjs +1 -1
  54. package/dist/src/filters/BlendImage.min.mjs.map +1 -1
  55. package/dist/src/filters/BlendImage.mjs +13 -24
  56. package/dist/src/filters/BlendImage.mjs.map +1 -1
  57. package/dist/src/filters/Blur.d.ts +10 -12
  58. package/dist/src/filters/Blur.d.ts.map +1 -1
  59. package/dist/src/filters/Blur.min.mjs +1 -1
  60. package/dist/src/filters/Blur.min.mjs.map +1 -1
  61. package/dist/src/filters/Blur.mjs +5 -14
  62. package/dist/src/filters/Blur.mjs.map +1 -1
  63. package/dist/src/filters/Boilerplate.d.ts +11 -13
  64. package/dist/src/filters/Boilerplate.d.ts.map +1 -1
  65. package/dist/src/filters/Brightness.d.ts +10 -12
  66. package/dist/src/filters/Brightness.d.ts.map +1 -1
  67. package/dist/src/filters/Brightness.min.mjs +1 -1
  68. package/dist/src/filters/Brightness.min.mjs.map +1 -1
  69. package/dist/src/filters/Brightness.mjs +4 -16
  70. package/dist/src/filters/Brightness.mjs.map +1 -1
  71. package/dist/src/filters/Canvas2dFilterBackend.d.ts +1 -1
  72. package/dist/src/filters/Canvas2dFilterBackend.d.ts.map +1 -1
  73. package/dist/src/filters/Canvas2dFilterBackend.min.mjs.map +1 -1
  74. package/dist/src/filters/Canvas2dFilterBackend.mjs.map +1 -1
  75. package/dist/src/filters/ColorMatrix.d.ts +17 -15
  76. package/dist/src/filters/ColorMatrix.d.ts.map +1 -1
  77. package/dist/src/filters/ColorMatrix.min.mjs +1 -1
  78. package/dist/src/filters/ColorMatrix.min.mjs.map +1 -1
  79. package/dist/src/filters/ColorMatrix.mjs +7 -27
  80. package/dist/src/filters/ColorMatrix.mjs.map +1 -1
  81. package/dist/src/filters/ColorMatrixFilters.d.ts +63 -497
  82. package/dist/src/filters/ColorMatrixFilters.d.ts.map +1 -1
  83. package/dist/src/filters/ColorMatrixFilters.min.mjs +1 -1
  84. package/dist/src/filters/ColorMatrixFilters.min.mjs.map +1 -1
  85. package/dist/src/filters/ColorMatrixFilters.mjs +13 -8
  86. package/dist/src/filters/ColorMatrixFilters.mjs.map +1 -1
  87. package/dist/src/filters/Composed.d.ts +11 -10
  88. package/dist/src/filters/Composed.d.ts.map +1 -1
  89. package/dist/src/filters/Composed.min.mjs +1 -1
  90. package/dist/src/filters/Composed.min.mjs.map +1 -1
  91. package/dist/src/filters/Composed.mjs +7 -12
  92. package/dist/src/filters/Composed.mjs.map +1 -1
  93. package/dist/src/filters/Contrast.d.ts +10 -12
  94. package/dist/src/filters/Contrast.d.ts.map +1 -1
  95. package/dist/src/filters/Contrast.min.mjs +1 -1
  96. package/dist/src/filters/Contrast.min.mjs.map +1 -1
  97. package/dist/src/filters/Contrast.mjs +6 -17
  98. package/dist/src/filters/Contrast.mjs.map +1 -1
  99. package/dist/src/filters/Convolute.d.ts +11 -14
  100. package/dist/src/filters/Convolute.d.ts.map +1 -1
  101. package/dist/src/filters/Convolute.min.mjs +1 -1
  102. package/dist/src/filters/Convolute.min.mjs.map +1 -1
  103. package/dist/src/filters/Convolute.mjs +1 -15
  104. package/dist/src/filters/Convolute.mjs.map +1 -1
  105. package/dist/src/filters/Gamma.d.ts +17 -14
  106. package/dist/src/filters/Gamma.d.ts.map +1 -1
  107. package/dist/src/filters/Gamma.min.mjs +1 -1
  108. package/dist/src/filters/Gamma.min.mjs.map +1 -1
  109. package/dist/src/filters/Gamma.mjs +20 -24
  110. package/dist/src/filters/Gamma.mjs.map +1 -1
  111. package/dist/src/filters/Grayscale.d.ts +8 -11
  112. package/dist/src/filters/Grayscale.d.ts.map +1 -1
  113. package/dist/src/filters/Grayscale.min.mjs +1 -1
  114. package/dist/src/filters/Grayscale.min.mjs.map +1 -1
  115. package/dist/src/filters/Grayscale.mjs +2 -14
  116. package/dist/src/filters/Grayscale.mjs.map +1 -1
  117. package/dist/src/filters/HueRotation.d.ts +11 -5
  118. package/dist/src/filters/HueRotation.d.ts.map +1 -1
  119. package/dist/src/filters/HueRotation.min.mjs +1 -1
  120. package/dist/src/filters/HueRotation.min.mjs.map +1 -1
  121. package/dist/src/filters/HueRotation.mjs +10 -5
  122. package/dist/src/filters/HueRotation.mjs.map +1 -1
  123. package/dist/src/filters/Invert.d.ts +10 -13
  124. package/dist/src/filters/Invert.d.ts.map +1 -1
  125. package/dist/src/filters/Invert.min.mjs +1 -1
  126. package/dist/src/filters/Invert.min.mjs.map +1 -1
  127. package/dist/src/filters/Invert.mjs +2 -15
  128. package/dist/src/filters/Invert.mjs.map +1 -1
  129. package/dist/src/filters/Noise.d.ts +9 -20
  130. package/dist/src/filters/Noise.d.ts.map +1 -1
  131. package/dist/src/filters/Noise.min.mjs +1 -1
  132. package/dist/src/filters/Noise.min.mjs.map +1 -1
  133. package/dist/src/filters/Noise.mjs +4 -27
  134. package/dist/src/filters/Noise.mjs.map +1 -1
  135. package/dist/src/filters/Pixelate.d.ts +8 -12
  136. package/dist/src/filters/Pixelate.d.ts.map +1 -1
  137. package/dist/src/filters/Pixelate.min.mjs +1 -1
  138. package/dist/src/filters/Pixelate.min.mjs.map +1 -1
  139. package/dist/src/filters/Pixelate.mjs +2 -16
  140. package/dist/src/filters/Pixelate.mjs.map +1 -1
  141. package/dist/src/filters/RemoveColor.d.ts +12 -23
  142. package/dist/src/filters/RemoveColor.d.ts.map +1 -1
  143. package/dist/src/filters/RemoveColor.min.mjs +1 -1
  144. package/dist/src/filters/RemoveColor.min.mjs.map +1 -1
  145. package/dist/src/filters/RemoveColor.mjs +2 -25
  146. package/dist/src/filters/RemoveColor.mjs.map +1 -1
  147. package/dist/src/filters/Resize.d.ts +14 -30
  148. package/dist/src/filters/Resize.d.ts.map +1 -1
  149. package/dist/src/filters/Resize.min.mjs +1 -1
  150. package/dist/src/filters/Resize.min.mjs.map +1 -1
  151. package/dist/src/filters/Resize.mjs +3 -30
  152. package/dist/src/filters/Resize.mjs.map +1 -1
  153. package/dist/src/filters/Saturation.d.ts +9 -12
  154. package/dist/src/filters/Saturation.d.ts.map +1 -1
  155. package/dist/src/filters/Saturation.min.mjs +1 -1
  156. package/dist/src/filters/Saturation.min.mjs.map +1 -1
  157. package/dist/src/filters/Saturation.mjs +8 -20
  158. package/dist/src/filters/Saturation.mjs.map +1 -1
  159. package/dist/src/filters/Vibrance.d.ts +10 -13
  160. package/dist/src/filters/Vibrance.d.ts.map +1 -1
  161. package/dist/src/filters/Vibrance.min.mjs +1 -1
  162. package/dist/src/filters/Vibrance.min.mjs.map +1 -1
  163. package/dist/src/filters/Vibrance.mjs +6 -18
  164. package/dist/src/filters/Vibrance.mjs.map +1 -1
  165. package/dist/src/filters/WebGLFilterBackend.d.ts +1 -1
  166. package/dist/src/filters/WebGLFilterBackend.d.ts.map +1 -1
  167. package/dist/src/filters/WebGLFilterBackend.min.mjs.map +1 -1
  168. package/dist/src/filters/WebGLFilterBackend.mjs.map +1 -1
  169. package/dist/src/filters/shaders/blendImage.d.ts +1 -0
  170. package/dist/src/filters/shaders/blendImage.d.ts.map +1 -1
  171. package/dist/src/filters/shaders/blendImage.min.mjs +1 -1
  172. package/dist/src/filters/shaders/blendImage.min.mjs.map +1 -1
  173. package/dist/src/filters/shaders/blendImage.mjs +2 -1
  174. package/dist/src/filters/shaders/blendImage.mjs.map +1 -1
  175. package/dist/src/filters/typedefs.d.ts +22 -0
  176. package/dist/src/filters/typedefs.d.ts.map +1 -1
  177. package/dist/src/parser/elements_parser.d.ts +1 -1
  178. package/dist/src/parser/elements_parser.d.ts.map +1 -1
  179. package/dist/src/parser/elements_parser.min.mjs.map +1 -1
  180. package/dist/src/parser/elements_parser.mjs.map +1 -1
  181. package/dist/src/shapes/ActiveSelection.d.ts +1 -1
  182. package/dist/src/shapes/ActiveSelection.d.ts.map +1 -1
  183. package/dist/src/shapes/ActiveSelection.min.mjs +1 -1
  184. package/dist/src/shapes/ActiveSelection.min.mjs.map +1 -1
  185. package/dist/src/shapes/ActiveSelection.mjs +13 -10
  186. package/dist/src/shapes/ActiveSelection.mjs.map +1 -1
  187. package/dist/src/shapes/Group.d.ts +9 -0
  188. package/dist/src/shapes/Group.d.ts.map +1 -1
  189. package/dist/src/shapes/Group.min.mjs +1 -1
  190. package/dist/src/shapes/Group.min.mjs.map +1 -1
  191. package/dist/src/shapes/Group.mjs +10 -1
  192. package/dist/src/shapes/Group.mjs.map +1 -1
  193. package/dist/src/shapes/Image.d.ts +4 -4
  194. package/dist/src/shapes/Image.d.ts.map +1 -1
  195. package/dist/src/shapes/Image.min.mjs.map +1 -1
  196. package/dist/src/shapes/Image.mjs.map +1 -1
  197. package/dist/src/shapes/Object/InteractiveObject.d.ts +3 -0
  198. package/dist/src/shapes/Object/InteractiveObject.d.ts.map +1 -1
  199. package/dist/src/shapes/Object/InteractiveObject.min.mjs +1 -1
  200. package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +1 -1
  201. package/dist/src/shapes/Object/InteractiveObject.mjs +3 -1
  202. package/dist/src/shapes/Object/InteractiveObject.mjs.map +1 -1
  203. package/dist/src/shapes/Object/Object.d.ts +1 -16
  204. package/dist/src/shapes/Object/Object.d.ts.map +1 -1
  205. package/dist/src/shapes/Object/Object.min.mjs +1 -1
  206. package/dist/src/shapes/Object/Object.min.mjs.map +1 -1
  207. package/dist/src/shapes/Object/Object.mjs +9 -10
  208. package/dist/src/shapes/Object/Object.mjs.map +1 -1
  209. package/dist/src/shapes/Object/StackedObject.d.ts +8 -15
  210. package/dist/src/shapes/Object/StackedObject.d.ts.map +1 -1
  211. package/dist/src/shapes/Object/StackedObject.min.mjs +1 -1
  212. package/dist/src/shapes/Object/StackedObject.min.mjs.map +1 -1
  213. package/dist/src/shapes/Object/StackedObject.mjs +11 -21
  214. package/dist/src/shapes/Object/StackedObject.mjs.map +1 -1
  215. package/dist/src/shapes/Path.d.ts +2 -2
  216. package/dist/src/shapes/Path.d.ts.map +1 -1
  217. package/dist/src/shapes/Path.min.mjs.map +1 -1
  218. package/dist/src/shapes/Path.mjs +2 -2
  219. package/dist/src/shapes/Path.mjs.map +1 -1
  220. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +1 -1
  221. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +1 -1
  222. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +1 -1
  223. package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +1 -1
  224. package/dist/src/util/misc/objectEnlive.d.ts +2 -2
  225. package/dist/src/util/misc/objectEnlive.d.ts.map +1 -1
  226. package/dist/src/util/misc/objectEnlive.min.mjs.map +1 -1
  227. package/dist/src/util/misc/objectEnlive.mjs.map +1 -1
  228. package/package.json +2 -2
  229. package/src/canvas/Canvas.ts +6 -9
  230. package/src/canvas/SelectableCanvas.ts +2 -2
  231. package/src/canvas/StaticCanvas.ts +4 -18
  232. package/src/color/Color.ts +2 -1
  233. package/src/color/color.test.ts +6 -0
  234. package/src/filters/BaseFilter.ts +45 -51
  235. package/src/filters/BlendColor.ts +13 -35
  236. package/src/filters/BlendImage.ts +26 -40
  237. package/src/filters/Blur.ts +13 -20
  238. package/src/filters/Boilerplate.ts +13 -22
  239. package/src/filters/Brightness.ts +12 -21
  240. package/src/filters/Canvas2dFilterBackend.ts +1 -1
  241. package/src/filters/ColorMatrix.ts +29 -34
  242. package/src/filters/ColorMatrixFilters.ts +15 -9
  243. package/src/filters/Composed.ts +26 -16
  244. package/src/filters/Contrast.ts +15 -23
  245. package/src/filters/Convolute.ts +11 -23
  246. package/src/filters/Gamma.ts +32 -24
  247. package/src/filters/Grayscale.ts +8 -19
  248. package/src/filters/HueRotation.ts +21 -11
  249. package/src/filters/Invert.ts +11 -22
  250. package/src/filters/Noise.ts +11 -30
  251. package/src/filters/Pixelate.ts +9 -22
  252. package/src/filters/RemoveColor.ts +21 -35
  253. package/src/filters/Resize.ts +20 -44
  254. package/src/filters/Saturation.ts +16 -27
  255. package/src/filters/Vibrance.ts +14 -24
  256. package/src/filters/WebGLFilterBackend.ts +1 -1
  257. package/src/filters/shaders/blendImage.ts +12 -0
  258. package/src/filters/typedefs.ts +23 -0
  259. package/src/parser/elements_parser.ts +1 -1
  260. package/src/shapes/ActiveSelection.ts +8 -4
  261. package/src/shapes/Group.ts +16 -1
  262. package/src/shapes/Image.ts +8 -6
  263. package/src/shapes/Object/InteractiveObject.ts +3 -1
  264. package/src/shapes/Object/Object.ts +10 -35
  265. package/src/shapes/Object/StackedObject.ts +28 -44
  266. package/src/shapes/Path.ts +4 -4
  267. package/src/shapes/Text/TextSVGExportMixin.ts +1 -1
  268. package/src/util/misc/objectEnlive.ts +12 -2
@@ -1 +1 @@
1
- {"version":3,"file":"HueRotation.mjs","sources":["../../../src/filters/HueRotation.ts"],"sourcesContent":["import type { TClassProperties } from '../typedefs';\nimport { 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 const hueRotationDefaultValues: Partial<TClassProperties<HueRotation>> =\n {\n rotation: 0,\n mainParameter: 'rotation',\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 */\n// @ts-expect-error some babbling about mainParameter\nexport class HueRotation extends ColorMatrix {\n /**\n * HueRotation value, from -1 to 1.\n */\n declare rotation: number;\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 this.calculateMatrix();\n return super.isNeutralState();\n }\n\n applyTo(options: TWebGLPipelineState | T2DPipelineState) {\n this.calculateMatrix();\n super.applyTo(options);\n }\n}\n\nclassRegistry.setClass(HueRotation);\n"],"names":["hueRotationDefaultValues","rotation","mainParameter","HueRotation","ColorMatrix","calculateMatrix","rad","Math","PI","cosine","cos","sine","sin","aThird","aThirdSqtSin","sqrt","OneMinusCos","matrix","isNeutralState","applyTo","options","_defineProperty","classRegistry","setClass"],"mappings":";;;;;;AAOO,MAAMA,wBAAgE,GAC3E;AACEC,EAAAA,QAAQ,EAAE,CAAC;AACXC,EAAAA,aAAa,EAAE,UAAA;AACjB,EAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,WAAW,SAASC,WAAW,CAAC;AAU3CC,EAAAA,eAAeA,GAAG;IAChB,MAAMC,GAAG,GAAG,IAAI,CAACL,QAAQ,GAAGM,IAAI,CAACC,EAAE;AACjCC,MAAAA,MAAM,GAAGC,GAAG,CAACJ,GAAG,CAAC;AACjBK,MAAAA,IAAI,GAAGC,GAAG,CAACN,GAAG,CAAC;MACfO,MAAM,GAAG,CAAC,GAAG,CAAC;MACdC,YAAY,GAAGP,IAAI,CAACQ,IAAI,CAACF,MAAM,CAAC,GAAGF,IAAI;MACvCK,WAAW,GAAG,CAAC,GAAGP,MAAM,CAAA;AAC1B,IAAA,IAAI,CAACQ,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1E,IAAI,CAACA,MAAM,CAAC,CAAC,CAAC,GAAGR,MAAM,GAAGO,WAAW,GAAG,CAAC,CAAA;IACzC,IAAI,CAACC,MAAM,CAAC,CAAC,CAAC,GAAGJ,MAAM,GAAGG,WAAW,GAAGF,YAAY,CAAA;IACpD,IAAI,CAACG,MAAM,CAAC,CAAC,CAAC,GAAGJ,MAAM,GAAGG,WAAW,GAAGF,YAAY,CAAA;IACpD,IAAI,CAACG,MAAM,CAAC,CAAC,CAAC,GAAGJ,MAAM,GAAGG,WAAW,GAAGF,YAAY,CAAA;IACpD,IAAI,CAACG,MAAM,CAAC,CAAC,CAAC,GAAGR,MAAM,GAAGI,MAAM,GAAGG,WAAW,CAAA;IAC9C,IAAI,CAACC,MAAM,CAAC,CAAC,CAAC,GAAGJ,MAAM,GAAGG,WAAW,GAAGF,YAAY,CAAA;IACpD,IAAI,CAACG,MAAM,CAAC,EAAE,CAAC,GAAGJ,MAAM,GAAGG,WAAW,GAAGF,YAAY,CAAA;IACrD,IAAI,CAACG,MAAM,CAAC,EAAE,CAAC,GAAGJ,MAAM,GAAGG,WAAW,GAAGF,YAAY,CAAA;IACrD,IAAI,CAACG,MAAM,CAAC,EAAE,CAAC,GAAGR,MAAM,GAAGI,MAAM,GAAGG,WAAW,CAAA;AACjD,GAAA;AAEAE,EAAAA,cAAcA,GAAG;IACf,IAAI,CAACb,eAAe,EAAE,CAAA;AACtB,IAAA,OAAO,KAAK,CAACa,cAAc,EAAE,CAAA;AAC/B,GAAA;EAEAC,OAAOA,CAACC,OAA+C,EAAE;IACvD,IAAI,CAACf,eAAe,EAAE,CAAA;AACtB,IAAA,KAAK,CAACc,OAAO,CAACC,OAAO,CAAC,CAAA;AACxB,GAAA;AACF,CAAA;AArCE;AACF;AACA;AAFEC,eAAA,CADWlB,WAAW,EAAA,MAAA,EAMR,aAAa,CAAA,CAAA;AAAAkB,eAAA,CANhBlB,WAAW,EAAA,UAAA,EAQJH,wBAAwB,CAAA,CAAA;AAgC5CsB,aAAa,CAACC,QAAQ,CAACpB,WAAW,CAAC;;;;"}
1
+ {"version":3,"file":"HueRotation.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","Math","PI","cosine","cos","sine","sin","aThird","aThirdSqtSin","sqrt","OneMinusCos","matrix","isNeutralState","applyTo","options","toObject","type","_defineProperty","classRegistry","setClass"],"mappings":";;;;;;AAUO,MAAMA,wBAA6C,GAAG;AAC3DC,EAAAA,QAAQ,EAAE,CAAA;AACZ,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,WAAW,SAASC,WAAW,CAG1C;AAUAC,EAAAA,eAAeA,GAAG;IAChB,MAAMC,GAAG,GAAG,IAAI,CAACJ,QAAQ,GAAGK,IAAI,CAACC,EAAE;AACjCC,MAAAA,MAAM,GAAGC,GAAG,CAACJ,GAAG,CAAC;AACjBK,MAAAA,IAAI,GAAGC,GAAG,CAACN,GAAG,CAAC;MACfO,MAAM,GAAG,CAAC,GAAG,CAAC;MACdC,YAAY,GAAGP,IAAI,CAACQ,IAAI,CAACF,MAAM,CAAC,GAAGF,IAAI;MACvCK,WAAW,GAAG,CAAC,GAAGP,MAAM,CAAA;AAC1B,IAAA,IAAI,CAACQ,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1E,IAAI,CAACA,MAAM,CAAC,CAAC,CAAC,GAAGR,MAAM,GAAGO,WAAW,GAAG,CAAC,CAAA;IACzC,IAAI,CAACC,MAAM,CAAC,CAAC,CAAC,GAAGJ,MAAM,GAAGG,WAAW,GAAGF,YAAY,CAAA;IACpD,IAAI,CAACG,MAAM,CAAC,CAAC,CAAC,GAAGJ,MAAM,GAAGG,WAAW,GAAGF,YAAY,CAAA;IACpD,IAAI,CAACG,MAAM,CAAC,CAAC,CAAC,GAAGJ,MAAM,GAAGG,WAAW,GAAGF,YAAY,CAAA;IACpD,IAAI,CAACG,MAAM,CAAC,CAAC,CAAC,GAAGR,MAAM,GAAGI,MAAM,GAAGG,WAAW,CAAA;IAC9C,IAAI,CAACC,MAAM,CAAC,CAAC,CAAC,GAAGJ,MAAM,GAAGG,WAAW,GAAGF,YAAY,CAAA;IACpD,IAAI,CAACG,MAAM,CAAC,EAAE,CAAC,GAAGJ,MAAM,GAAGG,WAAW,GAAGF,YAAY,CAAA;IACrD,IAAI,CAACG,MAAM,CAAC,EAAE,CAAC,GAAGJ,MAAM,GAAGG,WAAW,GAAGF,YAAY,CAAA;IACrD,IAAI,CAACG,MAAM,CAAC,EAAE,CAAC,GAAGR,MAAM,GAAGI,MAAM,GAAGG,WAAW,CAAA;AACjD,GAAA;AAEAE,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAO,IAAI,CAAChB,QAAQ,KAAK,CAAC,CAAA;AAC5B,GAAA;EAEAiB,OAAOA,CAACC,OAA+C,EAAE;IACvD,IAAI,CAACf,eAAe,EAAE,CAAA;AACtB,IAAA,KAAK,CAACc,OAAO,CAACC,OAAO,CAAC,CAAA;AACxB,GAAA;;AAEA;AACAC,EAAAA,QAAQA,GAA8C;IACpD,OAAO;MACLC,IAAI,EAAE,IAAI,CAACA,IAAI;MACfpB,QAAQ,EAAE,IAAI,CAACA,QAAAA;KAChB,CAAA;AACH,GAAA;AACF,CAAA;AA5CE;AACF;AACA;AAFEqB,eAAA,CAJWpB,WAAW,EAAA,MAAA,EASR,aAAa,CAAA,CAAA;AAAAoB,eAAA,CAThBpB,WAAW,EAAA,UAAA,EAWJF,wBAAwB,CAAA,CAAA;AAuC5CuB,aAAa,CAACC,QAAQ,CAACtB,WAAW,CAAC;;;;"}
@@ -1,28 +1,32 @@
1
- import type { TClassProperties } from '../typedefs';
2
1
  import { BaseFilter } from './BaseFilter';
3
2
  import type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';
4
- export declare const invertDefaultValues: Partial<TClassProperties<Invert>>;
3
+ export type InvertOwnProps = {
4
+ alpha: boolean;
5
+ invert: boolean;
6
+ };
7
+ export declare const invertDefaultValues: InvertOwnProps;
5
8
  /**
6
9
  * @example
7
10
  * const filter = new Invert();
8
11
  * object.filters.push(filter);
9
12
  * object.applyFilters(canvas.renderAll.bind(canvas));
10
13
  */
11
- export declare class Invert extends BaseFilter {
14
+ export declare class Invert extends BaseFilter<'Invert', InvertOwnProps> {
12
15
  /**
13
16
  * Invert also alpha.
14
17
  * @param {Boolean} alpha
15
18
  * @default
16
19
  **/
17
- alpha: boolean;
20
+ alpha: InvertOwnProps['alpha'];
18
21
  /**
19
22
  * Filter invert. if false, does nothing
20
23
  * @param {Boolean} invert
21
24
  * @default
22
25
  */
23
- invert: boolean;
26
+ invert: InvertOwnProps['invert'];
24
27
  static type: string;
25
- static defaults: Partial<TClassProperties<Invert>>;
28
+ static defaults: InvertOwnProps;
29
+ static uniformLocations: string[];
26
30
  /**
27
31
  * Apply the Invert operation to a Uint8Array representing the pixels of an image.
28
32
  *
@@ -38,13 +42,6 @@ export declare class Invert extends BaseFilter {
38
42
  * @param {Object} options
39
43
  **/
40
44
  isNeutralState(): boolean;
41
- /**
42
- * Return WebGL uniform locations for this filter's shader.
43
- *
44
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
45
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
46
- */
47
- getUniformLocations(gl: WebGLRenderingContext, program: WebGLProgram): TWebGLUniformLocationMap;
48
45
  /**
49
46
  * Send data from this filter to its shader program's uniforms.
50
47
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Invert.d.ts","sourceRoot":"","sources":["../../../src/filters/Invert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAI7E,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAIjE,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,MAAO,SAAQ,UAAU;IACpC;;;;QAII;IACI,KAAK,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACK,MAAM,EAAE,OAAO,CAAC;IAExB,MAAM,CAAC,IAAI,SAAY;IAEvB,MAAM,CAAC,QAAQ,oCAAuB;IAEtC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB;IAYnD,SAAS,CAAC,iBAAiB,IAAI,MAAM;IAIrC;;;;;QAKI;IACJ,cAAc;IAId;;;;;OAKG;IACH,mBAAmB,CACjB,EAAE,EAAE,qBAAqB,EACzB,OAAO,EAAE,YAAY,GACpB,wBAAwB;IAO3B;;;;;OAKG;IACH,eAAe,CACb,EAAE,EAAE,qBAAqB,EACzB,gBAAgB,EAAE,wBAAwB;CAK7C"}
1
+ {"version":3,"file":"Invert.d.ts","sourceRoot":"","sources":["../../../src/filters/Invert.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;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,cAGjC,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,MAAO,SAAQ,UAAU,CAAC,QAAQ,EAAE,cAAc,CAAC;IAC9D;;;;QAII;IACI,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAEvC;;;;OAIG;IACK,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEzC,MAAM,CAAC,IAAI,SAAY;IAEvB,MAAM,CAAC,QAAQ,iBAAuB;IAEtC,MAAM,CAAC,gBAAgB,WAAyB;IAEhD;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB;IAYnD,SAAS,CAAC,iBAAiB,IAAI,MAAM;IAIrC;;;;;QAKI;IACJ,cAAc;IAId;;;;;OAKG;IACH,eAAe,CACb,EAAE,EAAE,qBAAqB,EACzB,gBAAgB,EAAE,wBAAwB;CAK7C"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as t}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{BaseFilter as r}from"./BaseFilter.min.mjs";import{classRegistry as e}from"../ClassRegistry.min.mjs";import{fragmentSource as i}from"./shaders/invert.min.mjs";const a={alpha:!1,invert:!0,mainParameter:"invert"};class n extends r{applyTo2d(t){let{imageData:{data:r}}=t;for(let t=0;t<r.length;t+=4)r[t]=255-r[t],r[t+1]=255-r[t+1],r[t+2]=255-r[t+2],this.alpha&&(r[t+3]=255-r[t+3])}getFragmentSource(){return i}isNeutralState(){return!this.invert}getUniformLocations(t,r){return{uInvert:t.getUniformLocation(r,"uInvert"),uAlpha:t.getUniformLocation(r,"uAlpha")}}sendUniformData(t,r){t.uniform1i(r.uInvert,Number(this.invert)),t.uniform1i(r.uAlpha,Number(this.alpha))}}t(n,"type","Invert"),t(n,"defaults",a),e.setClass(n);export{n as Invert,a as invertDefaultValues};
1
+ import{defineProperty as t}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{BaseFilter as r}from"./BaseFilter.min.mjs";import{classRegistry as e}from"../ClassRegistry.min.mjs";import{fragmentSource as i}from"./shaders/invert.min.mjs";const a={alpha:!1,invert:!0};class s extends r{applyTo2d(t){let{imageData:{data:r}}=t;for(let t=0;t<r.length;t+=4)r[t]=255-r[t],r[t+1]=255-r[t+1],r[t+2]=255-r[t+2],this.alpha&&(r[t+3]=255-r[t+3])}getFragmentSource(){return i}isNeutralState(){return!this.invert}sendUniformData(t,r){t.uniform1i(r.uInvert,Number(this.invert)),t.uniform1i(r.uAlpha,Number(this.alpha))}}t(s,"type","Invert"),t(s,"defaults",a),t(s,"uniformLocations",["uInvert","uAlpha"]),e.setClass(s);export{s as Invert,a as invertDefaultValues};
2
2
  //# sourceMappingURL=Invert.min.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Invert.min.mjs","sources":["../../../src/filters/Invert.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/invert';\n\nexport const invertDefaultValues: Partial<TClassProperties<Invert>> = {\n alpha: false,\n invert: true,\n mainParameter: 'invert',\n};\n\n/**\n * @example\n * const filter = new Invert();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\nexport class Invert extends BaseFilter {\n /**\n * Invert also alpha.\n * @param {Boolean} alpha\n * @default\n **/\n declare alpha: boolean;\n\n /**\n * Filter invert. if false, does nothing\n * @param {Boolean} invert\n * @default\n */\n declare invert: boolean;\n\n static type = 'Invert';\n\n static defaults = invertDefaultValues;\n\n /**\n * Apply the Invert 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; i < data.length; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n\n if (this.alpha) {\n data[i + 3] = 255 - data[i + 3];\n }\n }\n }\n\n protected getFragmentSource(): string {\n return fragmentSource;\n }\n\n /**\n * Invert filter isNeutralState implementation\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * @param {Object} options\n **/\n isNeutralState() {\n return !this.invert;\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 uInvert: gl.getUniformLocation(program, 'uInvert'),\n uAlpha: gl.getUniformLocation(program, 'uAlpha'),\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.uniform1i(uniformLocations.uInvert, Number(this.invert));\n gl.uniform1i(uniformLocations.uAlpha, Number(this.alpha));\n }\n}\n\nclassRegistry.setClass(Invert);\n"],"names":["invertDefaultValues","alpha","invert","mainParameter","Invert","BaseFilter","applyTo2d","_ref","imageData","data","i","length","this","getFragmentSource","fragmentSource","isNeutralState","getUniformLocations","gl","program","uInvert","getUniformLocation","uAlpha","sendUniformData","uniformLocations","uniform1i","Number","_defineProperty","classRegistry","setClass"],"mappings":"uPAMO,MAAMA,EAAyD,CACpEC,OAAO,EACPC,QAAQ,EACRC,cAAe,UASV,MAAMC,UAAeC,EAyB1BC,SAAAA,CAASC,GAA4C,IAAzCC,WAAWC,KAAEA,IAA0BF,EACjD,IAAK,IAAIG,EAAI,EAAGA,EAAID,EAAKE,OAAQD,GAAK,EACpCD,EAAKC,GAAK,IAAMD,EAAKC,GACrBD,EAAKC,EAAI,GAAK,IAAMD,EAAKC,EAAI,GAC7BD,EAAKC,EAAI,GAAK,IAAMD,EAAKC,EAAI,GAEzBE,KAAKX,QACPQ,EAAKC,EAAI,GAAK,IAAMD,EAAKC,EAAI,GAGnC,CAEUG,iBAAAA,GACR,OAAOC,CACT,CAQAC,cAAAA,GACE,OAAQH,KAAKV,MACf,CAQAc,mBAAAA,CACEC,EACAC,GAEA,MAAO,CACLC,QAASF,EAAGG,mBAAmBF,EAAS,WACxCG,OAAQJ,EAAGG,mBAAmBF,EAAS,UAE3C,CAQAI,eAAAA,CACEL,EACAM,GAEAN,EAAGO,UAAUD,EAAiBJ,QAASM,OAAOb,KAAKV,SACnDe,EAAGO,UAAUD,EAAiBF,OAAQI,OAAOb,KAAKX,OACpD,EAvEAyB,EARWtB,EAAM,OAeH,UAAQsB,EAfXtB,EAAM,WAiBCJ,GAiEpB2B,EAAcC,SAASxB"}
1
+ {"version":3,"file":"Invert.min.mjs","sources":["../../../src/filters/Invert.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/invert';\n\nexport type InvertOwnProps = {\n alpha: boolean;\n invert: boolean;\n};\n\nexport const invertDefaultValues: InvertOwnProps = {\n alpha: false,\n invert: true,\n};\n\n/**\n * @example\n * const filter = new Invert();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\nexport class Invert extends BaseFilter<'Invert', InvertOwnProps> {\n /**\n * Invert also alpha.\n * @param {Boolean} alpha\n * @default\n **/\n declare alpha: InvertOwnProps['alpha'];\n\n /**\n * Filter invert. if false, does nothing\n * @param {Boolean} invert\n * @default\n */\n declare invert: InvertOwnProps['invert'];\n\n static type = 'Invert';\n\n static defaults = invertDefaultValues;\n\n static uniformLocations = ['uInvert', 'uAlpha'];\n\n /**\n * Apply the Invert 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; i < data.length; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n\n if (this.alpha) {\n data[i + 3] = 255 - data[i + 3];\n }\n }\n }\n\n protected getFragmentSource(): string {\n return fragmentSource;\n }\n\n /**\n * Invert filter isNeutralState implementation\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * @param {Object} options\n **/\n isNeutralState() {\n return !this.invert;\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.uniform1i(uniformLocations.uInvert, Number(this.invert));\n gl.uniform1i(uniformLocations.uAlpha, Number(this.alpha));\n }\n}\n\nclassRegistry.setClass(Invert);\n"],"names":["invertDefaultValues","alpha","invert","Invert","BaseFilter","applyTo2d","_ref","imageData","data","i","length","this","getFragmentSource","fragmentSource","isNeutralState","sendUniformData","gl","uniformLocations","uniform1i","uInvert","Number","uAlpha","_defineProperty","classRegistry","setClass"],"mappings":"uPAUO,MAAMA,EAAsC,CACjDC,OAAO,EACPC,QAAQ,GASH,MAAMC,UAAeC,EA2B1BC,SAAAA,CAASC,GAA4C,IAAzCC,WAAWC,KAAEA,IAA0BF,EACjD,IAAK,IAAIG,EAAI,EAAGA,EAAID,EAAKE,OAAQD,GAAK,EACpCD,EAAKC,GAAK,IAAMD,EAAKC,GACrBD,EAAKC,EAAI,GAAK,IAAMD,EAAKC,EAAI,GAC7BD,EAAKC,EAAI,GAAK,IAAMD,EAAKC,EAAI,GAEzBE,KAAKV,QACPO,EAAKC,EAAI,GAAK,IAAMD,EAAKC,EAAI,GAGnC,CAEUG,iBAAAA,GACR,OAAOC,CACT,CAQAC,cAAAA,GACE,OAAQH,KAAKT,MACf,CAQAa,eAAAA,CACEC,EACAC,GAEAD,EAAGE,UAAUD,EAAiBE,QAASC,OAAOT,KAAKT,SACnDc,EAAGE,UAAUD,EAAiBI,OAAQD,OAAOT,KAAKV,OACpD,EAzDAqB,EARWnB,EAAM,OAeH,UAAQmB,EAfXnB,EAAM,WAiBCH,GAAmBsB,EAjB1BnB,EAAM,mBAmBS,CAAC,UAAW,WAiDxCoB,EAAcC,SAASrB"}
@@ -5,8 +5,7 @@ import { fragmentSource } from './shaders/invert.mjs';
5
5
 
6
6
  const invertDefaultValues = {
7
7
  alpha: false,
8
- invert: true,
9
- mainParameter: 'invert'
8
+ invert: true
10
9
  };
11
10
 
12
11
  /**
@@ -51,19 +50,6 @@ class Invert extends BaseFilter {
51
50
  return !this.invert;
52
51
  }
53
52
 
54
- /**
55
- * Return WebGL uniform locations for this filter's shader.
56
- *
57
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
58
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
59
- */
60
- getUniformLocations(gl, program) {
61
- return {
62
- uInvert: gl.getUniformLocation(program, 'uInvert'),
63
- uAlpha: gl.getUniformLocation(program, 'uAlpha')
64
- };
65
- }
66
-
67
53
  /**
68
54
  * Send data from this filter to its shader program's uniforms.
69
55
  *
@@ -87,6 +73,7 @@ class Invert extends BaseFilter {
87
73
  */
88
74
  _defineProperty(Invert, "type", 'Invert');
89
75
  _defineProperty(Invert, "defaults", invertDefaultValues);
76
+ _defineProperty(Invert, "uniformLocations", ['uInvert', 'uAlpha']);
90
77
  classRegistry.setClass(Invert);
91
78
 
92
79
  export { Invert, invertDefaultValues };
@@ -1 +1 @@
1
- {"version":3,"file":"Invert.mjs","sources":["../../../src/filters/Invert.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/invert';\n\nexport const invertDefaultValues: Partial<TClassProperties<Invert>> = {\n alpha: false,\n invert: true,\n mainParameter: 'invert',\n};\n\n/**\n * @example\n * const filter = new Invert();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\nexport class Invert extends BaseFilter {\n /**\n * Invert also alpha.\n * @param {Boolean} alpha\n * @default\n **/\n declare alpha: boolean;\n\n /**\n * Filter invert. if false, does nothing\n * @param {Boolean} invert\n * @default\n */\n declare invert: boolean;\n\n static type = 'Invert';\n\n static defaults = invertDefaultValues;\n\n /**\n * Apply the Invert 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; i < data.length; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n\n if (this.alpha) {\n data[i + 3] = 255 - data[i + 3];\n }\n }\n }\n\n protected getFragmentSource(): string {\n return fragmentSource;\n }\n\n /**\n * Invert filter isNeutralState implementation\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * @param {Object} options\n **/\n isNeutralState() {\n return !this.invert;\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 uInvert: gl.getUniformLocation(program, 'uInvert'),\n uAlpha: gl.getUniformLocation(program, 'uAlpha'),\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.uniform1i(uniformLocations.uInvert, Number(this.invert));\n gl.uniform1i(uniformLocations.uAlpha, Number(this.alpha));\n }\n}\n\nclassRegistry.setClass(Invert);\n"],"names":["invertDefaultValues","alpha","invert","mainParameter","Invert","BaseFilter","applyTo2d","_ref","imageData","data","i","length","getFragmentSource","fragmentSource","isNeutralState","getUniformLocations","gl","program","uInvert","getUniformLocation","uAlpha","sendUniformData","uniformLocations","uniform1i","Number","_defineProperty","classRegistry","setClass"],"mappings":";;;;;AAMO,MAAMA,mBAAsD,GAAG;AACpEC,EAAAA,KAAK,EAAE,KAAK;AACZC,EAAAA,MAAM,EAAE,IAAI;AACZC,EAAAA,aAAa,EAAE,QAAA;AACjB,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,MAAM,SAASC,UAAU,CAAC;AAmBrC;AACF;AACA;AACA;AACA;AACA;EACEC,SAASA,CAAAC,IAAA,EAA4C;IAAA,IAA3C;AAAEC,MAAAA,SAAS,EAAE;AAAEC,QAAAA,IAAAA;AAAK,OAAA;AAAoB,KAAC,GAAAF,IAAA,CAAA;AACjD,IAAA,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,IAAI,CAACE,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MACvCD,IAAI,CAACC,CAAC,CAAC,GAAG,GAAG,GAAGD,IAAI,CAACC,CAAC,CAAC,CAAA;AACvBD,MAAAA,IAAI,CAACC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAGD,IAAI,CAACC,CAAC,GAAG,CAAC,CAAC,CAAA;AAC/BD,MAAAA,IAAI,CAACC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAGD,IAAI,CAACC,CAAC,GAAG,CAAC,CAAC,CAAA;MAE/B,IAAI,IAAI,CAACT,KAAK,EAAE;AACdQ,QAAAA,IAAI,CAACC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAGD,IAAI,CAACC,CAAC,GAAG,CAAC,CAAC,CAAA;AACjC,OAAA;AACF,KAAA;AACF,GAAA;AAEUE,EAAAA,iBAAiBA,GAAW;AACpC,IAAA,OAAOC,cAAc,CAAA;AACvB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,cAAcA,GAAG;IACf,OAAO,CAAC,IAAI,CAACZ,MAAM,CAAA;AACrB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEa,EAAAA,mBAAmBA,CACjBC,EAAyB,EACzBC,OAAqB,EACK;IAC1B,OAAO;MACLC,OAAO,EAAEF,EAAE,CAACG,kBAAkB,CAACF,OAAO,EAAE,SAAS,CAAC;AAClDG,MAAAA,MAAM,EAAEJ,EAAE,CAACG,kBAAkB,CAACF,OAAO,EAAE,QAAQ,CAAA;KAChD,CAAA;AACH,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEI,EAAAA,eAAeA,CACbL,EAAyB,EACzBM,gBAA0C,EAC1C;AACAN,IAAAA,EAAE,CAACO,SAAS,CAACD,gBAAgB,CAACJ,OAAO,EAAEM,MAAM,CAAC,IAAI,CAACtB,MAAM,CAAC,CAAC,CAAA;AAC3Dc,IAAAA,EAAE,CAACO,SAAS,CAACD,gBAAgB,CAACF,MAAM,EAAEI,MAAM,CAAC,IAAI,CAACvB,KAAK,CAAC,CAAC,CAAA;AAC3D,GAAA;AACF,CAAA;AA/EE;AACF;AACA;AACA;AACA;AAGE;AACF;AACA;AACA;AACA;AAJEwB,eAAA,CARWrB,MAAM,EAAA,MAAA,EAeH,QAAQ,CAAA,CAAA;AAAAqB,eAAA,CAfXrB,MAAM,EAAA,UAAA,EAiBCJ,mBAAmB,CAAA,CAAA;AAiEvC0B,aAAa,CAACC,QAAQ,CAACvB,MAAM,CAAC;;;;"}
1
+ {"version":3,"file":"Invert.mjs","sources":["../../../src/filters/Invert.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/invert';\n\nexport type InvertOwnProps = {\n alpha: boolean;\n invert: boolean;\n};\n\nexport const invertDefaultValues: InvertOwnProps = {\n alpha: false,\n invert: true,\n};\n\n/**\n * @example\n * const filter = new Invert();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\nexport class Invert extends BaseFilter<'Invert', InvertOwnProps> {\n /**\n * Invert also alpha.\n * @param {Boolean} alpha\n * @default\n **/\n declare alpha: InvertOwnProps['alpha'];\n\n /**\n * Filter invert. if false, does nothing\n * @param {Boolean} invert\n * @default\n */\n declare invert: InvertOwnProps['invert'];\n\n static type = 'Invert';\n\n static defaults = invertDefaultValues;\n\n static uniformLocations = ['uInvert', 'uAlpha'];\n\n /**\n * Apply the Invert 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; i < data.length; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n\n if (this.alpha) {\n data[i + 3] = 255 - data[i + 3];\n }\n }\n }\n\n protected getFragmentSource(): string {\n return fragmentSource;\n }\n\n /**\n * Invert filter isNeutralState implementation\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * @param {Object} options\n **/\n isNeutralState() {\n return !this.invert;\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.uniform1i(uniformLocations.uInvert, Number(this.invert));\n gl.uniform1i(uniformLocations.uAlpha, Number(this.alpha));\n }\n}\n\nclassRegistry.setClass(Invert);\n"],"names":["invertDefaultValues","alpha","invert","Invert","BaseFilter","applyTo2d","_ref","imageData","data","i","length","getFragmentSource","fragmentSource","isNeutralState","sendUniformData","gl","uniformLocations","uniform1i","uInvert","Number","uAlpha","_defineProperty","classRegistry","setClass"],"mappings":";;;;;AAUO,MAAMA,mBAAmC,GAAG;AACjDC,EAAAA,KAAK,EAAE,KAAK;AACZC,EAAAA,MAAM,EAAE,IAAA;AACV,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,MAAM,SAASC,UAAU,CAA2B;AAqB/D;AACF;AACA;AACA;AACA;AACA;EACEC,SAASA,CAAAC,IAAA,EAA4C;IAAA,IAA3C;AAAEC,MAAAA,SAAS,EAAE;AAAEC,QAAAA,IAAAA;AAAK,OAAA;AAAoB,KAAC,GAAAF,IAAA,CAAA;AACjD,IAAA,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,IAAI,CAACE,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MACvCD,IAAI,CAACC,CAAC,CAAC,GAAG,GAAG,GAAGD,IAAI,CAACC,CAAC,CAAC,CAAA;AACvBD,MAAAA,IAAI,CAACC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAGD,IAAI,CAACC,CAAC,GAAG,CAAC,CAAC,CAAA;AAC/BD,MAAAA,IAAI,CAACC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAGD,IAAI,CAACC,CAAC,GAAG,CAAC,CAAC,CAAA;MAE/B,IAAI,IAAI,CAACR,KAAK,EAAE;AACdO,QAAAA,IAAI,CAACC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAGD,IAAI,CAACC,CAAC,GAAG,CAAC,CAAC,CAAA;AACjC,OAAA;AACF,KAAA;AACF,GAAA;AAEUE,EAAAA,iBAAiBA,GAAW;AACpC,IAAA,OAAOC,cAAc,CAAA;AACvB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,cAAcA,GAAG;IACf,OAAO,CAAC,IAAI,CAACX,MAAM,CAAA;AACrB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEY,EAAAA,eAAeA,CACbC,EAAyB,EACzBC,gBAA0C,EAC1C;AACAD,IAAAA,EAAE,CAACE,SAAS,CAACD,gBAAgB,CAACE,OAAO,EAAEC,MAAM,CAAC,IAAI,CAACjB,MAAM,CAAC,CAAC,CAAA;AAC3Da,IAAAA,EAAE,CAACE,SAAS,CAACD,gBAAgB,CAACI,MAAM,EAAED,MAAM,CAAC,IAAI,CAAClB,KAAK,CAAC,CAAC,CAAA;AAC3D,GAAA;AACF,CAAA;AAjEE;AACF;AACA;AACA;AACA;AAGE;AACF;AACA;AACA;AACA;AAJEoB,eAAA,CARWlB,MAAM,EAAA,MAAA,EAeH,QAAQ,CAAA,CAAA;AAAAkB,eAAA,CAfXlB,MAAM,EAAA,UAAA,EAiBCH,mBAAmB,CAAA,CAAA;AAAAqB,eAAA,CAjB1BlB,MAAM,EAAA,kBAAA,EAmBS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA,CAAA;AAiDjDmB,aAAa,CAACC,QAAQ,CAACpB,MAAM,CAAC;;;;"}
@@ -1,7 +1,9 @@
1
- import type { TClassProperties } from '../typedefs';
2
1
  import { BaseFilter } from './BaseFilter';
3
2
  import type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';
4
- export declare const noiseDefaultValues: Partial<TClassProperties<Noise>>;
3
+ export type NoiseOwnProps = {
4
+ noise: number;
5
+ };
6
+ export declare const noiseDefaultValues: NoiseOwnProps;
5
7
  /**
6
8
  * Noise filter class
7
9
  * @example
@@ -12,15 +14,16 @@ export declare const noiseDefaultValues: Partial<TClassProperties<Noise>>;
12
14
  * object.applyFilters();
13
15
  * canvas.renderAll();
14
16
  */
15
- export declare class Noise extends BaseFilter {
17
+ export declare class Noise extends BaseFilter<'Noise', NoiseOwnProps> {
16
18
  /**
17
19
  * Noise value, from
18
20
  * @param {Number} noise
19
21
  * @default
20
22
  */
21
- noise: number;
23
+ noise: NoiseOwnProps['noise'];
22
24
  static type: string;
23
- static defaults: Partial<TClassProperties<Noise>>;
25
+ static defaults: NoiseOwnProps;
26
+ static uniformLocations: string[];
24
27
  getFragmentSource(): string;
25
28
  /**
26
29
  * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.
@@ -29,13 +32,6 @@ export declare class Noise extends BaseFilter {
29
32
  * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.
30
33
  */
31
34
  applyTo2d({ imageData: { data } }: T2DPipelineState): void;
32
- /**
33
- * Return WebGL uniform locations for this filter's shader.
34
- *
35
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
36
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
37
- */
38
- getUniformLocations(gl: WebGLRenderingContext, program: WebGLProgram): TWebGLUniformLocationMap;
39
35
  /**
40
36
  * Send data from this filter to its shader program's uniforms.
41
37
  *
@@ -43,13 +39,6 @@ export declare class Noise extends BaseFilter {
43
39
  * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
44
40
  */
45
41
  sendUniformData(gl: WebGLRenderingContext, uniformLocations: TWebGLUniformLocationMap): void;
46
- /**
47
- * Returns object representation of an instance
48
- * @return {Object} Object representation of an instance
49
- */
50
- toObject(): {
51
- noise: number;
52
- type: string;
53
- };
42
+ isNeutralState(): boolean;
54
43
  }
55
44
  //# sourceMappingURL=Noise.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Noise.d.ts","sourceRoot":"","sources":["../../../src/filters/Noise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAI7E,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAG/D,CAAC;AAEF;;;;;;;;;GASG;AACH,qBAAa,KAAM,SAAQ,UAAU;IACnC;;;;OAIG;IACK,KAAK,EAAE,MAAM,CAAC;IAEtB,MAAM,CAAC,IAAI,SAAW;IAEtB,MAAM,CAAC,QAAQ,mCAAsB;IAErC,iBAAiB;IAIjB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB;IAanD;;;;;OAKG;IACH,mBAAmB,CACjB,EAAE,EAAE,qBAAqB,EACzB,OAAO,EAAE,YAAY,GACpB,wBAAwB;IAO3B;;;;;OAKG;IACH,eAAe,CACb,EAAE,EAAE,qBAAqB,EACzB,gBAAgB,EAAE,wBAAwB;IAM5C;;;OAGG;IACH,QAAQ;;;;CAGT"}
1
+ {"version":3,"file":"Noise.d.ts","sourceRoot":"","sources":["../../../src/filters/Noise.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,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,aAEhC,CAAC;AAEF;;;;;;;;;GASG;AACH,qBAAa,KAAM,SAAQ,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC;IAC3D;;;;OAIG;IACK,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAEtC,MAAM,CAAC,IAAI,SAAW;IAEtB,MAAM,CAAC,QAAQ,gBAAsB;IAErC,MAAM,CAAC,gBAAgB,WAAuB;IAE9C,iBAAiB;IAIjB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB;IAUnD;;;;;OAKG;IACH,eAAe,CACb,EAAE,EAAE,qBAAqB,EACzB,gBAAgB,EAAE,wBAAwB;IAM5C,cAAc;CAGf"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as e,objectSpread2 as o}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{BaseFilter as t}from"./BaseFilter.min.mjs";import{classRegistry as s}from"../ClassRegistry.min.mjs";import{fragmentSource as i}from"./shaders/noise.min.mjs";const r={mainParameter:"noise",noise:0};class n extends t{getFragmentSource(){return i}applyTo2d(e){let{imageData:{data:o}}=e;if(0===this.noise)return;const t=this.noise;for(let e=0;e<o.length;e+=4){const s=(.5-Math.random())*t;o[e]+=s,o[e+1]+=s,o[e+2]+=s}}getUniformLocations(e,o){return{uNoise:e.getUniformLocation(o,"uNoise"),uSeed:e.getUniformLocation(o,"uSeed")}}sendUniformData(e,o){e.uniform1f(o.uNoise,this.noise/255),e.uniform1f(o.uSeed,Math.random())}toObject(){return o(o({},super.toObject()),{},{noise:this.noise})}}e(n,"type","Noise"),e(n,"defaults",r),s.setClass(n);export{n as Noise,r as noiseDefaultValues};
1
+ import{defineProperty as e}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{BaseFilter as s}from"./BaseFilter.min.mjs";import{classRegistry as t}from"../ClassRegistry.min.mjs";import{fragmentSource as o}from"./shaders/noise.min.mjs";const i={noise:0};class r extends s{getFragmentSource(){return o}applyTo2d(e){let{imageData:{data:s}}=e;const t=this.noise;for(let e=0;e<s.length;e+=4){const o=(.5-Math.random())*t;s[e]+=o,s[e+1]+=o,s[e+2]+=o}}sendUniformData(e,s){e.uniform1f(s.uNoise,this.noise/255),e.uniform1f(s.uSeed,Math.random())}isNeutralState(){return 0===this.noise}}e(r,"type","Noise"),e(r,"defaults",i),e(r,"uniformLocations",["uNoise","uSeed"]),t.setClass(r);export{r as Noise,i as noiseDefaultValues};
2
2
  //# sourceMappingURL=Noise.min.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Noise.min.mjs","sources":["../../../src/filters/Noise.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/noise';\n\nexport const noiseDefaultValues: Partial<TClassProperties<Noise>> = {\n mainParameter: 'noise',\n noise: 0,\n};\n\n/**\n * Noise filter class\n * @example\n * const filter = new Noise({\n * noise: 700\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\nexport class Noise extends BaseFilter {\n /**\n * Noise value, from\n * @param {Number} noise\n * @default\n */\n declare noise: number;\n\n static type = 'Noise';\n\n static defaults = noiseDefaultValues;\n\n getFragmentSource() {\n return fragmentSource;\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({ imageData: { data } }: T2DPipelineState) {\n if (this.noise === 0) {\n return;\n }\n const noise = this.noise;\n for (let i = 0; i < data.length; i += 4) {\n const rand = (0.5 - Math.random()) * noise;\n data[i] += rand;\n data[i + 1] += rand;\n data[i + 2] += rand;\n }\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 uNoise: gl.getUniformLocation(program, 'uNoise'),\n uSeed: gl.getUniformLocation(program, 'uSeed'),\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.uniform1f(uniformLocations.uNoise, this.noise / 255);\n gl.uniform1f(uniformLocations.uSeed, Math.random());\n }\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject() {\n return { ...super.toObject(), noise: this.noise };\n }\n}\n\nclassRegistry.setClass(Noise);\n"],"names":["noiseDefaultValues","mainParameter","noise","Noise","BaseFilter","getFragmentSource","fragmentSource","applyTo2d","_ref","imageData","data","this","i","length","rand","Math","random","getUniformLocations","gl","program","uNoise","getUniformLocation","uSeed","sendUniformData","uniformLocations","uniform1f","toObject","_objectSpread","super","_defineProperty","classRegistry","setClass"],"mappings":"yQAMO,MAAMA,EAAuD,CAClEC,cAAe,QACfC,MAAO,GAaF,MAAMC,UAAcC,EAYzBC,iBAAAA,GACE,OAAOC,CACT,CAQAC,SAAAA,CAASC,GAA4C,IAAzCC,WAAWC,KAAEA,IAA0BF,EACjD,GAAmB,IAAfG,KAAKT,MACP,OAEF,MAAMA,EAAQS,KAAKT,MACnB,IAAK,IAAIU,EAAI,EAAGA,EAAIF,EAAKG,OAAQD,GAAK,EAAG,CACvC,MAAME,GAAQ,GAAMC,KAAKC,UAAYd,EACrCQ,EAAKE,IAAME,EACXJ,EAAKE,EAAI,IAAME,EACfJ,EAAKE,EAAI,IAAME,CACjB,CACF,CAQAG,mBAAAA,CACEC,EACAC,GAEA,MAAO,CACLC,OAAQF,EAAGG,mBAAmBF,EAAS,UACvCG,MAAOJ,EAAGG,mBAAmBF,EAAS,SAE1C,CAQAI,eAAAA,CACEL,EACAM,GAEAN,EAAGO,UAAUD,EAAiBJ,OAAQT,KAAKT,MAAQ,KACnDgB,EAAGO,UAAUD,EAAiBF,MAAOP,KAAKC,SAC5C,CAMAU,QAAAA,GACE,OAAAC,EAAAA,EAAA,CAAA,EAAYC,MAAMF,YAAU,GAAA,CAAExB,MAAOS,KAAKT,OAC5C,EAtEA2B,EADW1B,EAAK,OAQF,SAAO0B,EARV1B,EAAK,WAUEH,GAgEpB8B,EAAcC,SAAS5B"}
1
+ {"version":3,"file":"Noise.min.mjs","sources":["../../../src/filters/Noise.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/noise';\n\nexport type NoiseOwnProps = {\n noise: number;\n};\n\nexport const noiseDefaultValues: NoiseOwnProps = {\n noise: 0,\n};\n\n/**\n * Noise filter class\n * @example\n * const filter = new Noise({\n * noise: 700\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\nexport class Noise extends BaseFilter<'Noise', NoiseOwnProps> {\n /**\n * Noise value, from\n * @param {Number} noise\n * @default\n */\n declare noise: NoiseOwnProps['noise'];\n\n static type = 'Noise';\n\n static defaults = noiseDefaultValues;\n\n static uniformLocations = ['uNoise', 'uSeed'];\n\n getFragmentSource() {\n return fragmentSource;\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({ imageData: { data } }: T2DPipelineState) {\n const noise = this.noise;\n for (let i = 0; i < data.length; i += 4) {\n const rand = (0.5 - Math.random()) * noise;\n data[i] += rand;\n data[i + 1] += rand;\n data[i + 2] += rand;\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.uniform1f(uniformLocations.uNoise, this.noise / 255);\n gl.uniform1f(uniformLocations.uSeed, Math.random());\n }\n\n isNeutralState() {\n return this.noise === 0;\n }\n}\n\nclassRegistry.setClass(Noise);\n"],"names":["noiseDefaultValues","noise","Noise","BaseFilter","getFragmentSource","fragmentSource","applyTo2d","_ref","imageData","data","this","i","length","rand","Math","random","sendUniformData","gl","uniformLocations","uniform1f","uNoise","uSeed","isNeutralState","_defineProperty","classRegistry","setClass"],"mappings":"sPASO,MAAMA,EAAoC,CAC/CC,MAAO,GAaF,MAAMC,UAAcC,EAczBC,iBAAAA,GACE,OAAOC,CACT,CAQAC,SAAAA,CAASC,GAA4C,IAAzCC,WAAWC,KAAEA,IAA0BF,EACjD,MAAMN,EAAQS,KAAKT,MACnB,IAAK,IAAIU,EAAI,EAAGA,EAAIF,EAAKG,OAAQD,GAAK,EAAG,CACvC,MAAME,GAAQ,GAAMC,KAAKC,UAAYd,EACrCQ,EAAKE,IAAME,EACXJ,EAAKE,EAAI,IAAME,EACfJ,EAAKE,EAAI,IAAME,CACjB,CACF,CAQAG,eAAAA,CACEC,EACAC,GAEAD,EAAGE,UAAUD,EAAiBE,OAAQV,KAAKT,MAAQ,KACnDgB,EAAGE,UAAUD,EAAiBG,MAAOP,KAAKC,SAC5C,CAEAO,cAAAA,GACE,OAAsB,IAAfZ,KAAKT,KACd,EAjDAsB,EADWrB,EAAK,OAQF,SAAOqB,EARVrB,EAAK,WAUEF,GAAkBuB,EAVzBrB,EAAK,mBAYU,CAAC,SAAU,UAyCvCsB,EAAcC,SAASvB"}
@@ -1,10 +1,9 @@
1
- import { defineProperty as _defineProperty, objectSpread2 as _objectSpread2 } from '../../_virtual/_rollupPluginBabelHelpers.mjs';
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/noise.mjs';
5
5
 
6
6
  const noiseDefaultValues = {
7
- mainParameter: 'noise',
8
7
  noise: 0
9
8
  };
10
9
 
@@ -35,9 +34,6 @@ class Noise extends BaseFilter {
35
34
  data
36
35
  }
37
36
  } = _ref;
38
- if (this.noise === 0) {
39
- return;
40
- }
41
37
  const noise = this.noise;
42
38
  for (let i = 0; i < data.length; i += 4) {
43
39
  const rand = (0.5 - Math.random()) * noise;
@@ -47,19 +43,6 @@ class Noise extends BaseFilter {
47
43
  }
48
44
  }
49
45
 
50
- /**
51
- * Return WebGL uniform locations for this filter's shader.
52
- *
53
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
54
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
55
- */
56
- getUniformLocations(gl, program) {
57
- return {
58
- uNoise: gl.getUniformLocation(program, 'uNoise'),
59
- uSeed: gl.getUniformLocation(program, 'uSeed')
60
- };
61
- }
62
-
63
46
  /**
64
47
  * Send data from this filter to its shader program's uniforms.
65
48
  *
@@ -70,15 +53,8 @@ class Noise extends BaseFilter {
70
53
  gl.uniform1f(uniformLocations.uNoise, this.noise / 255);
71
54
  gl.uniform1f(uniformLocations.uSeed, Math.random());
72
55
  }
73
-
74
- /**
75
- * Returns object representation of an instance
76
- * @return {Object} Object representation of an instance
77
- */
78
- toObject() {
79
- return _objectSpread2(_objectSpread2({}, super.toObject()), {}, {
80
- noise: this.noise
81
- });
56
+ isNeutralState() {
57
+ return this.noise === 0;
82
58
  }
83
59
  }
84
60
  /**
@@ -88,6 +64,7 @@ class Noise extends BaseFilter {
88
64
  */
89
65
  _defineProperty(Noise, "type", 'Noise');
90
66
  _defineProperty(Noise, "defaults", noiseDefaultValues);
67
+ _defineProperty(Noise, "uniformLocations", ['uNoise', 'uSeed']);
91
68
  classRegistry.setClass(Noise);
92
69
 
93
70
  export { Noise, noiseDefaultValues };
@@ -1 +1 @@
1
- {"version":3,"file":"Noise.mjs","sources":["../../../src/filters/Noise.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/noise';\n\nexport const noiseDefaultValues: Partial<TClassProperties<Noise>> = {\n mainParameter: 'noise',\n noise: 0,\n};\n\n/**\n * Noise filter class\n * @example\n * const filter = new Noise({\n * noise: 700\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\nexport class Noise extends BaseFilter {\n /**\n * Noise value, from\n * @param {Number} noise\n * @default\n */\n declare noise: number;\n\n static type = 'Noise';\n\n static defaults = noiseDefaultValues;\n\n getFragmentSource() {\n return fragmentSource;\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({ imageData: { data } }: T2DPipelineState) {\n if (this.noise === 0) {\n return;\n }\n const noise = this.noise;\n for (let i = 0; i < data.length; i += 4) {\n const rand = (0.5 - Math.random()) * noise;\n data[i] += rand;\n data[i + 1] += rand;\n data[i + 2] += rand;\n }\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 uNoise: gl.getUniformLocation(program, 'uNoise'),\n uSeed: gl.getUniformLocation(program, 'uSeed'),\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.uniform1f(uniformLocations.uNoise, this.noise / 255);\n gl.uniform1f(uniformLocations.uSeed, Math.random());\n }\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject() {\n return { ...super.toObject(), noise: this.noise };\n }\n}\n\nclassRegistry.setClass(Noise);\n"],"names":["noiseDefaultValues","mainParameter","noise","Noise","BaseFilter","getFragmentSource","fragmentSource","applyTo2d","_ref","imageData","data","i","length","rand","Math","random","getUniformLocations","gl","program","uNoise","getUniformLocation","uSeed","sendUniformData","uniformLocations","uniform1f","toObject","_objectSpread","_defineProperty","classRegistry","setClass"],"mappings":";;;;;AAMO,MAAMA,kBAAoD,GAAG;AAClEC,EAAAA,aAAa,EAAE,OAAO;AACtBC,EAAAA,KAAK,EAAE,CAAA;AACT,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,KAAK,SAASC,UAAU,CAAC;AAYpCC,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,OAAOC,cAAc,CAAA;AACvB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACEC,SAASA,CAAAC,IAAA,EAA4C;IAAA,IAA3C;AAAEC,MAAAA,SAAS,EAAE;AAAEC,QAAAA,IAAAA;AAAK,OAAA;AAAoB,KAAC,GAAAF,IAAA,CAAA;AACjD,IAAA,IAAI,IAAI,CAACN,KAAK,KAAK,CAAC,EAAE;AACpB,MAAA,OAAA;AACF,KAAA;AACA,IAAA,MAAMA,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;AACxB,IAAA,KAAK,IAAIS,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,IAAI,CAACE,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MACvC,MAAME,IAAI,GAAG,CAAC,GAAG,GAAGC,IAAI,CAACC,MAAM,EAAE,IAAIb,KAAK,CAAA;AAC1CQ,MAAAA,IAAI,CAACC,CAAC,CAAC,IAAIE,IAAI,CAAA;AACfH,MAAAA,IAAI,CAACC,CAAC,GAAG,CAAC,CAAC,IAAIE,IAAI,CAAA;AACnBH,MAAAA,IAAI,CAACC,CAAC,GAAG,CAAC,CAAC,IAAIE,IAAI,CAAA;AACrB,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEG,EAAAA,mBAAmBA,CACjBC,EAAyB,EACzBC,OAAqB,EACK;IAC1B,OAAO;MACLC,MAAM,EAAEF,EAAE,CAACG,kBAAkB,CAACF,OAAO,EAAE,QAAQ,CAAC;AAChDG,MAAAA,KAAK,EAAEJ,EAAE,CAACG,kBAAkB,CAACF,OAAO,EAAE,OAAO,CAAA;KAC9C,CAAA;AACH,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEI,EAAAA,eAAeA,CACbL,EAAyB,EACzBM,gBAA0C,EAC1C;AACAN,IAAAA,EAAE,CAACO,SAAS,CAACD,gBAAgB,CAACJ,MAAM,EAAE,IAAI,CAACjB,KAAK,GAAG,GAAG,CAAC,CAAA;AACvDe,IAAAA,EAAE,CAACO,SAAS,CAACD,gBAAgB,CAACF,KAAK,EAAEP,IAAI,CAACC,MAAM,EAAE,CAAC,CAAA;AACrD,GAAA;;AAEA;AACF;AACA;AACA;AACEU,EAAAA,QAAQA,GAAG;IACT,OAAAC,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAY,KAAK,CAACD,QAAQ,EAAE,CAAA,EAAA,EAAA,EAAA;MAAEvB,KAAK,EAAE,IAAI,CAACA,KAAAA;AAAK,KAAA,CAAA,CAAA;AACjD,GAAA;AACF,CAAA;AAvEE;AACF;AACA;AACA;AACA;AAJEyB,eAAA,CADWxB,KAAK,EAAA,MAAA,EAQF,OAAO,CAAA,CAAA;AAAAwB,eAAA,CARVxB,KAAK,EAAA,UAAA,EAUEH,kBAAkB,CAAA,CAAA;AAgEtC4B,aAAa,CAACC,QAAQ,CAAC1B,KAAK,CAAC;;;;"}
1
+ {"version":3,"file":"Noise.mjs","sources":["../../../src/filters/Noise.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/noise';\n\nexport type NoiseOwnProps = {\n noise: number;\n};\n\nexport const noiseDefaultValues: NoiseOwnProps = {\n noise: 0,\n};\n\n/**\n * Noise filter class\n * @example\n * const filter = new Noise({\n * noise: 700\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\nexport class Noise extends BaseFilter<'Noise', NoiseOwnProps> {\n /**\n * Noise value, from\n * @param {Number} noise\n * @default\n */\n declare noise: NoiseOwnProps['noise'];\n\n static type = 'Noise';\n\n static defaults = noiseDefaultValues;\n\n static uniformLocations = ['uNoise', 'uSeed'];\n\n getFragmentSource() {\n return fragmentSource;\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({ imageData: { data } }: T2DPipelineState) {\n const noise = this.noise;\n for (let i = 0; i < data.length; i += 4) {\n const rand = (0.5 - Math.random()) * noise;\n data[i] += rand;\n data[i + 1] += rand;\n data[i + 2] += rand;\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.uniform1f(uniformLocations.uNoise, this.noise / 255);\n gl.uniform1f(uniformLocations.uSeed, Math.random());\n }\n\n isNeutralState() {\n return this.noise === 0;\n }\n}\n\nclassRegistry.setClass(Noise);\n"],"names":["noiseDefaultValues","noise","Noise","BaseFilter","getFragmentSource","fragmentSource","applyTo2d","_ref","imageData","data","i","length","rand","Math","random","sendUniformData","gl","uniformLocations","uniform1f","uNoise","uSeed","isNeutralState","_defineProperty","classRegistry","setClass"],"mappings":";;;;;AASO,MAAMA,kBAAiC,GAAG;AAC/CC,EAAAA,KAAK,EAAE,CAAA;AACT,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,KAAK,SAASC,UAAU,CAAyB;AAc5DC,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,OAAOC,cAAc,CAAA;AACvB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACEC,SAASA,CAAAC,IAAA,EAA4C;IAAA,IAA3C;AAAEC,MAAAA,SAAS,EAAE;AAAEC,QAAAA,IAAAA;AAAK,OAAA;AAAoB,KAAC,GAAAF,IAAA,CAAA;AACjD,IAAA,MAAMN,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;AACxB,IAAA,KAAK,IAAIS,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,IAAI,CAACE,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MACvC,MAAME,IAAI,GAAG,CAAC,GAAG,GAAGC,IAAI,CAACC,MAAM,EAAE,IAAIb,KAAK,CAAA;AAC1CQ,MAAAA,IAAI,CAACC,CAAC,CAAC,IAAIE,IAAI,CAAA;AACfH,MAAAA,IAAI,CAACC,CAAC,GAAG,CAAC,CAAC,IAAIE,IAAI,CAAA;AACnBH,MAAAA,IAAI,CAACC,CAAC,GAAG,CAAC,CAAC,IAAIE,IAAI,CAAA;AACrB,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEG,EAAAA,eAAeA,CACbC,EAAyB,EACzBC,gBAA0C,EAC1C;AACAD,IAAAA,EAAE,CAACE,SAAS,CAACD,gBAAgB,CAACE,MAAM,EAAE,IAAI,CAAClB,KAAK,GAAG,GAAG,CAAC,CAAA;AACvDe,IAAAA,EAAE,CAACE,SAAS,CAACD,gBAAgB,CAACG,KAAK,EAAEP,IAAI,CAACC,MAAM,EAAE,CAAC,CAAA;AACrD,GAAA;AAEAO,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAO,IAAI,CAACpB,KAAK,KAAK,CAAC,CAAA;AACzB,GAAA;AACF,CAAA;AAlDE;AACF;AACA;AACA;AACA;AAJEqB,eAAA,CADWpB,KAAK,EAAA,MAAA,EAQF,OAAO,CAAA,CAAA;AAAAoB,eAAA,CARVpB,KAAK,EAAA,UAAA,EAUEF,kBAAkB,CAAA,CAAA;AAAAsB,eAAA,CAVzBpB,KAAK,EAAA,kBAAA,EAYU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA,CAAA;AAyC/CqB,aAAa,CAACC,QAAQ,CAACtB,KAAK,CAAC;;;;"}
@@ -1,7 +1,9 @@
1
- import type { TClassProperties } from '../typedefs';
2
1
  import { BaseFilter } from './BaseFilter';
3
2
  import type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';
4
- export declare const pixelateDefaultValues: Partial<TClassProperties<Pixelate>>;
3
+ export type PixelateOwnProps = {
4
+ blocksize: number;
5
+ };
6
+ export declare const pixelateDefaultValues: PixelateOwnProps;
5
7
  /**
6
8
  * Pixelate filter class
7
9
  * @example
@@ -11,10 +13,11 @@ export declare const pixelateDefaultValues: Partial<TClassProperties<Pixelate>>;
11
13
  * object.filters.push(filter);
12
14
  * object.applyFilters();
13
15
  */
14
- export declare class Pixelate extends BaseFilter {
15
- blocksize: number;
16
+ export declare class Pixelate extends BaseFilter<'Pixelate', PixelateOwnProps> {
17
+ blocksize: PixelateOwnProps['blocksize'];
16
18
  static type: string;
17
- static defaults: Partial<TClassProperties<Pixelate>>;
19
+ static defaults: PixelateOwnProps;
20
+ static uniformLocations: string[];
18
21
  /**
19
22
  * Apply the Pixelate operation to a Uint8ClampedArray representing the pixels of an image.
20
23
  *
@@ -27,13 +30,6 @@ export declare class Pixelate extends BaseFilter {
27
30
  **/
28
31
  isNeutralState(): boolean;
29
32
  protected getFragmentSource(): string;
30
- /**
31
- * Return WebGL uniform locations for this filter's shader.
32
- *
33
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
34
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
35
- */
36
- getUniformLocations(gl: WebGLRenderingContext, program: WebGLProgram): TWebGLUniformLocationMap;
37
33
  /**
38
34
  * Send data from this filter to its shader program's uniforms.
39
35
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Pixelate.d.ts","sourceRoot":"","sources":["../../../src/filters/Pixelate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAI7E,eAAO,MAAM,qBAAqB,EAAE,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAGrE,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,QAAS,SAAQ,UAAU;IAC9B,SAAS,EAAE,MAAM,CAAC;IAE1B,MAAM,CAAC,IAAI,SAAc;IAEzB,MAAM,CAAC,QAAQ,sCAAyB;IAExC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB;IAsBlE;;QAEI;IACJ,cAAc;IAId,SAAS,CAAC,iBAAiB,IAAI,MAAM;IAIrC;;;;;OAKG;IACH,mBAAmB,CACjB,EAAE,EAAE,qBAAqB,EACzB,OAAO,EAAE,YAAY,GACpB,wBAAwB;IAQ3B;;;;;OAKG;IACH,eAAe,CACb,EAAE,EAAE,qBAAqB,EACzB,gBAAgB,EAAE,wBAAwB;CAI7C"}
1
+ {"version":3,"file":"Pixelate.d.ts","sourceRoot":"","sources":["../../../src/filters/Pixelate.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,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,gBAEnC,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,QAAS,SAAQ,UAAU,CAAC,UAAU,EAAE,gBAAgB,CAAC;IAC5D,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAEjD,MAAM,CAAC,IAAI,SAAc;IAEzB,MAAM,CAAC,QAAQ,mBAAyB;IAExC,MAAM,CAAC,gBAAgB,WAAkB;IAEzC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB;IAsBlE;;QAEI;IACJ,cAAc;IAId,SAAS,CAAC,iBAAiB,IAAI,MAAM;IAIrC;;;;;OAKG;IACH,eAAe,CACb,EAAE,EAAE,qBAAqB,EACzB,gBAAgB,EAAE,wBAAwB;CAI7C"}
@@ -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 i}from"../ClassRegistry.min.mjs";import{fragmentSource as o}from"./shaders/pixelate.min.mjs";const s={blocksize:4,mainParameter:"blocksize"};class r extends t{applyTo2d(e){let{imageData:{data:t,width:i,height:o}}=e;for(let e=0;e<o;e+=this.blocksize)for(let s=0;s<i;s+=this.blocksize){const r=4*e*i+4*s,a=t[r],l=t[r+1],m=t[r+2],n=t[r+3];for(let r=e;r<Math.min(e+this.blocksize,o);r++)for(let e=s;e<Math.min(s+this.blocksize,i);e++){const o=4*r*i+4*e;t[o]=a,t[o+1]=l,t[o+2]=m,t[o+3]=n}}}isNeutralState(){return 1===this.blocksize}getFragmentSource(){return o}getUniformLocations(e,t){return{uBlocksize:e.getUniformLocation(t,"uBlocksize"),uStepW:e.getUniformLocation(t,"uStepW"),uStepH:e.getUniformLocation(t,"uStepH")}}sendUniformData(e,t){e.uniform1f(t.uBlocksize,this.blocksize)}}e(r,"type","Pixelate"),e(r,"defaults",s),i.setClass(r);export{r as Pixelate,s as pixelateDefaultValues};
1
+ import{defineProperty as e}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{BaseFilter as t}from"./BaseFilter.min.mjs";import{classRegistry as i}from"../ClassRegistry.min.mjs";import{fragmentSource as s}from"./shaders/pixelate.min.mjs";const o={blocksize:4};class r extends t{applyTo2d(e){let{imageData:{data:t,width:i,height:s}}=e;for(let e=0;e<s;e+=this.blocksize)for(let o=0;o<i;o+=this.blocksize){const r=4*e*i+4*o,l=t[r],a=t[r+1],m=t[r+2],n=t[r+3];for(let r=e;r<Math.min(e+this.blocksize,s);r++)for(let e=o;e<Math.min(o+this.blocksize,i);e++){const s=4*r*i+4*e;t[s]=l,t[s+1]=a,t[s+2]=m,t[s+3]=n}}}isNeutralState(){return 1===this.blocksize}getFragmentSource(){return s}sendUniformData(e,t){e.uniform1f(t.uBlocksize,this.blocksize)}}e(r,"type","Pixelate"),e(r,"defaults",o),e(r,"uniformLocations",["uBlockSize"]),i.setClass(r);export{r as Pixelate,o as pixelateDefaultValues};
2
2
  //# sourceMappingURL=Pixelate.min.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pixelate.min.mjs","sources":["../../../src/filters/Pixelate.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/pixelate';\n\nexport const pixelateDefaultValues: Partial<TClassProperties<Pixelate>> = {\n blocksize: 4,\n mainParameter: 'blocksize',\n};\n\n/**\n * Pixelate filter class\n * @example\n * const filter = new Pixelate({\n * blocksize: 8\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Pixelate extends BaseFilter {\n declare blocksize: number;\n\n static type = 'Pixelate';\n\n static defaults = pixelateDefaultValues;\n\n /**\n * Apply the Pixelate 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({ imageData: { data, width, height } }: T2DPipelineState) {\n for (let i = 0; i < height; i += this.blocksize) {\n for (let j = 0; j < width; j += this.blocksize) {\n const index = i * 4 * width + j * 4;\n const r = data[index];\n const g = data[index + 1];\n const b = data[index + 2];\n const a = data[index + 3];\n\n for (let _i = i; _i < Math.min(i + this.blocksize, height); _i++) {\n for (let _j = j; _j < Math.min(j + this.blocksize, width); _j++) {\n const index = _i * 4 * width + _j * 4;\n data[index] = r;\n data[index + 1] = g;\n data[index + 2] = b;\n data[index + 3] = a;\n }\n }\n }\n }\n }\n\n /**\n * Indicate when the filter is not gonna apply changes to the image\n **/\n isNeutralState() {\n return this.blocksize === 1;\n }\n\n protected getFragmentSource(): string {\n return fragmentSource;\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 uBlocksize: gl.getUniformLocation(program, 'uBlocksize'),\n uStepW: gl.getUniformLocation(program, 'uStepW'),\n uStepH: gl.getUniformLocation(program, 'uStepH'),\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.uniform1f(uniformLocations.uBlocksize, this.blocksize);\n }\n}\n\nclassRegistry.setClass(Pixelate);\n"],"names":["pixelateDefaultValues","blocksize","mainParameter","Pixelate","BaseFilter","applyTo2d","_ref","imageData","data","width","height","i","this","j","index","r","g","b","a","_i","Math","min","_j","isNeutralState","getFragmentSource","fragmentSource","getUniformLocations","gl","program","uBlocksize","getUniformLocation","uStepW","uStepH","sendUniformData","uniformLocations","uniform1f","_defineProperty","classRegistry","setClass"],"mappings":"yPAMO,MAAMA,EAA6D,CACxEC,UAAW,EACXC,cAAe,aAYV,MAAMC,UAAiBC,EAa5BC,SAAAA,CAASC,GAA2D,IAAxDC,WAAWC,KAAEA,EAAIC,MAAEA,EAAKC,OAAEA,IAA4BJ,EAChE,IAAK,IAAIK,EAAI,EAAGA,EAAID,EAAQC,GAAKC,KAAKX,UACpC,IAAK,IAAIY,EAAI,EAAGA,EAAIJ,EAAOI,GAAKD,KAAKX,UAAW,CAC9C,MAAMa,EAAY,EAAJH,EAAQF,EAAY,EAAJI,EACxBE,EAAIP,EAAKM,GACTE,EAAIR,EAAKM,EAAQ,GACjBG,EAAIT,EAAKM,EAAQ,GACjBI,EAAIV,EAAKM,EAAQ,GAEvB,IAAK,IAAIK,EAAKR,EAAGQ,EAAKC,KAAKC,IAAIV,EAAIC,KAAKX,UAAWS,GAASS,IAC1D,IAAK,IAAIG,EAAKT,EAAGS,EAAKF,KAAKC,IAAIR,EAAID,KAAKX,UAAWQ,GAAQa,IAAM,CAC/D,MAAMR,EAAa,EAALK,EAASV,EAAa,EAALa,EAC/Bd,EAAKM,GAASC,EACdP,EAAKM,EAAQ,GAAKE,EAClBR,EAAKM,EAAQ,GAAKG,EAClBT,EAAKM,EAAQ,GAAKI,CACpB,CAEJ,CAEJ,CAKAK,cAAAA,GACE,OAA0B,IAAnBX,KAAKX,SACd,CAEUuB,iBAAAA,GACR,OAAOC,CACT,CAQAC,mBAAAA,CACEC,EACAC,GAEA,MAAO,CACLC,WAAYF,EAAGG,mBAAmBF,EAAS,cAC3CG,OAAQJ,EAAGG,mBAAmBF,EAAS,UACvCI,OAAQL,EAAGG,mBAAmBF,EAAS,UAE3C,CAQAK,eAAAA,CACEN,EACAO,GAEAP,EAAGQ,UAAUD,EAAiBL,WAAYjB,KAAKX,UACjD,EACDmC,EA3EYjC,EAAQ,OAGL,YAAUiC,EAHbjC,EAAQ,WAKDH,GAwEpBqC,EAAcC,SAASnC"}
1
+ {"version":3,"file":"Pixelate.min.mjs","sources":["../../../src/filters/Pixelate.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/pixelate';\n\nexport type PixelateOwnProps = {\n blocksize: number;\n};\n\nexport const pixelateDefaultValues: PixelateOwnProps = {\n blocksize: 4,\n};\n\n/**\n * Pixelate filter class\n * @example\n * const filter = new Pixelate({\n * blocksize: 8\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Pixelate extends BaseFilter<'Pixelate', PixelateOwnProps> {\n declare blocksize: PixelateOwnProps['blocksize'];\n\n static type = 'Pixelate';\n\n static defaults = pixelateDefaultValues;\n\n static uniformLocations = ['uBlockSize'];\n\n /**\n * Apply the Pixelate 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({ imageData: { data, width, height } }: T2DPipelineState) {\n for (let i = 0; i < height; i += this.blocksize) {\n for (let j = 0; j < width; j += this.blocksize) {\n const index = i * 4 * width + j * 4;\n const r = data[index];\n const g = data[index + 1];\n const b = data[index + 2];\n const a = data[index + 3];\n\n for (let _i = i; _i < Math.min(i + this.blocksize, height); _i++) {\n for (let _j = j; _j < Math.min(j + this.blocksize, width); _j++) {\n const index = _i * 4 * width + _j * 4;\n data[index] = r;\n data[index + 1] = g;\n data[index + 2] = b;\n data[index + 3] = a;\n }\n }\n }\n }\n }\n\n /**\n * Indicate when the filter is not gonna apply changes to the image\n **/\n isNeutralState() {\n return this.blocksize === 1;\n }\n\n protected getFragmentSource(): string {\n return fragmentSource;\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.uniform1f(uniformLocations.uBlocksize, this.blocksize);\n }\n}\n\nclassRegistry.setClass(Pixelate);\n"],"names":["pixelateDefaultValues","blocksize","Pixelate","BaseFilter","applyTo2d","_ref","imageData","data","width","height","i","this","j","index","r","g","b","a","_i","Math","min","_j","isNeutralState","getFragmentSource","fragmentSource","sendUniformData","gl","uniformLocations","uniform1f","uBlocksize","_defineProperty","classRegistry","setClass"],"mappings":"yPASO,MAAMA,EAA0C,CACrDC,UAAW,GAYN,MAAMC,UAAiBC,EAe5BC,SAAAA,CAASC,GAA2D,IAAxDC,WAAWC,KAAEA,EAAIC,MAAEA,EAAKC,OAAEA,IAA4BJ,EAChE,IAAK,IAAIK,EAAI,EAAGA,EAAID,EAAQC,GAAKC,KAAKV,UACpC,IAAK,IAAIW,EAAI,EAAGA,EAAIJ,EAAOI,GAAKD,KAAKV,UAAW,CAC9C,MAAMY,EAAY,EAAJH,EAAQF,EAAY,EAAJI,EACxBE,EAAIP,EAAKM,GACTE,EAAIR,EAAKM,EAAQ,GACjBG,EAAIT,EAAKM,EAAQ,GACjBI,EAAIV,EAAKM,EAAQ,GAEvB,IAAK,IAAIK,EAAKR,EAAGQ,EAAKC,KAAKC,IAAIV,EAAIC,KAAKV,UAAWQ,GAASS,IAC1D,IAAK,IAAIG,EAAKT,EAAGS,EAAKF,KAAKC,IAAIR,EAAID,KAAKV,UAAWO,GAAQa,IAAM,CAC/D,MAAMR,EAAa,EAALK,EAASV,EAAa,EAALa,EAC/Bd,EAAKM,GAASC,EACdP,EAAKM,EAAQ,GAAKE,EAClBR,EAAKM,EAAQ,GAAKG,EAClBT,EAAKM,EAAQ,GAAKI,CACpB,CAEJ,CAEJ,CAKAK,cAAAA,GACE,OAA0B,IAAnBX,KAAKV,SACd,CAEUsB,iBAAAA,GACR,OAAOC,CACT,CAQAC,eAAAA,CACEC,EACAC,GAEAD,EAAGE,UAAUD,EAAiBE,WAAYlB,KAAKV,UACjD,EACD6B,EA5DY5B,EAAQ,OAGL,YAAU4B,EAHb5B,EAAQ,WAKDF,GAAqB8B,EAL5B5B,EAOe,mBAAA,CAAC,eAuD7B6B,EAAcC,SAAS9B"}
@@ -4,8 +4,7 @@ import { classRegistry } from '../ClassRegistry.mjs';
4
4
  import { fragmentSource } from './shaders/pixelate.mjs';
5
5
 
6
6
  const pixelateDefaultValues = {
7
- blocksize: 4,
8
- mainParameter: 'blocksize'
7
+ blocksize: 4
9
8
  };
10
9
 
11
10
  /**
@@ -62,20 +61,6 @@ class Pixelate extends BaseFilter {
62
61
  return fragmentSource;
63
62
  }
64
63
 
65
- /**
66
- * Return WebGL uniform locations for this filter's shader.
67
- *
68
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
69
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
70
- */
71
- getUniformLocations(gl, program) {
72
- return {
73
- uBlocksize: gl.getUniformLocation(program, 'uBlocksize'),
74
- uStepW: gl.getUniformLocation(program, 'uStepW'),
75
- uStepH: gl.getUniformLocation(program, 'uStepH')
76
- };
77
- }
78
-
79
64
  /**
80
65
  * Send data from this filter to its shader program's uniforms.
81
66
  *
@@ -88,6 +73,7 @@ class Pixelate extends BaseFilter {
88
73
  }
89
74
  _defineProperty(Pixelate, "type", 'Pixelate');
90
75
  _defineProperty(Pixelate, "defaults", pixelateDefaultValues);
76
+ _defineProperty(Pixelate, "uniformLocations", ['uBlockSize']);
91
77
  classRegistry.setClass(Pixelate);
92
78
 
93
79
  export { Pixelate, pixelateDefaultValues };
@@ -1 +1 @@
1
- {"version":3,"file":"Pixelate.mjs","sources":["../../../src/filters/Pixelate.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/pixelate';\n\nexport const pixelateDefaultValues: Partial<TClassProperties<Pixelate>> = {\n blocksize: 4,\n mainParameter: 'blocksize',\n};\n\n/**\n * Pixelate filter class\n * @example\n * const filter = new Pixelate({\n * blocksize: 8\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Pixelate extends BaseFilter {\n declare blocksize: number;\n\n static type = 'Pixelate';\n\n static defaults = pixelateDefaultValues;\n\n /**\n * Apply the Pixelate 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({ imageData: { data, width, height } }: T2DPipelineState) {\n for (let i = 0; i < height; i += this.blocksize) {\n for (let j = 0; j < width; j += this.blocksize) {\n const index = i * 4 * width + j * 4;\n const r = data[index];\n const g = data[index + 1];\n const b = data[index + 2];\n const a = data[index + 3];\n\n for (let _i = i; _i < Math.min(i + this.blocksize, height); _i++) {\n for (let _j = j; _j < Math.min(j + this.blocksize, width); _j++) {\n const index = _i * 4 * width + _j * 4;\n data[index] = r;\n data[index + 1] = g;\n data[index + 2] = b;\n data[index + 3] = a;\n }\n }\n }\n }\n }\n\n /**\n * Indicate when the filter is not gonna apply changes to the image\n **/\n isNeutralState() {\n return this.blocksize === 1;\n }\n\n protected getFragmentSource(): string {\n return fragmentSource;\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 uBlocksize: gl.getUniformLocation(program, 'uBlocksize'),\n uStepW: gl.getUniformLocation(program, 'uStepW'),\n uStepH: gl.getUniformLocation(program, 'uStepH'),\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.uniform1f(uniformLocations.uBlocksize, this.blocksize);\n }\n}\n\nclassRegistry.setClass(Pixelate);\n"],"names":["pixelateDefaultValues","blocksize","mainParameter","Pixelate","BaseFilter","applyTo2d","_ref","imageData","data","width","height","i","j","index","r","g","b","a","_i","Math","min","_j","isNeutralState","getFragmentSource","fragmentSource","getUniformLocations","gl","program","uBlocksize","getUniformLocation","uStepW","uStepH","sendUniformData","uniformLocations","uniform1f","_defineProperty","classRegistry","setClass"],"mappings":"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"}
1
+ {"version":3,"file":"Pixelate.mjs","sources":["../../../src/filters/Pixelate.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/pixelate';\n\nexport type PixelateOwnProps = {\n blocksize: number;\n};\n\nexport const pixelateDefaultValues: PixelateOwnProps = {\n blocksize: 4,\n};\n\n/**\n * Pixelate filter class\n * @example\n * const filter = new Pixelate({\n * blocksize: 8\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Pixelate extends BaseFilter<'Pixelate', PixelateOwnProps> {\n declare blocksize: PixelateOwnProps['blocksize'];\n\n static type = 'Pixelate';\n\n static defaults = pixelateDefaultValues;\n\n static uniformLocations = ['uBlockSize'];\n\n /**\n * Apply the Pixelate 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({ imageData: { data, width, height } }: T2DPipelineState) {\n for (let i = 0; i < height; i += this.blocksize) {\n for (let j = 0; j < width; j += this.blocksize) {\n const index = i * 4 * width + j * 4;\n const r = data[index];\n const g = data[index + 1];\n const b = data[index + 2];\n const a = data[index + 3];\n\n for (let _i = i; _i < Math.min(i + this.blocksize, height); _i++) {\n for (let _j = j; _j < Math.min(j + this.blocksize, width); _j++) {\n const index = _i * 4 * width + _j * 4;\n data[index] = r;\n data[index + 1] = g;\n data[index + 2] = b;\n data[index + 3] = a;\n }\n }\n }\n }\n }\n\n /**\n * Indicate when the filter is not gonna apply changes to the image\n **/\n isNeutralState() {\n return this.blocksize === 1;\n }\n\n protected getFragmentSource(): string {\n return fragmentSource;\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.uniform1f(uniformLocations.uBlocksize, this.blocksize);\n }\n}\n\nclassRegistry.setClass(Pixelate);\n"],"names":["pixelateDefaultValues","blocksize","Pixelate","BaseFilter","applyTo2d","_ref","imageData","data","width","height","i","j","index","r","g","b","a","_i","Math","min","_j","isNeutralState","getFragmentSource","fragmentSource","sendUniformData","gl","uniformLocations","uniform1f","uBlocksize","_defineProperty","classRegistry","setClass"],"mappings":"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"}
@@ -1,7 +1,11 @@
1
- import type { TClassProperties } from '../typedefs';
2
1
  import { BaseFilter } from './BaseFilter';
3
2
  import type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';
4
- export declare const removeColorDefaultValues: Partial<TClassProperties<RemoveColor>>;
3
+ export type RemoveColorOwnProps = {
4
+ color: string;
5
+ distance: number;
6
+ useAlpha: boolean;
7
+ };
8
+ export declare const removeColorDefaultValues: RemoveColorOwnProps;
5
9
  /**
6
10
  * Remove white filter class
7
11
  * @example
@@ -12,38 +16,32 @@ export declare const removeColorDefaultValues: Partial<TClassProperties<RemoveCo
12
16
  * object.applyFilters();
13
17
  * canvas.renderAll();
14
18
  */
15
- export declare class RemoveColor extends BaseFilter {
19
+ export declare class RemoveColor extends BaseFilter<'RemoveColor', RemoveColorOwnProps> {
16
20
  /**
17
21
  * Color to remove, in any format understood by {@link Color}.
18
22
  * @param {String} type
19
23
  * @default
20
24
  */
21
- color: string;
25
+ color: RemoveColorOwnProps['color'];
22
26
  /**
23
27
  * distance to actual color, as value up or down from each r,g,b
24
28
  * between 0 and 1
25
29
  **/
26
- distance: number;
30
+ distance: RemoveColorOwnProps['distance'];
27
31
  /**
28
32
  * For color to remove inside distance, use alpha channel for a smoother deletion
29
33
  * NOT IMPLEMENTED YET
30
34
  **/
31
- useAlpha: boolean;
35
+ useAlpha: RemoveColorOwnProps['useAlpha'];
32
36
  static type: string;
33
- static defaults: Partial<TClassProperties<RemoveColor>>;
37
+ static defaults: RemoveColorOwnProps;
38
+ static uniformLocations: string[];
34
39
  getFragmentSource(): string;
35
40
  /**
36
41
  * Applies filter to canvas element
37
42
  * @param {Object} canvasEl Canvas element to apply filter to
38
43
  */
39
44
  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
45
  /**
48
46
  * Send data from this filter to its shader program's uniforms.
49
47
  *
@@ -51,14 +49,5 @@ export declare class RemoveColor extends BaseFilter {
51
49
  * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
52
50
  */
53
51
  sendUniformData(gl: WebGLRenderingContext, uniformLocations: TWebGLUniformLocationMap): void;
54
- /**
55
- * Returns object representation of an instance
56
- * @return {Object} Object representation of an instance
57
- */
58
- toObject(): {
59
- color: string;
60
- distance: number;
61
- type: string;
62
- };
63
52
  }
64
53
  //# sourceMappingURL=RemoveColor.d.ts.map