fabric 5.3.0 → 6.0.0-beta3

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 (604) hide show
  1. package/.babelrc +11 -0
  2. package/.babelrcAlt +19 -0
  3. package/.browserslistrc +5 -0
  4. package/.eslintignore +3 -0
  5. package/.eslintrc.js +43 -0
  6. package/.eslintrc.json +38 -46
  7. package/.eslintrc_tests +12 -0
  8. package/.gitattributes +2 -0
  9. package/.gitpod.yml +17 -1
  10. package/.prettierignore +19 -0
  11. package/.prettierrc +4 -0
  12. package/CHANGELOG.md +532 -189
  13. package/CONTRIBUTING.md +224 -59
  14. package/README.md +200 -235
  15. package/bower.json +1 -3
  16. package/dist/fabric.d.ts +42 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.js +27582 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/index.min.js +1 -0
  21. package/dist/index.mjs +27519 -0
  22. package/dist/index.mjs.map +1 -0
  23. package/dist/index.node.cjs +27663 -0
  24. package/dist/index.node.cjs.map +1 -0
  25. package/dist/index.node.d.ts +14 -0
  26. package/dist/index.node.mjs +27606 -0
  27. package/dist/index.node.mjs.map +1 -0
  28. package/dist/src/ClassRegistry.d.ts +13 -0
  29. package/dist/src/Collection.d.ts +136 -0
  30. package/dist/src/CommonMethods.d.ts +32 -0
  31. package/dist/src/EventTypeDefs.d.ts +227 -0
  32. package/dist/src/Intersection.d.ts +112 -0
  33. package/dist/src/Observable.d.ts +60 -0
  34. package/dist/src/Pattern.d.ts +113 -0
  35. package/dist/src/Point.d.ts +232 -0
  36. package/dist/src/Shadow.d.ts +97 -0
  37. package/dist/src/brushes/BaseBrush.d.ts +105 -0
  38. package/dist/src/brushes/CircleBrush.d.ts +49 -0
  39. package/dist/src/brushes/PatternBrush.d.ts +23 -0
  40. package/dist/src/brushes/PencilBrush.d.ts +92 -0
  41. package/dist/src/brushes/SprayBrush.d.ts +79 -0
  42. package/dist/src/cache.d.ts +47 -0
  43. package/dist/src/canvas/Canvas.d.ts +548 -0
  44. package/dist/src/canvas/SelectableCanvas.d.ts +754 -0
  45. package/dist/src/canvas/StaticCanvas.d.ts +778 -0
  46. package/dist/src/canvas/TextEditingManager.d.ts +17 -0
  47. package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
  48. package/dist/src/color/Color.d.ts +174 -0
  49. package/dist/src/color/color_map.d.ts +155 -0
  50. package/dist/src/color/constants.d.ts +22 -0
  51. package/dist/src/color/util.d.ts +12 -0
  52. package/dist/src/config.d.ts +115 -0
  53. package/dist/src/constants.d.ts +14 -0
  54. package/dist/src/controls/Control.d.ts +228 -0
  55. package/dist/src/controls/changeWidth.d.ts +13 -0
  56. package/dist/src/controls/commonControls.d.ts +28 -0
  57. package/dist/src/controls/controlRendering.d.ts +29 -0
  58. package/dist/src/controls/drag.d.ts +12 -0
  59. package/dist/src/controls/index.d.ts +13 -0
  60. package/dist/src/controls/polyControl.d.ts +5 -0
  61. package/dist/src/controls/rotate.d.ts +12 -0
  62. package/dist/src/controls/scale.d.ts +47 -0
  63. package/dist/src/controls/scaleSkew.d.ts +39 -0
  64. package/dist/src/controls/skew.d.ts +33 -0
  65. package/dist/src/controls/util.d.ts +41 -0
  66. package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
  67. package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
  68. package/dist/src/env/browser.d.ts +3 -0
  69. package/dist/src/env/index.d.ts +15 -0
  70. package/dist/src/env/node.d.ts +5 -0
  71. package/dist/src/env/types.d.ts +15 -0
  72. package/dist/src/filters/BaseFilter.d.ts +153 -0
  73. package/dist/src/filters/BlendColor.d.ts +80 -0
  74. package/dist/src/filters/BlendImage.d.ts +92 -0
  75. package/dist/src/filters/Blur.d.ts +51 -0
  76. package/dist/src/filters/Boilerplate.d.ts +48 -0
  77. package/dist/src/filters/Brightness.d.ts +47 -0
  78. package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
  79. package/dist/src/filters/ColorMatrix.d.ts +63 -0
  80. package/dist/src/filters/ColorMatrixFilters.d.ts +545 -0
  81. package/dist/src/filters/Composed.d.ts +45 -0
  82. package/dist/src/filters/Contrast.d.ts +45 -0
  83. package/dist/src/filters/Convolute.d.ts +82 -0
  84. package/dist/src/filters/FilterBackend.d.ts +14 -0
  85. package/dist/src/filters/GLProbes/GLProbe.d.ts +11 -0
  86. package/dist/src/filters/GLProbes/NodeGLProbe.d.ts +11 -0
  87. package/dist/src/filters/GLProbes/WebGLProbe.d.ts +20 -0
  88. package/dist/src/filters/Gamma.d.ts +54 -0
  89. package/dist/src/filters/Grayscale.d.ts +46 -0
  90. package/dist/src/filters/HueRotation.d.ts +24 -0
  91. package/dist/src/filters/Invert.d.ts +55 -0
  92. package/dist/src/filters/Noise.d.ts +54 -0
  93. package/dist/src/filters/Pixelate.d.ts +44 -0
  94. package/dist/src/filters/RemoveColor.d.ts +63 -0
  95. package/dist/src/filters/Resize.d.ts +136 -0
  96. package/dist/src/filters/Saturation.d.ts +48 -0
  97. package/dist/src/filters/Vibrance.d.ts +48 -0
  98. package/dist/src/filters/WebGLFilterBackend.d.ts +126 -0
  99. package/dist/src/filters/filters.d.ts +21 -0
  100. package/dist/src/filters/index.d.ts +5 -0
  101. package/dist/src/filters/shaders/baseFilter.d.ts +4 -0
  102. package/dist/src/filters/shaders/blendColor.d.ts +13 -0
  103. package/dist/src/filters/shaders/blendImage.d.ts +3 -0
  104. package/dist/src/filters/shaders/blur.d.ts +2 -0
  105. package/dist/src/filters/shaders/brightness.d.ts +2 -0
  106. package/dist/src/filters/shaders/colorMatrix.d.ts +2 -0
  107. package/dist/src/filters/shaders/constrast.d.ts +2 -0
  108. package/dist/src/filters/shaders/convolute.d.ts +11 -0
  109. package/dist/src/filters/shaders/gamma.d.ts +2 -0
  110. package/dist/src/filters/shaders/grayscale.d.ts +3 -0
  111. package/dist/src/filters/shaders/invert.d.ts +2 -0
  112. package/dist/src/filters/shaders/noise.d.ts +2 -0
  113. package/dist/src/filters/shaders/pixelate.d.ts +2 -0
  114. package/dist/src/filters/shaders/removeColor.d.ts +2 -0
  115. package/dist/src/filters/shaders/saturation.d.ts +2 -0
  116. package/dist/src/filters/shaders/vibrance.d.ts +2 -0
  117. package/dist/src/filters/typedefs.d.ts +49 -0
  118. package/dist/src/gradient/Gradient.d.ts +149 -0
  119. package/dist/src/gradient/constants.d.ts +15 -0
  120. package/dist/src/gradient/parser/index.d.ts +4 -0
  121. package/dist/src/gradient/parser/misc.d.ts +4 -0
  122. package/dist/src/gradient/parser/parseColorStops.d.ts +3 -0
  123. package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
  124. package/dist/src/gradient/typedefs.d.ts +93 -0
  125. package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
  126. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
  127. package/dist/src/parkinglot/straighten.d.ts +2 -0
  128. package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
  129. package/dist/src/parser/attributes.d.ts +6 -0
  130. package/dist/src/parser/constants.d.ts +53 -0
  131. package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
  132. package/dist/src/parser/elementById.d.ts +6 -0
  133. package/dist/src/parser/elementMatchesRule.d.ts +5 -0
  134. package/dist/src/parser/elements_parser.d.ts +3 -0
  135. package/dist/src/parser/getCSSRules.d.ts +7 -0
  136. package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
  137. package/dist/src/parser/getGradientDefs.d.ts +7 -0
  138. package/dist/src/parser/getMultipleNodes.d.ts +2 -0
  139. package/dist/src/parser/getSvgRegex.d.ts +2 -0
  140. package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
  141. package/dist/src/parser/index.d.ts +10 -0
  142. package/dist/src/parser/loadSVGFromString.d.ts +12 -0
  143. package/dist/src/parser/loadSVGFromURL.d.ts +13 -0
  144. package/dist/src/parser/normalizeAttr.d.ts +2 -0
  145. package/dist/src/parser/normalizeValue.d.ts +2 -0
  146. package/dist/src/parser/parseAttributes.d.ts +9 -0
  147. package/dist/src/parser/parseElements.d.ts +11 -0
  148. package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
  149. package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
  150. package/dist/src/parser/parseSVGDocument.d.ts +15 -0
  151. package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
  152. package/dist/src/parser/parseStyleObject.d.ts +2 -0
  153. package/dist/src/parser/parseStyleString.d.ts +2 -0
  154. package/dist/src/parser/parseTransformAttribute.d.ts +10 -0
  155. package/dist/src/parser/parseUseDirectives.d.ts +2 -0
  156. package/dist/src/parser/percent.d.ts +9 -0
  157. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
  158. package/dist/src/parser/rotateMatrix.d.ts +2 -0
  159. package/dist/src/parser/scaleMatrix.d.ts +2 -0
  160. package/dist/src/parser/selectorMatches.d.ts +2 -0
  161. package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
  162. package/dist/src/parser/skewMatrix.d.ts +2 -0
  163. package/dist/src/parser/translateMatrix.d.ts +2 -0
  164. package/dist/src/shapes/ActiveSelection.d.ts +82 -0
  165. package/dist/src/shapes/Circle.d.ts +99 -0
  166. package/dist/src/shapes/Ellipse.d.ts +84 -0
  167. package/dist/src/shapes/Group.d.ts +408 -0
  168. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
  169. package/dist/src/shapes/IText/IText.d.ts +335 -0
  170. package/dist/src/shapes/IText/ITextBehavior.d.ts +287 -0
  171. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +83 -0
  172. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +195 -0
  173. package/dist/src/shapes/IText/constants.d.ts +13 -0
  174. package/dist/src/shapes/Image.d.ts +311 -0
  175. package/dist/src/shapes/Line.d.ts +126 -0
  176. package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
  177. package/dist/src/shapes/Object/FabricObject.d.ts +11 -0
  178. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
  179. package/dist/src/shapes/Object/InteractiveObject.d.ts +296 -0
  180. package/dist/src/shapes/Object/Object.d.ts +594 -0
  181. package/dist/src/shapes/Object/ObjectGeometry.d.ts +327 -0
  182. package/dist/src/shapes/Object/ObjectOrigin.d.ts +109 -0
  183. package/dist/src/shapes/Object/StackedObject.d.ts +72 -0
  184. package/dist/src/shapes/Object/defaultValues.d.ts +76 -0
  185. package/dist/src/shapes/Object/types/BaseProps.d.ts +84 -0
  186. package/dist/src/shapes/Object/types/BorderProps.d.ts +37 -0
  187. package/dist/src/shapes/Object/types/ControlProps.d.ts +62 -0
  188. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts +96 -0
  189. package/dist/src/shapes/Object/types/FillStrokeProps.d.ts +80 -0
  190. package/dist/src/shapes/Object/types/LockInteractionProps.d.ts +51 -0
  191. package/dist/src/shapes/Object/types/ObjectProps.d.ts +42 -0
  192. package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts +66 -0
  193. package/dist/src/shapes/Object/types/index.d.ts +6 -0
  194. package/dist/src/shapes/Path.d.ts +130 -0
  195. package/dist/src/shapes/Polygon.d.ts +9 -0
  196. package/dist/src/shapes/Polyline.d.ts +140 -0
  197. package/dist/src/shapes/Rect.d.ts +76 -0
  198. package/dist/src/shapes/Text/StyledText.d.ts +119 -0
  199. package/dist/src/shapes/Text/Text.d.ts +673 -0
  200. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
  201. package/dist/src/shapes/Text/constants.d.ts +7 -0
  202. package/dist/src/shapes/Textbox.d.ts +185 -0
  203. package/dist/src/shapes/Triangle.d.ts +25 -0
  204. package/dist/src/typedefs.d.ts +90 -0
  205. package/dist/src/util/animation/AnimationBase.d.ts +54 -0
  206. package/dist/src/util/animation/AnimationFrameProvider.d.ts +3 -0
  207. package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
  208. package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
  209. package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
  210. package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
  211. package/dist/src/util/animation/animate.d.ts +37 -0
  212. package/dist/src/util/animation/easing.d.ts +130 -0
  213. package/dist/src/util/animation/types.d.ts +87 -0
  214. package/dist/src/util/applyMixins.d.ts +8 -0
  215. package/dist/src/util/dom_event.d.ts +5 -0
  216. package/dist/src/util/dom_misc.d.ts +39 -0
  217. package/dist/src/util/dom_request.d.ts +14 -0
  218. package/dist/src/util/dom_style.d.ts +7 -0
  219. package/dist/src/util/fireEvent.d.ts +3 -0
  220. package/dist/src/util/index.d.ts +35 -0
  221. package/dist/src/util/internals/cloneDeep.d.ts +2 -0
  222. package/dist/src/util/internals/getRandomInt.d.ts +8 -0
  223. package/dist/src/util/internals/ifNaN.d.ts +8 -0
  224. package/dist/src/util/internals/index.d.ts +4 -0
  225. package/dist/src/util/internals/removeFromArray.d.ts +9 -0
  226. package/dist/src/util/internals/uid.d.ts +2 -0
  227. package/dist/src/util/lang_string.d.ts +22 -0
  228. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
  229. package/dist/src/util/misc/capValue.d.ts +2 -0
  230. package/dist/src/util/misc/cos.d.ts +10 -0
  231. package/dist/src/util/misc/dom.d.ts +28 -0
  232. package/dist/src/util/misc/findScaleTo.d.ts +29 -0
  233. package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
  234. package/dist/src/util/misc/isTransparent.d.ts +11 -0
  235. package/dist/src/util/misc/matrix.d.ts +92 -0
  236. package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
  237. package/dist/src/util/misc/objectEnlive.d.ts +56 -0
  238. package/dist/src/util/misc/objectTransforms.d.ts +68 -0
  239. package/dist/src/util/misc/pick.d.ts +9 -0
  240. package/dist/src/util/misc/planeChange.d.ts +84 -0
  241. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +51 -0
  242. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +81 -0
  243. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +25 -0
  244. package/dist/src/util/misc/projectStroke/index.d.ts +11 -0
  245. package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
  246. package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
  247. package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
  248. package/dist/src/util/misc/rotatePoint.d.ts +12 -0
  249. package/dist/src/util/misc/sin.d.ts +10 -0
  250. package/dist/src/util/misc/svgParsing.d.ts +53 -0
  251. package/dist/src/util/misc/textStyles.d.ts +32 -0
  252. package/dist/src/util/misc/toFixed.d.ts +8 -0
  253. package/dist/src/util/misc/vectors.d.ts +57 -0
  254. package/dist/src/util/path/index.d.ts +96 -0
  255. package/dist/src/util/path/regex.d.ts +3 -0
  256. package/dist/src/util/path/typechecks.d.ts +24 -0
  257. package/dist/src/util/path/typedefs.d.ts +220 -0
  258. package/dist/src/util/transform_matrix_removal.d.ts +14 -0
  259. package/dist/src/util/types.d.ts +19 -0
  260. package/fabric.ts +51 -0
  261. package/index.node.ts +37 -0
  262. package/index.ts +1 -0
  263. package/package.json +100 -40
  264. package/publish.js +0 -26
  265. package/rollup.config.mjs +91 -0
  266. package/rollup.test.config.js +24 -0
  267. package/scripts/build.mjs +50 -0
  268. package/scripts/buildLock.mjs +115 -0
  269. package/scripts/buildReporter.mjs +15 -0
  270. package/scripts/buildStats.mjs +139 -0
  271. package/scripts/dirname.mjs +14 -0
  272. package/scripts/git.mjs +36 -0
  273. package/scripts/index.mjs +564 -0
  274. package/scripts/sandbox.mjs +149 -0
  275. package/src/ClassRegistry.ts +56 -0
  276. package/src/Collection.ts +346 -0
  277. package/src/CommonMethods.ts +63 -0
  278. package/src/EventTypeDefs.ts +296 -0
  279. package/src/Intersection.ts +302 -0
  280. package/src/Observable.ts +181 -0
  281. package/src/Pattern.ts +227 -0
  282. package/src/Point.ts +388 -0
  283. package/src/Shadow.ts +214 -0
  284. package/src/brushes/{base_brush.class.js → BaseBrush.ts} +65 -42
  285. package/src/brushes/CircleBrush.ts +145 -0
  286. package/src/brushes/PatternBrush.ts +70 -0
  287. package/src/brushes/PencilBrush.ts +300 -0
  288. package/src/brushes/SprayBrush.ts +219 -0
  289. package/src/cache.ts +90 -0
  290. package/src/canvas/Canvas.ts +1607 -0
  291. package/src/canvas/SelectableCanvas.ts +1608 -0
  292. package/src/canvas/StaticCanvas.ts +1734 -0
  293. package/src/canvas/TextEditingManager.ts +48 -0
  294. package/src/canvas/canvas_gestures.mixin.ts +207 -0
  295. package/src/color/Color.ts +404 -0
  296. package/src/color/color_map.ts +154 -0
  297. package/src/color/constants.ts +26 -0
  298. package/src/color/util.ts +32 -0
  299. package/src/config.ts +159 -0
  300. package/src/constants.ts +20 -0
  301. package/src/controls/Control.ts +380 -0
  302. package/src/controls/changeWidth.ts +52 -0
  303. package/src/controls/commonControls.ts +105 -0
  304. package/src/controls/controlRendering.ts +138 -0
  305. package/src/controls/drag.ts +31 -0
  306. package/src/controls/index.ts +22 -0
  307. package/src/controls/polyControl.ts +135 -0
  308. package/src/controls/rotate.ts +87 -0
  309. package/src/controls/scale.ts +277 -0
  310. package/src/controls/scaleSkew.ts +92 -0
  311. package/src/controls/skew.ts +242 -0
  312. package/src/controls/util.ts +154 -0
  313. package/src/controls/wrapWithFireEvent.ts +25 -0
  314. package/src/controls/wrapWithFixedAnchor.ts +20 -0
  315. package/src/env/browser.ts +32 -0
  316. package/src/env/index.ts +24 -0
  317. package/src/env/node.ts +56 -0
  318. package/src/env/types.ts +15 -0
  319. package/src/filters/{base_filter.class.js → BaseFilter.ts} +192 -151
  320. package/src/filters/BlendColor.ts +217 -0
  321. package/src/filters/BlendImage.ts +228 -0
  322. package/src/filters/Blur.ts +179 -0
  323. package/src/filters/Boilerplate.ts +94 -0
  324. package/src/filters/Brightness.ts +83 -0
  325. package/src/filters/Canvas2dFilterBackend.ts +65 -0
  326. package/src/filters/ColorMatrix.ts +145 -0
  327. package/src/filters/ColorMatrixFilters.ts +77 -0
  328. package/src/filters/Composed.ts +76 -0
  329. package/src/filters/Contrast.ts +82 -0
  330. package/src/filters/Convolute.ts +184 -0
  331. package/src/filters/FilterBackend.ts +34 -0
  332. package/src/filters/GLProbes/GLProbe.ts +11 -0
  333. package/src/filters/GLProbes/NodeGLProbe.ts +15 -0
  334. package/src/filters/GLProbes/WebGLProbe.ts +46 -0
  335. package/src/filters/Gamma.ts +110 -0
  336. package/src/filters/Grayscale.ts +102 -0
  337. package/src/filters/HueRotation.ts +62 -0
  338. package/src/filters/Invert.ts +99 -0
  339. package/src/filters/Noise.ts +94 -0
  340. package/src/filters/Pixelate.ts +96 -0
  341. package/src/filters/RemoveColor.ts +135 -0
  342. package/src/filters/Resize.ts +538 -0
  343. package/src/filters/Saturation.ts +87 -0
  344. package/src/filters/Vibrance.ts +88 -0
  345. package/src/filters/WebGLFilterBackend.ts +430 -0
  346. package/src/filters/filters.ts +28 -0
  347. package/src/filters/index.ts +5 -0
  348. package/src/filters/shaders/baseFilter.ts +19 -0
  349. package/src/filters/shaders/blendColor.ts +33 -0
  350. package/src/filters/shaders/blendImage.ts +32 -0
  351. package/src/filters/shaders/blur.ts +24 -0
  352. package/src/filters/shaders/brightness.ts +11 -0
  353. package/src/filters/shaders/colorMatrix.ts +12 -0
  354. package/src/filters/shaders/constrast.ts +11 -0
  355. package/src/filters/shaders/convolute.ts +154 -0
  356. package/src/filters/shaders/gamma.ts +15 -0
  357. package/src/filters/shaders/grayscale.ts +36 -0
  358. package/src/filters/shaders/invert.ts +19 -0
  359. package/src/filters/shaders/noise.ts +16 -0
  360. package/src/filters/shaders/pixelate.ts +19 -0
  361. package/src/filters/shaders/removeColor.ts +13 -0
  362. package/src/filters/shaders/saturation.ts +15 -0
  363. package/src/filters/shaders/vibrance.ts +16 -0
  364. package/src/filters/typedefs.ts +65 -0
  365. package/src/gradient/Gradient.ts +406 -0
  366. package/src/gradient/constants.ts +12 -0
  367. package/src/gradient/parser/index.ts +3 -0
  368. package/src/gradient/parser/misc.ts +13 -0
  369. package/src/gradient/parser/parseColorStops.ts +56 -0
  370. package/src/gradient/parser/parseCoords.ts +73 -0
  371. package/src/gradient/typedefs.ts +104 -0
  372. package/src/mixins/{eraser_brush.mixin.js → eraser_brush.mixin.ts} +350 -239
  373. package/src/parkinglot/canvas_animation.mixin.ts +121 -0
  374. package/src/parkinglot/straighten.ts +58 -0
  375. package/src/parser/applyViewboxTransform.ts +157 -0
  376. package/src/parser/attributes.ts +25 -0
  377. package/src/parser/constants.ts +115 -0
  378. package/src/parser/doesSomeParentMatch.ts +19 -0
  379. package/src/parser/elementById.ts +21 -0
  380. package/src/parser/elementMatchesRule.ts +16 -0
  381. package/src/parser/elements_parser.ts +191 -0
  382. package/src/parser/getCSSRules.ts +62 -0
  383. package/src/parser/getGlobalStylesForElement.ts +19 -0
  384. package/src/parser/getGradientDefs.ts +31 -0
  385. package/src/parser/getMultipleNodes.ts +15 -0
  386. package/src/parser/getSvgRegex.ts +5 -0
  387. package/src/parser/hasAncestorWithNodeName.ts +14 -0
  388. package/src/parser/index.ts +9 -0
  389. package/src/parser/loadSVGFromString.ts +26 -0
  390. package/src/parser/loadSVGFromURL.ts +40 -0
  391. package/src/parser/normalizeAttr.ts +10 -0
  392. package/src/parser/normalizeValue.ts +63 -0
  393. package/src/parser/parseAttributes.ts +90 -0
  394. package/src/parser/parseElements.ts +28 -0
  395. package/src/parser/parseFontDeclaration.ts +44 -0
  396. package/src/parser/parsePointsAttribute.ts +34 -0
  397. package/src/parser/parseSVGDocument.ts +93 -0
  398. package/src/parser/parseStyleAttribute.ts +27 -0
  399. package/src/parser/parseStyleObject.ts +15 -0
  400. package/src/parser/parseStyleString.ts +16 -0
  401. package/src/parser/parseTransformAttribute.ts +155 -0
  402. package/src/parser/parseUseDirectives.ts +78 -0
  403. package/src/parser/percent.ts +27 -0
  404. package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
  405. package/src/parser/rotateMatrix.ts +21 -0
  406. package/src/parser/scaleMatrix.ts +9 -0
  407. package/src/parser/selectorMatches.ts +25 -0
  408. package/src/parser/setStrokeFillOpacity.ts +40 -0
  409. package/src/parser/skewMatrix.ts +6 -0
  410. package/src/parser/translateMatrix.ts +8 -0
  411. package/src/shapes/ActiveSelection.ts +189 -0
  412. package/src/shapes/Circle.ts +242 -0
  413. package/src/shapes/Ellipse.ts +179 -0
  414. package/src/shapes/Group.ts +1100 -0
  415. package/src/shapes/IText/DraggableTextDelegate.ts +382 -0
  416. package/src/shapes/IText/IText.ts +693 -0
  417. package/src/shapes/IText/ITextBehavior.ts +1064 -0
  418. package/src/shapes/IText/ITextClickBehavior.ts +325 -0
  419. package/src/shapes/IText/ITextKeyBehavior.ts +685 -0
  420. package/src/shapes/IText/constants.ts +47 -0
  421. package/src/shapes/Image.ts +841 -0
  422. package/src/shapes/Line.ts +346 -0
  423. package/src/shapes/Object/AnimatableObject.ts +106 -0
  424. package/src/shapes/Object/FabricObject.ts +29 -0
  425. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +277 -0
  426. package/src/shapes/Object/InteractiveObject.ts +672 -0
  427. package/src/shapes/Object/Object.ts +1561 -0
  428. package/src/shapes/Object/ObjectGeometry.ts +813 -0
  429. package/src/shapes/Object/ObjectOrigin.ts +276 -0
  430. package/src/shapes/Object/StackedObject.ts +206 -0
  431. package/src/shapes/Object/defaultValues.ts +108 -0
  432. package/src/shapes/Object/types/BaseProps.ts +96 -0
  433. package/src/shapes/Object/types/BorderProps.ts +40 -0
  434. package/src/shapes/Object/types/ControlProps.ts +69 -0
  435. package/src/shapes/Object/types/FabricObjectProps.ts +111 -0
  436. package/src/shapes/Object/types/FillStrokeProps.ts +90 -0
  437. package/src/shapes/Object/types/LockInteractionProps.ts +57 -0
  438. package/src/shapes/Object/types/ObjectProps.ts +46 -0
  439. package/src/shapes/Object/types/SerializedObjectProps.ts +73 -0
  440. package/src/shapes/Object/types/index.ts +8 -0
  441. package/src/shapes/Path.ts +416 -0
  442. package/src/shapes/Polygon.ts +20 -0
  443. package/src/shapes/Polyline.ts +359 -0
  444. package/src/shapes/Rect.ts +233 -0
  445. package/src/shapes/Text/StyledText.ts +329 -0
  446. package/src/shapes/Text/Text.ts +1884 -0
  447. package/src/shapes/Text/TextSVGExportMixin.ts +288 -0
  448. package/src/shapes/Text/constants.ts +91 -0
  449. package/src/shapes/Textbox.ts +477 -0
  450. package/src/shapes/Triangle.ts +60 -0
  451. package/src/typedefs.ts +115 -0
  452. package/src/util/animation/AnimationBase.ts +166 -0
  453. package/src/util/animation/AnimationFrameProvider.ts +9 -0
  454. package/src/util/animation/AnimationRegistry.ts +58 -0
  455. package/src/util/animation/ArrayAnimation.ts +27 -0
  456. package/src/util/animation/ColorAnimation.ts +74 -0
  457. package/src/util/animation/ValueAnimation.ts +29 -0
  458. package/src/util/animation/animate.ts +74 -0
  459. package/src/util/animation/easing.ts +327 -0
  460. package/src/util/animation/types.ts +136 -0
  461. package/src/util/applyMixins.ts +22 -0
  462. package/src/util/dom_event.ts +28 -0
  463. package/src/util/dom_misc.ts +121 -0
  464. package/src/util/dom_request.ts +64 -0
  465. package/src/util/dom_style.ts +20 -0
  466. package/src/util/fireEvent.ts +15 -0
  467. package/src/util/index.ts +102 -0
  468. package/src/util/internals/cloneDeep.ts +2 -0
  469. package/src/util/internals/getRandomInt.ts +8 -0
  470. package/src/util/internals/ifNaN.ts +9 -0
  471. package/src/util/internals/index.ts +3 -0
  472. package/src/util/internals/removeFromArray.ts +14 -0
  473. package/src/util/internals/uid.ts +3 -0
  474. package/src/util/lang_string.ts +79 -0
  475. package/src/util/misc/boundingBoxFromPoints.ts +37 -0
  476. package/src/util/misc/capValue.ts +2 -0
  477. package/src/util/misc/cos.ts +24 -0
  478. package/src/util/misc/dom.ts +50 -0
  479. package/src/util/misc/findScaleTo.ts +44 -0
  480. package/src/util/misc/groupSVGElements.ts +15 -0
  481. package/src/util/misc/isTransparent.ts +28 -0
  482. package/src/util/misc/matrix.ts +207 -0
  483. package/src/util/misc/mergeClipPaths.ts +40 -0
  484. package/src/util/misc/objectEnlive.ts +189 -0
  485. package/src/util/misc/objectTransforms.ts +129 -0
  486. package/src/util/misc/pick.ts +29 -0
  487. package/src/util/misc/planeChange.ts +136 -0
  488. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +112 -0
  489. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +226 -0
  490. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +75 -0
  491. package/src/util/misc/projectStroke/index.ts +53 -0
  492. package/src/util/misc/projectStroke/types.ts +24 -0
  493. package/src/util/misc/radiansDegreesConversion.ts +18 -0
  494. package/src/util/misc/resolveOrigin.ts +22 -0
  495. package/src/util/misc/rotatePoint.ts +15 -0
  496. package/src/util/misc/sin.ts +26 -0
  497. package/src/util/misc/svgParsing.ts +181 -0
  498. package/src/util/misc/textStyles.ts +134 -0
  499. package/src/util/misc/toFixed.ts +8 -0
  500. package/src/util/misc/vectors.ts +82 -0
  501. package/src/util/path/index.ts +1038 -0
  502. package/src/util/path/regex.ts +41 -0
  503. package/src/util/path/typechecks.ts +145 -0
  504. package/src/util/path/typedefs.ts +305 -0
  505. package/src/util/transform_matrix_removal.ts +60 -0
  506. package/src/util/types.ts +78 -0
  507. package/tsconfig.json +106 -0
  508. package/HEADER.js +0 -203
  509. package/build.js +0 -287
  510. package/dist/fabric.js +0 -31187
  511. package/dist/fabric.min.js +0 -1
  512. package/old-travis-reference.yml +0 -97
  513. package/src/brushes/circle_brush.class.js +0 -144
  514. package/src/brushes/pattern_brush.class.js +0 -61
  515. package/src/brushes/pencil_brush.class.js +0 -310
  516. package/src/brushes/spray_brush.class.js +0 -219
  517. package/src/canvas.class.js +0 -1312
  518. package/src/color.class.js +0 -636
  519. package/src/control.class.js +0 -339
  520. package/src/controls.actions.js +0 -740
  521. package/src/controls.render.js +0 -99
  522. package/src/elements_parser.js +0 -152
  523. package/src/filters/2d_backend.class.js +0 -65
  524. package/src/filters/blendcolor_filter.class.js +0 -251
  525. package/src/filters/blendimage_filter.class.js +0 -247
  526. package/src/filters/blur_filter.class.js +0 -217
  527. package/src/filters/brightness_filter.class.js +0 -113
  528. package/src/filters/colormatrix_filter.class.js +0 -159
  529. package/src/filters/composed_filter.class.js +0 -72
  530. package/src/filters/contrast_filter.class.js +0 -113
  531. package/src/filters/convolute_filter.class.js +0 -352
  532. package/src/filters/filter_boilerplate.js +0 -111
  533. package/src/filters/filter_generator.js +0 -85
  534. package/src/filters/gamma_filter.class.js +0 -136
  535. package/src/filters/grayscale_filter.class.js +0 -154
  536. package/src/filters/hue_rotation.class.js +0 -107
  537. package/src/filters/invert_filter.class.js +0 -111
  538. package/src/filters/noise_filter.class.js +0 -134
  539. package/src/filters/pixelate_filter.class.js +0 -137
  540. package/src/filters/removecolor_filter.class.js +0 -173
  541. package/src/filters/resize_filter.class.js +0 -490
  542. package/src/filters/saturate_filter.class.js +0 -119
  543. package/src/filters/vibrance_filter.class.js +0 -122
  544. package/src/filters/webgl_backend.class.js +0 -396
  545. package/src/globalFabric.js +0 -4
  546. package/src/gradient.class.js +0 -490
  547. package/src/intersection.class.js +0 -172
  548. package/src/log.js +0 -11
  549. package/src/mixins/animation.mixin.js +0 -231
  550. package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
  551. package/src/mixins/canvas_events.mixin.js +0 -974
  552. package/src/mixins/canvas_gestures.mixin.js +0 -149
  553. package/src/mixins/canvas_grouping.mixin.js +0 -177
  554. package/src/mixins/canvas_serialization.mixin.js +0 -228
  555. package/src/mixins/collection.mixin.js +0 -170
  556. package/src/mixins/default_controls.js +0 -114
  557. package/src/mixins/itext.svg_export.js +0 -241
  558. package/src/mixins/itext_behavior.mixin.js +0 -940
  559. package/src/mixins/itext_click_behavior.mixin.js +0 -278
  560. package/src/mixins/itext_key_behavior.mixin.js +0 -694
  561. package/src/mixins/object.svg_export.js +0 -258
  562. package/src/mixins/object_geometry.mixin.js +0 -683
  563. package/src/mixins/object_interactivity.mixin.js +0 -314
  564. package/src/mixins/object_origin.mixin.js +0 -255
  565. package/src/mixins/object_stacking.mixin.js +0 -80
  566. package/src/mixins/object_straightening.mixin.js +0 -80
  567. package/src/mixins/observable.mixin.js +0 -141
  568. package/src/mixins/shared_methods.mixin.js +0 -94
  569. package/src/mixins/stateful.mixin.js +0 -107
  570. package/src/mixins/text_style.mixin.js +0 -324
  571. package/src/parser.js +0 -1090
  572. package/src/pattern.class.js +0 -189
  573. package/src/point.class.js +0 -337
  574. package/src/shadow.class.js +0 -195
  575. package/src/shapes/active_selection.class.js +0 -155
  576. package/src/shapes/circle.class.js +0 -210
  577. package/src/shapes/ellipse.class.js +0 -181
  578. package/src/shapes/group.class.js +0 -593
  579. package/src/shapes/image.class.js +0 -764
  580. package/src/shapes/itext.class.js +0 -526
  581. package/src/shapes/line.class.js +0 -324
  582. package/src/shapes/object.class.js +0 -2008
  583. package/src/shapes/path.class.js +0 -384
  584. package/src/shapes/polygon.class.js +0 -81
  585. package/src/shapes/polyline.class.js +0 -268
  586. package/src/shapes/rect.class.js +0 -187
  587. package/src/shapes/text.class.js +0 -1696
  588. package/src/shapes/textbox.class.js +0 -461
  589. package/src/shapes/triangle.class.js +0 -93
  590. package/src/static_canvas.class.js +0 -1881
  591. package/src/util/anim_ease.js +0 -398
  592. package/src/util/animate.js +0 -254
  593. package/src/util/animate_color.js +0 -74
  594. package/src/util/dom_event.js +0 -50
  595. package/src/util/dom_misc.js +0 -300
  596. package/src/util/dom_request.js +0 -54
  597. package/src/util/dom_style.js +0 -70
  598. package/src/util/lang_array.js +0 -94
  599. package/src/util/lang_class.js +0 -115
  600. package/src/util/lang_object.js +0 -75
  601. package/src/util/lang_string.js +0 -110
  602. package/src/util/misc.js +0 -1330
  603. package/src/util/named_accessors.mixin.js +0 -428
  604. package/src/util/path.js +0 -829
@@ -1,111 +0,0 @@
1
- (function(global) {
2
-
3
- 'use strict';
4
-
5
- var fabric = global.fabric || (global.fabric = { }),
6
- filters = fabric.Image.filters,
7
- createClass = fabric.util.createClass;
8
-
9
- /**
10
- * MyFilter filter class
11
- * @class fabric.Image.filters.MyFilter
12
- * @memberOf fabric.Image.filters
13
- * @extends fabric.Image.filters.BaseFilter
14
- * @see {@link fabric.Image.filters.MyFilter#initialize} for constructor definition
15
- * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}
16
- * @example
17
- * var filter = new fabric.Image.filters.MyFilter({
18
- * add here an example of how to use your filter
19
- * });
20
- * object.filters.push(filter);
21
- * object.applyFilters();
22
- */
23
- filters.MyFilter = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.MyFilter.prototype */ {
24
-
25
- /**
26
- * Filter type
27
- * @param {String} type
28
- * @default
29
- */
30
- type: 'MyFilter',
31
-
32
- /**
33
- * Fragment source for the myParameter program
34
- */
35
- fragmentSource: 'precision highp float;\n' +
36
- 'uniform sampler2D uTexture;\n' +
37
- 'uniform float uMyParameter;\n' +
38
- 'varying vec2 vTexCoord;\n' +
39
- 'void main() {\n' +
40
- 'vec4 color = texture2D(uTexture, vTexCoord);\n' +
41
- // add your gl code here
42
- 'gl_FragColor = color;\n' +
43
- '}',
44
-
45
- /**
46
- * MyFilter value, from -1 to 1.
47
- * translated to -255 to 255 for 2d
48
- * 0.0039215686 is the part of 1 that get translated to 1 in 2d
49
- * @param {Number} myParameter
50
- * @default
51
- */
52
- myParameter: 0,
53
-
54
- /**
55
- * Describe the property that is the filter parameter
56
- * @param {String} m
57
- * @default
58
- */
59
- mainParameter: 'myParameter',
60
-
61
- /**
62
- * Apply the MyFilter operation to a Uint8ClampedArray representing the pixels of an image.
63
- *
64
- * @param {Object} options
65
- * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.
66
- */
67
- applyTo2d: function(options) {
68
- if (this.myParameter === 0) {
69
- // early return if the parameter value has a neutral value
70
- return;
71
- }
72
- var imageData = options.imageData,
73
- data = imageData.data, i, len = data.length;
74
- for (i = 0; i < len; i += 4) {
75
- // insert here your code to modify data[i]
76
- }
77
- },
78
-
79
- /**
80
- * Return WebGL uniform locations for this filter's shader.
81
- *
82
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
83
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
84
- */
85
- getUniformLocations: function(gl, program) {
86
- return {
87
- uMyParameter: gl.getUniformLocation(program, 'uMyParameter'),
88
- };
89
- },
90
-
91
- /**
92
- * Send data from this filter to its shader program's uniforms.
93
- *
94
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
95
- * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
96
- */
97
- sendUniformData: function(gl, uniformLocations) {
98
- gl.uniform1f(uniformLocations.uMyParameter, this.myParameter);
99
- },
100
- });
101
-
102
- /**
103
- * Returns filter instance from an object representation
104
- * @static
105
- * @param {Object} object Object to create an instance from
106
- * @param {function} [callback] to be invoked after filter creation
107
- * @return {fabric.Image.filters.MyFilter} Instance of fabric.Image.filters.MyFilter
108
- */
109
- fabric.Image.filters.MyFilter.fromObject = fabric.Image.filters.BaseFilter.fromObject;
110
-
111
- })(typeof exports !== 'undefined' ? exports : this);
@@ -1,85 +0,0 @@
1
- (function(global) {
2
-
3
- 'use strict';
4
-
5
- var fabric = global.fabric || (global.fabric = { }),
6
- filters = fabric.Image.filters,
7
- createClass = fabric.util.createClass;
8
-
9
- var matrices = {
10
- Brownie: [
11
- 0.59970,0.34553,-0.27082,0,0.186,
12
- -0.03770,0.86095,0.15059,0,-0.1449,
13
- 0.24113,-0.07441,0.44972,0,-0.02965,
14
- 0,0,0,1,0
15
- ],
16
- Vintage: [
17
- 0.62793,0.32021,-0.03965,0,0.03784,
18
- 0.02578,0.64411,0.03259,0,0.02926,
19
- 0.04660,-0.08512,0.52416,0,0.02023,
20
- 0,0,0,1,0
21
- ],
22
- Kodachrome: [
23
- 1.12855,-0.39673,-0.03992,0,0.24991,
24
- -0.16404,1.08352,-0.05498,0,0.09698,
25
- -0.16786,-0.56034,1.60148,0,0.13972,
26
- 0,0,0,1,0
27
- ],
28
- Technicolor: [
29
- 1.91252,-0.85453,-0.09155,0,0.04624,
30
- -0.30878,1.76589,-0.10601,0,-0.27589,
31
- -0.23110,-0.75018,1.84759,0,0.12137,
32
- 0,0,0,1,0
33
- ],
34
- Polaroid: [
35
- 1.438,-0.062,-0.062,0,0,
36
- -0.122,1.378,-0.122,0,0,
37
- -0.016,-0.016,1.483,0,0,
38
- 0,0,0,1,0
39
- ],
40
- Sepia: [
41
- 0.393, 0.769, 0.189, 0, 0,
42
- 0.349, 0.686, 0.168, 0, 0,
43
- 0.272, 0.534, 0.131, 0, 0,
44
- 0, 0, 0, 1, 0
45
- ],
46
- BlackWhite: [
47
- 1.5, 1.5, 1.5, 0, -1,
48
- 1.5, 1.5, 1.5, 0, -1,
49
- 1.5, 1.5, 1.5, 0, -1,
50
- 0, 0, 0, 1, 0,
51
- ]
52
- };
53
-
54
- for (var key in matrices) {
55
- filters[key] = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.Sepia.prototype */ {
56
-
57
- /**
58
- * Filter type
59
- * @param {String} type
60
- * @default
61
- */
62
- type: key,
63
-
64
- /**
65
- * Colormatrix for the effect
66
- * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning
67
- * outside the -1, 1 range.
68
- * @param {Array} matrix array of 20 numbers.
69
- * @default
70
- */
71
- matrix: matrices[key],
72
-
73
- /**
74
- * Lock the matrix export for this kind of static, parameter less filters.
75
- */
76
- mainParameter: false,
77
- /**
78
- * Lock the colormatrix on the color part, skipping alpha
79
- */
80
- colorsOnly: true,
81
-
82
- });
83
- fabric.Image.filters[key].fromObject = fabric.Image.filters.BaseFilter.fromObject;
84
- }
85
- })(typeof exports !== 'undefined' ? exports : this);
@@ -1,136 +0,0 @@
1
- (function(global) {
2
-
3
- 'use strict';
4
-
5
- var fabric = global.fabric || (global.fabric = { }),
6
- filters = fabric.Image.filters,
7
- createClass = fabric.util.createClass;
8
-
9
- /**
10
- * Gamma filter class
11
- * @class fabric.Image.filters.Gamma
12
- * @memberOf fabric.Image.filters
13
- * @extends fabric.Image.filters.BaseFilter
14
- * @see {@link fabric.Image.filters.Gamma#initialize} for constructor definition
15
- * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}
16
- * @example
17
- * var filter = new fabric.Image.filters.Gamma({
18
- * gamma: [1, 0.5, 2.1]
19
- * });
20
- * object.filters.push(filter);
21
- * object.applyFilters();
22
- */
23
- filters.Gamma = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Gamma.prototype */ {
24
-
25
- /**
26
- * Filter type
27
- * @param {String} type
28
- * @default
29
- */
30
- type: 'Gamma',
31
-
32
- fragmentSource: 'precision highp float;\n' +
33
- 'uniform sampler2D uTexture;\n' +
34
- 'uniform vec3 uGamma;\n' +
35
- 'varying vec2 vTexCoord;\n' +
36
- 'void main() {\n' +
37
- 'vec4 color = texture2D(uTexture, vTexCoord);\n' +
38
- 'vec3 correction = (1.0 / uGamma);\n' +
39
- 'color.r = pow(color.r, correction.r);\n' +
40
- 'color.g = pow(color.g, correction.g);\n' +
41
- 'color.b = pow(color.b, correction.b);\n' +
42
- 'gl_FragColor = color;\n' +
43
- 'gl_FragColor.rgb *= color.a;\n' +
44
- '}',
45
-
46
- /**
47
- * Gamma array value, from 0.01 to 2.2.
48
- * @param {Array} gamma
49
- * @default
50
- */
51
- gamma: [1, 1, 1],
52
-
53
- /**
54
- * Describe the property that is the filter parameter
55
- * @param {String} m
56
- * @default
57
- */
58
- mainParameter: 'gamma',
59
-
60
- /**
61
- * Constructor
62
- * @param {Object} [options] Options object
63
- */
64
- initialize: function(options) {
65
- this.gamma = [1, 1, 1];
66
- filters.BaseFilter.prototype.initialize.call(this, options);
67
- },
68
-
69
- /**
70
- * Apply the Gamma operation to a Uint8Array representing the pixels of an image.
71
- *
72
- * @param {Object} options
73
- * @param {ImageData} options.imageData The Uint8Array to be filtered.
74
- */
75
- applyTo2d: function(options) {
76
- var imageData = options.imageData, data = imageData.data,
77
- gamma = this.gamma, len = data.length,
78
- rInv = 1 / gamma[0], gInv = 1 / gamma[1],
79
- bInv = 1 / gamma[2], i;
80
-
81
- if (!this.rVals) {
82
- // eslint-disable-next-line
83
- this.rVals = new Uint8Array(256);
84
- // eslint-disable-next-line
85
- this.gVals = new Uint8Array(256);
86
- // eslint-disable-next-line
87
- this.bVals = new Uint8Array(256);
88
- }
89
-
90
- // This is an optimization - pre-compute a look-up table for each color channel
91
- // instead of performing these pow calls for each pixel in the image.
92
- for (i = 0, len = 256; i < len; i++) {
93
- this.rVals[i] = Math.pow(i / 255, rInv) * 255;
94
- this.gVals[i] = Math.pow(i / 255, gInv) * 255;
95
- this.bVals[i] = Math.pow(i / 255, bInv) * 255;
96
- }
97
- for (i = 0, len = data.length; i < len; i += 4) {
98
- data[i] = this.rVals[data[i]];
99
- data[i + 1] = this.gVals[data[i + 1]];
100
- data[i + 2] = this.bVals[data[i + 2]];
101
- }
102
- },
103
-
104
- /**
105
- * Return WebGL uniform locations for this filter's shader.
106
- *
107
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
108
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
109
- */
110
- getUniformLocations: function(gl, program) {
111
- return {
112
- uGamma: gl.getUniformLocation(program, 'uGamma'),
113
- };
114
- },
115
-
116
- /**
117
- * Send data from this filter to its shader program's uniforms.
118
- *
119
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
120
- * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
121
- */
122
- sendUniformData: function(gl, uniformLocations) {
123
- gl.uniform3fv(uniformLocations.uGamma, this.gamma);
124
- },
125
- });
126
-
127
- /**
128
- * Returns filter instance from an object representation
129
- * @static
130
- * @param {Object} object Object to create an instance from
131
- * @param {function} [callback] to be invoked after filter creation
132
- * @return {fabric.Image.filters.Gamma} Instance of fabric.Image.filters.Gamma
133
- */
134
- fabric.Image.filters.Gamma.fromObject = fabric.Image.filters.BaseFilter.fromObject;
135
-
136
- })(typeof exports !== 'undefined' ? exports : this);
@@ -1,154 +0,0 @@
1
- (function(global) {
2
-
3
- 'use strict';
4
-
5
- var fabric = global.fabric || (global.fabric = { }),
6
- filters = fabric.Image.filters,
7
- createClass = fabric.util.createClass;
8
-
9
- /**
10
- * Grayscale image filter class
11
- * @class fabric.Image.filters.Grayscale
12
- * @memberOf fabric.Image.filters
13
- * @extends fabric.Image.filters.BaseFilter
14
- * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}
15
- * @example
16
- * var filter = new fabric.Image.filters.Grayscale();
17
- * object.filters.push(filter);
18
- * object.applyFilters();
19
- */
20
- filters.Grayscale = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Grayscale.prototype */ {
21
-
22
- /**
23
- * Filter type
24
- * @param {String} type
25
- * @default
26
- */
27
- type: 'Grayscale',
28
-
29
- fragmentSource: {
30
- average: 'precision highp float;\n' +
31
- 'uniform sampler2D uTexture;\n' +
32
- 'varying vec2 vTexCoord;\n' +
33
- 'void main() {\n' +
34
- 'vec4 color = texture2D(uTexture, vTexCoord);\n' +
35
- 'float average = (color.r + color.b + color.g) / 3.0;\n' +
36
- 'gl_FragColor = vec4(average, average, average, color.a);\n' +
37
- '}',
38
- lightness: 'precision highp float;\n' +
39
- 'uniform sampler2D uTexture;\n' +
40
- 'uniform int uMode;\n' +
41
- 'varying vec2 vTexCoord;\n' +
42
- 'void main() {\n' +
43
- 'vec4 col = texture2D(uTexture, vTexCoord);\n' +
44
- 'float average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\n' +
45
- 'gl_FragColor = vec4(average, average, average, col.a);\n' +
46
- '}',
47
- luminosity: 'precision highp float;\n' +
48
- 'uniform sampler2D uTexture;\n' +
49
- 'uniform int uMode;\n' +
50
- 'varying vec2 vTexCoord;\n' +
51
- 'void main() {\n' +
52
- 'vec4 col = texture2D(uTexture, vTexCoord);\n' +
53
- 'float average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\n' +
54
- 'gl_FragColor = vec4(average, average, average, col.a);\n' +
55
- '}',
56
- },
57
-
58
-
59
- /**
60
- * Grayscale mode, between 'average', 'lightness', 'luminosity'
61
- * @param {String} type
62
- * @default
63
- */
64
- mode: 'average',
65
-
66
- mainParameter: 'mode',
67
-
68
- /**
69
- * Apply the Grayscale operation to a Uint8Array representing the pixels of an image.
70
- *
71
- * @param {Object} options
72
- * @param {ImageData} options.imageData The Uint8Array to be filtered.
73
- */
74
- applyTo2d: function(options) {
75
- var imageData = options.imageData,
76
- data = imageData.data, i,
77
- len = data.length, value,
78
- mode = this.mode;
79
- for (i = 0; i < len; i += 4) {
80
- if (mode === 'average') {
81
- value = (data[i] + data[i + 1] + data[i + 2]) / 3;
82
- }
83
- else if (mode === 'lightness') {
84
- value = (Math.min(data[i], data[i + 1], data[i + 2]) +
85
- Math.max(data[i], data[i + 1], data[i + 2])) / 2;
86
- }
87
- else if (mode === 'luminosity') {
88
- value = 0.21 * data[i] + 0.72 * data[i + 1] + 0.07 * data[i + 2];
89
- }
90
- data[i] = value;
91
- data[i + 1] = value;
92
- data[i + 2] = value;
93
- }
94
- },
95
-
96
- /**
97
- * Retrieves the cached shader.
98
- * @param {Object} options
99
- * @param {WebGLRenderingContext} options.context The GL context used for rendering.
100
- * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.
101
- */
102
- retrieveShader: function(options) {
103
- var cacheKey = this.type + '_' + this.mode;
104
- if (!options.programCache.hasOwnProperty(cacheKey)) {
105
- var shaderSource = this.fragmentSource[this.mode];
106
- options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);
107
- }
108
- return options.programCache[cacheKey];
109
- },
110
-
111
- /**
112
- * Return WebGL uniform locations for this filter's shader.
113
- *
114
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
115
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
116
- */
117
- getUniformLocations: function(gl, program) {
118
- return {
119
- uMode: gl.getUniformLocation(program, 'uMode'),
120
- };
121
- },
122
-
123
- /**
124
- * Send data from this filter to its shader program's uniforms.
125
- *
126
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
127
- * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
128
- */
129
- sendUniformData: function(gl, uniformLocations) {
130
- // default average mode.
131
- var mode = 1;
132
- gl.uniform1i(uniformLocations.uMode, mode);
133
- },
134
-
135
- /**
136
- * Grayscale filter isNeutralState implementation
137
- * The filter is never neutral
138
- * on the image
139
- **/
140
- isNeutralState: function() {
141
- return false;
142
- },
143
- });
144
-
145
- /**
146
- * Returns filter instance from an object representation
147
- * @static
148
- * @param {Object} object Object to create an instance from
149
- * @param {function} [callback] to be invoked after filter creation
150
- * @return {fabric.Image.filters.Grayscale} Instance of fabric.Image.filters.Grayscale
151
- */
152
- fabric.Image.filters.Grayscale.fromObject = fabric.Image.filters.BaseFilter.fromObject;
153
-
154
- })(typeof exports !== 'undefined' ? exports : this);
@@ -1,107 +0,0 @@
1
- (function(global) {
2
-
3
- 'use strict';
4
-
5
- var fabric = global.fabric || (global.fabric = { }),
6
- filters = fabric.Image.filters,
7
- createClass = fabric.util.createClass;
8
-
9
- /**
10
- * HueRotation filter class
11
- * @class fabric.Image.filters.HueRotation
12
- * @memberOf fabric.Image.filters
13
- * @extends fabric.Image.filters.BaseFilter
14
- * @see {@link fabric.Image.filters.HueRotation#initialize} for constructor definition
15
- * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}
16
- * @example
17
- * var filter = new fabric.Image.filters.HueRotation({
18
- * rotation: -0.5
19
- * });
20
- * object.filters.push(filter);
21
- * object.applyFilters();
22
- */
23
- filters.HueRotation = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.HueRotation.prototype */ {
24
-
25
- /**
26
- * Filter type
27
- * @param {String} type
28
- * @default
29
- */
30
- type: 'HueRotation',
31
-
32
- /**
33
- * HueRotation value, from -1 to 1.
34
- * the unit is radians
35
- * @param {Number} myParameter
36
- * @default
37
- */
38
- rotation: 0,
39
-
40
- /**
41
- * Describe the property that is the filter parameter
42
- * @param {String} m
43
- * @default
44
- */
45
- mainParameter: 'rotation',
46
-
47
- calculateMatrix: function() {
48
- var rad = this.rotation * Math.PI, cos = fabric.util.cos(rad), sin = fabric.util.sin(rad),
49
- aThird = 1 / 3, aThirdSqtSin = Math.sqrt(aThird) * sin, OneMinusCos = 1 - cos;
50
- this.matrix = [
51
- 1, 0, 0, 0, 0,
52
- 0, 1, 0, 0, 0,
53
- 0, 0, 1, 0, 0,
54
- 0, 0, 0, 1, 0
55
- ];
56
- this.matrix[0] = cos + OneMinusCos / 3;
57
- this.matrix[1] = aThird * OneMinusCos - aThirdSqtSin;
58
- this.matrix[2] = aThird * OneMinusCos + aThirdSqtSin;
59
- this.matrix[5] = aThird * OneMinusCos + aThirdSqtSin;
60
- this.matrix[6] = cos + aThird * OneMinusCos;
61
- this.matrix[7] = aThird * OneMinusCos - aThirdSqtSin;
62
- this.matrix[10] = aThird * OneMinusCos - aThirdSqtSin;
63
- this.matrix[11] = aThird * OneMinusCos + aThirdSqtSin;
64
- this.matrix[12] = cos + aThird * OneMinusCos;
65
- },
66
-
67
- /**
68
- * HueRotation isNeutralState implementation
69
- * Used only in image applyFilters to discard filters that will not have an effect
70
- * on the image
71
- * @param {Object} options
72
- **/
73
- isNeutralState: function(options) {
74
- this.calculateMatrix();
75
- return filters.BaseFilter.prototype.isNeutralState.call(this, options);
76
- },
77
-
78
- /**
79
- * Apply this filter to the input image data provided.
80
- *
81
- * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.
82
- *
83
- * @param {Object} options
84
- * @param {Number} options.passes The number of filters remaining to be executed
85
- * @param {Boolean} options.webgl Whether to use webgl to render the filter.
86
- * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.
87
- * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.
88
- * @param {WebGLRenderingContext} options.context The GL context used for rendering.
89
- * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.
90
- */
91
- applyTo: function(options) {
92
- this.calculateMatrix();
93
- filters.BaseFilter.prototype.applyTo.call(this, options);
94
- },
95
-
96
- });
97
-
98
- /**
99
- * Returns filter instance from an object representation
100
- * @static
101
- * @param {Object} object Object to create an instance from
102
- * @param {function} [callback] to be invoked after filter creation
103
- * @return {fabric.Image.filters.HueRotation} Instance of fabric.Image.filters.HueRotation
104
- */
105
- fabric.Image.filters.HueRotation.fromObject = fabric.Image.filters.BaseFilter.fromObject;
106
-
107
- })(typeof exports !== 'undefined' ? exports : this);
@@ -1,111 +0,0 @@
1
- (function(global) {
2
-
3
- 'use strict';
4
-
5
- var fabric = global.fabric || (global.fabric = { }),
6
- filters = fabric.Image.filters,
7
- createClass = fabric.util.createClass;
8
-
9
- /**
10
- * Invert filter class
11
- * @class fabric.Image.filters.Invert
12
- * @memberOf fabric.Image.filters
13
- * @extends fabric.Image.filters.BaseFilter
14
- * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}
15
- * @example
16
- * var filter = new fabric.Image.filters.Invert();
17
- * object.filters.push(filter);
18
- * object.applyFilters(canvas.renderAll.bind(canvas));
19
- */
20
- filters.Invert = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Invert.prototype */ {
21
-
22
- /**
23
- * Filter type
24
- * @param {String} type
25
- * @default
26
- */
27
- type: 'Invert',
28
-
29
- fragmentSource: 'precision highp float;\n' +
30
- 'uniform sampler2D uTexture;\n' +
31
- 'uniform int uInvert;\n' +
32
- 'varying vec2 vTexCoord;\n' +
33
- 'void main() {\n' +
34
- 'vec4 color = texture2D(uTexture, vTexCoord);\n' +
35
- 'if (uInvert == 1) {\n' +
36
- 'gl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a);\n' +
37
- '} else {\n' +
38
- 'gl_FragColor = color;\n' +
39
- '}\n' +
40
- '}',
41
-
42
- /**
43
- * Filter invert. if false, does nothing
44
- * @param {Boolean} invert
45
- * @default
46
- */
47
- invert: true,
48
-
49
- mainParameter: 'invert',
50
-
51
- /**
52
- * Apply the Invert operation to a Uint8Array representing the pixels of an image.
53
- *
54
- * @param {Object} options
55
- * @param {ImageData} options.imageData The Uint8Array to be filtered.
56
- */
57
- applyTo2d: function(options) {
58
- var imageData = options.imageData,
59
- data = imageData.data, i,
60
- len = data.length;
61
- for (i = 0; i < len; i += 4) {
62
- data[i] = 255 - data[i];
63
- data[i + 1] = 255 - data[i + 1];
64
- data[i + 2] = 255 - data[i + 2];
65
- }
66
- },
67
-
68
- /**
69
- * Invert filter isNeutralState implementation
70
- * Used only in image applyFilters to discard filters that will not have an effect
71
- * on the image
72
- * @param {Object} options
73
- **/
74
- isNeutralState: function() {
75
- return !this.invert;
76
- },
77
-
78
- /**
79
- * Return WebGL uniform locations for this filter's shader.
80
- *
81
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
82
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
83
- */
84
- getUniformLocations: function(gl, program) {
85
- return {
86
- uInvert: gl.getUniformLocation(program, 'uInvert'),
87
- };
88
- },
89
-
90
- /**
91
- * Send data from this filter to its shader program's uniforms.
92
- *
93
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
94
- * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
95
- */
96
- sendUniformData: function(gl, uniformLocations) {
97
- gl.uniform1i(uniformLocations.uInvert, this.invert);
98
- },
99
- });
100
-
101
- /**
102
- * Returns filter instance from an object representation
103
- * @static
104
- * @param {Object} object Object to create an instance from
105
- * @param {function} [callback] to be invoked after filter creation
106
- * @return {fabric.Image.filters.Invert} Instance of fabric.Image.filters.Invert
107
- */
108
- fabric.Image.filters.Invert.fromObject = fabric.Image.filters.BaseFilter.fromObject;
109
-
110
-
111
- })(typeof exports !== 'undefined' ? exports : this);