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,247 +0,0 @@
1
- (function(global) {
2
- 'use strict';
3
-
4
- var fabric = global.fabric,
5
- filters = fabric.Image.filters,
6
- createClass = fabric.util.createClass;
7
-
8
- /**
9
- * Image Blend filter class
10
- * @class fabric.Image.filter.BlendImage
11
- * @memberOf fabric.Image.filters
12
- * @extends fabric.Image.filters.BaseFilter
13
- * @example
14
- * var filter = new fabric.Image.filters.BlendColor({
15
- * color: '#000',
16
- * mode: 'multiply'
17
- * });
18
- *
19
- * var filter = new fabric.Image.filters.BlendImage({
20
- * image: fabricImageObject,
21
- * mode: 'multiply',
22
- * alpha: 0.5
23
- * });
24
- * object.filters.push(filter);
25
- * object.applyFilters();
26
- * canvas.renderAll();
27
- */
28
-
29
- filters.BlendImage = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.BlendImage.prototype */ {
30
- type: 'BlendImage',
31
-
32
- /**
33
- * Color to make the blend operation with. default to a reddish color since black or white
34
- * gives always strong result.
35
- **/
36
- image: null,
37
-
38
- /**
39
- * Blend mode for the filter (one of "multiply", "mask")
40
- * @type String
41
- * @default
42
- **/
43
- mode: 'multiply',
44
-
45
- /**
46
- * alpha value. represent the strength of the blend image operation.
47
- * not implemented.
48
- **/
49
- alpha: 1,
50
-
51
- vertexSource: 'attribute vec2 aPosition;\n' +
52
- 'varying vec2 vTexCoord;\n' +
53
- 'varying vec2 vTexCoord2;\n' +
54
- 'uniform mat3 uTransformMatrix;\n' +
55
- 'void main() {\n' +
56
- 'vTexCoord = aPosition;\n' +
57
- 'vTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy;\n' +
58
- 'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\n' +
59
- '}',
60
-
61
- /**
62
- * Fragment source for the Multiply program
63
- */
64
- fragmentSource: {
65
- multiply: 'precision highp float;\n' +
66
- 'uniform sampler2D uTexture;\n' +
67
- 'uniform sampler2D uImage;\n' +
68
- 'uniform vec4 uColor;\n' +
69
- 'varying vec2 vTexCoord;\n' +
70
- 'varying vec2 vTexCoord2;\n' +
71
- 'void main() {\n' +
72
- 'vec4 color = texture2D(uTexture, vTexCoord);\n' +
73
- 'vec4 color2 = texture2D(uImage, vTexCoord2);\n' +
74
- 'color.rgba *= color2.rgba;\n' +
75
- 'gl_FragColor = color;\n' +
76
- '}',
77
- mask: 'precision highp float;\n' +
78
- 'uniform sampler2D uTexture;\n' +
79
- 'uniform sampler2D uImage;\n' +
80
- 'uniform vec4 uColor;\n' +
81
- 'varying vec2 vTexCoord;\n' +
82
- 'varying vec2 vTexCoord2;\n' +
83
- 'void main() {\n' +
84
- 'vec4 color = texture2D(uTexture, vTexCoord);\n' +
85
- 'vec4 color2 = texture2D(uImage, vTexCoord2);\n' +
86
- 'color.a = color2.a;\n' +
87
- 'gl_FragColor = color;\n' +
88
- '}',
89
- },
90
-
91
- /**
92
- * Retrieves the cached shader.
93
- * @param {Object} options
94
- * @param {WebGLRenderingContext} options.context The GL context used for rendering.
95
- * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.
96
- */
97
- retrieveShader: function(options) {
98
- var cacheKey = this.type + '_' + this.mode;
99
- var shaderSource = this.fragmentSource[this.mode];
100
- if (!options.programCache.hasOwnProperty(cacheKey)) {
101
- options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);
102
- }
103
- return options.programCache[cacheKey];
104
- },
105
-
106
- applyToWebGL: function(options) {
107
- // load texture to blend.
108
- var gl = options.context,
109
- texture = this.createTexture(options.filterBackend, this.image);
110
- this.bindAdditionalTexture(gl, texture, gl.TEXTURE1);
111
- this.callSuper('applyToWebGL', options);
112
- this.unbindAdditionalTexture(gl, gl.TEXTURE1);
113
- },
114
-
115
- createTexture: function(backend, image) {
116
- return backend.getCachedTexture(image.cacheKey, image._element);
117
- },
118
-
119
- /**
120
- * Calculate a transformMatrix to adapt the image to blend over
121
- * @param {Object} options
122
- * @param {WebGLRenderingContext} options.context The GL context used for rendering.
123
- * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.
124
- */
125
- calculateMatrix: function() {
126
- var image = this.image,
127
- width = image._element.width,
128
- height = image._element.height;
129
- return [
130
- 1 / image.scaleX, 0, 0,
131
- 0, 1 / image.scaleY, 0,
132
- -image.left / width, -image.top / height, 1
133
- ];
134
- },
135
-
136
- /**
137
- * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image.
138
- *
139
- * @param {Object} options
140
- * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.
141
- */
142
- applyTo2d: function(options) {
143
- var imageData = options.imageData,
144
- resources = options.filterBackend.resources,
145
- data = imageData.data, iLen = data.length,
146
- width = imageData.width,
147
- height = imageData.height,
148
- tr, tg, tb, ta,
149
- r, g, b, a,
150
- canvas1, context, image = this.image, blendData;
151
-
152
- if (!resources.blendImage) {
153
- resources.blendImage = fabric.util.createCanvasElement();
154
- }
155
- canvas1 = resources.blendImage;
156
- context = canvas1.getContext('2d');
157
- if (canvas1.width !== width || canvas1.height !== height) {
158
- canvas1.width = width;
159
- canvas1.height = height;
160
- }
161
- else {
162
- context.clearRect(0, 0, width, height);
163
- }
164
- context.setTransform(image.scaleX, 0, 0, image.scaleY, image.left, image.top);
165
- context.drawImage(image._element, 0, 0, width, height);
166
- blendData = context.getImageData(0, 0, width, height).data;
167
- for (var i = 0; i < iLen; i += 4) {
168
-
169
- r = data[i];
170
- g = data[i + 1];
171
- b = data[i + 2];
172
- a = data[i + 3];
173
-
174
- tr = blendData[i];
175
- tg = blendData[i + 1];
176
- tb = blendData[i + 2];
177
- ta = blendData[i + 3];
178
-
179
- switch (this.mode) {
180
- case 'multiply':
181
- data[i] = r * tr / 255;
182
- data[i + 1] = g * tg / 255;
183
- data[i + 2] = b * tb / 255;
184
- data[i + 3] = a * ta / 255;
185
- break;
186
- case 'mask':
187
- data[i + 3] = ta;
188
- break;
189
- }
190
- }
191
- },
192
-
193
- /**
194
- * Return WebGL uniform locations for this filter's shader.
195
- *
196
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
197
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
198
- */
199
- getUniformLocations: function(gl, program) {
200
- return {
201
- uTransformMatrix: gl.getUniformLocation(program, 'uTransformMatrix'),
202
- uImage: gl.getUniformLocation(program, 'uImage'),
203
- };
204
- },
205
-
206
- /**
207
- * Send data from this filter to its shader program's uniforms.
208
- *
209
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
210
- * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
211
- */
212
- sendUniformData: function(gl, uniformLocations) {
213
- var matrix = this.calculateMatrix();
214
- gl.uniform1i(uniformLocations.uImage, 1); // texture unit 1.
215
- gl.uniformMatrix3fv(uniformLocations.uTransformMatrix, false, matrix);
216
- },
217
-
218
- /**
219
- * Returns object representation of an instance
220
- * @return {Object} Object representation of an instance
221
- */
222
- toObject: function() {
223
- return {
224
- type: this.type,
225
- image: this.image && this.image.toObject(),
226
- mode: this.mode,
227
- alpha: this.alpha
228
- };
229
- }
230
- });
231
-
232
- /**
233
- * Returns filter instance from an object representation
234
- * @static
235
- * @param {Object} object Object to create an instance from
236
- * @param {function} callback to be invoked after filter creation
237
- * @return {fabric.Image.filters.BlendImage} Instance of fabric.Image.filters.BlendImage
238
- */
239
- fabric.Image.filters.BlendImage.fromObject = function(object, callback) {
240
- fabric.Image.fromObject(object.image, function(image) {
241
- var options = fabric.util.object.clone(object);
242
- options.image = image;
243
- callback(new fabric.Image.filters.BlendImage(options));
244
- });
245
- };
246
-
247
- })(typeof exports !== 'undefined' ? exports : this);
@@ -1,217 +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
- * Blur filter class
11
- * @class fabric.Image.filters.Blur
12
- * @memberOf fabric.Image.filters
13
- * @extends fabric.Image.filters.BaseFilter
14
- * @see {@link fabric.Image.filters.Blur#initialize} for constructor definition
15
- * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}
16
- * @example
17
- * var filter = new fabric.Image.filters.Blur({
18
- * blur: 0.5
19
- * });
20
- * object.filters.push(filter);
21
- * object.applyFilters();
22
- * canvas.renderAll();
23
- */
24
- filters.Blur = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blur.prototype */ {
25
-
26
- type: 'Blur',
27
-
28
- /*
29
- 'gl_FragColor = vec4(0.0);',
30
- 'gl_FragColor += texture2D(texture, vTexCoord + -7 * uDelta)*0.0044299121055113265;',
31
- 'gl_FragColor += texture2D(texture, vTexCoord + -6 * uDelta)*0.00895781211794;',
32
- 'gl_FragColor += texture2D(texture, vTexCoord + -5 * uDelta)*0.0215963866053;',
33
- 'gl_FragColor += texture2D(texture, vTexCoord + -4 * uDelta)*0.0443683338718;',
34
- 'gl_FragColor += texture2D(texture, vTexCoord + -3 * uDelta)*0.0776744219933;',
35
- 'gl_FragColor += texture2D(texture, vTexCoord + -2 * uDelta)*0.115876621105;',
36
- 'gl_FragColor += texture2D(texture, vTexCoord + -1 * uDelta)*0.147308056121;',
37
- 'gl_FragColor += texture2D(texture, vTexCoord )*0.159576912161;',
38
- 'gl_FragColor += texture2D(texture, vTexCoord + 1 * uDelta)*0.147308056121;',
39
- 'gl_FragColor += texture2D(texture, vTexCoord + 2 * uDelta)*0.115876621105;',
40
- 'gl_FragColor += texture2D(texture, vTexCoord + 3 * uDelta)*0.0776744219933;',
41
- 'gl_FragColor += texture2D(texture, vTexCoord + 4 * uDelta)*0.0443683338718;',
42
- 'gl_FragColor += texture2D(texture, vTexCoord + 5 * uDelta)*0.0215963866053;',
43
- 'gl_FragColor += texture2D(texture, vTexCoord + 6 * uDelta)*0.00895781211794;',
44
- 'gl_FragColor += texture2D(texture, vTexCoord + 7 * uDelta)*0.0044299121055113265;',
45
- */
46
-
47
- /* eslint-disable max-len */
48
- fragmentSource: 'precision highp float;\n' +
49
- 'uniform sampler2D uTexture;\n' +
50
- 'uniform vec2 uDelta;\n' +
51
- 'varying vec2 vTexCoord;\n' +
52
- 'const float nSamples = 15.0;\n' +
53
- 'vec3 v3offset = vec3(12.9898, 78.233, 151.7182);\n' +
54
- 'float random(vec3 scale) {\n' +
55
- /* use the fragment position for a different seed per-pixel */
56
- 'return fract(sin(dot(gl_FragCoord.xyz, scale)) * 43758.5453);\n' +
57
- '}\n' +
58
- 'void main() {\n' +
59
- 'vec4 color = vec4(0.0);\n' +
60
- 'float total = 0.0;\n' +
61
- 'float offset = random(v3offset);\n' +
62
- 'for (float t = -nSamples; t <= nSamples; t++) {\n' +
63
- 'float percent = (t + offset - 0.5) / nSamples;\n' +
64
- 'float weight = 1.0 - abs(percent);\n' +
65
- 'color += texture2D(uTexture, vTexCoord + uDelta * percent) * weight;\n' +
66
- 'total += weight;\n' +
67
- '}\n' +
68
- 'gl_FragColor = color / total;\n' +
69
- '}',
70
- /* eslint-enable max-len */
71
-
72
- /**
73
- * blur value, in percentage of image dimensions.
74
- * specific to keep the image blur constant at different resolutions
75
- * range between 0 and 1.
76
- * @type Number
77
- * @default
78
- */
79
- blur: 0,
80
-
81
- mainParameter: 'blur',
82
-
83
- applyTo: function(options) {
84
- if (options.webgl) {
85
- // this aspectRatio is used to give the same blur to vertical and horizontal
86
- this.aspectRatio = options.sourceWidth / options.sourceHeight;
87
- options.passes++;
88
- this._setupFrameBuffer(options);
89
- this.horizontal = true;
90
- this.applyToWebGL(options);
91
- this._swapTextures(options);
92
- this._setupFrameBuffer(options);
93
- this.horizontal = false;
94
- this.applyToWebGL(options);
95
- this._swapTextures(options);
96
- }
97
- else {
98
- this.applyTo2d(options);
99
- }
100
- },
101
-
102
- applyTo2d: function(options) {
103
- // paint canvasEl with current image data.
104
- //options.ctx.putImageData(options.imageData, 0, 0);
105
- options.imageData = this.simpleBlur(options);
106
- },
107
-
108
- simpleBlur: function(options) {
109
- var resources = options.filterBackend.resources, canvas1, canvas2,
110
- width = options.imageData.width,
111
- height = options.imageData.height;
112
-
113
- if (!resources.blurLayer1) {
114
- resources.blurLayer1 = fabric.util.createCanvasElement();
115
- resources.blurLayer2 = fabric.util.createCanvasElement();
116
- }
117
- canvas1 = resources.blurLayer1;
118
- canvas2 = resources.blurLayer2;
119
- if (canvas1.width !== width || canvas1.height !== height) {
120
- canvas2.width = canvas1.width = width;
121
- canvas2.height = canvas1.height = height;
122
- }
123
- var ctx1 = canvas1.getContext('2d'),
124
- ctx2 = canvas2.getContext('2d'),
125
- nSamples = 15,
126
- random, percent, j, i,
127
- blur = this.blur * 0.06 * 0.5;
128
-
129
- // load first canvas
130
- ctx1.putImageData(options.imageData, 0, 0);
131
- ctx2.clearRect(0, 0, width, height);
132
-
133
- for (i = -nSamples; i <= nSamples; i++) {
134
- random = (Math.random() - 0.5) / 4;
135
- percent = i / nSamples;
136
- j = blur * percent * width + random;
137
- ctx2.globalAlpha = 1 - Math.abs(percent);
138
- ctx2.drawImage(canvas1, j, random);
139
- ctx1.drawImage(canvas2, 0, 0);
140
- ctx2.globalAlpha = 1;
141
- ctx2.clearRect(0, 0, canvas2.width, canvas2.height);
142
- }
143
- for (i = -nSamples; i <= nSamples; i++) {
144
- random = (Math.random() - 0.5) / 4;
145
- percent = i / nSamples;
146
- j = blur * percent * height + random;
147
- ctx2.globalAlpha = 1 - Math.abs(percent);
148
- ctx2.drawImage(canvas1, random, j);
149
- ctx1.drawImage(canvas2, 0, 0);
150
- ctx2.globalAlpha = 1;
151
- ctx2.clearRect(0, 0, canvas2.width, canvas2.height);
152
- }
153
- options.ctx.drawImage(canvas1, 0, 0);
154
- var newImageData = options.ctx.getImageData(0, 0, canvas1.width, canvas1.height);
155
- ctx1.globalAlpha = 1;
156
- ctx1.clearRect(0, 0, canvas1.width, canvas1.height);
157
- return newImageData;
158
- },
159
-
160
- /**
161
- * Return WebGL uniform locations for this filter's shader.
162
- *
163
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
164
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
165
- */
166
- getUniformLocations: function(gl, program) {
167
- return {
168
- delta: gl.getUniformLocation(program, 'uDelta'),
169
- };
170
- },
171
-
172
- /**
173
- * Send data from this filter to its shader program's uniforms.
174
- *
175
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
176
- * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
177
- */
178
- sendUniformData: function(gl, uniformLocations) {
179
- var delta = this.chooseRightDelta();
180
- gl.uniform2fv(uniformLocations.delta, delta);
181
- },
182
-
183
- /**
184
- * choose right value of image percentage to blur with
185
- * @returns {Array} a numeric array with delta values
186
- */
187
- chooseRightDelta: function() {
188
- var blurScale = 1, delta = [0, 0], blur;
189
- if (this.horizontal) {
190
- if (this.aspectRatio > 1) {
191
- // image is wide, i want to shrink radius horizontal
192
- blurScale = 1 / this.aspectRatio;
193
- }
194
- }
195
- else {
196
- if (this.aspectRatio < 1) {
197
- // image is tall, i want to shrink radius vertical
198
- blurScale = this.aspectRatio;
199
- }
200
- }
201
- blur = blurScale * this.blur * 0.12;
202
- if (this.horizontal) {
203
- delta[0] = blur;
204
- }
205
- else {
206
- delta[1] = blur;
207
- }
208
- return delta;
209
- },
210
- });
211
-
212
- /**
213
- * Deserialize a JSON definition of a BlurFilter into a concrete instance.
214
- */
215
- filters.Blur.fromObject = fabric.Image.filters.BaseFilter.fromObject;
216
-
217
- })(typeof exports !== 'undefined' ? exports : this);
@@ -1,113 +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
- * Brightness filter class
11
- * @class fabric.Image.filters.Brightness
12
- * @memberOf fabric.Image.filters
13
- * @extends fabric.Image.filters.BaseFilter
14
- * @see {@link fabric.Image.filters.Brightness#initialize} for constructor definition
15
- * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}
16
- * @example
17
- * var filter = new fabric.Image.filters.Brightness({
18
- * brightness: 0.05
19
- * });
20
- * object.filters.push(filter);
21
- * object.applyFilters();
22
- */
23
- filters.Brightness = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Brightness.prototype */ {
24
-
25
- /**
26
- * Filter type
27
- * @param {String} type
28
- * @default
29
- */
30
- type: 'Brightness',
31
-
32
- /**
33
- * Fragment source for the brightness program
34
- */
35
- fragmentSource: 'precision highp float;\n' +
36
- 'uniform sampler2D uTexture;\n' +
37
- 'uniform float uBrightness;\n' +
38
- 'varying vec2 vTexCoord;\n' +
39
- 'void main() {\n' +
40
- 'vec4 color = texture2D(uTexture, vTexCoord);\n' +
41
- 'color.rgb += uBrightness;\n' +
42
- 'gl_FragColor = color;\n' +
43
- '}',
44
-
45
- /**
46
- * Brightness 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} brightness
50
- * @default
51
- */
52
- brightness: 0,
53
-
54
- /**
55
- * Describe the property that is the filter parameter
56
- * @param {String} m
57
- * @default
58
- */
59
- mainParameter: 'brightness',
60
-
61
- /**
62
- * Apply the Brightness 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.brightness === 0) {
69
- return;
70
- }
71
- var imageData = options.imageData,
72
- data = imageData.data, i, len = data.length,
73
- brightness = Math.round(this.brightness * 255);
74
- for (i = 0; i < len; i += 4) {
75
- data[i] = data[i] + brightness;
76
- data[i + 1] = data[i + 1] + brightness;
77
- data[i + 2] = data[i + 2] + brightness;
78
- }
79
- },
80
-
81
- /**
82
- * Return WebGL uniform locations for this filter's shader.
83
- *
84
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
85
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
86
- */
87
- getUniformLocations: function(gl, program) {
88
- return {
89
- uBrightness: gl.getUniformLocation(program, 'uBrightness'),
90
- };
91
- },
92
-
93
- /**
94
- * Send data from this filter to its shader program's uniforms.
95
- *
96
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
97
- * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
98
- */
99
- sendUniformData: function(gl, uniformLocations) {
100
- gl.uniform1f(uniformLocations.uBrightness, this.brightness);
101
- },
102
- });
103
-
104
- /**
105
- * Returns filter instance from an object representation
106
- * @static
107
- * @param {Object} object Object to create an instance from
108
- * @param {function} [callback] to be invoked after filter creation
109
- * @return {fabric.Image.filters.Brightness} Instance of fabric.Image.filters.Brightness
110
- */
111
- fabric.Image.filters.Brightness.fromObject = fabric.Image.filters.BaseFilter.fromObject;
112
-
113
- })(typeof exports !== 'undefined' ? exports : this);