@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,7 +1,9 @@
1
- import type { TClassProperties } from '../typedefs';
2
1
  import { BaseFilter } from './BaseFilter';
3
2
  import type { TWebGLPipelineState, T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';
4
- export declare const blurDefaultValues: Partial<TClassProperties<Blur>>;
3
+ type BlurOwnProps = {
4
+ blur: number;
5
+ };
6
+ export declare const blurDefaultValues: BlurOwnProps;
5
7
  /**
6
8
  * Blur filter class
7
9
  * @example
@@ -12,7 +14,7 @@ export declare const blurDefaultValues: Partial<TClassProperties<Blur>>;
12
14
  * object.applyFilters();
13
15
  * canvas.renderAll();
14
16
  */
15
- export declare class Blur extends BaseFilter {
17
+ export declare class Blur extends BaseFilter<'Blur', BlurOwnProps> {
16
18
  /**
17
19
  * blur value, in percentage of image dimensions.
18
20
  * specific to keep the image blur constant at different resolutions
@@ -20,22 +22,16 @@ export declare class Blur extends BaseFilter {
20
22
  * @type Number
21
23
  * @default
22
24
  */
23
- blur: number;
25
+ blur: BlurOwnProps['blur'];
24
26
  horizontal: boolean;
25
27
  aspectRatio: number;
26
28
  static type: string;
27
- static defaults: Partial<TClassProperties<Blur>>;
29
+ static defaults: BlurOwnProps;
30
+ static uniformLocations: string[];
28
31
  getFragmentSource(): string;
29
32
  applyTo(options: TWebGLPipelineState | T2DPipelineState): void;
30
33
  applyTo2d(options: T2DPipelineState): void;
31
34
  simpleBlur({ ctx, imageData, filterBackend: { resources }, }: T2DPipelineState): ImageData;
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,10 +39,12 @@ export declare class Blur 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;
42
+ isNeutralState(): boolean;
46
43
  /**
47
44
  * choose right value of image percentage to blur with
48
45
  * @returns {Array} a numeric array with delta values
49
46
  */
50
47
  chooseRightDelta(): number[];
51
48
  }
49
+ export {};
52
50
  //# sourceMappingURL=Blur.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Blur.d.ts","sourceRoot":"","sources":["../../../src/filters/Blur.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAKpB,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAG7D,CAAC;AAEF;;;;;;;;;GASG;AACH,qBAAa,IAAK,SAAQ,UAAU;IAClC;;;;;;OAMG;IACK,IAAI,EAAE,MAAM,CAAC;IAEb,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IAE5B,MAAM,CAAC,IAAI,SAAU;IAErB,MAAM,CAAC,QAAQ,kCAAqB;IAEpC,iBAAiB,IAAI,MAAM;IAI3B,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,gBAAgB;IAkBvD,SAAS,CAAC,OAAO,EAAE,gBAAgB;IAInC,UAAU,CAAC,EACT,GAAG,EACH,SAAS,EACT,aAAa,EAAE,EAAE,SAAS,EAAE,GAC7B,EAAE,gBAAgB;IAiDnB;;;;;OAKG;IACH,mBAAmB,CACjB,EAAE,EAAE,qBAAqB,EACzB,OAAO,EAAE,YAAY,GACpB,wBAAwB;IAM3B;;;;;OAKG;IACH,eAAe,CACb,EAAE,EAAE,qBAAqB,EACzB,gBAAgB,EAAE,wBAAwB;IAM5C;;;OAGG;IACH,gBAAgB;CAsBjB"}
1
+ {"version":3,"file":"Blur.d.ts","sourceRoot":"","sources":["../../../src/filters/Blur.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAKpB,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,YAE/B,CAAC;AAEF;;;;;;;;;GASG;AACH,qBAAa,IAAK,SAAQ,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC;IACxD;;;;;;OAMG;IACK,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAE3B,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IAE5B,MAAM,CAAC,IAAI,SAAU;IAErB,MAAM,CAAC,QAAQ,eAAqB;IAEpC,MAAM,CAAC,gBAAgB,WAAc;IAErC,iBAAiB,IAAI,MAAM;IAI3B,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,gBAAgB;IAkBvD,SAAS,CAAC,OAAO,EAAE,gBAAgB;IAInC,UAAU,CAAC,EACT,GAAG,EACH,SAAS,EACT,aAAa,EAAE,EAAE,SAAS,EAAE,GAC7B,EAAE,gBAAgB;IAiDnB;;;;;OAKG;IACH,eAAe,CACb,EAAE,EAAE,qBAAqB,EACzB,gBAAgB,EAAE,wBAAwB;IAM5C,cAAc;IAId;;;OAGG;IACH,gBAAgB;CAsBjB"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as t}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{createCanvasElement as e}from"../util/misc/dom.min.mjs";import{BaseFilter as a}from"./BaseFilter.min.mjs";import{isWebGLPipelineState as r}from"./utils.min.mjs";import{classRegistry as i}from"../ClassRegistry.min.mjs";import{fragmentSource as s}from"./shaders/blur.min.mjs";const o={blur:0,mainParameter:"blur"};class l extends a{getFragmentSource(){return s}applyTo(t){r(t)?(this.aspectRatio=t.sourceWidth/t.sourceHeight,t.passes++,this._setupFrameBuffer(t),this.horizontal=!0,this.applyToWebGL(t),this._swapTextures(t),this._setupFrameBuffer(t),this.horizontal=!1,this.applyToWebGL(t),this._swapTextures(t)):this.applyTo2d(t)}applyTo2d(t){t.imageData=this.simpleBlur(t)}simpleBlur(t){let{ctx:a,imageData:r,filterBackend:{resources:i}}=t;const{width:s,height:o}=r;i.blurLayer1||(i.blurLayer1=e(),i.blurLayer2=e());const l=i.blurLayer1,h=i.blurLayer2;l.width===s&&l.height===o||(h.width=l.width=s,h.height=l.height=o);const m=l.getContext("2d"),n=h.getContext("2d"),p=15,u=.06*this.blur*.5;let g,c,d,b;for(m.putImageData(r,0,0),n.clearRect(0,0,s,o),b=-15;b<=p;b++)g=(Math.random()-.5)/4,c=b/p,d=u*c*s+g,n.globalAlpha=1-Math.abs(c),n.drawImage(l,d,g),m.drawImage(h,0,0),n.globalAlpha=1,n.clearRect(0,0,h.width,h.height);for(b=-15;b<=p;b++)g=(Math.random()-.5)/4,c=b/p,d=u*c*o+g,n.globalAlpha=1-Math.abs(c),n.drawImage(l,g,d),m.drawImage(h,0,0),n.globalAlpha=1,n.clearRect(0,0,h.width,h.height);a.drawImage(l,0,0);const f=a.getImageData(0,0,l.width,l.height);return m.globalAlpha=1,m.clearRect(0,0,l.width,l.height),f}getUniformLocations(t,e){return{delta:t.getUniformLocation(e,"uDelta")}}sendUniformData(t,e){const a=this.chooseRightDelta();t.uniform2fv(e.delta,a)}chooseRightDelta(){let t=1;const e=[0,0];this.horizontal?this.aspectRatio>1&&(t=1/this.aspectRatio):this.aspectRatio<1&&(t=this.aspectRatio);const a=t*this.blur*.12;return this.horizontal?e[0]=a:e[1]=a,e}}t(l,"type","Blur"),t(l,"defaults",o),i.setClass(l);export{l as Blur,o as blurDefaultValues};
1
+ import{defineProperty as t}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{createCanvasElement as e}from"../util/misc/dom.min.mjs";import{BaseFilter as a}from"./BaseFilter.min.mjs";import{isWebGLPipelineState as r}from"./utils.min.mjs";import{classRegistry as i}from"../ClassRegistry.min.mjs";import{fragmentSource as s}from"./shaders/blur.min.mjs";const o={blur:0};class h extends a{getFragmentSource(){return s}applyTo(t){r(t)?(this.aspectRatio=t.sourceWidth/t.sourceHeight,t.passes++,this._setupFrameBuffer(t),this.horizontal=!0,this.applyToWebGL(t),this._swapTextures(t),this._setupFrameBuffer(t),this.horizontal=!1,this.applyToWebGL(t),this._swapTextures(t)):this.applyTo2d(t)}applyTo2d(t){t.imageData=this.simpleBlur(t)}simpleBlur(t){let{ctx:a,imageData:r,filterBackend:{resources:i}}=t;const{width:s,height:o}=r;i.blurLayer1||(i.blurLayer1=e(),i.blurLayer2=e());const h=i.blurLayer1,l=i.blurLayer2;h.width===s&&h.height===o||(l.width=h.width=s,l.height=h.height=o);const m=h.getContext("2d"),p=l.getContext("2d"),u=15,n=.06*this.blur*.5;let c,g,d,b;for(m.putImageData(r,0,0),p.clearRect(0,0,s,o),b=-15;b<=u;b++)c=(Math.random()-.5)/4,g=b/u,d=n*g*s+c,p.globalAlpha=1-Math.abs(g),p.drawImage(h,d,c),m.drawImage(l,0,0),p.globalAlpha=1,p.clearRect(0,0,l.width,l.height);for(b=-15;b<=u;b++)c=(Math.random()-.5)/4,g=b/u,d=n*g*o+c,p.globalAlpha=1-Math.abs(g),p.drawImage(h,c,d),m.drawImage(l,0,0),p.globalAlpha=1,p.clearRect(0,0,l.width,l.height);a.drawImage(h,0,0);const f=a.getImageData(0,0,h.width,h.height);return m.globalAlpha=1,m.clearRect(0,0,h.width,h.height),f}sendUniformData(t,e){const a=this.chooseRightDelta();t.uniform2fv(e.delta,a)}isNeutralState(){return 0===this.blur}chooseRightDelta(){let t=1;const e=[0,0];this.horizontal?this.aspectRatio>1&&(t=1/this.aspectRatio):this.aspectRatio<1&&(t=this.aspectRatio);const a=t*this.blur*.12;return this.horizontal?e[0]=a:e[1]=a,e}}t(h,"type","Blur"),t(h,"defaults",o),t(h,"uniformLocations",["uDelta"]),i.setClass(h);export{h as Blur,o as blurDefaultValues};
2
2
  //# sourceMappingURL=Blur.min.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Blur.min.mjs","sources":["../../../src/filters/Blur.ts"],"sourcesContent":["import type { TClassProperties } from '../typedefs';\nimport { createCanvasElement } from '../util/misc/dom';\nimport { BaseFilter } from './BaseFilter';\nimport type {\n TWebGLPipelineState,\n T2DPipelineState,\n TWebGLUniformLocationMap,\n} from './typedefs';\nimport { isWebGLPipelineState } from './utils';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/blur';\n\nexport const blurDefaultValues: Partial<TClassProperties<Blur>> = {\n blur: 0,\n mainParameter: 'blur',\n};\n\n/**\n * Blur filter class\n * @example\n * const filter = new Blur({\n * blur: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\nexport class Blur extends BaseFilter {\n /**\n * blur value, in percentage of image dimensions.\n * specific to keep the image blur constant at different resolutions\n * range between 0 and 1.\n * @type Number\n * @default\n */\n declare blur: number;\n\n declare horizontal: boolean;\n declare aspectRatio: number;\n\n static type = 'Blur';\n\n static defaults = blurDefaultValues;\n\n getFragmentSource(): string {\n return fragmentSource;\n }\n\n applyTo(options: TWebGLPipelineState | T2DPipelineState) {\n if (isWebGLPipelineState(options)) {\n // this aspectRatio is used to give the same blur to vertical and horizontal\n this.aspectRatio = options.sourceWidth / options.sourceHeight;\n options.passes++;\n this._setupFrameBuffer(options);\n this.horizontal = true;\n this.applyToWebGL(options);\n this._swapTextures(options);\n this._setupFrameBuffer(options);\n this.horizontal = false;\n this.applyToWebGL(options);\n this._swapTextures(options);\n } else {\n this.applyTo2d(options);\n }\n }\n\n applyTo2d(options: T2DPipelineState) {\n options.imageData = this.simpleBlur(options);\n }\n\n simpleBlur({\n ctx,\n imageData,\n filterBackend: { resources },\n }: T2DPipelineState) {\n const { width, height } = imageData;\n if (!resources.blurLayer1) {\n resources.blurLayer1 = createCanvasElement();\n resources.blurLayer2 = createCanvasElement();\n }\n const canvas1 = resources.blurLayer1!;\n const canvas2 = resources.blurLayer2!;\n if (canvas1.width !== width || canvas1.height !== height) {\n canvas2.width = canvas1.width = width;\n canvas2.height = canvas1.height = height;\n }\n const ctx1 = canvas1.getContext('2d')!,\n ctx2 = canvas2.getContext('2d')!,\n nSamples = 15,\n blur = this.blur * 0.06 * 0.5;\n let random, percent, j, i;\n\n // load first canvas\n ctx1.putImageData(imageData, 0, 0);\n ctx2.clearRect(0, 0, width, height);\n\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * width + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, j, random);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * height + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, random, j);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n ctx.drawImage(canvas1, 0, 0);\n const newImageData = ctx.getImageData(0, 0, canvas1.width, canvas1.height);\n ctx1.globalAlpha = 1;\n ctx1.clearRect(0, 0, canvas1.width, canvas1.height);\n return newImageData;\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 delta: gl.getUniformLocation(program, 'uDelta'),\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 const delta = this.chooseRightDelta();\n gl.uniform2fv(uniformLocations.delta, delta);\n }\n\n /**\n * choose right value of image percentage to blur with\n * @returns {Array} a numeric array with delta values\n */\n chooseRightDelta() {\n let blurScale = 1;\n const delta = [0, 0];\n if (this.horizontal) {\n if (this.aspectRatio > 1) {\n // image is wide, i want to shrink radius horizontal\n blurScale = 1 / this.aspectRatio;\n }\n } else {\n if (this.aspectRatio < 1) {\n // image is tall, i want to shrink radius vertical\n blurScale = this.aspectRatio;\n }\n }\n const blur = blurScale * this.blur * 0.12;\n if (this.horizontal) {\n delta[0] = blur;\n } else {\n delta[1] = blur;\n }\n return delta;\n }\n}\n\nclassRegistry.setClass(Blur);\n"],"names":["blurDefaultValues","blur","mainParameter","Blur","BaseFilter","getFragmentSource","fragmentSource","applyTo","options","isWebGLPipelineState","this","aspectRatio","sourceWidth","sourceHeight","passes","_setupFrameBuffer","horizontal","applyToWebGL","_swapTextures","applyTo2d","imageData","simpleBlur","_ref","ctx","filterBackend","resources","width","height","blurLayer1","createCanvasElement","blurLayer2","canvas1","canvas2","ctx1","getContext","ctx2","nSamples","random","percent","j","i","putImageData","clearRect","Math","globalAlpha","abs","drawImage","newImageData","getImageData","getUniformLocations","gl","program","delta","getUniformLocation","sendUniformData","uniformLocations","chooseRightDelta","uniform2fv","blurScale","_defineProperty","classRegistry","setClass"],"mappings":"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"}
1
+ {"version":3,"file":"Blur.min.mjs","sources":["../../../src/filters/Blur.ts"],"sourcesContent":["import { createCanvasElement } from '../util/misc/dom';\nimport { BaseFilter } from './BaseFilter';\nimport type {\n TWebGLPipelineState,\n T2DPipelineState,\n TWebGLUniformLocationMap,\n} from './typedefs';\nimport { isWebGLPipelineState } from './utils';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/blur';\n\ntype BlurOwnProps = {\n blur: number;\n};\n\nexport const blurDefaultValues: BlurOwnProps = {\n blur: 0,\n};\n\n/**\n * Blur filter class\n * @example\n * const filter = new Blur({\n * blur: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\nexport class Blur extends BaseFilter<'Blur', BlurOwnProps> {\n /**\n * blur value, in percentage of image dimensions.\n * specific to keep the image blur constant at different resolutions\n * range between 0 and 1.\n * @type Number\n * @default\n */\n declare blur: BlurOwnProps['blur'];\n\n declare horizontal: boolean;\n declare aspectRatio: number;\n\n static type = 'Blur';\n\n static defaults = blurDefaultValues;\n\n static uniformLocations = ['uDelta'];\n\n getFragmentSource(): string {\n return fragmentSource;\n }\n\n applyTo(options: TWebGLPipelineState | T2DPipelineState) {\n if (isWebGLPipelineState(options)) {\n // this aspectRatio is used to give the same blur to vertical and horizontal\n this.aspectRatio = options.sourceWidth / options.sourceHeight;\n options.passes++;\n this._setupFrameBuffer(options);\n this.horizontal = true;\n this.applyToWebGL(options);\n this._swapTextures(options);\n this._setupFrameBuffer(options);\n this.horizontal = false;\n this.applyToWebGL(options);\n this._swapTextures(options);\n } else {\n this.applyTo2d(options);\n }\n }\n\n applyTo2d(options: T2DPipelineState) {\n options.imageData = this.simpleBlur(options);\n }\n\n simpleBlur({\n ctx,\n imageData,\n filterBackend: { resources },\n }: T2DPipelineState) {\n const { width, height } = imageData;\n if (!resources.blurLayer1) {\n resources.blurLayer1 = createCanvasElement();\n resources.blurLayer2 = createCanvasElement();\n }\n const canvas1 = resources.blurLayer1!;\n const canvas2 = resources.blurLayer2!;\n if (canvas1.width !== width || canvas1.height !== height) {\n canvas2.width = canvas1.width = width;\n canvas2.height = canvas1.height = height;\n }\n const ctx1 = canvas1.getContext('2d')!,\n ctx2 = canvas2.getContext('2d')!,\n nSamples = 15,\n blur = this.blur * 0.06 * 0.5;\n let random, percent, j, i;\n\n // load first canvas\n ctx1.putImageData(imageData, 0, 0);\n ctx2.clearRect(0, 0, width, height);\n\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * width + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, j, random);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * height + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, random, j);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n ctx.drawImage(canvas1, 0, 0);\n const newImageData = ctx.getImageData(0, 0, canvas1.width, canvas1.height);\n ctx1.globalAlpha = 1;\n ctx1.clearRect(0, 0, canvas1.width, canvas1.height);\n return newImageData;\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n const delta = this.chooseRightDelta();\n gl.uniform2fv(uniformLocations.delta, delta);\n }\n\n isNeutralState() {\n return this.blur === 0;\n }\n\n /**\n * choose right value of image percentage to blur with\n * @returns {Array} a numeric array with delta values\n */\n chooseRightDelta() {\n let blurScale = 1;\n const delta = [0, 0];\n if (this.horizontal) {\n if (this.aspectRatio > 1) {\n // image is wide, i want to shrink radius horizontal\n blurScale = 1 / this.aspectRatio;\n }\n } else {\n if (this.aspectRatio < 1) {\n // image is tall, i want to shrink radius vertical\n blurScale = this.aspectRatio;\n }\n }\n const blur = blurScale * this.blur * 0.12;\n if (this.horizontal) {\n delta[0] = blur;\n } else {\n delta[1] = blur;\n }\n return delta;\n }\n}\n\nclassRegistry.setClass(Blur);\n"],"names":["blurDefaultValues","blur","Blur","BaseFilter","getFragmentSource","fragmentSource","applyTo","options","isWebGLPipelineState","this","aspectRatio","sourceWidth","sourceHeight","passes","_setupFrameBuffer","horizontal","applyToWebGL","_swapTextures","applyTo2d","imageData","simpleBlur","_ref","ctx","filterBackend","resources","width","height","blurLayer1","createCanvasElement","blurLayer2","canvas1","canvas2","ctx1","getContext","ctx2","nSamples","random","percent","j","i","putImageData","clearRect","Math","globalAlpha","abs","drawImage","newImageData","getImageData","sendUniformData","gl","uniformLocations","delta","chooseRightDelta","uniform2fv","isNeutralState","blurScale","_defineProperty","classRegistry","setClass"],"mappings":"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"}
@@ -6,8 +6,7 @@ import { classRegistry } from '../ClassRegistry.mjs';
6
6
  import { fragmentSource } from './shaders/blur.mjs';
7
7
 
8
8
  const blurDefaultValues = {
9
- blur: 0,
10
- mainParameter: 'blur'
9
+ blur: 0
11
10
  };
12
11
 
13
12
  /**
@@ -102,18 +101,6 @@ class Blur extends BaseFilter {
102
101
  return newImageData;
103
102
  }
104
103
 
105
- /**
106
- * Return WebGL uniform locations for this filter's shader.
107
- *
108
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
109
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
110
- */
111
- getUniformLocations(gl, program) {
112
- return {
113
- delta: gl.getUniformLocation(program, 'uDelta')
114
- };
115
- }
116
-
117
104
  /**
118
105
  * Send data from this filter to its shader program's uniforms.
119
106
  *
@@ -124,6 +111,9 @@ class Blur extends BaseFilter {
124
111
  const delta = this.chooseRightDelta();
125
112
  gl.uniform2fv(uniformLocations.delta, delta);
126
113
  }
114
+ isNeutralState() {
115
+ return this.blur === 0;
116
+ }
127
117
 
128
118
  /**
129
119
  * choose right value of image percentage to blur with
@@ -161,6 +151,7 @@ class Blur extends BaseFilter {
161
151
  */
162
152
  _defineProperty(Blur, "type", 'Blur');
163
153
  _defineProperty(Blur, "defaults", blurDefaultValues);
154
+ _defineProperty(Blur, "uniformLocations", ['uDelta']);
164
155
  classRegistry.setClass(Blur);
165
156
 
166
157
  export { Blur, blurDefaultValues };
@@ -1 +1 @@
1
- {"version":3,"file":"Blur.mjs","sources":["../../../src/filters/Blur.ts"],"sourcesContent":["import type { TClassProperties } from '../typedefs';\nimport { createCanvasElement } from '../util/misc/dom';\nimport { BaseFilter } from './BaseFilter';\nimport type {\n TWebGLPipelineState,\n T2DPipelineState,\n TWebGLUniformLocationMap,\n} from './typedefs';\nimport { isWebGLPipelineState } from './utils';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/blur';\n\nexport const blurDefaultValues: Partial<TClassProperties<Blur>> = {\n blur: 0,\n mainParameter: 'blur',\n};\n\n/**\n * Blur filter class\n * @example\n * const filter = new Blur({\n * blur: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\nexport class Blur extends BaseFilter {\n /**\n * blur value, in percentage of image dimensions.\n * specific to keep the image blur constant at different resolutions\n * range between 0 and 1.\n * @type Number\n * @default\n */\n declare blur: number;\n\n declare horizontal: boolean;\n declare aspectRatio: number;\n\n static type = 'Blur';\n\n static defaults = blurDefaultValues;\n\n getFragmentSource(): string {\n return fragmentSource;\n }\n\n applyTo(options: TWebGLPipelineState | T2DPipelineState) {\n if (isWebGLPipelineState(options)) {\n // this aspectRatio is used to give the same blur to vertical and horizontal\n this.aspectRatio = options.sourceWidth / options.sourceHeight;\n options.passes++;\n this._setupFrameBuffer(options);\n this.horizontal = true;\n this.applyToWebGL(options);\n this._swapTextures(options);\n this._setupFrameBuffer(options);\n this.horizontal = false;\n this.applyToWebGL(options);\n this._swapTextures(options);\n } else {\n this.applyTo2d(options);\n }\n }\n\n applyTo2d(options: T2DPipelineState) {\n options.imageData = this.simpleBlur(options);\n }\n\n simpleBlur({\n ctx,\n imageData,\n filterBackend: { resources },\n }: T2DPipelineState) {\n const { width, height } = imageData;\n if (!resources.blurLayer1) {\n resources.blurLayer1 = createCanvasElement();\n resources.blurLayer2 = createCanvasElement();\n }\n const canvas1 = resources.blurLayer1!;\n const canvas2 = resources.blurLayer2!;\n if (canvas1.width !== width || canvas1.height !== height) {\n canvas2.width = canvas1.width = width;\n canvas2.height = canvas1.height = height;\n }\n const ctx1 = canvas1.getContext('2d')!,\n ctx2 = canvas2.getContext('2d')!,\n nSamples = 15,\n blur = this.blur * 0.06 * 0.5;\n let random, percent, j, i;\n\n // load first canvas\n ctx1.putImageData(imageData, 0, 0);\n ctx2.clearRect(0, 0, width, height);\n\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * width + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, j, random);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * height + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, random, j);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n ctx.drawImage(canvas1, 0, 0);\n const newImageData = ctx.getImageData(0, 0, canvas1.width, canvas1.height);\n ctx1.globalAlpha = 1;\n ctx1.clearRect(0, 0, canvas1.width, canvas1.height);\n return newImageData;\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 delta: gl.getUniformLocation(program, 'uDelta'),\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 const delta = this.chooseRightDelta();\n gl.uniform2fv(uniformLocations.delta, delta);\n }\n\n /**\n * choose right value of image percentage to blur with\n * @returns {Array} a numeric array with delta values\n */\n chooseRightDelta() {\n let blurScale = 1;\n const delta = [0, 0];\n if (this.horizontal) {\n if (this.aspectRatio > 1) {\n // image is wide, i want to shrink radius horizontal\n blurScale = 1 / this.aspectRatio;\n }\n } else {\n if (this.aspectRatio < 1) {\n // image is tall, i want to shrink radius vertical\n blurScale = this.aspectRatio;\n }\n }\n const blur = blurScale * this.blur * 0.12;\n if (this.horizontal) {\n delta[0] = blur;\n } else {\n delta[1] = blur;\n }\n return delta;\n }\n}\n\nclassRegistry.setClass(Blur);\n"],"names":["blurDefaultValues","blur","mainParameter","Blur","BaseFilter","getFragmentSource","fragmentSource","applyTo","options","isWebGLPipelineState","aspectRatio","sourceWidth","sourceHeight","passes","_setupFrameBuffer","horizontal","applyToWebGL","_swapTextures","applyTo2d","imageData","simpleBlur","_ref","ctx","filterBackend","resources","width","height","blurLayer1","createCanvasElement","blurLayer2","canvas1","canvas2","ctx1","getContext","ctx2","nSamples","random","percent","j","i","putImageData","clearRect","Math","globalAlpha","abs","drawImage","newImageData","getImageData","getUniformLocations","gl","program","delta","getUniformLocation","sendUniformData","uniformLocations","chooseRightDelta","uniform2fv","blurScale","_defineProperty","classRegistry","setClass"],"mappings":"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"}
1
+ {"version":3,"file":"Blur.mjs","sources":["../../../src/filters/Blur.ts"],"sourcesContent":["import { createCanvasElement } from '../util/misc/dom';\nimport { BaseFilter } from './BaseFilter';\nimport type {\n TWebGLPipelineState,\n T2DPipelineState,\n TWebGLUniformLocationMap,\n} from './typedefs';\nimport { isWebGLPipelineState } from './utils';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/blur';\n\ntype BlurOwnProps = {\n blur: number;\n};\n\nexport const blurDefaultValues: BlurOwnProps = {\n blur: 0,\n};\n\n/**\n * Blur filter class\n * @example\n * const filter = new Blur({\n * blur: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\nexport class Blur extends BaseFilter<'Blur', BlurOwnProps> {\n /**\n * blur value, in percentage of image dimensions.\n * specific to keep the image blur constant at different resolutions\n * range between 0 and 1.\n * @type Number\n * @default\n */\n declare blur: BlurOwnProps['blur'];\n\n declare horizontal: boolean;\n declare aspectRatio: number;\n\n static type = 'Blur';\n\n static defaults = blurDefaultValues;\n\n static uniformLocations = ['uDelta'];\n\n getFragmentSource(): string {\n return fragmentSource;\n }\n\n applyTo(options: TWebGLPipelineState | T2DPipelineState) {\n if (isWebGLPipelineState(options)) {\n // this aspectRatio is used to give the same blur to vertical and horizontal\n this.aspectRatio = options.sourceWidth / options.sourceHeight;\n options.passes++;\n this._setupFrameBuffer(options);\n this.horizontal = true;\n this.applyToWebGL(options);\n this._swapTextures(options);\n this._setupFrameBuffer(options);\n this.horizontal = false;\n this.applyToWebGL(options);\n this._swapTextures(options);\n } else {\n this.applyTo2d(options);\n }\n }\n\n applyTo2d(options: T2DPipelineState) {\n options.imageData = this.simpleBlur(options);\n }\n\n simpleBlur({\n ctx,\n imageData,\n filterBackend: { resources },\n }: T2DPipelineState) {\n const { width, height } = imageData;\n if (!resources.blurLayer1) {\n resources.blurLayer1 = createCanvasElement();\n resources.blurLayer2 = createCanvasElement();\n }\n const canvas1 = resources.blurLayer1!;\n const canvas2 = resources.blurLayer2!;\n if (canvas1.width !== width || canvas1.height !== height) {\n canvas2.width = canvas1.width = width;\n canvas2.height = canvas1.height = height;\n }\n const ctx1 = canvas1.getContext('2d')!,\n ctx2 = canvas2.getContext('2d')!,\n nSamples = 15,\n blur = this.blur * 0.06 * 0.5;\n let random, percent, j, i;\n\n // load first canvas\n ctx1.putImageData(imageData, 0, 0);\n ctx2.clearRect(0, 0, width, height);\n\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * width + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, j, random);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * height + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, random, j);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n ctx.drawImage(canvas1, 0, 0);\n const newImageData = ctx.getImageData(0, 0, canvas1.width, canvas1.height);\n ctx1.globalAlpha = 1;\n ctx1.clearRect(0, 0, canvas1.width, canvas1.height);\n return newImageData;\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n const delta = this.chooseRightDelta();\n gl.uniform2fv(uniformLocations.delta, delta);\n }\n\n isNeutralState() {\n return this.blur === 0;\n }\n\n /**\n * choose right value of image percentage to blur with\n * @returns {Array} a numeric array with delta values\n */\n chooseRightDelta() {\n let blurScale = 1;\n const delta = [0, 0];\n if (this.horizontal) {\n if (this.aspectRatio > 1) {\n // image is wide, i want to shrink radius horizontal\n blurScale = 1 / this.aspectRatio;\n }\n } else {\n if (this.aspectRatio < 1) {\n // image is tall, i want to shrink radius vertical\n blurScale = this.aspectRatio;\n }\n }\n const blur = blurScale * this.blur * 0.12;\n if (this.horizontal) {\n delta[0] = blur;\n } else {\n delta[1] = blur;\n }\n return delta;\n }\n}\n\nclassRegistry.setClass(Blur);\n"],"names":["blurDefaultValues","blur","Blur","BaseFilter","getFragmentSource","fragmentSource","applyTo","options","isWebGLPipelineState","aspectRatio","sourceWidth","sourceHeight","passes","_setupFrameBuffer","horizontal","applyToWebGL","_swapTextures","applyTo2d","imageData","simpleBlur","_ref","ctx","filterBackend","resources","width","height","blurLayer1","createCanvasElement","blurLayer2","canvas1","canvas2","ctx1","getContext","ctx2","nSamples","random","percent","j","i","putImageData","clearRect","Math","globalAlpha","abs","drawImage","newImageData","getImageData","sendUniformData","gl","uniformLocations","delta","chooseRightDelta","uniform2fv","isNeutralState","blurScale","_defineProperty","classRegistry","setClass"],"mappings":"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"}
@@ -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 myFilterDefaultValues: Partial<TClassProperties<MyFilter>>;
3
+ type MyFilterOwnProps = {
4
+ myParameter: number;
5
+ };
6
+ export declare const myFilterDefaultValues: MyFilterOwnProps;
5
7
  /**
6
8
  * MyFilter filter class
7
9
  * @example
@@ -11,7 +13,7 @@ export declare const myFilterDefaultValues: Partial<TClassProperties<MyFilter>>;
11
13
  * object.filters.push(filter);
12
14
  * object.applyFilters();
13
15
  */
14
- export declare class MyFilter extends BaseFilter {
16
+ export declare class MyFilter extends BaseFilter<'MyFilter', MyFilterOwnProps> {
15
17
  /**
16
18
  * MyFilter value, from -1 to 1.
17
19
  * translated to -255 to 255 for 2d
@@ -19,8 +21,10 @@ export declare class MyFilter extends BaseFilter {
19
21
  * @param {Number} myParameter
20
22
  * @default
21
23
  */
22
- myParameter: number;
23
- static defaults: Partial<TClassProperties<MyFilter>>;
24
+ myParameter: MyFilterOwnProps['myParameter'];
25
+ static type: string;
26
+ static defaults: MyFilterOwnProps;
27
+ static uniformLocations: string[];
24
28
  getFragmentSource(): string;
25
29
  /**
26
30
  * Apply the MyFilter operation to a Uint8ClampedArray representing the pixels of an image.
@@ -29,13 +33,6 @@ export declare class MyFilter extends BaseFilter {
29
33
  * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.
30
34
  */
31
35
  applyTo2d(options: 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
36
  /**
40
37
  * Send data from this filter to its shader program's uniforms.
41
38
  *
@@ -43,6 +40,7 @@ export declare class MyFilter extends BaseFilter {
43
40
  * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
44
41
  */
45
42
  sendUniformData(gl: WebGLRenderingContext, uniformLocations: TWebGLUniformLocationMap): void;
46
- static fromObject(object: any): Promise<BaseFilter>;
43
+ static fromObject(object: any): Promise<MyFilter>;
47
44
  }
45
+ export {};
48
46
  //# sourceMappingURL=Boilerplate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Boilerplate.d.ts","sourceRoot":"","sources":["../../../src/filters/Boilerplate.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;AAE7E,eAAO,MAAM,qBAAqB,EAAE,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAGrE,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,QAAS,SAAQ,UAAU;IACtC;;;;;;OAMG;IACK,WAAW,EAAE,MAAM,CAAC;IAE5B,MAAM,CAAC,QAAQ,sCAAyB;IAExC,iBAAiB;IAajB;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,gBAAgB;IAWnC;;;;;OAKG;IACH,mBAAmB,CACjB,EAAE,EAAE,qBAAqB,EACzB,OAAO,EAAE,YAAY,GACpB,wBAAwB;IAM3B;;;;;OAKG;IACH,eAAe,CACb,EAAE,EAAE,qBAAqB,EACzB,gBAAgB,EAAE,wBAAwB;WAK/B,UAAU,CAAC,MAAM,EAAE,GAAG;CAKpC"}
1
+ {"version":3,"file":"Boilerplate.d.ts","sourceRoot":"","sources":["../../../src/filters/Boilerplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE7E,KAAK,gBAAgB,GAAG;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,gBAEnC,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,QAAS,SAAQ,UAAU,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACpE;;;;;;OAMG;IACK,WAAW,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAErD,MAAM,CAAC,IAAI,SAAc;IAEzB,MAAM,CAAC,QAAQ,mBAAyB;IAExC,MAAM,CAAC,gBAAgB,WAAoB;IAE3C,iBAAiB;IAajB;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,gBAAgB;IAWnC;;;;;OAKG;IACH,eAAe,CACb,EAAE,EAAE,qBAAqB,EACzB,gBAAgB,EAAE,wBAAwB;WAK/B,UAAU,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;CAKxD"}
@@ -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 brightnessDefaultValues: Partial<TClassProperties<Brightness>>;
3
+ type BrightnessOwnProps = {
4
+ brightness: number;
5
+ };
6
+ export declare const brightnessDefaultValues: BrightnessOwnProps;
5
7
  /**
6
8
  * Brightness filter class
7
9
  * @example
@@ -11,7 +13,7 @@ export declare const brightnessDefaultValues: Partial<TClassProperties<Brightnes
11
13
  * object.filters.push(filter);
12
14
  * object.applyFilters();
13
15
  */
14
- export declare class Brightness extends BaseFilter {
16
+ export declare class Brightness extends BaseFilter<'Brightness', BrightnessOwnProps> {
15
17
  /**
16
18
  * Brightness value, from -1 to 1.
17
19
  * translated to -255 to 255 for 2d
@@ -19,9 +21,10 @@ export declare class Brightness extends BaseFilter {
19
21
  * @param {Number} brightness
20
22
  * @default
21
23
  */
22
- brightness: number;
24
+ brightness: BrightnessOwnProps['brightness'];
23
25
  static type: string;
24
- static defaults: Partial<TClassProperties<Brightness>>;
26
+ static defaults: BrightnessOwnProps;
27
+ static uniformLocations: string[];
25
28
  getFragmentSource(): string;
26
29
  /**
27
30
  * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.
@@ -30,13 +33,7 @@ export declare class Brightness extends BaseFilter {
30
33
  * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.
31
34
  */
32
35
  applyTo2d({ imageData: { data } }: T2DPipelineState): void;
33
- /**
34
- * Return WebGL uniform locations for this filter's shader.
35
- *
36
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
37
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
38
- */
39
- getUniformLocations(gl: WebGLRenderingContext, program: WebGLProgram): TWebGLUniformLocationMap;
36
+ isNeutralState(): boolean;
40
37
  /**
41
38
  * Send data from this filter to its shader program's uniforms.
42
39
  *
@@ -45,4 +42,5 @@ export declare class Brightness extends BaseFilter {
45
42
  */
46
43
  sendUniformData(gl: WebGLRenderingContext, uniformLocations: TWebGLUniformLocationMap): void;
47
44
  }
45
+ export {};
48
46
  //# sourceMappingURL=Brightness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Brightness.d.ts","sourceRoot":"","sources":["../../../src/filters/Brightness.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;AAG7E,eAAO,MAAM,uBAAuB,EAAE,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAGzE,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,UAAW,SAAQ,UAAU;IACxC;;;;;;OAMG;IACK,UAAU,EAAE,MAAM,CAAC;IAE3B,MAAM,CAAC,IAAI,SAAgB;IAE3B,MAAM,CAAC,QAAQ,wCAA2B;IAE1C,iBAAiB;IAIjB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB;IAYnD;;;;;OAKG;IACH,mBAAmB,CACjB,EAAE,EAAE,qBAAqB,EACzB,OAAO,EAAE,YAAY,GACpB,wBAAwB;IAM3B;;;;;OAKG;IACH,eAAe,CACb,EAAE,EAAE,qBAAqB,EACzB,gBAAgB,EAAE,wBAAwB;CAI7C"}
1
+ {"version":3,"file":"Brightness.d.ts","sourceRoot":"","sources":["../../../src/filters/Brightness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAI7E,KAAK,kBAAkB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAErC,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,UAAW,SAAQ,UAAU,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAC1E;;;;;;OAMG;IACK,UAAU,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAErD,MAAM,CAAC,IAAI,SAAgB;IAE3B,MAAM,CAAC,QAAQ,qBAA2B;IAE1C,MAAM,CAAC,gBAAgB,WAAmB;IAE1C,iBAAiB;IAIjB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB;IASnD,cAAc;IAId;;;;;OAKG;IACH,eAAe,CACb,EAAE,EAAE,qBAAqB,EACzB,gBAAgB,EAAE,wBAAwB;CAI7C"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as s}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{BaseFilter as t}from"./BaseFilter.min.mjs";import{classRegistry as r}from"../ClassRegistry.min.mjs";import{fragmentSource as e}from"./shaders/brightness.min.mjs";const i={brightness:0,mainParameter:"brightness"};class n extends t{getFragmentSource(){return e}applyTo2d(s){let{imageData:{data:t}}=s;if(0===this.brightness)return;const r=Math.round(255*this.brightness);for(let s=0;s<t.length;s+=4)t[s]=t[s]+r,t[s+1]=t[s+1]+r,t[s+2]=t[s+2]+r}getUniformLocations(s,t){return{uBrightness:s.getUniformLocation(t,"uBrightness")}}sendUniformData(s,t){s.uniform1f(t.uBrightness,this.brightness)}}s(n,"type","Brightness"),s(n,"defaults",i),r.setClass(n);export{n as Brightness,i as brightnessDefaultValues};
1
+ import{defineProperty as s}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{BaseFilter as t}from"./BaseFilter.min.mjs";import{classRegistry as r}from"../ClassRegistry.min.mjs";import{fragmentSource as e}from"./shaders/brightness.min.mjs";const i={brightness:0};class n extends t{getFragmentSource(){return e}applyTo2d(s){let{imageData:{data:t}}=s;const r=Math.round(255*this.brightness);for(let s=0;s<t.length;s+=4)t[s]=t[s]+r,t[s+1]=t[s+1]+r,t[s+2]=t[s+2]+r}isNeutralState(){return 0===this.brightness}sendUniformData(s,t){s.uniform1f(t.uBrightness,this.brightness)}}s(n,"type","Brightness"),s(n,"defaults",i),s(n,"uniformLocations",["uBrightness"]),r.setClass(n);export{n as Brightness,i as brightnessDefaultValues};
2
2
  //# sourceMappingURL=Brightness.min.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Brightness.min.mjs","sources":["../../../src/filters/Brightness.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/brightness';\nexport const brightnessDefaultValues: Partial<TClassProperties<Brightness>> = {\n brightness: 0,\n mainParameter: 'brightness',\n};\n\n/**\n * Brightness filter class\n * @example\n * const filter = new Brightness({\n * brightness: 0.05\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Brightness extends BaseFilter {\n /**\n * Brightness value, from -1 to 1.\n * translated to -255 to 255 for 2d\n * 0.0039215686 is the part of 1 that get translated to 1 in 2d\n * @param {Number} brightness\n * @default\n */\n declare brightness: number;\n\n static type = 'Brightness';\n\n static defaults = brightnessDefaultValues;\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.brightness === 0) {\n return;\n }\n const brightness = Math.round(this.brightness * 255);\n for (let i = 0; i < data.length; i += 4) {\n data[i] = data[i] + brightness;\n data[i + 1] = data[i + 1] + brightness;\n data[i + 2] = data[i + 2] + brightness;\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 uBrightness: gl.getUniformLocation(program, 'uBrightness'),\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.uBrightness, this.brightness);\n }\n}\n\nclassRegistry.setClass(Brightness);\n"],"names":["brightnessDefaultValues","brightness","mainParameter","Brightness","BaseFilter","getFragmentSource","fragmentSource","applyTo2d","_ref","imageData","data","this","Math","round","i","length","getUniformLocations","gl","program","uBrightness","getUniformLocation","sendUniformData","uniformLocations","uniform1f","_defineProperty","classRegistry","setClass"],"mappings":"2PAKO,MAAMA,EAAiE,CAC5EC,WAAY,EACZC,cAAe,cAYV,MAAMC,UAAmBC,EAc9BC,iBAAAA,GACE,OAAOC,CACT,CAQAC,SAAAA,CAASC,GAA4C,IAAzCC,WAAWC,KAAEA,IAA0BF,EACjD,GAAwB,IAApBG,KAAKV,WACP,OAEF,MAAMA,EAAaW,KAAKC,MAAwB,IAAlBF,KAAKV,YACnC,IAAK,IAAIa,EAAI,EAAGA,EAAIJ,EAAKK,OAAQD,GAAK,EACpCJ,EAAKI,GAAKJ,EAAKI,GAAKb,EACpBS,EAAKI,EAAI,GAAKJ,EAAKI,EAAI,GAAKb,EAC5BS,EAAKI,EAAI,GAAKJ,EAAKI,EAAI,GAAKb,CAEhC,CAQAe,mBAAAA,CACEC,EACAC,GAEA,MAAO,CACLC,YAAaF,EAAGG,mBAAmBF,EAAS,eAEhD,CAQAG,eAAAA,CACEJ,EACAK,GAEAL,EAAGM,UAAUD,EAAiBH,YAAaR,KAAKV,WAClD,EA7DAuB,EADWrB,EAAU,OAUP,cAAYqB,EAVfrB,EAAU,WAYHH,GAqDpByB,EAAcC,SAASvB"}
1
+ {"version":3,"file":"Brightness.min.mjs","sources":["../../../src/filters/Brightness.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/brightness';\n\ntype BrightnessOwnProps = {\n brightness: number;\n};\n\nexport const brightnessDefaultValues: BrightnessOwnProps = {\n brightness: 0,\n};\n\n/**\n * Brightness filter class\n * @example\n * const filter = new Brightness({\n * brightness: 0.05\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Brightness extends BaseFilter<'Brightness', BrightnessOwnProps> {\n /**\n * Brightness value, from -1 to 1.\n * translated to -255 to 255 for 2d\n * 0.0039215686 is the part of 1 that get translated to 1 in 2d\n * @param {Number} brightness\n * @default\n */\n declare brightness: BrightnessOwnProps['brightness'];\n\n static type = 'Brightness';\n\n static defaults = brightnessDefaultValues;\n\n static uniformLocations = ['uBrightness'];\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 brightness = Math.round(this.brightness * 255);\n for (let i = 0; i < data.length; i += 4) {\n data[i] = data[i] + brightness;\n data[i + 1] = data[i + 1] + brightness;\n data[i + 2] = data[i + 2] + brightness;\n }\n }\n\n isNeutralState() {\n return this.brightness === 0;\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.uBrightness, this.brightness);\n }\n}\n\nclassRegistry.setClass(Brightness);\n"],"names":["brightnessDefaultValues","brightness","Brightness","BaseFilter","getFragmentSource","fragmentSource","applyTo2d","_ref","imageData","data","Math","round","this","i","length","isNeutralState","sendUniformData","gl","uniformLocations","uniform1f","uBrightness","_defineProperty","classRegistry","setClass"],"mappings":"2PASO,MAAMA,EAA8C,CACzDC,WAAY,GAYP,MAAMC,UAAmBC,EAgB9BC,iBAAAA,GACE,OAAOC,CACT,CAQAC,SAAAA,CAASC,GAA4C,IAAzCC,WAAWC,KAAEA,IAA0BF,EACjD,MAAMN,EAAaS,KAAKC,MAAwB,IAAlBC,KAAKX,YACnC,IAAK,IAAIY,EAAI,EAAGA,EAAIJ,EAAKK,OAAQD,GAAK,EACpCJ,EAAKI,GAAKJ,EAAKI,GAAKZ,EACpBQ,EAAKI,EAAI,GAAKJ,EAAKI,EAAI,GAAKZ,EAC5BQ,EAAKI,EAAI,GAAKJ,EAAKI,EAAI,GAAKZ,CAEhC,CAEAc,cAAAA,GACE,OAA2B,IAApBH,KAAKX,UACd,CAQAe,eAAAA,CACEC,EACAC,GAEAD,EAAGE,UAAUD,EAAiBE,YAAaR,KAAKX,WAClD,EAjDAoB,EADWnB,EAAU,OAUP,cAAYmB,EAVfnB,EAAU,WAYHF,GAAuBqB,EAZ9BnB,EAce,mBAAA,CAAC,gBAuC7BoB,EAAcC,SAASrB"}
@@ -4,8 +4,7 @@ import { classRegistry } from '../ClassRegistry.mjs';
4
4
  import { fragmentSource } from './shaders/brightness.mjs';
5
5
 
6
6
  const brightnessDefaultValues = {
7
- brightness: 0,
8
- mainParameter: 'brightness'
7
+ brightness: 0
9
8
  };
10
9
 
11
10
  /**
@@ -34,9 +33,6 @@ class Brightness extends BaseFilter {
34
33
  data
35
34
  }
36
35
  } = _ref;
37
- if (this.brightness === 0) {
38
- return;
39
- }
40
36
  const brightness = Math.round(this.brightness * 255);
41
37
  for (let i = 0; i < data.length; i += 4) {
42
38
  data[i] = data[i] + brightness;
@@ -44,17 +40,8 @@ class Brightness extends BaseFilter {
44
40
  data[i + 2] = data[i + 2] + brightness;
45
41
  }
46
42
  }
47
-
48
- /**
49
- * Return WebGL uniform locations for this filter's shader.
50
- *
51
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
52
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
53
- */
54
- getUniformLocations(gl, program) {
55
- return {
56
- uBrightness: gl.getUniformLocation(program, 'uBrightness')
57
- };
43
+ isNeutralState() {
44
+ return this.brightness === 0;
58
45
  }
59
46
 
60
47
  /**
@@ -76,6 +63,7 @@ class Brightness extends BaseFilter {
76
63
  */
77
64
  _defineProperty(Brightness, "type", 'Brightness');
78
65
  _defineProperty(Brightness, "defaults", brightnessDefaultValues);
66
+ _defineProperty(Brightness, "uniformLocations", ['uBrightness']);
79
67
  classRegistry.setClass(Brightness);
80
68
 
81
69
  export { Brightness, brightnessDefaultValues };
@@ -1 +1 @@
1
- {"version":3,"file":"Brightness.mjs","sources":["../../../src/filters/Brightness.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/brightness';\nexport const brightnessDefaultValues: Partial<TClassProperties<Brightness>> = {\n brightness: 0,\n mainParameter: 'brightness',\n};\n\n/**\n * Brightness filter class\n * @example\n * const filter = new Brightness({\n * brightness: 0.05\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Brightness extends BaseFilter {\n /**\n * Brightness value, from -1 to 1.\n * translated to -255 to 255 for 2d\n * 0.0039215686 is the part of 1 that get translated to 1 in 2d\n * @param {Number} brightness\n * @default\n */\n declare brightness: number;\n\n static type = 'Brightness';\n\n static defaults = brightnessDefaultValues;\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.brightness === 0) {\n return;\n }\n const brightness = Math.round(this.brightness * 255);\n for (let i = 0; i < data.length; i += 4) {\n data[i] = data[i] + brightness;\n data[i + 1] = data[i + 1] + brightness;\n data[i + 2] = data[i + 2] + brightness;\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 uBrightness: gl.getUniformLocation(program, 'uBrightness'),\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.uBrightness, this.brightness);\n }\n}\n\nclassRegistry.setClass(Brightness);\n"],"names":["brightnessDefaultValues","brightness","mainParameter","Brightness","BaseFilter","getFragmentSource","fragmentSource","applyTo2d","_ref","imageData","data","Math","round","i","length","getUniformLocations","gl","program","uBrightness","getUniformLocation","sendUniformData","uniformLocations","uniform1f","_defineProperty","classRegistry","setClass"],"mappings":";;;;;AAKO,MAAMA,uBAA8D,GAAG;AAC5EC,EAAAA,UAAU,EAAE,CAAC;AACbC,EAAAA,aAAa,EAAE,YAAA;AACjB,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,UAAU,SAASC,UAAU,CAAC;AAczCC,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,CAACP,UAAU,KAAK,CAAC,EAAE;AACzB,MAAA,OAAA;AACF,KAAA;IACA,MAAMA,UAAU,GAAGU,IAAI,CAACC,KAAK,CAAC,IAAI,CAACX,UAAU,GAAG,GAAG,CAAC,CAAA;AACpD,IAAA,KAAK,IAAIY,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,IAAI,CAACI,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MACvCH,IAAI,CAACG,CAAC,CAAC,GAAGH,IAAI,CAACG,CAAC,CAAC,GAAGZ,UAAU,CAAA;AAC9BS,MAAAA,IAAI,CAACG,CAAC,GAAG,CAAC,CAAC,GAAGH,IAAI,CAACG,CAAC,GAAG,CAAC,CAAC,GAAGZ,UAAU,CAAA;AACtCS,MAAAA,IAAI,CAACG,CAAC,GAAG,CAAC,CAAC,GAAGH,IAAI,CAACG,CAAC,GAAG,CAAC,CAAC,GAAGZ,UAAU,CAAA;AACxC,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEc,EAAAA,mBAAmBA,CACjBC,EAAyB,EACzBC,OAAqB,EACK;IAC1B,OAAO;AACLC,MAAAA,WAAW,EAAEF,EAAE,CAACG,kBAAkB,CAACF,OAAO,EAAE,aAAa,CAAA;KAC1D,CAAA;AACH,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEG,EAAAA,eAAeA,CACbJ,EAAyB,EACzBK,gBAA0C,EAC1C;IACAL,EAAE,CAACM,SAAS,CAACD,gBAAgB,CAACH,WAAW,EAAE,IAAI,CAACjB,UAAU,CAAC,CAAA;AAC7D,GAAA;AACF,CAAA;AA9DE;AACF;AACA;AACA;AACA;AACA;AACA;AANEsB,eAAA,CADWpB,UAAU,EAAA,MAAA,EAUP,YAAY,CAAA,CAAA;AAAAoB,eAAA,CAVfpB,UAAU,EAAA,UAAA,EAYHH,uBAAuB,CAAA,CAAA;AAqD3CwB,aAAa,CAACC,QAAQ,CAACtB,UAAU,CAAC;;;;"}
1
+ {"version":3,"file":"Brightness.mjs","sources":["../../../src/filters/Brightness.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/brightness';\n\ntype BrightnessOwnProps = {\n brightness: number;\n};\n\nexport const brightnessDefaultValues: BrightnessOwnProps = {\n brightness: 0,\n};\n\n/**\n * Brightness filter class\n * @example\n * const filter = new Brightness({\n * brightness: 0.05\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Brightness extends BaseFilter<'Brightness', BrightnessOwnProps> {\n /**\n * Brightness value, from -1 to 1.\n * translated to -255 to 255 for 2d\n * 0.0039215686 is the part of 1 that get translated to 1 in 2d\n * @param {Number} brightness\n * @default\n */\n declare brightness: BrightnessOwnProps['brightness'];\n\n static type = 'Brightness';\n\n static defaults = brightnessDefaultValues;\n\n static uniformLocations = ['uBrightness'];\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 brightness = Math.round(this.brightness * 255);\n for (let i = 0; i < data.length; i += 4) {\n data[i] = data[i] + brightness;\n data[i + 1] = data[i + 1] + brightness;\n data[i + 2] = data[i + 2] + brightness;\n }\n }\n\n isNeutralState() {\n return this.brightness === 0;\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.uBrightness, this.brightness);\n }\n}\n\nclassRegistry.setClass(Brightness);\n"],"names":["brightnessDefaultValues","brightness","Brightness","BaseFilter","getFragmentSource","fragmentSource","applyTo2d","_ref","imageData","data","Math","round","i","length","isNeutralState","sendUniformData","gl","uniformLocations","uniform1f","uBrightness","_defineProperty","classRegistry","setClass"],"mappings":";;;;;AASO,MAAMA,uBAA2C,GAAG;AACzDC,EAAAA,UAAU,EAAE,CAAA;AACd,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,UAAU,SAASC,UAAU,CAAmC;AAgB3EC,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;IACjD,MAAMN,UAAU,GAAGS,IAAI,CAACC,KAAK,CAAC,IAAI,CAACV,UAAU,GAAG,GAAG,CAAC,CAAA;AACpD,IAAA,KAAK,IAAIW,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,IAAI,CAACI,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MACvCH,IAAI,CAACG,CAAC,CAAC,GAAGH,IAAI,CAACG,CAAC,CAAC,GAAGX,UAAU,CAAA;AAC9BQ,MAAAA,IAAI,CAACG,CAAC,GAAG,CAAC,CAAC,GAAGH,IAAI,CAACG,CAAC,GAAG,CAAC,CAAC,GAAGX,UAAU,CAAA;AACtCQ,MAAAA,IAAI,CAACG,CAAC,GAAG,CAAC,CAAC,GAAGH,IAAI,CAACG,CAAC,GAAG,CAAC,CAAC,GAAGX,UAAU,CAAA;AACxC,KAAA;AACF,GAAA;AAEAa,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAO,IAAI,CAACb,UAAU,KAAK,CAAC,CAAA;AAC9B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEc,EAAAA,eAAeA,CACbC,EAAyB,EACzBC,gBAA0C,EAC1C;IACAD,EAAE,CAACE,SAAS,CAACD,gBAAgB,CAACE,WAAW,EAAE,IAAI,CAAClB,UAAU,CAAC,CAAA;AAC7D,GAAA;AACF,CAAA;AAlDE;AACF;AACA;AACA;AACA;AACA;AACA;AANEmB,eAAA,CADWlB,UAAU,EAAA,MAAA,EAUP,YAAY,CAAA,CAAA;AAAAkB,eAAA,CAVflB,UAAU,EAAA,UAAA,EAYHF,uBAAuB,CAAA,CAAA;AAAAoB,eAAA,CAZ9BlB,UAAU,EAcK,kBAAA,EAAA,CAAC,aAAa,CAAC,CAAA,CAAA;AAuC3CmB,aAAa,CAACC,QAAQ,CAACpB,UAAU,CAAC;;;;"}
@@ -22,6 +22,6 @@ export declare class Canvas2dFilterBackend {
22
22
  * @param {Number} sourceHeight The height of the source input.
23
23
  * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.
24
24
  */
25
- applyFilters(filters: BaseFilter[], sourceElement: CanvasImageSource, sourceWidth: number, sourceHeight: number, targetCanvas: HTMLCanvasElement): T2DPipelineState | void;
25
+ applyFilters(filters: BaseFilter<string, Record<string, any>>[], sourceElement: CanvasImageSource, sourceWidth: number, sourceHeight: number, targetCanvas: HTMLCanvasElement): T2DPipelineState | void;
26
26
  }
27
27
  //# sourceMappingURL=Canvas2dFilterBackend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Canvas2dFilterBackend.d.ts","sourceRoot":"","sources":["../../../src/filters/Canvas2dFilterBackend.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEvE,qBAAa,qBAAqB;IAChC;;;;;;QAMI;IACJ,SAAS,EAAE,kBAAkB,CAAM;IAEnC;;;;;;;;;OASG;IACH,YAAY,CACV,OAAO,EAAE,UAAU,EAAE,EACrB,aAAa,EAAE,iBAAiB,EAChC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,iBAAiB,GAC9B,gBAAgB,GAAG,IAAI;CAgC3B"}
1
+ {"version":3,"file":"Canvas2dFilterBackend.d.ts","sourceRoot":"","sources":["../../../src/filters/Canvas2dFilterBackend.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEvE,qBAAa,qBAAqB;IAChC;;;;;;QAMI;IACJ,SAAS,EAAE,kBAAkB,CAAM;IAEnC;;;;;;;;;OASG;IACH,YAAY,CACV,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,EAClD,aAAa,EAAE,iBAAiB,EAChC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,iBAAiB,GAC9B,gBAAgB,GAAG,IAAI;CAgC3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"Canvas2dFilterBackend.min.mjs","sources":["../../../src/filters/Canvas2dFilterBackend.ts"],"sourcesContent":["/**\n * Canvas 2D filter backend.\n */\nimport type { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TPipelineResources } from './typedefs';\n\nexport class Canvas2dFilterBackend {\n /**\n * Experimental. This object is a sort of repository of help layers used to avoid\n * of recreating them during frequent filtering. If you are previewing a filter with\n * a slider you probably do not want to create help layers every filter step.\n * in this object there will be appended some canvases, created once, resized sometimes\n * cleared never. Clearing is left to the developer.\n **/\n resources: TPipelineResources = {};\n\n /**\n * Apply a set of filters against a source image and draw the filtered output\n * to the provided destination canvas.\n *\n * @param {EnhancedFilter} filters The filter to apply.\n * @param {HTMLImageElement|HTMLCanvasElement} sourceElement The source to be filtered.\n * @param {Number} sourceWidth The width of the source input.\n * @param {Number} sourceHeight The height of the source input.\n * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.\n */\n applyFilters(\n filters: BaseFilter[],\n sourceElement: CanvasImageSource,\n sourceWidth: number,\n sourceHeight: number,\n targetCanvas: HTMLCanvasElement\n ): T2DPipelineState | void {\n const ctx = targetCanvas.getContext('2d');\n if (!ctx) {\n return;\n }\n ctx.drawImage(sourceElement, 0, 0, sourceWidth, sourceHeight);\n const imageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n const originalImageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n const pipelineState: T2DPipelineState = {\n sourceWidth,\n sourceHeight,\n imageData,\n originalEl: sourceElement,\n originalImageData,\n canvasEl: targetCanvas,\n ctx,\n filterBackend: this,\n };\n filters.forEach((filter) => {\n filter.applyTo(pipelineState);\n });\n const { imageData: imageDataPostFilter } = pipelineState;\n if (\n imageDataPostFilter.width !== sourceWidth ||\n imageDataPostFilter.height !== sourceHeight\n ) {\n targetCanvas.width = imageDataPostFilter.width;\n targetCanvas.height = imageDataPostFilter.height;\n }\n ctx.putImageData(imageDataPostFilter, 0, 0);\n return pipelineState;\n }\n}\n"],"names":["Canvas2dFilterBackend","constructor","_defineProperty","this","applyFilters","filters","sourceElement","sourceWidth","sourceHeight","targetCanvas","ctx","getContext","drawImage","pipelineState","imageData","getImageData","originalEl","originalImageData","canvasEl","filterBackend","forEach","filter","applyTo","imageDataPostFilter","width","height","putImageData"],"mappings":"kFAMO,MAAMA,EAAsBC,WAAAA,GACjCC,EAAAC,KAAA,YAOgC,CAAA,EAAE,CAYlCC,YAAAA,CACEC,EACAC,EACAC,EACAC,EACAC,GAEA,MAAMC,EAAMD,EAAaE,WAAW,MACpC,IAAKD,EACH,OAEFA,EAAIE,UAAUN,EAAe,EAAG,EAAGC,EAAaC,GAChD,MAEMK,EAAkC,CACtCN,cACAC,eACAM,UALgBJ,EAAIK,aAAa,EAAG,EAAGR,EAAaC,GAMpDQ,WAAYV,EACZW,kBANwBP,EAAIK,aAAa,EAAG,EAAGR,EAAaC,GAO5DU,SAAUT,EACVC,MACAS,cAAehB,MAEjBE,EAAQe,SAASC,IACfA,EAAOC,QAAQT,EAAc,IAE/B,MAAQC,UAAWS,GAAwBV,EAS3C,OAPEU,EAAoBC,QAAUjB,GAC9BgB,EAAoBE,SAAWjB,IAE/BC,EAAae,MAAQD,EAAoBC,MACzCf,EAAagB,OAASF,EAAoBE,QAE5Cf,EAAIgB,aAAaH,EAAqB,EAAG,GAClCV,CACT"}
1
+ {"version":3,"file":"Canvas2dFilterBackend.min.mjs","sources":["../../../src/filters/Canvas2dFilterBackend.ts"],"sourcesContent":["/**\n * Canvas 2D filter backend.\n */\nimport type { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TPipelineResources } from './typedefs';\n\nexport class Canvas2dFilterBackend {\n /**\n * Experimental. This object is a sort of repository of help layers used to avoid\n * of recreating them during frequent filtering. If you are previewing a filter with\n * a slider you probably do not want to create help layers every filter step.\n * in this object there will be appended some canvases, created once, resized sometimes\n * cleared never. Clearing is left to the developer.\n **/\n resources: TPipelineResources = {};\n\n /**\n * Apply a set of filters against a source image and draw the filtered output\n * to the provided destination canvas.\n *\n * @param {EnhancedFilter} filters The filter to apply.\n * @param {HTMLImageElement|HTMLCanvasElement} sourceElement The source to be filtered.\n * @param {Number} sourceWidth The width of the source input.\n * @param {Number} sourceHeight The height of the source input.\n * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.\n */\n applyFilters(\n filters: BaseFilter<string, Record<string, any>>[],\n sourceElement: CanvasImageSource,\n sourceWidth: number,\n sourceHeight: number,\n targetCanvas: HTMLCanvasElement\n ): T2DPipelineState | void {\n const ctx = targetCanvas.getContext('2d');\n if (!ctx) {\n return;\n }\n ctx.drawImage(sourceElement, 0, 0, sourceWidth, sourceHeight);\n const imageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n const originalImageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n const pipelineState: T2DPipelineState = {\n sourceWidth,\n sourceHeight,\n imageData,\n originalEl: sourceElement,\n originalImageData,\n canvasEl: targetCanvas,\n ctx,\n filterBackend: this,\n };\n filters.forEach((filter) => {\n filter.applyTo(pipelineState);\n });\n const { imageData: imageDataPostFilter } = pipelineState;\n if (\n imageDataPostFilter.width !== sourceWidth ||\n imageDataPostFilter.height !== sourceHeight\n ) {\n targetCanvas.width = imageDataPostFilter.width;\n targetCanvas.height = imageDataPostFilter.height;\n }\n ctx.putImageData(imageDataPostFilter, 0, 0);\n return pipelineState;\n }\n}\n"],"names":["Canvas2dFilterBackend","constructor","_defineProperty","this","applyFilters","filters","sourceElement","sourceWidth","sourceHeight","targetCanvas","ctx","getContext","drawImage","pipelineState","imageData","getImageData","originalEl","originalImageData","canvasEl","filterBackend","forEach","filter","applyTo","imageDataPostFilter","width","height","putImageData"],"mappings":"kFAMO,MAAMA,EAAsBC,WAAAA,GACjCC,EAAAC,KAAA,YAOgC,CAAA,EAAE,CAYlCC,YAAAA,CACEC,EACAC,EACAC,EACAC,EACAC,GAEA,MAAMC,EAAMD,EAAaE,WAAW,MACpC,IAAKD,EACH,OAEFA,EAAIE,UAAUN,EAAe,EAAG,EAAGC,EAAaC,GAChD,MAEMK,EAAkC,CACtCN,cACAC,eACAM,UALgBJ,EAAIK,aAAa,EAAG,EAAGR,EAAaC,GAMpDQ,WAAYV,EACZW,kBANwBP,EAAIK,aAAa,EAAG,EAAGR,EAAaC,GAO5DU,SAAUT,EACVC,MACAS,cAAehB,MAEjBE,EAAQe,SAASC,IACfA,EAAOC,QAAQT,EAAc,IAE/B,MAAQC,UAAWS,GAAwBV,EAS3C,OAPEU,EAAoBC,QAAUjB,GAC9BgB,EAAoBE,SAAWjB,IAE/BC,EAAae,MAAQD,EAAoBC,MACzCf,EAAagB,OAASF,EAAoBE,QAE5Cf,EAAIgB,aAAaH,EAAqB,EAAG,GAClCV,CACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"Canvas2dFilterBackend.mjs","sources":["../../../src/filters/Canvas2dFilterBackend.ts"],"sourcesContent":["/**\n * Canvas 2D filter backend.\n */\nimport type { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TPipelineResources } from './typedefs';\n\nexport class Canvas2dFilterBackend {\n /**\n * Experimental. This object is a sort of repository of help layers used to avoid\n * of recreating them during frequent filtering. If you are previewing a filter with\n * a slider you probably do not want to create help layers every filter step.\n * in this object there will be appended some canvases, created once, resized sometimes\n * cleared never. Clearing is left to the developer.\n **/\n resources: TPipelineResources = {};\n\n /**\n * Apply a set of filters against a source image and draw the filtered output\n * to the provided destination canvas.\n *\n * @param {EnhancedFilter} filters The filter to apply.\n * @param {HTMLImageElement|HTMLCanvasElement} sourceElement The source to be filtered.\n * @param {Number} sourceWidth The width of the source input.\n * @param {Number} sourceHeight The height of the source input.\n * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.\n */\n applyFilters(\n filters: BaseFilter[],\n sourceElement: CanvasImageSource,\n sourceWidth: number,\n sourceHeight: number,\n targetCanvas: HTMLCanvasElement\n ): T2DPipelineState | void {\n const ctx = targetCanvas.getContext('2d');\n if (!ctx) {\n return;\n }\n ctx.drawImage(sourceElement, 0, 0, sourceWidth, sourceHeight);\n const imageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n const originalImageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n const pipelineState: T2DPipelineState = {\n sourceWidth,\n sourceHeight,\n imageData,\n originalEl: sourceElement,\n originalImageData,\n canvasEl: targetCanvas,\n ctx,\n filterBackend: this,\n };\n filters.forEach((filter) => {\n filter.applyTo(pipelineState);\n });\n const { imageData: imageDataPostFilter } = pipelineState;\n if (\n imageDataPostFilter.width !== sourceWidth ||\n imageDataPostFilter.height !== sourceHeight\n ) {\n targetCanvas.width = imageDataPostFilter.width;\n targetCanvas.height = imageDataPostFilter.height;\n }\n ctx.putImageData(imageDataPostFilter, 0, 0);\n return pipelineState;\n }\n}\n"],"names":["Canvas2dFilterBackend","constructor","_defineProperty","applyFilters","filters","sourceElement","sourceWidth","sourceHeight","targetCanvas","ctx","getContext","drawImage","imageData","getImageData","originalImageData","pipelineState","originalEl","canvasEl","filterBackend","forEach","filter","applyTo","imageDataPostFilter","width","height","putImageData"],"mappings":";;AAAA;AACA;AACA;;AAIO,MAAMA,qBAAqB,CAAC;EAAAC,WAAA,GAAA;AACjC;AACF;AACA;AACA;AACA;AACA;AACA;IANEC,eAAA,CAAA,IAAA,EAAA,WAAA,EAOgC,EAAE,CAAA,CAAA;AAAA,GAAA;AAElC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,YAAYA,CACVC,OAAqB,EACrBC,aAAgC,EAChCC,WAAmB,EACnBC,YAAoB,EACpBC,YAA+B,EACN;AACzB,IAAA,MAAMC,GAAG,GAAGD,YAAY,CAACE,UAAU,CAAC,IAAI,CAAC,CAAA;IACzC,IAAI,CAACD,GAAG,EAAE;AACR,MAAA,OAAA;AACF,KAAA;AACAA,IAAAA,GAAG,CAACE,SAAS,CAACN,aAAa,EAAE,CAAC,EAAE,CAAC,EAAEC,WAAW,EAAEC,YAAY,CAAC,CAAA;AAC7D,IAAA,MAAMK,SAAS,GAAGH,GAAG,CAACI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAEP,WAAW,EAAEC,YAAY,CAAC,CAAA;AACnE,IAAA,MAAMO,iBAAiB,GAAGL,GAAG,CAACI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAEP,WAAW,EAAEC,YAAY,CAAC,CAAA;AAC3E,IAAA,MAAMQ,aAA+B,GAAG;MACtCT,WAAW;MACXC,YAAY;MACZK,SAAS;AACTI,MAAAA,UAAU,EAAEX,aAAa;MACzBS,iBAAiB;AACjBG,MAAAA,QAAQ,EAAET,YAAY;MACtBC,GAAG;AACHS,MAAAA,aAAa,EAAE,IAAA;KAChB,CAAA;AACDd,IAAAA,OAAO,CAACe,OAAO,CAAEC,MAAM,IAAK;AAC1BA,MAAAA,MAAM,CAACC,OAAO,CAACN,aAAa,CAAC,CAAA;AAC/B,KAAC,CAAC,CAAA;IACF,MAAM;AAAEH,MAAAA,SAAS,EAAEU,mBAAAA;AAAoB,KAAC,GAAGP,aAAa,CAAA;IACxD,IACEO,mBAAmB,CAACC,KAAK,KAAKjB,WAAW,IACzCgB,mBAAmB,CAACE,MAAM,KAAKjB,YAAY,EAC3C;AACAC,MAAAA,YAAY,CAACe,KAAK,GAAGD,mBAAmB,CAACC,KAAK,CAAA;AAC9Cf,MAAAA,YAAY,CAACgB,MAAM,GAAGF,mBAAmB,CAACE,MAAM,CAAA;AAClD,KAAA;IACAf,GAAG,CAACgB,YAAY,CAACH,mBAAmB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAC3C,IAAA,OAAOP,aAAa,CAAA;AACtB,GAAA;AACF;;;;"}
1
+ {"version":3,"file":"Canvas2dFilterBackend.mjs","sources":["../../../src/filters/Canvas2dFilterBackend.ts"],"sourcesContent":["/**\n * Canvas 2D filter backend.\n */\nimport type { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TPipelineResources } from './typedefs';\n\nexport class Canvas2dFilterBackend {\n /**\n * Experimental. This object is a sort of repository of help layers used to avoid\n * of recreating them during frequent filtering. If you are previewing a filter with\n * a slider you probably do not want to create help layers every filter step.\n * in this object there will be appended some canvases, created once, resized sometimes\n * cleared never. Clearing is left to the developer.\n **/\n resources: TPipelineResources = {};\n\n /**\n * Apply a set of filters against a source image and draw the filtered output\n * to the provided destination canvas.\n *\n * @param {EnhancedFilter} filters The filter to apply.\n * @param {HTMLImageElement|HTMLCanvasElement} sourceElement The source to be filtered.\n * @param {Number} sourceWidth The width of the source input.\n * @param {Number} sourceHeight The height of the source input.\n * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.\n */\n applyFilters(\n filters: BaseFilter<string, Record<string, any>>[],\n sourceElement: CanvasImageSource,\n sourceWidth: number,\n sourceHeight: number,\n targetCanvas: HTMLCanvasElement\n ): T2DPipelineState | void {\n const ctx = targetCanvas.getContext('2d');\n if (!ctx) {\n return;\n }\n ctx.drawImage(sourceElement, 0, 0, sourceWidth, sourceHeight);\n const imageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n const originalImageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n const pipelineState: T2DPipelineState = {\n sourceWidth,\n sourceHeight,\n imageData,\n originalEl: sourceElement,\n originalImageData,\n canvasEl: targetCanvas,\n ctx,\n filterBackend: this,\n };\n filters.forEach((filter) => {\n filter.applyTo(pipelineState);\n });\n const { imageData: imageDataPostFilter } = pipelineState;\n if (\n imageDataPostFilter.width !== sourceWidth ||\n imageDataPostFilter.height !== sourceHeight\n ) {\n targetCanvas.width = imageDataPostFilter.width;\n targetCanvas.height = imageDataPostFilter.height;\n }\n ctx.putImageData(imageDataPostFilter, 0, 0);\n return pipelineState;\n }\n}\n"],"names":["Canvas2dFilterBackend","constructor","_defineProperty","applyFilters","filters","sourceElement","sourceWidth","sourceHeight","targetCanvas","ctx","getContext","drawImage","imageData","getImageData","originalImageData","pipelineState","originalEl","canvasEl","filterBackend","forEach","filter","applyTo","imageDataPostFilter","width","height","putImageData"],"mappings":";;AAAA;AACA;AACA;;AAIO,MAAMA,qBAAqB,CAAC;EAAAC,WAAA,GAAA;AACjC;AACF;AACA;AACA;AACA;AACA;AACA;IANEC,eAAA,CAAA,IAAA,EAAA,WAAA,EAOgC,EAAE,CAAA,CAAA;AAAA,GAAA;AAElC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,YAAYA,CACVC,OAAkD,EAClDC,aAAgC,EAChCC,WAAmB,EACnBC,YAAoB,EACpBC,YAA+B,EACN;AACzB,IAAA,MAAMC,GAAG,GAAGD,YAAY,CAACE,UAAU,CAAC,IAAI,CAAC,CAAA;IACzC,IAAI,CAACD,GAAG,EAAE;AACR,MAAA,OAAA;AACF,KAAA;AACAA,IAAAA,GAAG,CAACE,SAAS,CAACN,aAAa,EAAE,CAAC,EAAE,CAAC,EAAEC,WAAW,EAAEC,YAAY,CAAC,CAAA;AAC7D,IAAA,MAAMK,SAAS,GAAGH,GAAG,CAACI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAEP,WAAW,EAAEC,YAAY,CAAC,CAAA;AACnE,IAAA,MAAMO,iBAAiB,GAAGL,GAAG,CAACI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAEP,WAAW,EAAEC,YAAY,CAAC,CAAA;AAC3E,IAAA,MAAMQ,aAA+B,GAAG;MACtCT,WAAW;MACXC,YAAY;MACZK,SAAS;AACTI,MAAAA,UAAU,EAAEX,aAAa;MACzBS,iBAAiB;AACjBG,MAAAA,QAAQ,EAAET,YAAY;MACtBC,GAAG;AACHS,MAAAA,aAAa,EAAE,IAAA;KAChB,CAAA;AACDd,IAAAA,OAAO,CAACe,OAAO,CAAEC,MAAM,IAAK;AAC1BA,MAAAA,MAAM,CAACC,OAAO,CAACN,aAAa,CAAC,CAAA;AAC/B,KAAC,CAAC,CAAA;IACF,MAAM;AAAEH,MAAAA,SAAS,EAAEU,mBAAAA;AAAoB,KAAC,GAAGP,aAAa,CAAA;IACxD,IACEO,mBAAmB,CAACC,KAAK,KAAKjB,WAAW,IACzCgB,mBAAmB,CAACE,MAAM,KAAKjB,YAAY,EAC3C;AACAC,MAAAA,YAAY,CAACe,KAAK,GAAGD,mBAAmB,CAACC,KAAK,CAAA;AAC9Cf,MAAAA,YAAY,CAACgB,MAAM,GAAGF,mBAAmB,CAACE,MAAM,CAAA;AAClD,KAAA;IACAf,GAAG,CAACgB,YAAY,CAACH,mBAAmB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAC3C,IAAA,OAAOP,aAAa,CAAA;AACtB,GAAA;AACF;;;;"}
@@ -1,7 +1,10 @@
1
- import type { TClassProperties } from '../typedefs';
2
1
  import { BaseFilter } from './BaseFilter';
3
- import type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';
4
- export declare const colorMatrixDefaultValues: Partial<TClassProperties<ColorMatrix>>;
2
+ import type { T2DPipelineState, TMatColorMatrix, TWebGLUniformLocationMap } from './typedefs';
3
+ type ColorMatrixOwnProps = {
4
+ matrix: TMatColorMatrix;
5
+ colorsOnly: boolean;
6
+ };
7
+ export declare const colorMatrixDefaultValues: ColorMatrixOwnProps;
5
8
  /**
6
9
  * Color Matrix filter class
7
10
  * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}
@@ -18,7 +21,7 @@ export declare const colorMatrixDefaultValues: Partial<TClassProperties<ColorMat
18
21
  * object.filters.push(filter);
19
22
  * object.applyFilters();
20
23
  */
21
- export declare class ColorMatrix extends BaseFilter {
24
+ export declare class ColorMatrix<Name extends string = 'ColorMatrix', OwnProps extends object = ColorMatrixOwnProps> extends BaseFilter<Name, OwnProps> {
22
25
  /**
23
26
  * Colormatrix for pixels.
24
27
  * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning
@@ -27,17 +30,17 @@ export declare class ColorMatrix extends BaseFilter {
27
30
  * @param {Array} matrix array of 20 numbers.
28
31
  * @default
29
32
  */
30
- matrix: number[];
33
+ matrix: ColorMatrixOwnProps['matrix'];
31
34
  /**
32
35
  * Lock the colormatrix on the color part, skipping alpha, mainly for non webgl scenario
33
36
  * to save some calculation
34
37
  * @type Boolean
35
38
  * @default true
36
39
  */
37
- colorsOnly: boolean;
40
+ colorsOnly: ColorMatrixOwnProps['colorsOnly'];
38
41
  static type: string;
39
- static defaults: Partial<TClassProperties<ColorMatrix>>;
40
- setOptions({ matrix, ...options }: Record<string, any>): void;
42
+ static defaults: ColorMatrixOwnProps;
43
+ static uniformLocations: string[];
41
44
  getFragmentSource(): string;
42
45
  /**
43
46
  * Apply the ColorMatrix operation to a Uint8Array representing the pixels of an image.
@@ -46,13 +49,6 @@ export declare class ColorMatrix extends BaseFilter {
46
49
  * @param {ImageData} options.imageData The Uint8Array to be filtered.
47
50
  */
48
51
  applyTo2d(options: T2DPipelineState): void;
49
- /**
50
- * Return WebGL uniform locations for this filter's shader.
51
- *
52
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
53
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
54
- */
55
- getUniformLocations(gl: WebGLRenderingContext, program: WebGLProgram): TWebGLUniformLocationMap;
56
52
  /**
57
53
  * Send data from this filter to its shader program's uniforms.
58
54
  *
@@ -60,5 +56,11 @@ export declare class ColorMatrix extends BaseFilter {
60
56
  * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
61
57
  */
62
58
  sendUniformData(gl: WebGLRenderingContext, uniformLocations: TWebGLUniformLocationMap): void;
59
+ toObject(): {
60
+ type: Name;
61
+ } & OwnProps & {
62
+ matrix: TMatColorMatrix;
63
+ };
63
64
  }
65
+ export {};
64
66
  //# sourceMappingURL=ColorMatrix.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColorMatrix.d.ts","sourceRoot":"","sources":["../../../src/filters/ColorMatrix.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;AAG7E,eAAO,MAAM,wBAAwB,EAAE,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAKzE,CAAC;AAEJ;;;;;;;;;;;;;;;KAeK;AACL,qBAAa,WAAY,SAAQ,UAAU;IACzC;;;;;;;OAOG;IACK,MAAM,EAAE,MAAM,EAAE,CAAC;IAEzB;;;;;OAKG;IACK,UAAU,EAAE,OAAO,CAAC;IAE5B,MAAM,CAAC,IAAI,SAAiB;IAE5B,MAAM,CAAC,QAAQ,yCAA4B;IAE3C,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAQtD,iBAAiB,IAAI,MAAM;IAI3B;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,gBAAgB;IA0BnC;;;;;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;CAyB7C"}
1
+ {"version":3,"file":"ColorMatrix.d.ts","sourceRoot":"","sources":["../../../src/filters/ColorMatrix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAIpB,KAAK,mBAAmB,GAAG;IACzB,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,mBAGtC,CAAC;AAEF;;;;;;;;;;;;;;;KAeK;AACL,qBAAa,WAAW,CACtB,IAAI,SAAS,MAAM,GAAG,aAAa,EACnC,QAAQ,SAAS,MAAM,GAAG,mBAAmB,CAC7C,SAAQ,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC;IAClC;;;;;;;OAOG;IACK,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE9C;;;;;OAKG;IACK,UAAU,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAEtD,MAAM,CAAC,IAAI,SAAiB;IAE5B,MAAM,CAAC,QAAQ,sBAA4B;IAE3C,MAAM,CAAC,gBAAgB,WAAkC;IAEzD,iBAAiB,IAAI,MAAM;IAI3B;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,gBAAgB;IA0BnC;;;;;OAKG;IACH,eAAe,CACb,EAAE,EAAE,qBAAqB,EACzB,gBAAgB,EAAE,wBAAwB;IA0B5C,QAAQ;;;;;CAMT"}