fabric 5.3.0 → 6.0.0-beta1

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 (533) hide show
  1. package/.babelrc +11 -0
  2. package/.babelrcAlt +19 -0
  3. package/.browserslistrc +5 -0
  4. package/.eslintrc.js +43 -0
  5. package/.eslintrc.json +38 -46
  6. package/.eslintrc_tests +12 -0
  7. package/.gitattributes +2 -0
  8. package/.prettierignore +16 -0
  9. package/.prettierrc +4 -0
  10. package/CHANGELOG.md +491 -189
  11. package/CONTRIBUTING.md +226 -58
  12. package/README.md +188 -239
  13. package/bower.json +1 -3
  14. package/dist/fabric.d.ts +1021 -0
  15. package/dist/index.cjs +28027 -0
  16. package/dist/index.cjs.map +1 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.min.js +1 -0
  19. package/dist/index.mjs +27964 -0
  20. package/dist/index.mjs.map +1 -0
  21. package/dist/index.node.cjs +28092 -0
  22. package/dist/index.node.cjs.map +1 -0
  23. package/dist/index.node.d.ts +15 -0
  24. package/dist/index.node.mjs +28035 -0
  25. package/dist/index.node.mjs.map +1 -0
  26. package/dist/src/Collection.d.ts +126 -0
  27. package/dist/src/CommonMethods.d.ts +32 -0
  28. package/dist/src/EventTypeDefs.d.ts +226 -0
  29. package/dist/src/Intersection.d.ts +100 -0
  30. package/dist/src/Observable.d.ts +54 -0
  31. package/dist/src/Pattern.d.ts +104 -0
  32. package/dist/src/Point.d.ts +232 -0
  33. package/dist/src/Shadow.d.ts +87 -0
  34. package/dist/src/brushes/BaseBrush.d.ts +105 -0
  35. package/dist/src/brushes/CircleBrush.d.ts +49 -0
  36. package/dist/src/brushes/PatternBrush.d.ts +23 -0
  37. package/dist/src/brushes/PencilBrush.d.ts +92 -0
  38. package/dist/src/brushes/SprayBrush.d.ts +79 -0
  39. package/dist/src/cache.d.ts +46 -0
  40. package/dist/src/canvas/Canvas.d.ts +567 -0
  41. package/dist/src/canvas/SelectableCanvas.d.ts +723 -0
  42. package/dist/src/canvas/StaticCanvas.d.ts +751 -0
  43. package/dist/src/canvas/TextEditingManager.d.ts +17 -0
  44. package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
  45. package/dist/src/color/Color.d.ts +174 -0
  46. package/dist/src/color/color_map.d.ts +155 -0
  47. package/dist/src/color/constants.d.ts +22 -0
  48. package/dist/src/color/util.d.ts +12 -0
  49. package/dist/src/config.d.ts +115 -0
  50. package/dist/src/constants.d.ts +14 -0
  51. package/dist/src/controls/Control.d.ts +228 -0
  52. package/dist/src/controls/changeWidth.d.ts +13 -0
  53. package/dist/src/controls/controls.render.d.ts +29 -0
  54. package/dist/src/controls/default_controls.d.ts +50 -0
  55. package/dist/src/controls/drag.d.ts +12 -0
  56. package/dist/src/controls/polyControl.d.ts +5 -0
  57. package/dist/src/controls/rotate.d.ts +12 -0
  58. package/dist/src/controls/scale.d.ts +47 -0
  59. package/dist/src/controls/scaleSkew.d.ts +39 -0
  60. package/dist/src/controls/skew.d.ts +33 -0
  61. package/dist/src/controls/util.d.ts +41 -0
  62. package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
  63. package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
  64. package/dist/src/env/browser.d.ts +3 -0
  65. package/dist/src/env/index.d.ts +7 -0
  66. package/dist/src/env/node.d.ts +3 -0
  67. package/dist/src/env/types.d.ts +15 -0
  68. package/dist/src/filters/BaseFilter.d.ts +156 -0
  69. package/dist/src/filters/BlendColor.d.ts +80 -0
  70. package/dist/src/filters/BlendImage.d.ts +90 -0
  71. package/dist/src/filters/Blur.d.ts +50 -0
  72. package/dist/src/filters/Boilerplate.d.ts +46 -0
  73. package/dist/src/filters/Brightness.d.ts +46 -0
  74. package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
  75. package/dist/src/filters/ColorMatrix.d.ts +62 -0
  76. package/dist/src/filters/ColorMatrixFilters.d.ts +1169 -0
  77. package/dist/src/filters/Composed.d.ts +47 -0
  78. package/dist/src/filters/Contrast.d.ts +44 -0
  79. package/dist/src/filters/Convolute.d.ts +82 -0
  80. package/dist/src/filters/FilterBackend.d.ts +14 -0
  81. package/dist/src/filters/Gamma.d.ts +53 -0
  82. package/dist/src/filters/Grayscale.d.ts +45 -0
  83. package/dist/src/filters/HueRotation.d.ts +24 -0
  84. package/dist/src/filters/Invert.d.ts +54 -0
  85. package/dist/src/filters/Noise.d.ts +53 -0
  86. package/dist/src/filters/Pixelate.d.ts +43 -0
  87. package/dist/src/filters/RemoveColor.d.ts +62 -0
  88. package/dist/src/filters/Resize.d.ts +134 -0
  89. package/dist/src/filters/Saturation.d.ts +47 -0
  90. package/dist/src/filters/Vibrance.d.ts +47 -0
  91. package/dist/src/filters/WebGLFilterBackend.d.ts +126 -0
  92. package/dist/src/filters/WebGLProbe.d.ts +28 -0
  93. package/dist/src/filters/typedefs.d.ts +49 -0
  94. package/dist/src/gradient/Gradient.d.ts +149 -0
  95. package/dist/src/gradient/constants.d.ts +15 -0
  96. package/dist/src/gradient/parser/index.d.ts +4 -0
  97. package/dist/src/gradient/parser/misc.d.ts +4 -0
  98. package/dist/src/gradient/parser/parseColorStops.d.ts +6 -0
  99. package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
  100. package/dist/src/gradient/typedefs.d.ts +93 -0
  101. package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
  102. package/dist/src/mixins/stateful.mixin.d.ts +18 -0
  103. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
  104. package/dist/src/parkinglot/straighten.d.ts +2 -0
  105. package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
  106. package/dist/src/parser/attributes.d.ts +6 -0
  107. package/dist/src/parser/constants.d.ts +54 -0
  108. package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
  109. package/dist/src/parser/elementById.d.ts +6 -0
  110. package/dist/src/parser/elementMatchesRule.d.ts +5 -0
  111. package/dist/src/parser/elements_parser.d.ts +3 -0
  112. package/dist/src/parser/getCSSRules.d.ts +7 -0
  113. package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
  114. package/dist/src/parser/getGradientDefs.d.ts +7 -0
  115. package/dist/src/parser/getMultipleNodes.d.ts +2 -0
  116. package/dist/src/parser/getSvgRegex.d.ts +2 -0
  117. package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
  118. package/dist/src/parser/loadSVGFromString.d.ts +12 -0
  119. package/dist/src/parser/loadSVGFromURL.d.ts +13 -0
  120. package/dist/src/parser/normalizeAttr.d.ts +2 -0
  121. package/dist/src/parser/normalizeValue.d.ts +2 -0
  122. package/dist/src/parser/parseAttributes.d.ts +9 -0
  123. package/dist/src/parser/parseElements.d.ts +11 -0
  124. package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
  125. package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
  126. package/dist/src/parser/parseSVGDocument.d.ts +15 -0
  127. package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
  128. package/dist/src/parser/parseStyleObject.d.ts +2 -0
  129. package/dist/src/parser/parseStyleString.d.ts +2 -0
  130. package/dist/src/parser/parseTransformAttribute.d.ts +10 -0
  131. package/dist/src/parser/parseUseDirectives.d.ts +2 -0
  132. package/dist/src/parser/percent.d.ts +9 -0
  133. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
  134. package/dist/src/parser/rotateMatrix.d.ts +2 -0
  135. package/dist/src/parser/scaleMatrix.d.ts +2 -0
  136. package/dist/src/parser/selectorMatches.d.ts +2 -0
  137. package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
  138. package/dist/src/parser/skewMatrix.d.ts +2 -0
  139. package/dist/src/parser/translateMatrix.d.ts +2 -0
  140. package/dist/src/shapes/ActiveSelection.d.ts +66 -0
  141. package/dist/src/shapes/Circle.d.ts +80 -0
  142. package/dist/src/shapes/Ellipse.d.ts +74 -0
  143. package/dist/src/shapes/Group.d.ts +381 -0
  144. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
  145. package/dist/src/shapes/IText/IText.d.ts +322 -0
  146. package/dist/src/shapes/IText/ITextBehavior.d.ts +285 -0
  147. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +81 -0
  148. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +193 -0
  149. package/dist/src/shapes/IText/constants.d.ts +13 -0
  150. package/dist/src/shapes/Image.d.ts +283 -0
  151. package/dist/src/shapes/Line.d.ts +117 -0
  152. package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
  153. package/dist/src/shapes/Object/FabricObject.d.ts +9 -0
  154. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
  155. package/dist/src/shapes/Object/InteractiveObject.d.ts +282 -0
  156. package/dist/src/shapes/Object/Object.d.ts +906 -0
  157. package/dist/src/shapes/Object/ObjectGeometry.d.ts +343 -0
  158. package/dist/src/shapes/Object/ObjectOrigin.d.ts +178 -0
  159. package/dist/src/shapes/Object/StackedObject.d.ts +62 -0
  160. package/dist/src/shapes/Object/defaultValues.d.ts +77 -0
  161. package/dist/src/shapes/Path.d.ts +123 -0
  162. package/dist/src/shapes/Polygon.d.ts +7 -0
  163. package/dist/src/shapes/Polyline.d.ts +130 -0
  164. package/dist/src/shapes/Rect.d.ts +62 -0
  165. package/dist/src/shapes/Text/StyledText.d.ts +118 -0
  166. package/dist/src/shapes/Text/Text.d.ts +656 -0
  167. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
  168. package/dist/src/shapes/Textbox.d.ts +170 -0
  169. package/dist/src/shapes/Triangle.d.ts +17 -0
  170. package/dist/src/typedefs.d.ts +93 -0
  171. package/dist/src/util/animation/AnimationBase.d.ts +54 -0
  172. package/dist/src/util/animation/AnimationFrameProvider.d.ts +8 -0
  173. package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
  174. package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
  175. package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
  176. package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
  177. package/dist/src/util/animation/animate.d.ts +37 -0
  178. package/dist/src/util/animation/easing.d.ts +130 -0
  179. package/dist/src/util/animation/types.d.ts +87 -0
  180. package/dist/src/util/applyMixins.d.ts +8 -0
  181. package/dist/src/util/class_registry.d.ts +14 -0
  182. package/dist/src/util/dom_event.d.ts +5 -0
  183. package/dist/src/util/dom_misc.d.ts +40 -0
  184. package/dist/src/util/dom_request.d.ts +14 -0
  185. package/dist/src/util/dom_style.d.ts +7 -0
  186. package/dist/src/util/fireEvent.d.ts +3 -0
  187. package/dist/src/util/internals/cloneDeep.d.ts +2 -0
  188. package/dist/src/util/internals/getRandomInt.d.ts +8 -0
  189. package/dist/src/util/internals/ifNaN.d.ts +8 -0
  190. package/dist/src/util/internals/index.d.ts +4 -0
  191. package/dist/src/util/internals/removeFromArray.d.ts +9 -0
  192. package/dist/src/util/internals/uid.d.ts +2 -0
  193. package/dist/src/util/lang_class.d.ts +12 -0
  194. package/dist/src/util/lang_string.d.ts +22 -0
  195. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
  196. package/dist/src/util/misc/capValue.d.ts +2 -0
  197. package/dist/src/util/misc/cos.d.ts +10 -0
  198. package/dist/src/util/misc/dom.d.ts +28 -0
  199. package/dist/src/util/misc/findScaleTo.d.ts +29 -0
  200. package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
  201. package/dist/src/util/misc/isTransparent.d.ts +11 -0
  202. package/dist/src/util/misc/matrix.d.ts +92 -0
  203. package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
  204. package/dist/src/util/misc/objectEnlive.d.ts +56 -0
  205. package/dist/src/util/misc/objectTransforms.d.ts +68 -0
  206. package/dist/src/util/misc/pick.d.ts +8 -0
  207. package/dist/src/util/misc/planeChange.d.ts +84 -0
  208. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +51 -0
  209. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +81 -0
  210. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +25 -0
  211. package/dist/src/util/misc/projectStroke/index.d.ts +11 -0
  212. package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
  213. package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
  214. package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
  215. package/dist/src/util/misc/rotatePoint.d.ts +12 -0
  216. package/dist/src/util/misc/sin.d.ts +10 -0
  217. package/dist/src/util/misc/svgParsing.d.ts +53 -0
  218. package/dist/src/util/misc/textStyles.d.ts +32 -0
  219. package/dist/src/util/misc/toFixed.d.ts +8 -0
  220. package/dist/src/util/misc/vectors.d.ts +57 -0
  221. package/dist/src/util/path.d.ts +108 -0
  222. package/dist/src/util/transform_matrix_removal.d.ts +14 -0
  223. package/dist/src/util/types.d.ts +19 -0
  224. package/fabric.ts +427 -0
  225. package/index.node.ts +43 -0
  226. package/index.ts +1 -0
  227. package/package.json +90 -39
  228. package/publish.js +0 -26
  229. package/rollup.config.mjs +79 -0
  230. package/rollup.test.config.js +24 -0
  231. package/scripts/build.mjs +50 -0
  232. package/scripts/buildLock.mjs +115 -0
  233. package/scripts/buildReporter.mjs +15 -0
  234. package/scripts/buildStats.mjs +139 -0
  235. package/scripts/dirname.mjs +14 -0
  236. package/scripts/index.mjs +679 -0
  237. package/scripts/transform_files.mjs +504 -0
  238. package/src/Collection.ts +311 -0
  239. package/src/CommonMethods.ts +63 -0
  240. package/src/EventTypeDefs.ts +294 -0
  241. package/src/Intersection.ts +273 -0
  242. package/src/Observable.ts +175 -0
  243. package/src/Pattern.ts +211 -0
  244. package/src/Point.ts +388 -0
  245. package/src/Shadow.ts +215 -0
  246. package/src/brushes/{base_brush.class.js → BaseBrush.ts} +65 -42
  247. package/src/brushes/CircleBrush.ts +145 -0
  248. package/src/brushes/PatternBrush.ts +70 -0
  249. package/src/brushes/PencilBrush.ts +300 -0
  250. package/src/brushes/SprayBrush.ts +219 -0
  251. package/src/cache.ts +89 -0
  252. package/src/canvas/Canvas.ts +1672 -0
  253. package/src/canvas/SelectableCanvas.ts +1636 -0
  254. package/src/canvas/StaticCanvas.ts +1709 -0
  255. package/src/canvas/TextEditingManager.ts +48 -0
  256. package/src/canvas/canvas_gestures.mixin.ts +207 -0
  257. package/src/color/Color.ts +404 -0
  258. package/src/color/color_map.ts +154 -0
  259. package/src/color/constants.ts +26 -0
  260. package/src/color/util.ts +32 -0
  261. package/src/config.ts +159 -0
  262. package/src/constants.ts +19 -0
  263. package/src/controls/Control.ts +377 -0
  264. package/src/controls/changeWidth.ts +52 -0
  265. package/src/controls/controls.render.ts +138 -0
  266. package/src/controls/default_controls.ts +132 -0
  267. package/src/controls/drag.ts +31 -0
  268. package/src/controls/polyControl.ts +135 -0
  269. package/src/controls/rotate.ts +87 -0
  270. package/src/controls/scale.ts +277 -0
  271. package/src/controls/scaleSkew.ts +92 -0
  272. package/src/controls/skew.ts +242 -0
  273. package/src/controls/util.ts +154 -0
  274. package/src/controls/wrapWithFireEvent.ts +25 -0
  275. package/src/controls/wrapWithFixedAnchor.ts +20 -0
  276. package/src/env/browser.ts +28 -0
  277. package/src/env/index.ts +19 -0
  278. package/src/env/node.ts +52 -0
  279. package/src/env/types.ts +15 -0
  280. package/src/filters/{base_filter.class.js → BaseFilter.ts} +201 -149
  281. package/src/filters/BlendColor.ts +258 -0
  282. package/src/filters/BlendImage.ts +254 -0
  283. package/src/filters/Blur.ts +202 -0
  284. package/src/filters/Boilerplate.ts +91 -0
  285. package/src/filters/Brightness.ts +93 -0
  286. package/src/filters/Canvas2dFilterBackend.ts +65 -0
  287. package/src/filters/ColorMatrix.ts +156 -0
  288. package/src/filters/ColorMatrixFilters.ts +106 -0
  289. package/src/filters/Composed.ts +85 -0
  290. package/src/filters/Contrast.ts +94 -0
  291. package/src/filters/Convolute.ts +341 -0
  292. package/src/filters/FilterBackend.ts +32 -0
  293. package/src/filters/Gamma.ts +127 -0
  294. package/src/filters/Grayscale.ts +137 -0
  295. package/src/filters/HueRotation.ts +66 -0
  296. package/src/filters/Invert.ts +117 -0
  297. package/src/filters/Noise.ts +109 -0
  298. package/src/filters/Pixelate.ts +114 -0
  299. package/src/filters/RemoveColor.ts +148 -0
  300. package/src/filters/Resize.ts +540 -0
  301. package/src/filters/Saturation.ts +100 -0
  302. package/src/filters/Vibrance.ts +103 -0
  303. package/src/filters/WebGLFilterBackend.ts +430 -0
  304. package/src/filters/WebGLProbe.ts +62 -0
  305. package/src/filters/typedefs.ts +65 -0
  306. package/src/gradient/Gradient.ts +401 -0
  307. package/src/gradient/constants.ts +12 -0
  308. package/src/gradient/parser/index.ts +3 -0
  309. package/src/gradient/parser/misc.ts +13 -0
  310. package/src/gradient/parser/parseColorStops.ts +55 -0
  311. package/src/gradient/parser/parseCoords.ts +73 -0
  312. package/src/gradient/typedefs.ts +104 -0
  313. package/src/mixins/{eraser_brush.mixin.js → eraser_brush.mixin.ts} +350 -239
  314. package/src/mixins/stateful.mixin.ts +104 -0
  315. package/src/parkinglot/canvas_animation.mixin.ts +121 -0
  316. package/src/parkinglot/straighten.ts +58 -0
  317. package/src/parser/applyViewboxTransform.ts +162 -0
  318. package/src/parser/attributes.ts +25 -0
  319. package/src/parser/constants.ts +118 -0
  320. package/src/parser/doesSomeParentMatch.ts +19 -0
  321. package/src/parser/elementById.ts +23 -0
  322. package/src/parser/elementMatchesRule.ts +19 -0
  323. package/src/parser/elements_parser.ts +191 -0
  324. package/src/parser/getCSSRules.ts +62 -0
  325. package/src/parser/getGlobalStylesForElement.ts +19 -0
  326. package/src/parser/getGradientDefs.ts +32 -0
  327. package/src/parser/getMultipleNodes.ts +15 -0
  328. package/src/parser/getSvgRegex.ts +5 -0
  329. package/src/parser/hasAncestorWithNodeName.ts +14 -0
  330. package/src/parser/loadSVGFromString.ts +26 -0
  331. package/src/parser/loadSVGFromURL.ts +40 -0
  332. package/src/parser/normalizeAttr.ts +10 -0
  333. package/src/parser/normalizeValue.ts +63 -0
  334. package/src/parser/parseAttributes.ts +90 -0
  335. package/src/parser/parseElements.ts +28 -0
  336. package/src/parser/parseFontDeclaration.ts +44 -0
  337. package/src/parser/parsePointsAttribute.ts +36 -0
  338. package/src/parser/parseSVGDocument.ts +106 -0
  339. package/src/parser/parseStyleAttribute.ts +27 -0
  340. package/src/parser/parseStyleObject.ts +15 -0
  341. package/src/parser/parseStyleString.ts +16 -0
  342. package/src/parser/parseTransformAttribute.ts +155 -0
  343. package/src/parser/parseUseDirectives.ts +79 -0
  344. package/src/parser/percent.ts +27 -0
  345. package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
  346. package/src/parser/rotateMatrix.ts +21 -0
  347. package/src/parser/scaleMatrix.ts +9 -0
  348. package/src/parser/selectorMatches.ts +25 -0
  349. package/src/parser/setStrokeFillOpacity.ts +40 -0
  350. package/src/parser/skewMatrix.ts +6 -0
  351. package/src/parser/translateMatrix.ts +8 -0
  352. package/src/shapes/ActiveSelection.ts +157 -0
  353. package/src/shapes/Circle.ts +205 -0
  354. package/src/shapes/Ellipse.ts +154 -0
  355. package/src/shapes/Group.ts +1053 -0
  356. package/src/shapes/IText/DraggableTextDelegate.ts +394 -0
  357. package/src/shapes/IText/IText.ts +666 -0
  358. package/src/shapes/IText/ITextBehavior.ts +1055 -0
  359. package/src/shapes/IText/ITextClickBehavior.ts +321 -0
  360. package/src/shapes/IText/ITextKeyBehavior.ts +683 -0
  361. package/src/shapes/IText/constants.ts +47 -0
  362. package/src/shapes/Image.ts +789 -0
  363. package/src/shapes/Line.ts +329 -0
  364. package/src/shapes/Object/AnimatableObject.ts +106 -0
  365. package/src/shapes/Object/FabricObject.ts +19 -0
  366. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +277 -0
  367. package/src/shapes/Object/InteractiveObject.ts +645 -0
  368. package/src/shapes/Object/Object.ts +1896 -0
  369. package/src/shapes/Object/ObjectGeometry.ts +830 -0
  370. package/src/shapes/Object/ObjectOrigin.ts +354 -0
  371. package/src/shapes/Object/StackedObject.ts +191 -0
  372. package/src/shapes/Object/defaultValues.ts +112 -0
  373. package/src/shapes/Path.ts +395 -0
  374. package/src/shapes/Polygon.ts +19 -0
  375. package/src/shapes/Polyline.ts +333 -0
  376. package/src/shapes/Rect.ts +199 -0
  377. package/src/shapes/Text/StyledText.ts +319 -0
  378. package/src/shapes/Text/Text.ts +1948 -0
  379. package/src/shapes/Text/TextSVGExportMixin.ts +288 -0
  380. package/src/shapes/Textbox.ts +471 -0
  381. package/src/shapes/Triangle.ts +45 -0
  382. package/src/typedefs.ts +119 -0
  383. package/src/util/animation/AnimationBase.ts +166 -0
  384. package/src/util/animation/AnimationFrameProvider.ts +28 -0
  385. package/src/util/animation/AnimationRegistry.ts +58 -0
  386. package/src/util/animation/ArrayAnimation.ts +27 -0
  387. package/src/util/animation/ColorAnimation.ts +74 -0
  388. package/src/util/animation/ValueAnimation.ts +29 -0
  389. package/src/util/animation/animate.ts +74 -0
  390. package/src/util/animation/easing.ts +327 -0
  391. package/src/util/animation/types.ts +136 -0
  392. package/src/util/applyMixins.ts +22 -0
  393. package/src/util/class_registry.ts +54 -0
  394. package/src/util/dom_event.ts +28 -0
  395. package/src/util/dom_misc.ts +138 -0
  396. package/src/util/dom_request.ts +64 -0
  397. package/src/util/dom_style.ts +20 -0
  398. package/src/util/fireEvent.ts +15 -0
  399. package/src/util/internals/cloneDeep.ts +2 -0
  400. package/src/util/internals/getRandomInt.ts +8 -0
  401. package/src/util/internals/ifNaN.ts +9 -0
  402. package/src/util/internals/index.ts +3 -0
  403. package/src/util/internals/removeFromArray.ts +14 -0
  404. package/src/util/internals/uid.ts +3 -0
  405. package/src/util/lang_class.ts +90 -0
  406. package/src/util/lang_string.ts +79 -0
  407. package/src/util/misc/boundingBoxFromPoints.ts +37 -0
  408. package/src/util/misc/capValue.ts +2 -0
  409. package/src/util/misc/cos.ts +24 -0
  410. package/src/util/misc/dom.ts +50 -0
  411. package/src/util/misc/findScaleTo.ts +44 -0
  412. package/src/util/misc/groupSVGElements.ts +15 -0
  413. package/src/util/misc/isTransparent.ts +51 -0
  414. package/src/util/misc/matrix.ts +207 -0
  415. package/src/util/misc/mergeClipPaths.ts +40 -0
  416. package/src/util/misc/objectEnlive.ts +189 -0
  417. package/src/util/misc/objectTransforms.ts +129 -0
  418. package/src/util/misc/pick.ts +17 -0
  419. package/src/util/misc/planeChange.ts +136 -0
  420. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +112 -0
  421. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +231 -0
  422. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +75 -0
  423. package/src/util/misc/projectStroke/index.ts +53 -0
  424. package/src/util/misc/projectStroke/types.ts +24 -0
  425. package/src/util/misc/radiansDegreesConversion.ts +18 -0
  426. package/src/util/misc/resolveOrigin.ts +22 -0
  427. package/src/util/misc/rotatePoint.ts +15 -0
  428. package/src/util/misc/sin.ts +26 -0
  429. package/src/util/misc/svgParsing.ts +181 -0
  430. package/src/util/misc/textStyles.ts +133 -0
  431. package/src/util/misc/toFixed.ts +8 -0
  432. package/src/util/misc/vectors.ts +82 -0
  433. package/src/util/path.ts +941 -0
  434. package/src/util/transform_matrix_removal.ts +60 -0
  435. package/src/util/types.ts +78 -0
  436. package/tsconfig.json +106 -0
  437. package/HEADER.js +0 -203
  438. package/build.js +0 -287
  439. package/dist/fabric.js +0 -31187
  440. package/dist/fabric.min.js +0 -1
  441. package/old-travis-reference.yml +0 -97
  442. package/src/brushes/circle_brush.class.js +0 -144
  443. package/src/brushes/pattern_brush.class.js +0 -61
  444. package/src/brushes/pencil_brush.class.js +0 -310
  445. package/src/brushes/spray_brush.class.js +0 -219
  446. package/src/canvas.class.js +0 -1312
  447. package/src/color.class.js +0 -636
  448. package/src/control.class.js +0 -339
  449. package/src/controls.actions.js +0 -740
  450. package/src/controls.render.js +0 -99
  451. package/src/elements_parser.js +0 -152
  452. package/src/filters/2d_backend.class.js +0 -65
  453. package/src/filters/blendcolor_filter.class.js +0 -251
  454. package/src/filters/blendimage_filter.class.js +0 -247
  455. package/src/filters/blur_filter.class.js +0 -217
  456. package/src/filters/brightness_filter.class.js +0 -113
  457. package/src/filters/colormatrix_filter.class.js +0 -159
  458. package/src/filters/composed_filter.class.js +0 -72
  459. package/src/filters/contrast_filter.class.js +0 -113
  460. package/src/filters/convolute_filter.class.js +0 -352
  461. package/src/filters/filter_boilerplate.js +0 -111
  462. package/src/filters/filter_generator.js +0 -85
  463. package/src/filters/gamma_filter.class.js +0 -136
  464. package/src/filters/grayscale_filter.class.js +0 -154
  465. package/src/filters/hue_rotation.class.js +0 -107
  466. package/src/filters/invert_filter.class.js +0 -111
  467. package/src/filters/noise_filter.class.js +0 -134
  468. package/src/filters/pixelate_filter.class.js +0 -137
  469. package/src/filters/removecolor_filter.class.js +0 -173
  470. package/src/filters/resize_filter.class.js +0 -490
  471. package/src/filters/saturate_filter.class.js +0 -119
  472. package/src/filters/vibrance_filter.class.js +0 -122
  473. package/src/filters/webgl_backend.class.js +0 -396
  474. package/src/globalFabric.js +0 -4
  475. package/src/gradient.class.js +0 -490
  476. package/src/intersection.class.js +0 -172
  477. package/src/log.js +0 -11
  478. package/src/mixins/animation.mixin.js +0 -231
  479. package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
  480. package/src/mixins/canvas_events.mixin.js +0 -974
  481. package/src/mixins/canvas_gestures.mixin.js +0 -149
  482. package/src/mixins/canvas_grouping.mixin.js +0 -177
  483. package/src/mixins/canvas_serialization.mixin.js +0 -228
  484. package/src/mixins/collection.mixin.js +0 -170
  485. package/src/mixins/default_controls.js +0 -114
  486. package/src/mixins/itext.svg_export.js +0 -241
  487. package/src/mixins/itext_behavior.mixin.js +0 -940
  488. package/src/mixins/itext_click_behavior.mixin.js +0 -278
  489. package/src/mixins/itext_key_behavior.mixin.js +0 -694
  490. package/src/mixins/object.svg_export.js +0 -258
  491. package/src/mixins/object_geometry.mixin.js +0 -683
  492. package/src/mixins/object_interactivity.mixin.js +0 -314
  493. package/src/mixins/object_origin.mixin.js +0 -255
  494. package/src/mixins/object_stacking.mixin.js +0 -80
  495. package/src/mixins/object_straightening.mixin.js +0 -80
  496. package/src/mixins/observable.mixin.js +0 -141
  497. package/src/mixins/shared_methods.mixin.js +0 -94
  498. package/src/mixins/stateful.mixin.js +0 -107
  499. package/src/mixins/text_style.mixin.js +0 -324
  500. package/src/parser.js +0 -1090
  501. package/src/pattern.class.js +0 -189
  502. package/src/point.class.js +0 -337
  503. package/src/shadow.class.js +0 -195
  504. package/src/shapes/active_selection.class.js +0 -155
  505. package/src/shapes/circle.class.js +0 -210
  506. package/src/shapes/ellipse.class.js +0 -181
  507. package/src/shapes/group.class.js +0 -593
  508. package/src/shapes/image.class.js +0 -764
  509. package/src/shapes/itext.class.js +0 -526
  510. package/src/shapes/line.class.js +0 -324
  511. package/src/shapes/object.class.js +0 -2008
  512. package/src/shapes/path.class.js +0 -384
  513. package/src/shapes/polygon.class.js +0 -81
  514. package/src/shapes/polyline.class.js +0 -268
  515. package/src/shapes/rect.class.js +0 -187
  516. package/src/shapes/text.class.js +0 -1696
  517. package/src/shapes/textbox.class.js +0 -461
  518. package/src/shapes/triangle.class.js +0 -93
  519. package/src/static_canvas.class.js +0 -1881
  520. package/src/util/anim_ease.js +0 -398
  521. package/src/util/animate.js +0 -254
  522. package/src/util/animate_color.js +0 -74
  523. package/src/util/dom_event.js +0 -50
  524. package/src/util/dom_misc.js +0 -300
  525. package/src/util/dom_request.js +0 -54
  526. package/src/util/dom_style.js +0 -70
  527. package/src/util/lang_array.js +0 -94
  528. package/src/util/lang_class.js +0 -115
  529. package/src/util/lang_object.js +0 -75
  530. package/src/util/lang_string.js +0 -110
  531. package/src/util/misc.js +0 -1330
  532. package/src/util/named_accessors.mixin.js +0 -428
  533. package/src/util/path.js +0 -829
@@ -0,0 +1,117 @@
1
+ import type { TClassProperties } from '../typedefs';
2
+ import { BaseFilter } from './BaseFilter';
3
+ import type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';
4
+ import { classRegistry } from '../util/class_registry';
5
+
6
+ /**
7
+ * @example
8
+ * const filter = new Invert();
9
+ * object.filters.push(filter);
10
+ * object.applyFilters(canvas.renderAll.bind(canvas));
11
+ */
12
+ export class Invert extends BaseFilter {
13
+ /**
14
+ * Invert also alpha.
15
+ * @param {Boolean} alpha
16
+ * @default
17
+ **/
18
+ declare alpha: boolean;
19
+
20
+ /**
21
+ * Filter invert. if false, does nothing
22
+ * @param {Boolean} invert
23
+ * @default
24
+ */
25
+ declare invert: boolean;
26
+
27
+ /**
28
+ * Apply the Invert operation to a Uint8Array representing the pixels of an image.
29
+ *
30
+ * @param {Object} options
31
+ * @param {ImageData} options.imageData The Uint8Array to be filtered.
32
+ */
33
+ applyTo2d({ imageData: { data } }: T2DPipelineState) {
34
+ for (let i = 0; i < data.length; i += 4) {
35
+ data[i] = 255 - data[i];
36
+ data[i + 1] = 255 - data[i + 1];
37
+ data[i + 2] = 255 - data[i + 2];
38
+
39
+ if (this.alpha) {
40
+ data[i + 3] = 255 - data[i + 3];
41
+ }
42
+ }
43
+ }
44
+
45
+ /**
46
+ * Invert filter isNeutralState implementation
47
+ * Used only in image applyFilters to discard filters that will not have an effect
48
+ * on the image
49
+ * @param {Object} options
50
+ **/
51
+ isNeutralState() {
52
+ return !this.invert;
53
+ }
54
+
55
+ /**
56
+ * Return WebGL uniform locations for this filter's shader.
57
+ *
58
+ * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
59
+ * @param {WebGLShaderProgram} program This filter's compiled shader program.
60
+ */
61
+ getUniformLocations(
62
+ gl: WebGLRenderingContext,
63
+ program: WebGLProgram
64
+ ): TWebGLUniformLocationMap {
65
+ return {
66
+ uInvert: gl.getUniformLocation(program, 'uInvert'),
67
+ uAlpha: gl.getUniformLocation(program, 'uAlpha'),
68
+ };
69
+ }
70
+
71
+ /**
72
+ * Send data from this filter to its shader program's uniforms.
73
+ *
74
+ * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
75
+ * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
76
+ */
77
+ sendUniformData(
78
+ gl: WebGLRenderingContext,
79
+ uniformLocations: TWebGLUniformLocationMap
80
+ ) {
81
+ gl.uniform1i(uniformLocations.uInvert, Number(this.invert));
82
+ gl.uniform1i(uniformLocations.uAlpha, Number(this.alpha));
83
+ }
84
+
85
+ static async fromObject(object: any) {
86
+ return new Invert(object);
87
+ }
88
+ }
89
+
90
+ export const invertDefaultValues: Partial<TClassProperties<Invert>> = {
91
+ type: 'Invert',
92
+ alpha: false,
93
+ fragmentSource: `
94
+ precision highp float;
95
+ uniform sampler2D uTexture;
96
+ uniform int uInvert;
97
+ uniform int uAlpha;
98
+ varying vec2 vTexCoord;
99
+ void main() {
100
+ vec4 color = texture2D(uTexture, vTexCoord);
101
+ if (uInvert == 1) {
102
+ if (uAlpha == 1) {
103
+ gl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,1.0 -color.a);
104
+ } else {
105
+ gl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a);
106
+ }
107
+ } else {
108
+ gl_FragColor = color;
109
+ }
110
+ }
111
+ `,
112
+ invert: true,
113
+ mainParameter: 'invert',
114
+ };
115
+
116
+ Object.assign(Invert.prototype, invertDefaultValues);
117
+ classRegistry.setClass(Invert);
@@ -0,0 +1,109 @@
1
+ import type { TClassProperties } from '../typedefs';
2
+ import { BaseFilter } from './BaseFilter';
3
+ import type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';
4
+ import { classRegistry } from '../util/class_registry';
5
+
6
+ /**
7
+ * Noise filter class
8
+ * @example
9
+ * const filter = new Noise({
10
+ * noise: 700
11
+ * });
12
+ * object.filters.push(filter);
13
+ * object.applyFilters();
14
+ * canvas.renderAll();
15
+ */
16
+ export class Noise extends BaseFilter {
17
+ /**
18
+ * Noise value, from
19
+ * @param {Number} noise
20
+ * @default
21
+ */
22
+ declare noise: number;
23
+
24
+ /**
25
+ * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.
26
+ *
27
+ * @param {Object} options
28
+ * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.
29
+ */
30
+ applyTo2d({ imageData: { data } }: T2DPipelineState) {
31
+ if (this.noise === 0) {
32
+ return;
33
+ }
34
+ const noise = this.noise;
35
+ for (let i = 0; i < data.length; i += 4) {
36
+ const rand = (0.5 - Math.random()) * noise;
37
+ data[i] += rand;
38
+ data[i + 1] += rand;
39
+ data[i + 2] += rand;
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Return WebGL uniform locations for this filter's shader.
45
+ *
46
+ * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
47
+ * @param {WebGLShaderProgram} program This filter's compiled shader program.
48
+ */
49
+ getUniformLocations(
50
+ gl: WebGLRenderingContext,
51
+ program: WebGLProgram
52
+ ): TWebGLUniformLocationMap {
53
+ return {
54
+ uNoise: gl.getUniformLocation(program, 'uNoise'),
55
+ uSeed: gl.getUniformLocation(program, 'uSeed'),
56
+ };
57
+ }
58
+
59
+ /**
60
+ * Send data from this filter to its shader program's uniforms.
61
+ *
62
+ * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
63
+ * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
64
+ */
65
+ sendUniformData(
66
+ gl: WebGLRenderingContext,
67
+ uniformLocations: TWebGLUniformLocationMap
68
+ ) {
69
+ gl.uniform1f(uniformLocations.uNoise, this.noise / 255);
70
+ gl.uniform1f(uniformLocations.uSeed, Math.random());
71
+ }
72
+
73
+ /**
74
+ * Returns object representation of an instance
75
+ * @return {Object} Object representation of an instance
76
+ */
77
+ toObject() {
78
+ return { ...super.toObject(), noise: this.noise };
79
+ }
80
+
81
+ static async fromObject(object: any) {
82
+ return new Noise(object);
83
+ }
84
+ }
85
+
86
+ export const noiseDefaultValues: Partial<TClassProperties<Noise>> = {
87
+ type: 'Noise',
88
+ fragmentSource: `
89
+ precision highp float;
90
+ uniform sampler2D uTexture;
91
+ uniform float uStepH;
92
+ uniform float uNoise;
93
+ uniform float uSeed;
94
+ varying vec2 vTexCoord;
95
+ float rand(vec2 co, float seed, float vScale) {
96
+ return fract(sin(dot(co.xy * vScale ,vec2(12.9898 , 78.233))) * 43758.5453 * (seed + 0.01) / 2.0);
97
+ }
98
+ void main() {
99
+ vec4 color = texture2D(uTexture, vTexCoord);
100
+ color.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise;
101
+ gl_FragColor = color;
102
+ }
103
+ `,
104
+ mainParameter: 'noise',
105
+ noise: 0,
106
+ };
107
+
108
+ Object.assign(Noise.prototype, noiseDefaultValues);
109
+ classRegistry.setClass(Noise);
@@ -0,0 +1,114 @@
1
+ import type { TClassProperties } from '../typedefs';
2
+ import { BaseFilter } from './BaseFilter';
3
+ import type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';
4
+ import { classRegistry } from '../util/class_registry';
5
+
6
+ /**
7
+ * Pixelate filter class
8
+ * @example
9
+ * const filter = new Pixelate({
10
+ * blocksize: 8
11
+ * });
12
+ * object.filters.push(filter);
13
+ * object.applyFilters();
14
+ */
15
+ export class Pixelate extends BaseFilter {
16
+ declare blocksize: number;
17
+
18
+ /**
19
+ * Apply the Pixelate operation to a Uint8ClampedArray representing the pixels of an image.
20
+ *
21
+ * @param {Object} options
22
+ * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.
23
+ */
24
+ applyTo2d({ imageData: { data, width, height } }: T2DPipelineState) {
25
+ for (let i = 0; i < height; i += this.blocksize) {
26
+ for (let j = 0; j < width; j += this.blocksize) {
27
+ const index = i * 4 * width + j * 4;
28
+ const r = data[index];
29
+ const g = data[index + 1];
30
+ const b = data[index + 2];
31
+ const a = data[index + 3];
32
+
33
+ for (let _i = i; _i < Math.min(i + this.blocksize, height); _i++) {
34
+ for (let _j = j; _j < Math.min(j + this.blocksize, width); _j++) {
35
+ const index = _i * 4 * width + _j * 4;
36
+ data[index] = r;
37
+ data[index + 1] = g;
38
+ data[index + 2] = b;
39
+ data[index + 3] = a;
40
+ }
41
+ }
42
+ }
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Indicate when the filter is not gonna apply changes to the image
48
+ **/
49
+ isNeutralState() {
50
+ return this.blocksize === 1;
51
+ }
52
+
53
+ /**
54
+ * Return WebGL uniform locations for this filter's shader.
55
+ *
56
+ * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
57
+ * @param {WebGLShaderProgram} program This filter's compiled shader program.
58
+ */
59
+ getUniformLocations(
60
+ gl: WebGLRenderingContext,
61
+ program: WebGLProgram
62
+ ): TWebGLUniformLocationMap {
63
+ return {
64
+ uBlocksize: gl.getUniformLocation(program, 'uBlocksize'),
65
+ uStepW: gl.getUniformLocation(program, 'uStepW'),
66
+ uStepH: gl.getUniformLocation(program, 'uStepH'),
67
+ };
68
+ }
69
+
70
+ /**
71
+ * Send data from this filter to its shader program's uniforms.
72
+ *
73
+ * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
74
+ * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
75
+ */
76
+ sendUniformData(
77
+ gl: WebGLRenderingContext,
78
+ uniformLocations: TWebGLUniformLocationMap
79
+ ) {
80
+ gl.uniform1f(uniformLocations.uBlocksize, this.blocksize);
81
+ }
82
+
83
+ static async fromObject(object: any) {
84
+ return new Pixelate(object);
85
+ }
86
+ }
87
+
88
+ export const pixelateDefaultValues: Partial<TClassProperties<Pixelate>> = {
89
+ type: 'Pixelate',
90
+ blocksize: 4,
91
+ mainParameter: 'blocksize',
92
+ fragmentSource: `
93
+ precision highp float;
94
+ uniform sampler2D uTexture;
95
+ uniform float uBlocksize;
96
+ uniform float uStepW;
97
+ uniform float uStepH;
98
+ varying vec2 vTexCoord;
99
+ void main() {
100
+ float blockW = uBlocksize * uStepW;
101
+ float blockH = uBlocksize * uStepW;
102
+ int posX = int(vTexCoord.x / blockW);
103
+ int posY = int(vTexCoord.y / blockH);
104
+ float fposX = float(posX);
105
+ float fposY = float(posY);
106
+ vec2 squareCoords = vec2(fposX * blockW, fposY * blockH);
107
+ vec4 color = texture2D(uTexture, squareCoords);
108
+ gl_FragColor = color;
109
+ }
110
+ `,
111
+ };
112
+
113
+ Object.assign(Pixelate.prototype, pixelateDefaultValues);
114
+ classRegistry.setClass(Pixelate);
@@ -0,0 +1,148 @@
1
+ import { Color } from '../color/Color';
2
+ import type { TClassProperties } from '../typedefs';
3
+ import { BaseFilter } from './BaseFilter';
4
+ import type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';
5
+ import { classRegistry } from '../util/class_registry';
6
+
7
+ /**
8
+ * Remove white filter class
9
+ * @example
10
+ * const filter = new RemoveColor({
11
+ * threshold: 0.2,
12
+ * });
13
+ * object.filters.push(filter);
14
+ * object.applyFilters();
15
+ * canvas.renderAll();
16
+ */
17
+ export class RemoveColor extends BaseFilter {
18
+ /**
19
+ * Color to remove, in any format understood by {@link Color}.
20
+ * @param {String} type
21
+ * @default
22
+ */
23
+ declare color: string;
24
+
25
+ /**
26
+ * distance to actual color, as value up or down from each r,g,b
27
+ * between 0 and 1
28
+ **/
29
+ declare distance: number;
30
+
31
+ /**
32
+ * For color to remove inside distance, use alpha channel for a smoother deletion
33
+ * NOT IMPLEMENTED YET
34
+ **/
35
+ declare useAlpha: boolean;
36
+
37
+ /**
38
+ * Applies filter to canvas element
39
+ * @param {Object} canvasEl Canvas element to apply filter to
40
+ */
41
+ applyTo2d({ imageData: { data } }: T2DPipelineState) {
42
+ const distance = this.distance * 255,
43
+ source = new Color(this.color).getSource(),
44
+ lowC = [source[0] - distance, source[1] - distance, source[2] - distance],
45
+ highC = [
46
+ source[0] + distance,
47
+ source[1] + distance,
48
+ source[2] + distance,
49
+ ];
50
+
51
+ for (let i = 0; i < data.length; i += 4) {
52
+ const r = data[i];
53
+ const g = data[i + 1];
54
+ const b = data[i + 2];
55
+
56
+ if (
57
+ r > lowC[0] &&
58
+ g > lowC[1] &&
59
+ b > lowC[2] &&
60
+ r < highC[0] &&
61
+ g < highC[1] &&
62
+ b < highC[2]
63
+ ) {
64
+ data[i + 3] = 0;
65
+ }
66
+ }
67
+ }
68
+
69
+ /**
70
+ * Return WebGL uniform locations for this filter's shader.
71
+ *
72
+ * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
73
+ * @param {WebGLShaderProgram} program This filter's compiled shader program.
74
+ */
75
+ getUniformLocations(
76
+ gl: WebGLRenderingContext,
77
+ program: WebGLProgram
78
+ ): TWebGLUniformLocationMap {
79
+ return {
80
+ uLow: gl.getUniformLocation(program, 'uLow'),
81
+ uHigh: gl.getUniformLocation(program, 'uHigh'),
82
+ };
83
+ }
84
+
85
+ /**
86
+ * Send data from this filter to its shader program's uniforms.
87
+ *
88
+ * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
89
+ * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
90
+ */
91
+ sendUniformData(
92
+ gl: WebGLRenderingContext,
93
+ uniformLocations: TWebGLUniformLocationMap
94
+ ) {
95
+ const source = new Color(this.color).getSource(),
96
+ distance = this.distance,
97
+ lowC = [
98
+ 0 + source[0] / 255 - distance,
99
+ 0 + source[1] / 255 - distance,
100
+ 0 + source[2] / 255 - distance,
101
+ 1,
102
+ ],
103
+ highC = [
104
+ source[0] / 255 + distance,
105
+ source[1] / 255 + distance,
106
+ source[2] / 255 + distance,
107
+ 1,
108
+ ];
109
+ gl.uniform4fv(uniformLocations.uLow, lowC);
110
+ gl.uniform4fv(uniformLocations.uHigh, highC);
111
+ }
112
+
113
+ /**
114
+ * Returns object representation of an instance
115
+ * @return {Object} Object representation of an instance
116
+ */
117
+ toObject() {
118
+ return { ...super.toObject(), color: this.color, distance: this.distance };
119
+ }
120
+
121
+ static async fromObject(object: any) {
122
+ return new RemoveColor(object);
123
+ }
124
+ }
125
+
126
+ export const removeColorDefaultValues: Partial<TClassProperties<RemoveColor>> =
127
+ {
128
+ type: 'RemoveColor',
129
+ color: '#FFFFFF',
130
+ fragmentSource: `
131
+ precision highp float;
132
+ uniform sampler2D uTexture;
133
+ uniform vec4 uLow;
134
+ uniform vec4 uHigh;
135
+ varying vec2 vTexCoord;
136
+ void main() {
137
+ gl_FragColor = texture2D(uTexture, vTexCoord);
138
+ if(all(greaterThan(gl_FragColor.rgb,uLow.rgb)) && all(greaterThan(uHigh.rgb,gl_FragColor.rgb))) {
139
+ gl_FragColor.a = 0.0;
140
+ }
141
+ }
142
+ `,
143
+ distance: 0.02,
144
+ useAlpha: false,
145
+ };
146
+
147
+ Object.assign(RemoveColor.prototype, removeColorDefaultValues);
148
+ classRegistry.setClass(RemoveColor);