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,490 +0,0 @@
1
- (function(global) {
2
-
3
- 'use strict';
4
-
5
- var fabric = global.fabric || (global.fabric = { }), pow = Math.pow, floor = Math.floor,
6
- sqrt = Math.sqrt, abs = Math.abs, round = Math.round, sin = Math.sin,
7
- ceil = Math.ceil,
8
- filters = fabric.Image.filters,
9
- createClass = fabric.util.createClass;
10
-
11
- /**
12
- * Resize image filter class
13
- * @class fabric.Image.filters.Resize
14
- * @memberOf fabric.Image.filters
15
- * @extends fabric.Image.filters.BaseFilter
16
- * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}
17
- * @example
18
- * var filter = new fabric.Image.filters.Resize();
19
- * object.filters.push(filter);
20
- * object.applyFilters(canvas.renderAll.bind(canvas));
21
- */
22
- filters.Resize = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Resize.prototype */ {
23
-
24
- /**
25
- * Filter type
26
- * @param {String} type
27
- * @default
28
- */
29
- type: 'Resize',
30
-
31
- /**
32
- * Resize type
33
- * for webgl resizeType is just lanczos, for canvas2d can be:
34
- * bilinear, hermite, sliceHack, lanczos.
35
- * @param {String} resizeType
36
- * @default
37
- */
38
- resizeType: 'hermite',
39
-
40
- /**
41
- * Scale factor for resizing, x axis
42
- * @param {Number} scaleX
43
- * @default
44
- */
45
- scaleX: 1,
46
-
47
- /**
48
- * Scale factor for resizing, y axis
49
- * @param {Number} scaleY
50
- * @default
51
- */
52
- scaleY: 1,
53
-
54
- /**
55
- * LanczosLobes parameter for lanczos filter, valid for resizeType lanczos
56
- * @param {Number} lanczosLobes
57
- * @default
58
- */
59
- lanczosLobes: 3,
60
-
61
-
62
- /**
63
- * Return WebGL uniform locations for this filter's shader.
64
- *
65
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
66
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
67
- */
68
- getUniformLocations: function(gl, program) {
69
- return {
70
- uDelta: gl.getUniformLocation(program, 'uDelta'),
71
- uTaps: gl.getUniformLocation(program, 'uTaps'),
72
- };
73
- },
74
-
75
- /**
76
- * Send data from this filter to its shader program's uniforms.
77
- *
78
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
79
- * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
80
- */
81
- sendUniformData: function(gl, uniformLocations) {
82
- gl.uniform2fv(uniformLocations.uDelta, this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height]);
83
- gl.uniform1fv(uniformLocations.uTaps, this.taps);
84
- },
85
-
86
- /**
87
- * Retrieves the cached shader.
88
- * @param {Object} options
89
- * @param {WebGLRenderingContext} options.context The GL context used for rendering.
90
- * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.
91
- */
92
- retrieveShader: function(options) {
93
- var filterWindow = this.getFilterWindow(), cacheKey = this.type + '_' + filterWindow;
94
- if (!options.programCache.hasOwnProperty(cacheKey)) {
95
- var fragmentShader = this.generateShader(filterWindow);
96
- options.programCache[cacheKey] = this.createProgram(options.context, fragmentShader);
97
- }
98
- return options.programCache[cacheKey];
99
- },
100
-
101
- getFilterWindow: function() {
102
- var scale = this.tempScale;
103
- return Math.ceil(this.lanczosLobes / scale);
104
- },
105
-
106
- getTaps: function() {
107
- var lobeFunction = this.lanczosCreate(this.lanczosLobes), scale = this.tempScale,
108
- filterWindow = this.getFilterWindow(), taps = new Array(filterWindow);
109
- for (var i = 1; i <= filterWindow; i++) {
110
- taps[i - 1] = lobeFunction(i * scale);
111
- }
112
- return taps;
113
- },
114
-
115
- /**
116
- * Generate vertex and shader sources from the necessary steps numbers
117
- * @param {Number} filterWindow
118
- */
119
- generateShader: function(filterWindow) {
120
- var offsets = new Array(filterWindow),
121
- fragmentShader = this.fragmentSourceTOP, filterWindow;
122
-
123
- for (var i = 1; i <= filterWindow; i++) {
124
- offsets[i - 1] = i + '.0 * uDelta';
125
- }
126
-
127
- fragmentShader += 'uniform float uTaps[' + filterWindow + '];\n';
128
- fragmentShader += 'void main() {\n';
129
- fragmentShader += ' vec4 color = texture2D(uTexture, vTexCoord);\n';
130
- fragmentShader += ' float sum = 1.0;\n';
131
-
132
- offsets.forEach(function(offset, i) {
133
- fragmentShader += ' color += texture2D(uTexture, vTexCoord + ' + offset + ') * uTaps[' + i + '];\n';
134
- fragmentShader += ' color += texture2D(uTexture, vTexCoord - ' + offset + ') * uTaps[' + i + '];\n';
135
- fragmentShader += ' sum += 2.0 * uTaps[' + i + '];\n';
136
- });
137
- fragmentShader += ' gl_FragColor = color / sum;\n';
138
- fragmentShader += '}';
139
- return fragmentShader;
140
- },
141
-
142
- fragmentSourceTOP: 'precision highp float;\n' +
143
- 'uniform sampler2D uTexture;\n' +
144
- 'uniform vec2 uDelta;\n' +
145
- 'varying vec2 vTexCoord;\n',
146
-
147
- /**
148
- * Apply the resize filter to the image
149
- * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.
150
- *
151
- * @param {Object} options
152
- * @param {Number} options.passes The number of filters remaining to be executed
153
- * @param {Boolean} options.webgl Whether to use webgl to render the filter.
154
- * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.
155
- * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.
156
- * @param {WebGLRenderingContext} options.context The GL context used for rendering.
157
- * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.
158
- */
159
- applyTo: function(options) {
160
- if (options.webgl) {
161
- options.passes++;
162
- this.width = options.sourceWidth;
163
- this.horizontal = true;
164
- this.dW = Math.round(this.width * this.scaleX);
165
- this.dH = options.sourceHeight;
166
- this.tempScale = this.dW / this.width;
167
- this.taps = this.getTaps();
168
- options.destinationWidth = this.dW;
169
- this._setupFrameBuffer(options);
170
- this.applyToWebGL(options);
171
- this._swapTextures(options);
172
- options.sourceWidth = options.destinationWidth;
173
-
174
- this.height = options.sourceHeight;
175
- this.horizontal = false;
176
- this.dH = Math.round(this.height * this.scaleY);
177
- this.tempScale = this.dH / this.height;
178
- this.taps = this.getTaps();
179
- options.destinationHeight = this.dH;
180
- this._setupFrameBuffer(options);
181
- this.applyToWebGL(options);
182
- this._swapTextures(options);
183
- options.sourceHeight = options.destinationHeight;
184
- }
185
- else {
186
- this.applyTo2d(options);
187
- }
188
- },
189
-
190
- isNeutralState: function() {
191
- return this.scaleX === 1 && this.scaleY === 1;
192
- },
193
-
194
- lanczosCreate: function(lobes) {
195
- return function(x) {
196
- if (x >= lobes || x <= -lobes) {
197
- return 0.0;
198
- }
199
- if (x < 1.19209290E-07 && x > -1.19209290E-07) {
200
- return 1.0;
201
- }
202
- x *= Math.PI;
203
- var xx = x / lobes;
204
- return (sin(x) / x) * sin(xx) / xx;
205
- };
206
- },
207
-
208
- /**
209
- * Applies filter to canvas element
210
- * @memberOf fabric.Image.filters.Resize.prototype
211
- * @param {Object} canvasEl Canvas element to apply filter to
212
- * @param {Number} scaleX
213
- * @param {Number} scaleY
214
- */
215
- applyTo2d: function(options) {
216
- var imageData = options.imageData,
217
- scaleX = this.scaleX,
218
- scaleY = this.scaleY;
219
-
220
- this.rcpScaleX = 1 / scaleX;
221
- this.rcpScaleY = 1 / scaleY;
222
-
223
- var oW = imageData.width, oH = imageData.height,
224
- dW = round(oW * scaleX), dH = round(oH * scaleY),
225
- newData;
226
-
227
- if (this.resizeType === 'sliceHack') {
228
- newData = this.sliceByTwo(options, oW, oH, dW, dH);
229
- }
230
- else if (this.resizeType === 'hermite') {
231
- newData = this.hermiteFastResize(options, oW, oH, dW, dH);
232
- }
233
- else if (this.resizeType === 'bilinear') {
234
- newData = this.bilinearFiltering(options, oW, oH, dW, dH);
235
- }
236
- else if (this.resizeType === 'lanczos') {
237
- newData = this.lanczosResize(options, oW, oH, dW, dH);
238
- }
239
- options.imageData = newData;
240
- },
241
-
242
- /**
243
- * Filter sliceByTwo
244
- * @param {Object} canvasEl Canvas element to apply filter to
245
- * @param {Number} oW Original Width
246
- * @param {Number} oH Original Height
247
- * @param {Number} dW Destination Width
248
- * @param {Number} dH Destination Height
249
- * @returns {ImageData}
250
- */
251
- sliceByTwo: function(options, oW, oH, dW, dH) {
252
- var imageData = options.imageData,
253
- mult = 0.5, doneW = false, doneH = false, stepW = oW * mult,
254
- stepH = oH * mult, resources = fabric.filterBackend.resources,
255
- tmpCanvas, ctx, sX = 0, sY = 0, dX = oW, dY = 0;
256
- if (!resources.sliceByTwo) {
257
- resources.sliceByTwo = document.createElement('canvas');
258
- }
259
- tmpCanvas = resources.sliceByTwo;
260
- if (tmpCanvas.width < oW * 1.5 || tmpCanvas.height < oH) {
261
- tmpCanvas.width = oW * 1.5;
262
- tmpCanvas.height = oH;
263
- }
264
- ctx = tmpCanvas.getContext('2d');
265
- ctx.clearRect(0, 0, oW * 1.5, oH);
266
- ctx.putImageData(imageData, 0, 0);
267
-
268
- dW = floor(dW);
269
- dH = floor(dH);
270
-
271
- while (!doneW || !doneH) {
272
- oW = stepW;
273
- oH = stepH;
274
- if (dW < floor(stepW * mult)) {
275
- stepW = floor(stepW * mult);
276
- }
277
- else {
278
- stepW = dW;
279
- doneW = true;
280
- }
281
- if (dH < floor(stepH * mult)) {
282
- stepH = floor(stepH * mult);
283
- }
284
- else {
285
- stepH = dH;
286
- doneH = true;
287
- }
288
- ctx.drawImage(tmpCanvas, sX, sY, oW, oH, dX, dY, stepW, stepH);
289
- sX = dX;
290
- sY = dY;
291
- dY += stepH;
292
- }
293
- return ctx.getImageData(sX, sY, dW, dH);
294
- },
295
-
296
- /**
297
- * Filter lanczosResize
298
- * @param {Object} canvasEl Canvas element to apply filter to
299
- * @param {Number} oW Original Width
300
- * @param {Number} oH Original Height
301
- * @param {Number} dW Destination Width
302
- * @param {Number} dH Destination Height
303
- * @returns {ImageData}
304
- */
305
- lanczosResize: function(options, oW, oH, dW, dH) {
306
-
307
- function process(u) {
308
- var v, i, weight, idx, a, red, green,
309
- blue, alpha, fX, fY;
310
- center.x = (u + 0.5) * ratioX;
311
- icenter.x = floor(center.x);
312
- for (v = 0; v < dH; v++) {
313
- center.y = (v + 0.5) * ratioY;
314
- icenter.y = floor(center.y);
315
- a = 0; red = 0; green = 0; blue = 0; alpha = 0;
316
- for (i = icenter.x - range2X; i <= icenter.x + range2X; i++) {
317
- if (i < 0 || i >= oW) {
318
- continue;
319
- }
320
- fX = floor(1000 * abs(i - center.x));
321
- if (!cacheLanc[fX]) {
322
- cacheLanc[fX] = { };
323
- }
324
- for (var j = icenter.y - range2Y; j <= icenter.y + range2Y; j++) {
325
- if (j < 0 || j >= oH) {
326
- continue;
327
- }
328
- fY = floor(1000 * abs(j - center.y));
329
- if (!cacheLanc[fX][fY]) {
330
- cacheLanc[fX][fY] = lanczos(sqrt(pow(fX * rcpRatioX, 2) + pow(fY * rcpRatioY, 2)) / 1000);
331
- }
332
- weight = cacheLanc[fX][fY];
333
- if (weight > 0) {
334
- idx = (j * oW + i) * 4;
335
- a += weight;
336
- red += weight * srcData[idx];
337
- green += weight * srcData[idx + 1];
338
- blue += weight * srcData[idx + 2];
339
- alpha += weight * srcData[idx + 3];
340
- }
341
- }
342
- }
343
- idx = (v * dW + u) * 4;
344
- destData[idx] = red / a;
345
- destData[idx + 1] = green / a;
346
- destData[idx + 2] = blue / a;
347
- destData[idx + 3] = alpha / a;
348
- }
349
-
350
- if (++u < dW) {
351
- return process(u);
352
- }
353
- else {
354
- return destImg;
355
- }
356
- }
357
-
358
- var srcData = options.imageData.data,
359
- destImg = options.ctx.createImageData(dW, dH),
360
- destData = destImg.data,
361
- lanczos = this.lanczosCreate(this.lanczosLobes),
362
- ratioX = this.rcpScaleX, ratioY = this.rcpScaleY,
363
- rcpRatioX = 2 / this.rcpScaleX, rcpRatioY = 2 / this.rcpScaleY,
364
- range2X = ceil(ratioX * this.lanczosLobes / 2),
365
- range2Y = ceil(ratioY * this.lanczosLobes / 2),
366
- cacheLanc = { }, center = { }, icenter = { };
367
-
368
- return process(0);
369
- },
370
-
371
- /**
372
- * bilinearFiltering
373
- * @param {Object} canvasEl Canvas element to apply filter to
374
- * @param {Number} oW Original Width
375
- * @param {Number} oH Original Height
376
- * @param {Number} dW Destination Width
377
- * @param {Number} dH Destination Height
378
- * @returns {ImageData}
379
- */
380
- bilinearFiltering: function(options, oW, oH, dW, dH) {
381
- var a, b, c, d, x, y, i, j, xDiff, yDiff, chnl,
382
- color, offset = 0, origPix, ratioX = this.rcpScaleX,
383
- ratioY = this.rcpScaleY,
384
- w4 = 4 * (oW - 1), img = options.imageData,
385
- pixels = img.data, destImage = options.ctx.createImageData(dW, dH),
386
- destPixels = destImage.data;
387
- for (i = 0; i < dH; i++) {
388
- for (j = 0; j < dW; j++) {
389
- x = floor(ratioX * j);
390
- y = floor(ratioY * i);
391
- xDiff = ratioX * j - x;
392
- yDiff = ratioY * i - y;
393
- origPix = 4 * (y * oW + x);
394
-
395
- for (chnl = 0; chnl < 4; chnl++) {
396
- a = pixels[origPix + chnl];
397
- b = pixels[origPix + 4 + chnl];
398
- c = pixels[origPix + w4 + chnl];
399
- d = pixels[origPix + w4 + 4 + chnl];
400
- color = a * (1 - xDiff) * (1 - yDiff) + b * xDiff * (1 - yDiff) +
401
- c * yDiff * (1 - xDiff) + d * xDiff * yDiff;
402
- destPixels[offset++] = color;
403
- }
404
- }
405
- }
406
- return destImage;
407
- },
408
-
409
- /**
410
- * hermiteFastResize
411
- * @param {Object} canvasEl Canvas element to apply filter to
412
- * @param {Number} oW Original Width
413
- * @param {Number} oH Original Height
414
- * @param {Number} dW Destination Width
415
- * @param {Number} dH Destination Height
416
- * @returns {ImageData}
417
- */
418
- hermiteFastResize: function(options, oW, oH, dW, dH) {
419
- var ratioW = this.rcpScaleX, ratioH = this.rcpScaleY,
420
- ratioWHalf = ceil(ratioW / 2),
421
- ratioHHalf = ceil(ratioH / 2),
422
- img = options.imageData, data = img.data,
423
- img2 = options.ctx.createImageData(dW, dH), data2 = img2.data;
424
- for (var j = 0; j < dH; j++) {
425
- for (var i = 0; i < dW; i++) {
426
- var x2 = (i + j * dW) * 4, weight = 0, weights = 0, weightsAlpha = 0,
427
- gxR = 0, gxG = 0, gxB = 0, gxA = 0, centerY = (j + 0.5) * ratioH;
428
- for (var yy = floor(j * ratioH); yy < (j + 1) * ratioH; yy++) {
429
- var dy = abs(centerY - (yy + 0.5)) / ratioHHalf,
430
- centerX = (i + 0.5) * ratioW, w0 = dy * dy;
431
- for (var xx = floor(i * ratioW); xx < (i + 1) * ratioW; xx++) {
432
- var dx = abs(centerX - (xx + 0.5)) / ratioWHalf,
433
- w = sqrt(w0 + dx * dx);
434
- /* eslint-disable max-depth */
435
- if (w > 1 && w < -1) {
436
- continue;
437
- }
438
- //hermite filter
439
- weight = 2 * w * w * w - 3 * w * w + 1;
440
- if (weight > 0) {
441
- dx = 4 * (xx + yy * oW);
442
- //alpha
443
- gxA += weight * data[dx + 3];
444
- weightsAlpha += weight;
445
- //colors
446
- if (data[dx + 3] < 255) {
447
- weight = weight * data[dx + 3] / 250;
448
- }
449
- gxR += weight * data[dx];
450
- gxG += weight * data[dx + 1];
451
- gxB += weight * data[dx + 2];
452
- weights += weight;
453
- }
454
- /* eslint-enable max-depth */
455
- }
456
- }
457
- data2[x2] = gxR / weights;
458
- data2[x2 + 1] = gxG / weights;
459
- data2[x2 + 2] = gxB / weights;
460
- data2[x2 + 3] = gxA / weightsAlpha;
461
- }
462
- }
463
- return img2;
464
- },
465
-
466
- /**
467
- * Returns object representation of an instance
468
- * @return {Object} Object representation of an instance
469
- */
470
- toObject: function() {
471
- return {
472
- type: this.type,
473
- scaleX: this.scaleX,
474
- scaleY: this.scaleY,
475
- resizeType: this.resizeType,
476
- lanczosLobes: this.lanczosLobes
477
- };
478
- }
479
- });
480
-
481
- /**
482
- * Returns filter instance from an object representation
483
- * @static
484
- * @param {Object} object Object to create an instance from
485
- * @param {Function} [callback] to be invoked after filter creation
486
- * @return {fabric.Image.filters.Resize} Instance of fabric.Image.filters.Resize
487
- */
488
- fabric.Image.filters.Resize.fromObject = fabric.Image.filters.BaseFilter.fromObject;
489
-
490
- })(typeof exports !== 'undefined' ? exports : this);
@@ -1,119 +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
- * Saturate filter class
11
- * @class fabric.Image.filters.Saturation
12
- * @memberOf fabric.Image.filters
13
- * @extends fabric.Image.filters.BaseFilter
14
- * @see {@link fabric.Image.filters.Saturation#initialize} for constructor definition
15
- * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}
16
- * @example
17
- * var filter = new fabric.Image.filters.Saturation({
18
- * saturation: 1
19
- * });
20
- * object.filters.push(filter);
21
- * object.applyFilters();
22
- */
23
- filters.Saturation = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Saturation.prototype */ {
24
-
25
- /**
26
- * Filter type
27
- * @param {String} type
28
- * @default
29
- */
30
- type: 'Saturation',
31
-
32
- fragmentSource: 'precision highp float;\n' +
33
- 'uniform sampler2D uTexture;\n' +
34
- 'uniform float uSaturation;\n' +
35
- 'varying vec2 vTexCoord;\n' +
36
- 'void main() {\n' +
37
- 'vec4 color = texture2D(uTexture, vTexCoord);\n' +
38
- 'float rgMax = max(color.r, color.g);\n' +
39
- 'float rgbMax = max(rgMax, color.b);\n' +
40
- 'color.r += rgbMax != color.r ? (rgbMax - color.r) * uSaturation : 0.00;\n' +
41
- 'color.g += rgbMax != color.g ? (rgbMax - color.g) * uSaturation : 0.00;\n' +
42
- 'color.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00;\n' +
43
- 'gl_FragColor = color;\n' +
44
- '}',
45
-
46
- /**
47
- * Saturation value, from -1 to 1.
48
- * Increases/decreases the color saturation.
49
- * A value of 0 has no effect.
50
- *
51
- * @param {Number} saturation
52
- * @default
53
- */
54
- saturation: 0,
55
-
56
- mainParameter: 'saturation',
57
-
58
- /**
59
- * Constructor
60
- * @memberOf fabric.Image.filters.Saturate.prototype
61
- * @param {Object} [options] Options object
62
- * @param {Number} [options.saturate=0] Value to saturate the image (-1...1)
63
- */
64
-
65
- /**
66
- * Apply the Saturation operation to a Uint8ClampedArray representing the pixels of an image.
67
- *
68
- * @param {Object} options
69
- * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.
70
- */
71
- applyTo2d: function(options) {
72
- if (this.saturation === 0) {
73
- return;
74
- }
75
- var imageData = options.imageData,
76
- data = imageData.data, len = data.length,
77
- adjust = -this.saturation, i, max;
78
-
79
- for (i = 0; i < len; i += 4) {
80
- max = Math.max(data[i], data[i + 1], data[i + 2]);
81
- data[i] += max !== data[i] ? (max - data[i]) * adjust : 0;
82
- data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * adjust : 0;
83
- data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * adjust : 0;
84
- }
85
- },
86
-
87
- /**
88
- * Return WebGL uniform locations for this filter's shader.
89
- *
90
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
91
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
92
- */
93
- getUniformLocations: function(gl, program) {
94
- return {
95
- uSaturation: gl.getUniformLocation(program, 'uSaturation'),
96
- };
97
- },
98
-
99
- /**
100
- * Send data from this filter to its shader program's uniforms.
101
- *
102
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
103
- * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
104
- */
105
- sendUniformData: function(gl, uniformLocations) {
106
- gl.uniform1f(uniformLocations.uSaturation, -this.saturation);
107
- },
108
- });
109
-
110
- /**
111
- * Returns filter instance from an object representation
112
- * @static
113
- * @param {Object} object Object to create an instance from
114
- * @param {Function} [callback] to be invoked after filter creation
115
- * @return {fabric.Image.filters.Saturation} Instance of fabric.Image.filters.Saturate
116
- */
117
- fabric.Image.filters.Saturation.fromObject = fabric.Image.filters.BaseFilter.fromObject;
118
-
119
- })(typeof exports !== 'undefined' ? exports : this);