fabric 5.3.0 → 6.0.0-beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (533) hide show
  1. package/.babelrc +11 -0
  2. package/.babelrcAlt +19 -0
  3. package/.browserslistrc +5 -0
  4. package/.eslintrc.js +43 -0
  5. package/.eslintrc.json +38 -46
  6. package/.eslintrc_tests +12 -0
  7. package/.gitattributes +2 -0
  8. package/.prettierignore +16 -0
  9. package/.prettierrc +4 -0
  10. package/CHANGELOG.md +491 -189
  11. package/CONTRIBUTING.md +226 -58
  12. package/README.md +188 -239
  13. package/bower.json +1 -3
  14. package/dist/fabric.d.ts +1021 -0
  15. package/dist/index.cjs +28027 -0
  16. package/dist/index.cjs.map +1 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.min.js +1 -0
  19. package/dist/index.mjs +27964 -0
  20. package/dist/index.mjs.map +1 -0
  21. package/dist/index.node.cjs +28092 -0
  22. package/dist/index.node.cjs.map +1 -0
  23. package/dist/index.node.d.ts +15 -0
  24. package/dist/index.node.mjs +28035 -0
  25. package/dist/index.node.mjs.map +1 -0
  26. package/dist/src/Collection.d.ts +126 -0
  27. package/dist/src/CommonMethods.d.ts +32 -0
  28. package/dist/src/EventTypeDefs.d.ts +226 -0
  29. package/dist/src/Intersection.d.ts +100 -0
  30. package/dist/src/Observable.d.ts +54 -0
  31. package/dist/src/Pattern.d.ts +104 -0
  32. package/dist/src/Point.d.ts +232 -0
  33. package/dist/src/Shadow.d.ts +87 -0
  34. package/dist/src/brushes/BaseBrush.d.ts +105 -0
  35. package/dist/src/brushes/CircleBrush.d.ts +49 -0
  36. package/dist/src/brushes/PatternBrush.d.ts +23 -0
  37. package/dist/src/brushes/PencilBrush.d.ts +92 -0
  38. package/dist/src/brushes/SprayBrush.d.ts +79 -0
  39. package/dist/src/cache.d.ts +46 -0
  40. package/dist/src/canvas/Canvas.d.ts +567 -0
  41. package/dist/src/canvas/SelectableCanvas.d.ts +723 -0
  42. package/dist/src/canvas/StaticCanvas.d.ts +751 -0
  43. package/dist/src/canvas/TextEditingManager.d.ts +17 -0
  44. package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
  45. package/dist/src/color/Color.d.ts +174 -0
  46. package/dist/src/color/color_map.d.ts +155 -0
  47. package/dist/src/color/constants.d.ts +22 -0
  48. package/dist/src/color/util.d.ts +12 -0
  49. package/dist/src/config.d.ts +115 -0
  50. package/dist/src/constants.d.ts +14 -0
  51. package/dist/src/controls/Control.d.ts +228 -0
  52. package/dist/src/controls/changeWidth.d.ts +13 -0
  53. package/dist/src/controls/controls.render.d.ts +29 -0
  54. package/dist/src/controls/default_controls.d.ts +50 -0
  55. package/dist/src/controls/drag.d.ts +12 -0
  56. package/dist/src/controls/polyControl.d.ts +5 -0
  57. package/dist/src/controls/rotate.d.ts +12 -0
  58. package/dist/src/controls/scale.d.ts +47 -0
  59. package/dist/src/controls/scaleSkew.d.ts +39 -0
  60. package/dist/src/controls/skew.d.ts +33 -0
  61. package/dist/src/controls/util.d.ts +41 -0
  62. package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
  63. package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
  64. package/dist/src/env/browser.d.ts +3 -0
  65. package/dist/src/env/index.d.ts +7 -0
  66. package/dist/src/env/node.d.ts +3 -0
  67. package/dist/src/env/types.d.ts +15 -0
  68. package/dist/src/filters/BaseFilter.d.ts +156 -0
  69. package/dist/src/filters/BlendColor.d.ts +80 -0
  70. package/dist/src/filters/BlendImage.d.ts +90 -0
  71. package/dist/src/filters/Blur.d.ts +50 -0
  72. package/dist/src/filters/Boilerplate.d.ts +46 -0
  73. package/dist/src/filters/Brightness.d.ts +46 -0
  74. package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
  75. package/dist/src/filters/ColorMatrix.d.ts +62 -0
  76. package/dist/src/filters/ColorMatrixFilters.d.ts +1169 -0
  77. package/dist/src/filters/Composed.d.ts +47 -0
  78. package/dist/src/filters/Contrast.d.ts +44 -0
  79. package/dist/src/filters/Convolute.d.ts +82 -0
  80. package/dist/src/filters/FilterBackend.d.ts +14 -0
  81. package/dist/src/filters/Gamma.d.ts +53 -0
  82. package/dist/src/filters/Grayscale.d.ts +45 -0
  83. package/dist/src/filters/HueRotation.d.ts +24 -0
  84. package/dist/src/filters/Invert.d.ts +54 -0
  85. package/dist/src/filters/Noise.d.ts +53 -0
  86. package/dist/src/filters/Pixelate.d.ts +43 -0
  87. package/dist/src/filters/RemoveColor.d.ts +62 -0
  88. package/dist/src/filters/Resize.d.ts +134 -0
  89. package/dist/src/filters/Saturation.d.ts +47 -0
  90. package/dist/src/filters/Vibrance.d.ts +47 -0
  91. package/dist/src/filters/WebGLFilterBackend.d.ts +126 -0
  92. package/dist/src/filters/WebGLProbe.d.ts +28 -0
  93. package/dist/src/filters/typedefs.d.ts +49 -0
  94. package/dist/src/gradient/Gradient.d.ts +149 -0
  95. package/dist/src/gradient/constants.d.ts +15 -0
  96. package/dist/src/gradient/parser/index.d.ts +4 -0
  97. package/dist/src/gradient/parser/misc.d.ts +4 -0
  98. package/dist/src/gradient/parser/parseColorStops.d.ts +6 -0
  99. package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
  100. package/dist/src/gradient/typedefs.d.ts +93 -0
  101. package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
  102. package/dist/src/mixins/stateful.mixin.d.ts +18 -0
  103. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
  104. package/dist/src/parkinglot/straighten.d.ts +2 -0
  105. package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
  106. package/dist/src/parser/attributes.d.ts +6 -0
  107. package/dist/src/parser/constants.d.ts +54 -0
  108. package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
  109. package/dist/src/parser/elementById.d.ts +6 -0
  110. package/dist/src/parser/elementMatchesRule.d.ts +5 -0
  111. package/dist/src/parser/elements_parser.d.ts +3 -0
  112. package/dist/src/parser/getCSSRules.d.ts +7 -0
  113. package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
  114. package/dist/src/parser/getGradientDefs.d.ts +7 -0
  115. package/dist/src/parser/getMultipleNodes.d.ts +2 -0
  116. package/dist/src/parser/getSvgRegex.d.ts +2 -0
  117. package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
  118. package/dist/src/parser/loadSVGFromString.d.ts +12 -0
  119. package/dist/src/parser/loadSVGFromURL.d.ts +13 -0
  120. package/dist/src/parser/normalizeAttr.d.ts +2 -0
  121. package/dist/src/parser/normalizeValue.d.ts +2 -0
  122. package/dist/src/parser/parseAttributes.d.ts +9 -0
  123. package/dist/src/parser/parseElements.d.ts +11 -0
  124. package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
  125. package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
  126. package/dist/src/parser/parseSVGDocument.d.ts +15 -0
  127. package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
  128. package/dist/src/parser/parseStyleObject.d.ts +2 -0
  129. package/dist/src/parser/parseStyleString.d.ts +2 -0
  130. package/dist/src/parser/parseTransformAttribute.d.ts +10 -0
  131. package/dist/src/parser/parseUseDirectives.d.ts +2 -0
  132. package/dist/src/parser/percent.d.ts +9 -0
  133. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
  134. package/dist/src/parser/rotateMatrix.d.ts +2 -0
  135. package/dist/src/parser/scaleMatrix.d.ts +2 -0
  136. package/dist/src/parser/selectorMatches.d.ts +2 -0
  137. package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
  138. package/dist/src/parser/skewMatrix.d.ts +2 -0
  139. package/dist/src/parser/translateMatrix.d.ts +2 -0
  140. package/dist/src/shapes/ActiveSelection.d.ts +66 -0
  141. package/dist/src/shapes/Circle.d.ts +80 -0
  142. package/dist/src/shapes/Ellipse.d.ts +74 -0
  143. package/dist/src/shapes/Group.d.ts +381 -0
  144. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
  145. package/dist/src/shapes/IText/IText.d.ts +322 -0
  146. package/dist/src/shapes/IText/ITextBehavior.d.ts +285 -0
  147. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +81 -0
  148. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +193 -0
  149. package/dist/src/shapes/IText/constants.d.ts +13 -0
  150. package/dist/src/shapes/Image.d.ts +283 -0
  151. package/dist/src/shapes/Line.d.ts +117 -0
  152. package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
  153. package/dist/src/shapes/Object/FabricObject.d.ts +9 -0
  154. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
  155. package/dist/src/shapes/Object/InteractiveObject.d.ts +282 -0
  156. package/dist/src/shapes/Object/Object.d.ts +906 -0
  157. package/dist/src/shapes/Object/ObjectGeometry.d.ts +343 -0
  158. package/dist/src/shapes/Object/ObjectOrigin.d.ts +178 -0
  159. package/dist/src/shapes/Object/StackedObject.d.ts +62 -0
  160. package/dist/src/shapes/Object/defaultValues.d.ts +77 -0
  161. package/dist/src/shapes/Path.d.ts +123 -0
  162. package/dist/src/shapes/Polygon.d.ts +7 -0
  163. package/dist/src/shapes/Polyline.d.ts +130 -0
  164. package/dist/src/shapes/Rect.d.ts +62 -0
  165. package/dist/src/shapes/Text/StyledText.d.ts +118 -0
  166. package/dist/src/shapes/Text/Text.d.ts +656 -0
  167. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
  168. package/dist/src/shapes/Textbox.d.ts +170 -0
  169. package/dist/src/shapes/Triangle.d.ts +17 -0
  170. package/dist/src/typedefs.d.ts +93 -0
  171. package/dist/src/util/animation/AnimationBase.d.ts +54 -0
  172. package/dist/src/util/animation/AnimationFrameProvider.d.ts +8 -0
  173. package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
  174. package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
  175. package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
  176. package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
  177. package/dist/src/util/animation/animate.d.ts +37 -0
  178. package/dist/src/util/animation/easing.d.ts +130 -0
  179. package/dist/src/util/animation/types.d.ts +87 -0
  180. package/dist/src/util/applyMixins.d.ts +8 -0
  181. package/dist/src/util/class_registry.d.ts +14 -0
  182. package/dist/src/util/dom_event.d.ts +5 -0
  183. package/dist/src/util/dom_misc.d.ts +40 -0
  184. package/dist/src/util/dom_request.d.ts +14 -0
  185. package/dist/src/util/dom_style.d.ts +7 -0
  186. package/dist/src/util/fireEvent.d.ts +3 -0
  187. package/dist/src/util/internals/cloneDeep.d.ts +2 -0
  188. package/dist/src/util/internals/getRandomInt.d.ts +8 -0
  189. package/dist/src/util/internals/ifNaN.d.ts +8 -0
  190. package/dist/src/util/internals/index.d.ts +4 -0
  191. package/dist/src/util/internals/removeFromArray.d.ts +9 -0
  192. package/dist/src/util/internals/uid.d.ts +2 -0
  193. package/dist/src/util/lang_class.d.ts +12 -0
  194. package/dist/src/util/lang_string.d.ts +22 -0
  195. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
  196. package/dist/src/util/misc/capValue.d.ts +2 -0
  197. package/dist/src/util/misc/cos.d.ts +10 -0
  198. package/dist/src/util/misc/dom.d.ts +28 -0
  199. package/dist/src/util/misc/findScaleTo.d.ts +29 -0
  200. package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
  201. package/dist/src/util/misc/isTransparent.d.ts +11 -0
  202. package/dist/src/util/misc/matrix.d.ts +92 -0
  203. package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
  204. package/dist/src/util/misc/objectEnlive.d.ts +56 -0
  205. package/dist/src/util/misc/objectTransforms.d.ts +68 -0
  206. package/dist/src/util/misc/pick.d.ts +8 -0
  207. package/dist/src/util/misc/planeChange.d.ts +84 -0
  208. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +51 -0
  209. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +81 -0
  210. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +25 -0
  211. package/dist/src/util/misc/projectStroke/index.d.ts +11 -0
  212. package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
  213. package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
  214. package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
  215. package/dist/src/util/misc/rotatePoint.d.ts +12 -0
  216. package/dist/src/util/misc/sin.d.ts +10 -0
  217. package/dist/src/util/misc/svgParsing.d.ts +53 -0
  218. package/dist/src/util/misc/textStyles.d.ts +32 -0
  219. package/dist/src/util/misc/toFixed.d.ts +8 -0
  220. package/dist/src/util/misc/vectors.d.ts +57 -0
  221. package/dist/src/util/path.d.ts +108 -0
  222. package/dist/src/util/transform_matrix_removal.d.ts +14 -0
  223. package/dist/src/util/types.d.ts +19 -0
  224. package/fabric.ts +427 -0
  225. package/index.node.ts +43 -0
  226. package/index.ts +1 -0
  227. package/package.json +90 -39
  228. package/publish.js +0 -26
  229. package/rollup.config.mjs +79 -0
  230. package/rollup.test.config.js +24 -0
  231. package/scripts/build.mjs +50 -0
  232. package/scripts/buildLock.mjs +115 -0
  233. package/scripts/buildReporter.mjs +15 -0
  234. package/scripts/buildStats.mjs +139 -0
  235. package/scripts/dirname.mjs +14 -0
  236. package/scripts/index.mjs +679 -0
  237. package/scripts/transform_files.mjs +504 -0
  238. package/src/Collection.ts +311 -0
  239. package/src/CommonMethods.ts +63 -0
  240. package/src/EventTypeDefs.ts +294 -0
  241. package/src/Intersection.ts +273 -0
  242. package/src/Observable.ts +175 -0
  243. package/src/Pattern.ts +211 -0
  244. package/src/Point.ts +388 -0
  245. package/src/Shadow.ts +215 -0
  246. package/src/brushes/{base_brush.class.js → BaseBrush.ts} +65 -42
  247. package/src/brushes/CircleBrush.ts +145 -0
  248. package/src/brushes/PatternBrush.ts +70 -0
  249. package/src/brushes/PencilBrush.ts +300 -0
  250. package/src/brushes/SprayBrush.ts +219 -0
  251. package/src/cache.ts +89 -0
  252. package/src/canvas/Canvas.ts +1672 -0
  253. package/src/canvas/SelectableCanvas.ts +1636 -0
  254. package/src/canvas/StaticCanvas.ts +1709 -0
  255. package/src/canvas/TextEditingManager.ts +48 -0
  256. package/src/canvas/canvas_gestures.mixin.ts +207 -0
  257. package/src/color/Color.ts +404 -0
  258. package/src/color/color_map.ts +154 -0
  259. package/src/color/constants.ts +26 -0
  260. package/src/color/util.ts +32 -0
  261. package/src/config.ts +159 -0
  262. package/src/constants.ts +19 -0
  263. package/src/controls/Control.ts +377 -0
  264. package/src/controls/changeWidth.ts +52 -0
  265. package/src/controls/controls.render.ts +138 -0
  266. package/src/controls/default_controls.ts +132 -0
  267. package/src/controls/drag.ts +31 -0
  268. package/src/controls/polyControl.ts +135 -0
  269. package/src/controls/rotate.ts +87 -0
  270. package/src/controls/scale.ts +277 -0
  271. package/src/controls/scaleSkew.ts +92 -0
  272. package/src/controls/skew.ts +242 -0
  273. package/src/controls/util.ts +154 -0
  274. package/src/controls/wrapWithFireEvent.ts +25 -0
  275. package/src/controls/wrapWithFixedAnchor.ts +20 -0
  276. package/src/env/browser.ts +28 -0
  277. package/src/env/index.ts +19 -0
  278. package/src/env/node.ts +52 -0
  279. package/src/env/types.ts +15 -0
  280. package/src/filters/{base_filter.class.js → BaseFilter.ts} +201 -149
  281. package/src/filters/BlendColor.ts +258 -0
  282. package/src/filters/BlendImage.ts +254 -0
  283. package/src/filters/Blur.ts +202 -0
  284. package/src/filters/Boilerplate.ts +91 -0
  285. package/src/filters/Brightness.ts +93 -0
  286. package/src/filters/Canvas2dFilterBackend.ts +65 -0
  287. package/src/filters/ColorMatrix.ts +156 -0
  288. package/src/filters/ColorMatrixFilters.ts +106 -0
  289. package/src/filters/Composed.ts +85 -0
  290. package/src/filters/Contrast.ts +94 -0
  291. package/src/filters/Convolute.ts +341 -0
  292. package/src/filters/FilterBackend.ts +32 -0
  293. package/src/filters/Gamma.ts +127 -0
  294. package/src/filters/Grayscale.ts +137 -0
  295. package/src/filters/HueRotation.ts +66 -0
  296. package/src/filters/Invert.ts +117 -0
  297. package/src/filters/Noise.ts +109 -0
  298. package/src/filters/Pixelate.ts +114 -0
  299. package/src/filters/RemoveColor.ts +148 -0
  300. package/src/filters/Resize.ts +540 -0
  301. package/src/filters/Saturation.ts +100 -0
  302. package/src/filters/Vibrance.ts +103 -0
  303. package/src/filters/WebGLFilterBackend.ts +430 -0
  304. package/src/filters/WebGLProbe.ts +62 -0
  305. package/src/filters/typedefs.ts +65 -0
  306. package/src/gradient/Gradient.ts +401 -0
  307. package/src/gradient/constants.ts +12 -0
  308. package/src/gradient/parser/index.ts +3 -0
  309. package/src/gradient/parser/misc.ts +13 -0
  310. package/src/gradient/parser/parseColorStops.ts +55 -0
  311. package/src/gradient/parser/parseCoords.ts +73 -0
  312. package/src/gradient/typedefs.ts +104 -0
  313. package/src/mixins/{eraser_brush.mixin.js → eraser_brush.mixin.ts} +350 -239
  314. package/src/mixins/stateful.mixin.ts +104 -0
  315. package/src/parkinglot/canvas_animation.mixin.ts +121 -0
  316. package/src/parkinglot/straighten.ts +58 -0
  317. package/src/parser/applyViewboxTransform.ts +162 -0
  318. package/src/parser/attributes.ts +25 -0
  319. package/src/parser/constants.ts +118 -0
  320. package/src/parser/doesSomeParentMatch.ts +19 -0
  321. package/src/parser/elementById.ts +23 -0
  322. package/src/parser/elementMatchesRule.ts +19 -0
  323. package/src/parser/elements_parser.ts +191 -0
  324. package/src/parser/getCSSRules.ts +62 -0
  325. package/src/parser/getGlobalStylesForElement.ts +19 -0
  326. package/src/parser/getGradientDefs.ts +32 -0
  327. package/src/parser/getMultipleNodes.ts +15 -0
  328. package/src/parser/getSvgRegex.ts +5 -0
  329. package/src/parser/hasAncestorWithNodeName.ts +14 -0
  330. package/src/parser/loadSVGFromString.ts +26 -0
  331. package/src/parser/loadSVGFromURL.ts +40 -0
  332. package/src/parser/normalizeAttr.ts +10 -0
  333. package/src/parser/normalizeValue.ts +63 -0
  334. package/src/parser/parseAttributes.ts +90 -0
  335. package/src/parser/parseElements.ts +28 -0
  336. package/src/parser/parseFontDeclaration.ts +44 -0
  337. package/src/parser/parsePointsAttribute.ts +36 -0
  338. package/src/parser/parseSVGDocument.ts +106 -0
  339. package/src/parser/parseStyleAttribute.ts +27 -0
  340. package/src/parser/parseStyleObject.ts +15 -0
  341. package/src/parser/parseStyleString.ts +16 -0
  342. package/src/parser/parseTransformAttribute.ts +155 -0
  343. package/src/parser/parseUseDirectives.ts +79 -0
  344. package/src/parser/percent.ts +27 -0
  345. package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
  346. package/src/parser/rotateMatrix.ts +21 -0
  347. package/src/parser/scaleMatrix.ts +9 -0
  348. package/src/parser/selectorMatches.ts +25 -0
  349. package/src/parser/setStrokeFillOpacity.ts +40 -0
  350. package/src/parser/skewMatrix.ts +6 -0
  351. package/src/parser/translateMatrix.ts +8 -0
  352. package/src/shapes/ActiveSelection.ts +157 -0
  353. package/src/shapes/Circle.ts +205 -0
  354. package/src/shapes/Ellipse.ts +154 -0
  355. package/src/shapes/Group.ts +1053 -0
  356. package/src/shapes/IText/DraggableTextDelegate.ts +394 -0
  357. package/src/shapes/IText/IText.ts +666 -0
  358. package/src/shapes/IText/ITextBehavior.ts +1055 -0
  359. package/src/shapes/IText/ITextClickBehavior.ts +321 -0
  360. package/src/shapes/IText/ITextKeyBehavior.ts +683 -0
  361. package/src/shapes/IText/constants.ts +47 -0
  362. package/src/shapes/Image.ts +789 -0
  363. package/src/shapes/Line.ts +329 -0
  364. package/src/shapes/Object/AnimatableObject.ts +106 -0
  365. package/src/shapes/Object/FabricObject.ts +19 -0
  366. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +277 -0
  367. package/src/shapes/Object/InteractiveObject.ts +645 -0
  368. package/src/shapes/Object/Object.ts +1896 -0
  369. package/src/shapes/Object/ObjectGeometry.ts +830 -0
  370. package/src/shapes/Object/ObjectOrigin.ts +354 -0
  371. package/src/shapes/Object/StackedObject.ts +191 -0
  372. package/src/shapes/Object/defaultValues.ts +112 -0
  373. package/src/shapes/Path.ts +395 -0
  374. package/src/shapes/Polygon.ts +19 -0
  375. package/src/shapes/Polyline.ts +333 -0
  376. package/src/shapes/Rect.ts +199 -0
  377. package/src/shapes/Text/StyledText.ts +319 -0
  378. package/src/shapes/Text/Text.ts +1948 -0
  379. package/src/shapes/Text/TextSVGExportMixin.ts +288 -0
  380. package/src/shapes/Textbox.ts +471 -0
  381. package/src/shapes/Triangle.ts +45 -0
  382. package/src/typedefs.ts +119 -0
  383. package/src/util/animation/AnimationBase.ts +166 -0
  384. package/src/util/animation/AnimationFrameProvider.ts +28 -0
  385. package/src/util/animation/AnimationRegistry.ts +58 -0
  386. package/src/util/animation/ArrayAnimation.ts +27 -0
  387. package/src/util/animation/ColorAnimation.ts +74 -0
  388. package/src/util/animation/ValueAnimation.ts +29 -0
  389. package/src/util/animation/animate.ts +74 -0
  390. package/src/util/animation/easing.ts +327 -0
  391. package/src/util/animation/types.ts +136 -0
  392. package/src/util/applyMixins.ts +22 -0
  393. package/src/util/class_registry.ts +54 -0
  394. package/src/util/dom_event.ts +28 -0
  395. package/src/util/dom_misc.ts +138 -0
  396. package/src/util/dom_request.ts +64 -0
  397. package/src/util/dom_style.ts +20 -0
  398. package/src/util/fireEvent.ts +15 -0
  399. package/src/util/internals/cloneDeep.ts +2 -0
  400. package/src/util/internals/getRandomInt.ts +8 -0
  401. package/src/util/internals/ifNaN.ts +9 -0
  402. package/src/util/internals/index.ts +3 -0
  403. package/src/util/internals/removeFromArray.ts +14 -0
  404. package/src/util/internals/uid.ts +3 -0
  405. package/src/util/lang_class.ts +90 -0
  406. package/src/util/lang_string.ts +79 -0
  407. package/src/util/misc/boundingBoxFromPoints.ts +37 -0
  408. package/src/util/misc/capValue.ts +2 -0
  409. package/src/util/misc/cos.ts +24 -0
  410. package/src/util/misc/dom.ts +50 -0
  411. package/src/util/misc/findScaleTo.ts +44 -0
  412. package/src/util/misc/groupSVGElements.ts +15 -0
  413. package/src/util/misc/isTransparent.ts +51 -0
  414. package/src/util/misc/matrix.ts +207 -0
  415. package/src/util/misc/mergeClipPaths.ts +40 -0
  416. package/src/util/misc/objectEnlive.ts +189 -0
  417. package/src/util/misc/objectTransforms.ts +129 -0
  418. package/src/util/misc/pick.ts +17 -0
  419. package/src/util/misc/planeChange.ts +136 -0
  420. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +112 -0
  421. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +231 -0
  422. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +75 -0
  423. package/src/util/misc/projectStroke/index.ts +53 -0
  424. package/src/util/misc/projectStroke/types.ts +24 -0
  425. package/src/util/misc/radiansDegreesConversion.ts +18 -0
  426. package/src/util/misc/resolveOrigin.ts +22 -0
  427. package/src/util/misc/rotatePoint.ts +15 -0
  428. package/src/util/misc/sin.ts +26 -0
  429. package/src/util/misc/svgParsing.ts +181 -0
  430. package/src/util/misc/textStyles.ts +133 -0
  431. package/src/util/misc/toFixed.ts +8 -0
  432. package/src/util/misc/vectors.ts +82 -0
  433. package/src/util/path.ts +941 -0
  434. package/src/util/transform_matrix_removal.ts +60 -0
  435. package/src/util/types.ts +78 -0
  436. package/tsconfig.json +106 -0
  437. package/HEADER.js +0 -203
  438. package/build.js +0 -287
  439. package/dist/fabric.js +0 -31187
  440. package/dist/fabric.min.js +0 -1
  441. package/old-travis-reference.yml +0 -97
  442. package/src/brushes/circle_brush.class.js +0 -144
  443. package/src/brushes/pattern_brush.class.js +0 -61
  444. package/src/brushes/pencil_brush.class.js +0 -310
  445. package/src/brushes/spray_brush.class.js +0 -219
  446. package/src/canvas.class.js +0 -1312
  447. package/src/color.class.js +0 -636
  448. package/src/control.class.js +0 -339
  449. package/src/controls.actions.js +0 -740
  450. package/src/controls.render.js +0 -99
  451. package/src/elements_parser.js +0 -152
  452. package/src/filters/2d_backend.class.js +0 -65
  453. package/src/filters/blendcolor_filter.class.js +0 -251
  454. package/src/filters/blendimage_filter.class.js +0 -247
  455. package/src/filters/blur_filter.class.js +0 -217
  456. package/src/filters/brightness_filter.class.js +0 -113
  457. package/src/filters/colormatrix_filter.class.js +0 -159
  458. package/src/filters/composed_filter.class.js +0 -72
  459. package/src/filters/contrast_filter.class.js +0 -113
  460. package/src/filters/convolute_filter.class.js +0 -352
  461. package/src/filters/filter_boilerplate.js +0 -111
  462. package/src/filters/filter_generator.js +0 -85
  463. package/src/filters/gamma_filter.class.js +0 -136
  464. package/src/filters/grayscale_filter.class.js +0 -154
  465. package/src/filters/hue_rotation.class.js +0 -107
  466. package/src/filters/invert_filter.class.js +0 -111
  467. package/src/filters/noise_filter.class.js +0 -134
  468. package/src/filters/pixelate_filter.class.js +0 -137
  469. package/src/filters/removecolor_filter.class.js +0 -173
  470. package/src/filters/resize_filter.class.js +0 -490
  471. package/src/filters/saturate_filter.class.js +0 -119
  472. package/src/filters/vibrance_filter.class.js +0 -122
  473. package/src/filters/webgl_backend.class.js +0 -396
  474. package/src/globalFabric.js +0 -4
  475. package/src/gradient.class.js +0 -490
  476. package/src/intersection.class.js +0 -172
  477. package/src/log.js +0 -11
  478. package/src/mixins/animation.mixin.js +0 -231
  479. package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
  480. package/src/mixins/canvas_events.mixin.js +0 -974
  481. package/src/mixins/canvas_gestures.mixin.js +0 -149
  482. package/src/mixins/canvas_grouping.mixin.js +0 -177
  483. package/src/mixins/canvas_serialization.mixin.js +0 -228
  484. package/src/mixins/collection.mixin.js +0 -170
  485. package/src/mixins/default_controls.js +0 -114
  486. package/src/mixins/itext.svg_export.js +0 -241
  487. package/src/mixins/itext_behavior.mixin.js +0 -940
  488. package/src/mixins/itext_click_behavior.mixin.js +0 -278
  489. package/src/mixins/itext_key_behavior.mixin.js +0 -694
  490. package/src/mixins/object.svg_export.js +0 -258
  491. package/src/mixins/object_geometry.mixin.js +0 -683
  492. package/src/mixins/object_interactivity.mixin.js +0 -314
  493. package/src/mixins/object_origin.mixin.js +0 -255
  494. package/src/mixins/object_stacking.mixin.js +0 -80
  495. package/src/mixins/object_straightening.mixin.js +0 -80
  496. package/src/mixins/observable.mixin.js +0 -141
  497. package/src/mixins/shared_methods.mixin.js +0 -94
  498. package/src/mixins/stateful.mixin.js +0 -107
  499. package/src/mixins/text_style.mixin.js +0 -324
  500. package/src/parser.js +0 -1090
  501. package/src/pattern.class.js +0 -189
  502. package/src/point.class.js +0 -337
  503. package/src/shadow.class.js +0 -195
  504. package/src/shapes/active_selection.class.js +0 -155
  505. package/src/shapes/circle.class.js +0 -210
  506. package/src/shapes/ellipse.class.js +0 -181
  507. package/src/shapes/group.class.js +0 -593
  508. package/src/shapes/image.class.js +0 -764
  509. package/src/shapes/itext.class.js +0 -526
  510. package/src/shapes/line.class.js +0 -324
  511. package/src/shapes/object.class.js +0 -2008
  512. package/src/shapes/path.class.js +0 -384
  513. package/src/shapes/polygon.class.js +0 -81
  514. package/src/shapes/polyline.class.js +0 -268
  515. package/src/shapes/rect.class.js +0 -187
  516. package/src/shapes/text.class.js +0 -1696
  517. package/src/shapes/textbox.class.js +0 -461
  518. package/src/shapes/triangle.class.js +0 -93
  519. package/src/static_canvas.class.js +0 -1881
  520. package/src/util/anim_ease.js +0 -398
  521. package/src/util/animate.js +0 -254
  522. package/src/util/animate_color.js +0 -74
  523. package/src/util/dom_event.js +0 -50
  524. package/src/util/dom_misc.js +0 -300
  525. package/src/util/dom_request.js +0 -54
  526. package/src/util/dom_style.js +0 -70
  527. package/src/util/lang_array.js +0 -94
  528. package/src/util/lang_class.js +0 -115
  529. package/src/util/lang_object.js +0 -75
  530. package/src/util/lang_string.js +0 -110
  531. package/src/util/misc.js +0 -1330
  532. package/src/util/named_accessors.mixin.js +0 -428
  533. package/src/util/path.js +0 -829
@@ -1,155 +0,0 @@
1
- (function(global) {
2
-
3
- 'use strict';
4
-
5
- var fabric = global.fabric || (global.fabric = { });
6
-
7
- if (fabric.ActiveSelection) {
8
- return;
9
- }
10
-
11
- /**
12
- * Group class
13
- * @class fabric.ActiveSelection
14
- * @extends fabric.Group
15
- * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups}
16
- * @see {@link fabric.ActiveSelection#initialize} for constructor definition
17
- */
18
- fabric.ActiveSelection = fabric.util.createClass(fabric.Group, /** @lends fabric.ActiveSelection.prototype */ {
19
-
20
- /**
21
- * Type of an object
22
- * @type String
23
- * @default
24
- */
25
- type: 'activeSelection',
26
-
27
- /**
28
- * Constructor
29
- * @param {Object} objects ActiveSelection objects
30
- * @param {Object} [options] Options object
31
- * @return {Object} thisArg
32
- */
33
- initialize: function(objects, options) {
34
- options = options || {};
35
- this._objects = objects || [];
36
- for (var i = this._objects.length; i--; ) {
37
- this._objects[i].group = this;
38
- }
39
-
40
- if (options.originX) {
41
- this.originX = options.originX;
42
- }
43
- if (options.originY) {
44
- this.originY = options.originY;
45
- }
46
- this._calcBounds();
47
- this._updateObjectsCoords();
48
- fabric.Object.prototype.initialize.call(this, options);
49
- this.setCoords();
50
- },
51
-
52
- /**
53
- * Change te activeSelection to a normal group,
54
- * High level function that automatically adds it to canvas as
55
- * active object. no events fired.
56
- * @since 2.0.0
57
- * @return {fabric.Group}
58
- */
59
- toGroup: function() {
60
- var objects = this._objects.concat();
61
- this._objects = [];
62
- var options = fabric.Object.prototype.toObject.call(this);
63
- var newGroup = new fabric.Group([]);
64
- delete options.type;
65
- newGroup.set(options);
66
- objects.forEach(function(object) {
67
- object.canvas.remove(object);
68
- object.group = newGroup;
69
- });
70
- newGroup._objects = objects;
71
- if (!this.canvas) {
72
- return newGroup;
73
- }
74
- var canvas = this.canvas;
75
- canvas.add(newGroup);
76
- canvas._activeObject = newGroup;
77
- newGroup.setCoords();
78
- return newGroup;
79
- },
80
-
81
- /**
82
- * If returns true, deselection is cancelled.
83
- * @since 2.0.0
84
- * @return {Boolean} [cancel]
85
- */
86
- onDeselect: function() {
87
- this.destroy();
88
- return false;
89
- },
90
-
91
- /**
92
- * Returns string representation of a group
93
- * @return {String}
94
- */
95
- toString: function() {
96
- return '#<fabric.ActiveSelection: (' + this.complexity() + ')>';
97
- },
98
-
99
- /**
100
- * Decide if the object should cache or not. Create its own cache level
101
- * objectCaching is a global flag, wins over everything
102
- * needsItsOwnCache should be used when the object drawing method requires
103
- * a cache step. None of the fabric classes requires it.
104
- * Generally you do not cache objects in groups because the group outside is cached.
105
- * @return {Boolean}
106
- */
107
- shouldCache: function() {
108
- return false;
109
- },
110
-
111
- /**
112
- * Check if this group or its parent group are caching, recursively up
113
- * @return {Boolean}
114
- */
115
- isOnACache: function() {
116
- return false;
117
- },
118
-
119
- /**
120
- * Renders controls and borders for the object
121
- * @param {CanvasRenderingContext2D} ctx Context to render on
122
- * @param {Object} [styleOverride] properties to override the object style
123
- * @param {Object} [childrenOverride] properties to override the children overrides
124
- */
125
- _renderControls: function(ctx, styleOverride, childrenOverride) {
126
- ctx.save();
127
- ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1;
128
- this.callSuper('_renderControls', ctx, styleOverride);
129
- childrenOverride = childrenOverride || { };
130
- if (typeof childrenOverride.hasControls === 'undefined') {
131
- childrenOverride.hasControls = false;
132
- }
133
- childrenOverride.forActiveSelection = true;
134
- for (var i = 0, len = this._objects.length; i < len; i++) {
135
- this._objects[i]._renderControls(ctx, childrenOverride);
136
- }
137
- ctx.restore();
138
- },
139
- });
140
-
141
- /**
142
- * Returns {@link fabric.ActiveSelection} instance from an object representation
143
- * @static
144
- * @memberOf fabric.ActiveSelection
145
- * @param {Object} object Object to create a group from
146
- * @param {Function} [callback] Callback to invoke when an ActiveSelection instance is created
147
- */
148
- fabric.ActiveSelection.fromObject = function(object, callback) {
149
- fabric.util.enlivenObjects(object.objects, function(enlivenedObjects) {
150
- delete object.objects;
151
- callback && callback(new fabric.ActiveSelection(enlivenedObjects, object, true));
152
- });
153
- };
154
-
155
- })(typeof exports !== 'undefined' ? exports : this);
@@ -1,210 +0,0 @@
1
- (function(global) {
2
-
3
- 'use strict';
4
-
5
- var fabric = global.fabric || (global.fabric = { }),
6
- degreesToRadians = fabric.util.degreesToRadians;
7
-
8
- if (fabric.Circle) {
9
- fabric.warn('fabric.Circle is already defined.');
10
- return;
11
- }
12
-
13
- /**
14
- * Circle class
15
- * @class fabric.Circle
16
- * @extends fabric.Object
17
- * @see {@link fabric.Circle#initialize} for constructor definition
18
- */
19
- fabric.Circle = fabric.util.createClass(fabric.Object, /** @lends fabric.Circle.prototype */ {
20
-
21
- /**
22
- * Type of an object
23
- * @type String
24
- * @default
25
- */
26
- type: 'circle',
27
-
28
- /**
29
- * Radius of this circle
30
- * @type Number
31
- * @default
32
- */
33
- radius: 0,
34
-
35
- /**
36
- * degrees of start of the circle.
37
- * probably will change to degrees in next major version
38
- * @type Number 0 - 359
39
- * @default 0
40
- */
41
- startAngle: 0,
42
-
43
- /**
44
- * End angle of the circle
45
- * probably will change to degrees in next major version
46
- * @type Number 1 - 360
47
- * @default 360
48
- */
49
- endAngle: 360,
50
-
51
- cacheProperties: fabric.Object.prototype.cacheProperties.concat('radius', 'startAngle', 'endAngle'),
52
-
53
- /**
54
- * @private
55
- * @param {String} key
56
- * @param {*} value
57
- * @return {fabric.Circle} thisArg
58
- */
59
- _set: function(key, value) {
60
- this.callSuper('_set', key, value);
61
-
62
- if (key === 'radius') {
63
- this.setRadius(value);
64
- }
65
-
66
- return this;
67
- },
68
-
69
- /**
70
- * Returns object representation of an instance
71
- * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
72
- * @return {Object} object representation of an instance
73
- */
74
- toObject: function(propertiesToInclude) {
75
- return this.callSuper('toObject', ['radius', 'startAngle', 'endAngle'].concat(propertiesToInclude));
76
- },
77
-
78
- /* _TO_SVG_START_ */
79
-
80
- /**
81
- * Returns svg representation of an instance
82
- * @return {Array} an array of strings with the specific svg representation
83
- * of the instance
84
- */
85
- _toSVG: function() {
86
- var svgString, x = 0, y = 0,
87
- angle = (this.endAngle - this.startAngle) % 360;
88
-
89
- if (angle === 0) {
90
- svgString = [
91
- '<circle ', 'COMMON_PARTS',
92
- 'cx="' + x + '" cy="' + y + '" ',
93
- 'r="', this.radius,
94
- '" />\n'
95
- ];
96
- }
97
- else {
98
- var start = degreesToRadians(this.startAngle),
99
- end = degreesToRadians(this.endAngle),
100
- radius = this.radius,
101
- startX = fabric.util.cos(start) * radius,
102
- startY = fabric.util.sin(start) * radius,
103
- endX = fabric.util.cos(end) * radius,
104
- endY = fabric.util.sin(end) * radius,
105
- largeFlag = angle > 180 ? '1' : '0';
106
- svgString = [
107
- '<path d="M ' + startX + ' ' + startY,
108
- ' A ' + radius + ' ' + radius,
109
- ' 0 ', +largeFlag + ' 1', ' ' + endX + ' ' + endY,
110
- '" ', 'COMMON_PARTS', ' />\n'
111
- ];
112
- }
113
- return svgString;
114
- },
115
- /* _TO_SVG_END_ */
116
-
117
- /**
118
- * @private
119
- * @param {CanvasRenderingContext2D} ctx context to render on
120
- */
121
- _render: function(ctx) {
122
- ctx.beginPath();
123
- ctx.arc(
124
- 0,
125
- 0,
126
- this.radius,
127
- degreesToRadians(this.startAngle),
128
- degreesToRadians(this.endAngle),
129
- false
130
- );
131
- this._renderPaintInOrder(ctx);
132
- },
133
-
134
- /**
135
- * Returns horizontal radius of an object (according to how an object is scaled)
136
- * @return {Number}
137
- */
138
- getRadiusX: function() {
139
- return this.get('radius') * this.get('scaleX');
140
- },
141
-
142
- /**
143
- * Returns vertical radius of an object (according to how an object is scaled)
144
- * @return {Number}
145
- */
146
- getRadiusY: function() {
147
- return this.get('radius') * this.get('scaleY');
148
- },
149
-
150
- /**
151
- * Sets radius of an object (and updates width accordingly)
152
- * @return {fabric.Circle} thisArg
153
- */
154
- setRadius: function(value) {
155
- this.radius = value;
156
- return this.set('width', value * 2).set('height', value * 2);
157
- },
158
- });
159
-
160
- /* _FROM_SVG_START_ */
161
- /**
162
- * List of attribute names to account for when parsing SVG element (used by {@link fabric.Circle.fromElement})
163
- * @static
164
- * @memberOf fabric.Circle
165
- * @see: http://www.w3.org/TR/SVG/shapes.html#CircleElement
166
- */
167
- fabric.Circle.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy r'.split(' '));
168
-
169
- /**
170
- * Returns {@link fabric.Circle} instance from an SVG element
171
- * @static
172
- * @memberOf fabric.Circle
173
- * @param {SVGElement} element Element to parse
174
- * @param {Function} [callback] Options callback invoked after parsing is finished
175
- * @param {Object} [options] Options object
176
- * @throws {Error} If value of `r` attribute is missing or invalid
177
- */
178
- fabric.Circle.fromElement = function(element, callback) {
179
- var parsedAttributes = fabric.parseAttributes(element, fabric.Circle.ATTRIBUTE_NAMES);
180
-
181
- if (!isValidRadius(parsedAttributes)) {
182
- throw new Error('value of `r` attribute is required and can not be negative');
183
- }
184
-
185
- parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.radius;
186
- parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.radius;
187
- callback(new fabric.Circle(parsedAttributes));
188
- };
189
-
190
- /**
191
- * @private
192
- */
193
- function isValidRadius(attributes) {
194
- return (('radius' in attributes) && (attributes.radius >= 0));
195
- }
196
- /* _FROM_SVG_END_ */
197
-
198
- /**
199
- * Returns {@link fabric.Circle} instance from an object representation
200
- * @static
201
- * @memberOf fabric.Circle
202
- * @param {Object} object Object to create an instance from
203
- * @param {function} [callback] invoked with new instance as first argument
204
- * @return {void}
205
- */
206
- fabric.Circle.fromObject = function(object, callback) {
207
- fabric.Object._fromObject('Circle', object, callback);
208
- };
209
-
210
- })(typeof exports !== 'undefined' ? exports : this);
@@ -1,181 +0,0 @@
1
- (function(global) {
2
-
3
- 'use strict';
4
-
5
- var fabric = global.fabric || (global.fabric = { }),
6
- piBy2 = Math.PI * 2;
7
-
8
- if (fabric.Ellipse) {
9
- fabric.warn('fabric.Ellipse is already defined.');
10
- return;
11
- }
12
-
13
- /**
14
- * Ellipse class
15
- * @class fabric.Ellipse
16
- * @extends fabric.Object
17
- * @return {fabric.Ellipse} thisArg
18
- * @see {@link fabric.Ellipse#initialize} for constructor definition
19
- */
20
- fabric.Ellipse = fabric.util.createClass(fabric.Object, /** @lends fabric.Ellipse.prototype */ {
21
-
22
- /**
23
- * Type of an object
24
- * @type String
25
- * @default
26
- */
27
- type: 'ellipse',
28
-
29
- /**
30
- * Horizontal radius
31
- * @type Number
32
- * @default
33
- */
34
- rx: 0,
35
-
36
- /**
37
- * Vertical radius
38
- * @type Number
39
- * @default
40
- */
41
- ry: 0,
42
-
43
- cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'),
44
-
45
- /**
46
- * Constructor
47
- * @param {Object} [options] Options object
48
- * @return {fabric.Ellipse} thisArg
49
- */
50
- initialize: function(options) {
51
- this.callSuper('initialize', options);
52
- this.set('rx', options && options.rx || 0);
53
- this.set('ry', options && options.ry || 0);
54
- },
55
-
56
- /**
57
- * @private
58
- * @param {String} key
59
- * @param {*} value
60
- * @return {fabric.Ellipse} thisArg
61
- */
62
- _set: function(key, value) {
63
- this.callSuper('_set', key, value);
64
- switch (key) {
65
-
66
- case 'rx':
67
- this.rx = value;
68
- this.set('width', value * 2);
69
- break;
70
-
71
- case 'ry':
72
- this.ry = value;
73
- this.set('height', value * 2);
74
- break;
75
-
76
- }
77
- return this;
78
- },
79
-
80
- /**
81
- * Returns horizontal radius of an object (according to how an object is scaled)
82
- * @return {Number}
83
- */
84
- getRx: function() {
85
- return this.get('rx') * this.get('scaleX');
86
- },
87
-
88
- /**
89
- * Returns Vertical radius of an object (according to how an object is scaled)
90
- * @return {Number}
91
- */
92
- getRy: function() {
93
- return this.get('ry') * this.get('scaleY');
94
- },
95
-
96
- /**
97
- * Returns object representation of an instance
98
- * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
99
- * @return {Object} object representation of an instance
100
- */
101
- toObject: function(propertiesToInclude) {
102
- return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude));
103
- },
104
-
105
- /* _TO_SVG_START_ */
106
- /**
107
- * Returns svg representation of an instance
108
- * @return {Array} an array of strings with the specific svg representation
109
- * of the instance
110
- */
111
- _toSVG: function() {
112
- return [
113
- '<ellipse ', 'COMMON_PARTS',
114
- 'cx="0" cy="0" ',
115
- 'rx="', this.rx,
116
- '" ry="', this.ry,
117
- '" />\n'
118
- ];
119
- },
120
- /* _TO_SVG_END_ */
121
-
122
- /**
123
- * @private
124
- * @param {CanvasRenderingContext2D} ctx context to render on
125
- */
126
- _render: function(ctx) {
127
- ctx.beginPath();
128
- ctx.save();
129
- ctx.transform(1, 0, 0, this.ry / this.rx, 0, 0);
130
- ctx.arc(
131
- 0,
132
- 0,
133
- this.rx,
134
- 0,
135
- piBy2,
136
- false);
137
- ctx.restore();
138
- this._renderPaintInOrder(ctx);
139
- },
140
- });
141
-
142
- /* _FROM_SVG_START_ */
143
- /**
144
- * List of attribute names to account for when parsing SVG element (used by {@link fabric.Ellipse.fromElement})
145
- * @static
146
- * @memberOf fabric.Ellipse
147
- * @see http://www.w3.org/TR/SVG/shapes.html#EllipseElement
148
- */
149
- fabric.Ellipse.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy rx ry'.split(' '));
150
-
151
- /**
152
- * Returns {@link fabric.Ellipse} instance from an SVG element
153
- * @static
154
- * @memberOf fabric.Ellipse
155
- * @param {SVGElement} element Element to parse
156
- * @param {Function} [callback] Options callback invoked after parsing is finished
157
- * @return {fabric.Ellipse}
158
- */
159
- fabric.Ellipse.fromElement = function(element, callback) {
160
-
161
- var parsedAttributes = fabric.parseAttributes(element, fabric.Ellipse.ATTRIBUTE_NAMES);
162
-
163
- parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.rx;
164
- parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.ry;
165
- callback(new fabric.Ellipse(parsedAttributes));
166
- };
167
- /* _FROM_SVG_END_ */
168
-
169
- /**
170
- * Returns {@link fabric.Ellipse} instance from an object representation
171
- * @static
172
- * @memberOf fabric.Ellipse
173
- * @param {Object} object Object to create an instance from
174
- * @param {function} [callback] invoked with new instance as first argument
175
- * @return {void}
176
- */
177
- fabric.Ellipse.fromObject = function(object, callback) {
178
- fabric.Object._fromObject('Ellipse', object, callback);
179
- };
180
-
181
- })(typeof exports !== 'undefined' ? exports : this);