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,159 +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
- * Color Matrix filter class
11
- * @class fabric.Image.filters.ColorMatrix
12
- * @memberOf fabric.Image.filters
13
- * @extends fabric.Image.filters.BaseFilter
14
- * @see {@link fabric.Image.filters.ColorMatrix#initialize} for constructor definition
15
- * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}
16
- * @see {@Link http://www.webwasp.co.uk/tutorials/219/Color_Matrix_Filter.php}
17
- * @see {@Link http://phoboslab.org/log/2013/11/fast-image-filters-with-webgl}
18
- * @example <caption>Kodachrome filter</caption>
19
- * var filter = new fabric.Image.filters.ColorMatrix({
20
- * matrix: [
21
- 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,
22
- -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,
23
- -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,
24
- 0, 0, 0, 1, 0
25
- ]
26
- * });
27
- * object.filters.push(filter);
28
- * object.applyFilters();
29
- */
30
- filters.ColorMatrix = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.ColorMatrix.prototype */ {
31
-
32
- /**
33
- * Filter type
34
- * @param {String} type
35
- * @default
36
- */
37
- type: 'ColorMatrix',
38
-
39
- fragmentSource: 'precision highp float;\n' +
40
- 'uniform sampler2D uTexture;\n' +
41
- 'varying vec2 vTexCoord;\n' +
42
- 'uniform mat4 uColorMatrix;\n' +
43
- 'uniform vec4 uConstants;\n' +
44
- 'void main() {\n' +
45
- 'vec4 color = texture2D(uTexture, vTexCoord);\n' +
46
- 'color *= uColorMatrix;\n' +
47
- 'color += uConstants;\n' +
48
- 'gl_FragColor = color;\n' +
49
- '}',
50
-
51
- /**
52
- * Colormatrix for pixels.
53
- * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning
54
- * outside the -1, 1 range.
55
- * 0.0039215686 is the part of 1 that get translated to 1 in 2d
56
- * @param {Array} matrix array of 20 numbers.
57
- * @default
58
- */
59
- matrix: [
60
- 1, 0, 0, 0, 0,
61
- 0, 1, 0, 0, 0,
62
- 0, 0, 1, 0, 0,
63
- 0, 0, 0, 1, 0
64
- ],
65
-
66
- mainParameter: 'matrix',
67
-
68
- /**
69
- * Lock the colormatrix on the color part, skipping alpha, mainly for non webgl scenario
70
- * to save some calculation
71
- * @type Boolean
72
- * @default true
73
- */
74
- colorsOnly: true,
75
-
76
- /**
77
- * Constructor
78
- * @param {Object} [options] Options object
79
- */
80
- initialize: function(options) {
81
- this.callSuper('initialize', options);
82
- // create a new array instead mutating the prototype with push
83
- this.matrix = this.matrix.slice(0);
84
- },
85
-
86
- /**
87
- * Apply the ColorMatrix operation to a Uint8Array representing the pixels of an image.
88
- *
89
- * @param {Object} options
90
- * @param {ImageData} options.imageData The Uint8Array to be filtered.
91
- */
92
- applyTo2d: function(options) {
93
- var imageData = options.imageData,
94
- data = imageData.data,
95
- iLen = data.length,
96
- m = this.matrix,
97
- r, g, b, a, i, colorsOnly = this.colorsOnly;
98
-
99
- for (i = 0; i < iLen; i += 4) {
100
- r = data[i];
101
- g = data[i + 1];
102
- b = data[i + 2];
103
- if (colorsOnly) {
104
- data[i] = r * m[0] + g * m[1] + b * m[2] + m[4] * 255;
105
- data[i + 1] = r * m[5] + g * m[6] + b * m[7] + m[9] * 255;
106
- data[i + 2] = r * m[10] + g * m[11] + b * m[12] + m[14] * 255;
107
- }
108
- else {
109
- a = data[i + 3];
110
- data[i] = r * m[0] + g * m[1] + b * m[2] + a * m[3] + m[4] * 255;
111
- data[i + 1] = r * m[5] + g * m[6] + b * m[7] + a * m[8] + m[9] * 255;
112
- data[i + 2] = r * m[10] + g * m[11] + b * m[12] + a * m[13] + m[14] * 255;
113
- data[i + 3] = r * m[15] + g * m[16] + b * m[17] + a * m[18] + m[19] * 255;
114
- }
115
- }
116
- },
117
-
118
- /**
119
- * Return WebGL uniform locations for this filter's shader.
120
- *
121
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
122
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
123
- */
124
- getUniformLocations: function(gl, program) {
125
- return {
126
- uColorMatrix: gl.getUniformLocation(program, 'uColorMatrix'),
127
- uConstants: gl.getUniformLocation(program, 'uConstants'),
128
- };
129
- },
130
-
131
- /**
132
- * Send data from this filter to its shader program's uniforms.
133
- *
134
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
135
- * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
136
- */
137
- sendUniformData: function(gl, uniformLocations) {
138
- var m = this.matrix,
139
- matrix = [
140
- m[0], m[1], m[2], m[3],
141
- m[5], m[6], m[7], m[8],
142
- m[10], m[11], m[12], m[13],
143
- m[15], m[16], m[17], m[18]
144
- ],
145
- constants = [m[4], m[9], m[14], m[19]];
146
- gl.uniformMatrix4fv(uniformLocations.uColorMatrix, false, matrix);
147
- gl.uniform4fv(uniformLocations.uConstants, constants);
148
- },
149
- });
150
-
151
- /**
152
- * Returns filter instance from an object representation
153
- * @static
154
- * @param {Object} object Object to create an instance from
155
- * @param {function} [callback] function to invoke after filter creation
156
- * @return {fabric.Image.filters.ColorMatrix} Instance of fabric.Image.filters.ColorMatrix
157
- */
158
- fabric.Image.filters.ColorMatrix.fromObject = fabric.Image.filters.BaseFilter.fromObject;
159
- })(typeof exports !== 'undefined' ? exports : this);
@@ -1,72 +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
- * A container class that knows how to apply a sequence of filters to an input image.
11
- */
12
- filters.Composed = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Composed.prototype */ {
13
-
14
- type: 'Composed',
15
-
16
- /**
17
- * A non sparse array of filters to apply
18
- */
19
- subFilters: [],
20
-
21
- /**
22
- * Constructor
23
- * @param {Object} [options] Options object
24
- */
25
- initialize: function(options) {
26
- this.callSuper('initialize', options);
27
- // create a new array instead mutating the prototype with push
28
- this.subFilters = this.subFilters.slice(0);
29
- },
30
-
31
- /**
32
- * Apply this container's filters to the input image provided.
33
- *
34
- * @param {Object} options
35
- * @param {Number} options.passes The number of filters remaining to be applied.
36
- */
37
- applyTo: function(options) {
38
- options.passes += this.subFilters.length - 1;
39
- this.subFilters.forEach(function(filter) {
40
- filter.applyTo(options);
41
- });
42
- },
43
-
44
- /**
45
- * Serialize this filter into JSON.
46
- *
47
- * @returns {Object} A JSON representation of this filter.
48
- */
49
- toObject: function() {
50
- return fabric.util.object.extend(this.callSuper('toObject'), {
51
- subFilters: this.subFilters.map(function(filter) { return filter.toObject(); }),
52
- });
53
- },
54
-
55
- isNeutralState: function() {
56
- return !this.subFilters.some(function(filter) { return !filter.isNeutralState(); });
57
- }
58
- });
59
-
60
- /**
61
- * Deserialize a JSON definition of a ComposedFilter into a concrete instance.
62
- */
63
- fabric.Image.filters.Composed.fromObject = function(object, callback) {
64
- var filters = object.subFilters || [],
65
- subFilters = filters.map(function(filter) {
66
- return new fabric.Image.filters[filter.type](filter);
67
- }),
68
- instance = new fabric.Image.filters.Composed({ subFilters: subFilters });
69
- callback && callback(instance);
70
- return instance;
71
- };
72
- })(typeof exports !== 'undefined' ? exports : this);
@@ -1,113 +0,0 @@
1
- (function(global) {
2
-
3
- 'use strict';
4
-
5
- var fabric = global.fabric || (global.fabric = { }),
6
- filters = fabric.Image.filters,
7
- createClass = fabric.util.createClass;
8
-
9
- /**
10
- * Contrast filter class
11
- * @class fabric.Image.filters.Contrast
12
- * @memberOf fabric.Image.filters
13
- * @extends fabric.Image.filters.BaseFilter
14
- * @see {@link fabric.Image.filters.Contrast#initialize} for constructor definition
15
- * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}
16
- * @example
17
- * var filter = new fabric.Image.filters.Contrast({
18
- * contrast: 0.25
19
- * });
20
- * object.filters.push(filter);
21
- * object.applyFilters();
22
- */
23
- filters.Contrast = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Contrast.prototype */ {
24
-
25
- /**
26
- * Filter type
27
- * @param {String} type
28
- * @default
29
- */
30
- type: 'Contrast',
31
-
32
- fragmentSource: 'precision highp float;\n' +
33
- 'uniform sampler2D uTexture;\n' +
34
- 'uniform float uContrast;\n' +
35
- 'varying vec2 vTexCoord;\n' +
36
- 'void main() {\n' +
37
- 'vec4 color = texture2D(uTexture, vTexCoord);\n' +
38
- 'float contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\n' +
39
- 'color.rgb = contrastF * (color.rgb - 0.5) + 0.5;\n' +
40
- 'gl_FragColor = color;\n' +
41
- '}',
42
-
43
- /**
44
- * contrast value, range from -1 to 1.
45
- * @param {Number} contrast
46
- * @default 0
47
- */
48
- contrast: 0,
49
-
50
- mainParameter: 'contrast',
51
-
52
- /**
53
- * Constructor
54
- * @memberOf fabric.Image.filters.Contrast.prototype
55
- * @param {Object} [options] Options object
56
- * @param {Number} [options.contrast=0] Value to contrast the image up (-1...1)
57
- */
58
-
59
- /**
60
- * Apply the Contrast operation to a Uint8Array representing the pixels of an image.
61
- *
62
- * @param {Object} options
63
- * @param {ImageData} options.imageData The Uint8Array to be filtered.
64
- */
65
- applyTo2d: function(options) {
66
- if (this.contrast === 0) {
67
- return;
68
- }
69
- var imageData = options.imageData, i, len,
70
- data = imageData.data, len = data.length,
71
- contrast = Math.floor(this.contrast * 255),
72
- contrastF = 259 * (contrast + 255) / (255 * (259 - contrast));
73
-
74
- for (i = 0; i < len; i += 4) {
75
- data[i] = contrastF * (data[i] - 128) + 128;
76
- data[i + 1] = contrastF * (data[i + 1] - 128) + 128;
77
- data[i + 2] = contrastF * (data[i + 2] - 128) + 128;
78
- }
79
- },
80
-
81
- /**
82
- * Return WebGL uniform locations for this filter's shader.
83
- *
84
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
85
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
86
- */
87
- getUniformLocations: function(gl, program) {
88
- return {
89
- uContrast: gl.getUniformLocation(program, 'uContrast'),
90
- };
91
- },
92
-
93
- /**
94
- * Send data from this filter to its shader program's uniforms.
95
- *
96
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
97
- * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
98
- */
99
- sendUniformData: function(gl, uniformLocations) {
100
- gl.uniform1f(uniformLocations.uContrast, this.contrast);
101
- },
102
- });
103
-
104
- /**
105
- * Returns filter instance from an object representation
106
- * @static
107
- * @param {Object} object Object to create an instance from
108
- * @param {function} [callback] to be invoked after filter creation
109
- * @return {fabric.Image.filters.Contrast} Instance of fabric.Image.filters.Contrast
110
- */
111
- fabric.Image.filters.Contrast.fromObject = fabric.Image.filters.BaseFilter.fromObject;
112
-
113
- })(typeof exports !== 'undefined' ? exports : this);
@@ -1,352 +0,0 @@
1
- (function(global) {
2
-
3
- 'use strict';
4
-
5
- var fabric = global.fabric || (global.fabric = { }),
6
- extend = fabric.util.object.extend,
7
- filters = fabric.Image.filters,
8
- createClass = fabric.util.createClass;
9
-
10
- /**
11
- * Adapted from <a href="http://www.html5rocks.com/en/tutorials/canvas/imagefilters/">html5rocks article</a>
12
- * @class fabric.Image.filters.Convolute
13
- * @memberOf fabric.Image.filters
14
- * @extends fabric.Image.filters.BaseFilter
15
- * @see {@link fabric.Image.filters.Convolute#initialize} for constructor definition
16
- * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}
17
- * @example <caption>Sharpen filter</caption>
18
- * var filter = new fabric.Image.filters.Convolute({
19
- * matrix: [ 0, -1, 0,
20
- * -1, 5, -1,
21
- * 0, -1, 0 ]
22
- * });
23
- * object.filters.push(filter);
24
- * object.applyFilters();
25
- * canvas.renderAll();
26
- * @example <caption>Blur filter</caption>
27
- * var filter = new fabric.Image.filters.Convolute({
28
- * matrix: [ 1/9, 1/9, 1/9,
29
- * 1/9, 1/9, 1/9,
30
- * 1/9, 1/9, 1/9 ]
31
- * });
32
- * object.filters.push(filter);
33
- * object.applyFilters();
34
- * canvas.renderAll();
35
- * @example <caption>Emboss filter</caption>
36
- * var filter = new fabric.Image.filters.Convolute({
37
- * matrix: [ 1, 1, 1,
38
- * 1, 0.7, -1,
39
- * -1, -1, -1 ]
40
- * });
41
- * object.filters.push(filter);
42
- * object.applyFilters();
43
- * canvas.renderAll();
44
- * @example <caption>Emboss filter with opaqueness</caption>
45
- * var filter = new fabric.Image.filters.Convolute({
46
- * opaque: true,
47
- * matrix: [ 1, 1, 1,
48
- * 1, 0.7, -1,
49
- * -1, -1, -1 ]
50
- * });
51
- * object.filters.push(filter);
52
- * object.applyFilters();
53
- * canvas.renderAll();
54
- */
55
- filters.Convolute = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Convolute.prototype */ {
56
-
57
- /**
58
- * Filter type
59
- * @param {String} type
60
- * @default
61
- */
62
- type: 'Convolute',
63
-
64
- /*
65
- * Opaque value (true/false)
66
- */
67
- opaque: false,
68
-
69
- /*
70
- * matrix for the filter, max 9x9
71
- */
72
- matrix: [0, 0, 0, 0, 1, 0, 0, 0, 0],
73
-
74
- /**
75
- * Fragment source for the brightness program
76
- */
77
- fragmentSource: {
78
- Convolute_3_1: 'precision highp float;\n' +
79
- 'uniform sampler2D uTexture;\n' +
80
- 'uniform float uMatrix[9];\n' +
81
- 'uniform float uStepW;\n' +
82
- 'uniform float uStepH;\n' +
83
- 'varying vec2 vTexCoord;\n' +
84
- 'void main() {\n' +
85
- 'vec4 color = vec4(0, 0, 0, 0);\n' +
86
- 'for (float h = 0.0; h < 3.0; h+=1.0) {\n' +
87
- 'for (float w = 0.0; w < 3.0; w+=1.0) {\n' +
88
- 'vec2 matrixPos = vec2(uStepW * (w - 1), uStepH * (h - 1));\n' +
89
- 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 3.0 + w)];\n' +
90
- '}\n' +
91
- '}\n' +
92
- 'gl_FragColor = color;\n' +
93
- '}',
94
- Convolute_3_0: 'precision highp float;\n' +
95
- 'uniform sampler2D uTexture;\n' +
96
- 'uniform float uMatrix[9];\n' +
97
- 'uniform float uStepW;\n' +
98
- 'uniform float uStepH;\n' +
99
- 'varying vec2 vTexCoord;\n' +
100
- 'void main() {\n' +
101
- 'vec4 color = vec4(0, 0, 0, 1);\n' +
102
- 'for (float h = 0.0; h < 3.0; h+=1.0) {\n' +
103
- 'for (float w = 0.0; w < 3.0; w+=1.0) {\n' +
104
- 'vec2 matrixPos = vec2(uStepW * (w - 1.0), uStepH * (h - 1.0));\n' +
105
- 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 3.0 + w)];\n' +
106
- '}\n' +
107
- '}\n' +
108
- 'float alpha = texture2D(uTexture, vTexCoord).a;\n' +
109
- 'gl_FragColor = color;\n' +
110
- 'gl_FragColor.a = alpha;\n' +
111
- '}',
112
- Convolute_5_1: 'precision highp float;\n' +
113
- 'uniform sampler2D uTexture;\n' +
114
- 'uniform float uMatrix[25];\n' +
115
- 'uniform float uStepW;\n' +
116
- 'uniform float uStepH;\n' +
117
- 'varying vec2 vTexCoord;\n' +
118
- 'void main() {\n' +
119
- 'vec4 color = vec4(0, 0, 0, 0);\n' +
120
- 'for (float h = 0.0; h < 5.0; h+=1.0) {\n' +
121
- 'for (float w = 0.0; w < 5.0; w+=1.0) {\n' +
122
- 'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\n' +
123
- 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 5.0 + w)];\n' +
124
- '}\n' +
125
- '}\n' +
126
- 'gl_FragColor = color;\n' +
127
- '}',
128
- Convolute_5_0: 'precision highp float;\n' +
129
- 'uniform sampler2D uTexture;\n' +
130
- 'uniform float uMatrix[25];\n' +
131
- 'uniform float uStepW;\n' +
132
- 'uniform float uStepH;\n' +
133
- 'varying vec2 vTexCoord;\n' +
134
- 'void main() {\n' +
135
- 'vec4 color = vec4(0, 0, 0, 1);\n' +
136
- 'for (float h = 0.0; h < 5.0; h+=1.0) {\n' +
137
- 'for (float w = 0.0; w < 5.0; w+=1.0) {\n' +
138
- 'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\n' +
139
- 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 5.0 + w)];\n' +
140
- '}\n' +
141
- '}\n' +
142
- 'float alpha = texture2D(uTexture, vTexCoord).a;\n' +
143
- 'gl_FragColor = color;\n' +
144
- 'gl_FragColor.a = alpha;\n' +
145
- '}',
146
- Convolute_7_1: 'precision highp float;\n' +
147
- 'uniform sampler2D uTexture;\n' +
148
- 'uniform float uMatrix[49];\n' +
149
- 'uniform float uStepW;\n' +
150
- 'uniform float uStepH;\n' +
151
- 'varying vec2 vTexCoord;\n' +
152
- 'void main() {\n' +
153
- 'vec4 color = vec4(0, 0, 0, 0);\n' +
154
- 'for (float h = 0.0; h < 7.0; h+=1.0) {\n' +
155
- 'for (float w = 0.0; w < 7.0; w+=1.0) {\n' +
156
- 'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\n' +
157
- 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 7.0 + w)];\n' +
158
- '}\n' +
159
- '}\n' +
160
- 'gl_FragColor = color;\n' +
161
- '}',
162
- Convolute_7_0: 'precision highp float;\n' +
163
- 'uniform sampler2D uTexture;\n' +
164
- 'uniform float uMatrix[49];\n' +
165
- 'uniform float uStepW;\n' +
166
- 'uniform float uStepH;\n' +
167
- 'varying vec2 vTexCoord;\n' +
168
- 'void main() {\n' +
169
- 'vec4 color = vec4(0, 0, 0, 1);\n' +
170
- 'for (float h = 0.0; h < 7.0; h+=1.0) {\n' +
171
- 'for (float w = 0.0; w < 7.0; w+=1.0) {\n' +
172
- 'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\n' +
173
- 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 7.0 + w)];\n' +
174
- '}\n' +
175
- '}\n' +
176
- 'float alpha = texture2D(uTexture, vTexCoord).a;\n' +
177
- 'gl_FragColor = color;\n' +
178
- 'gl_FragColor.a = alpha;\n' +
179
- '}',
180
- Convolute_9_1: 'precision highp float;\n' +
181
- 'uniform sampler2D uTexture;\n' +
182
- 'uniform float uMatrix[81];\n' +
183
- 'uniform float uStepW;\n' +
184
- 'uniform float uStepH;\n' +
185
- 'varying vec2 vTexCoord;\n' +
186
- 'void main() {\n' +
187
- 'vec4 color = vec4(0, 0, 0, 0);\n' +
188
- 'for (float h = 0.0; h < 9.0; h+=1.0) {\n' +
189
- 'for (float w = 0.0; w < 9.0; w+=1.0) {\n' +
190
- 'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\n' +
191
- 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 9.0 + w)];\n' +
192
- '}\n' +
193
- '}\n' +
194
- 'gl_FragColor = color;\n' +
195
- '}',
196
- Convolute_9_0: 'precision highp float;\n' +
197
- 'uniform sampler2D uTexture;\n' +
198
- 'uniform float uMatrix[81];\n' +
199
- 'uniform float uStepW;\n' +
200
- 'uniform float uStepH;\n' +
201
- 'varying vec2 vTexCoord;\n' +
202
- 'void main() {\n' +
203
- 'vec4 color = vec4(0, 0, 0, 1);\n' +
204
- 'for (float h = 0.0; h < 9.0; h+=1.0) {\n' +
205
- 'for (float w = 0.0; w < 9.0; w+=1.0) {\n' +
206
- 'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\n' +
207
- 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 9.0 + w)];\n' +
208
- '}\n' +
209
- '}\n' +
210
- 'float alpha = texture2D(uTexture, vTexCoord).a;\n' +
211
- 'gl_FragColor = color;\n' +
212
- 'gl_FragColor.a = alpha;\n' +
213
- '}',
214
- },
215
-
216
- /**
217
- * Constructor
218
- * @memberOf fabric.Image.filters.Convolute.prototype
219
- * @param {Object} [options] Options object
220
- * @param {Boolean} [options.opaque=false] Opaque value (true/false)
221
- * @param {Array} [options.matrix] Filter matrix
222
- */
223
-
224
-
225
- /**
226
- * Retrieves the cached shader.
227
- * @param {Object} options
228
- * @param {WebGLRenderingContext} options.context The GL context used for rendering.
229
- * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.
230
- */
231
- retrieveShader: function(options) {
232
- var size = Math.sqrt(this.matrix.length);
233
- var cacheKey = this.type + '_' + size + '_' + (this.opaque ? 1 : 0);
234
- var shaderSource = this.fragmentSource[cacheKey];
235
- if (!options.programCache.hasOwnProperty(cacheKey)) {
236
- options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);
237
- }
238
- return options.programCache[cacheKey];
239
- },
240
-
241
- /**
242
- * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.
243
- *
244
- * @param {Object} options
245
- * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.
246
- */
247
- applyTo2d: function(options) {
248
- var imageData = options.imageData,
249
- data = imageData.data,
250
- weights = this.matrix,
251
- side = Math.round(Math.sqrt(weights.length)),
252
- halfSide = Math.floor(side / 2),
253
- sw = imageData.width,
254
- sh = imageData.height,
255
- output = options.ctx.createImageData(sw, sh),
256
- dst = output.data,
257
- // go through the destination image pixels
258
- alphaFac = this.opaque ? 1 : 0,
259
- r, g, b, a, dstOff,
260
- scx, scy, srcOff, wt,
261
- x, y, cx, cy;
262
-
263
- for (y = 0; y < sh; y++) {
264
- for (x = 0; x < sw; x++) {
265
- dstOff = (y * sw + x) * 4;
266
- // calculate the weighed sum of the source image pixels that
267
- // fall under the convolution matrix
268
- r = 0; g = 0; b = 0; a = 0;
269
-
270
- for (cy = 0; cy < side; cy++) {
271
- for (cx = 0; cx < side; cx++) {
272
- scy = y + cy - halfSide;
273
- scx = x + cx - halfSide;
274
-
275
- // eslint-disable-next-line max-depth
276
- if (scy < 0 || scy >= sh || scx < 0 || scx >= sw) {
277
- continue;
278
- }
279
-
280
- srcOff = (scy * sw + scx) * 4;
281
- wt = weights[cy * side + cx];
282
-
283
- r += data[srcOff] * wt;
284
- g += data[srcOff + 1] * wt;
285
- b += data[srcOff + 2] * wt;
286
- // eslint-disable-next-line max-depth
287
- if (!alphaFac) {
288
- a += data[srcOff + 3] * wt;
289
- }
290
- }
291
- }
292
- dst[dstOff] = r;
293
- dst[dstOff + 1] = g;
294
- dst[dstOff + 2] = b;
295
- if (!alphaFac) {
296
- dst[dstOff + 3] = a;
297
- }
298
- else {
299
- dst[dstOff + 3] = data[dstOff + 3];
300
- }
301
- }
302
- }
303
- options.imageData = output;
304
- },
305
-
306
- /**
307
- * Return WebGL uniform locations for this filter's shader.
308
- *
309
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
310
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
311
- */
312
- getUniformLocations: function(gl, program) {
313
- return {
314
- uMatrix: gl.getUniformLocation(program, 'uMatrix'),
315
- uOpaque: gl.getUniformLocation(program, 'uOpaque'),
316
- uHalfSize: gl.getUniformLocation(program, 'uHalfSize'),
317
- uSize: gl.getUniformLocation(program, 'uSize'),
318
- };
319
- },
320
-
321
- /**
322
- * Send data from this filter to its shader program's uniforms.
323
- *
324
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
325
- * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
326
- */
327
- sendUniformData: function(gl, uniformLocations) {
328
- gl.uniform1fv(uniformLocations.uMatrix, this.matrix);
329
- },
330
-
331
- /**
332
- * Returns object representation of an instance
333
- * @return {Object} Object representation of an instance
334
- */
335
- toObject: function() {
336
- return extend(this.callSuper('toObject'), {
337
- opaque: this.opaque,
338
- matrix: this.matrix
339
- });
340
- }
341
- });
342
-
343
- /**
344
- * Returns filter instance from an object representation
345
- * @static
346
- * @param {Object} object Object to create an instance from
347
- * @param {function} [callback] to be invoked after filter creation
348
- * @return {fabric.Image.filters.Convolute} Instance of fabric.Image.filters.Convolute
349
- */
350
- fabric.Image.filters.Convolute.fromObject = fabric.Image.filters.BaseFilter.fromObject;
351
-
352
- })(typeof exports !== 'undefined' ? exports : this);