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.
- package/.babelrc +11 -0
- package/.babelrcAlt +19 -0
- package/.browserslistrc +5 -0
- package/.eslintrc.js +43 -0
- package/.eslintrc.json +38 -46
- package/.eslintrc_tests +12 -0
- package/.gitattributes +2 -0
- package/.prettierignore +16 -0
- package/.prettierrc +4 -0
- package/CHANGELOG.md +491 -189
- package/CONTRIBUTING.md +226 -58
- package/README.md +188 -239
- package/bower.json +1 -3
- package/dist/fabric.d.ts +1021 -0
- package/dist/index.cjs +28027 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.min.js +1 -0
- package/dist/index.mjs +27964 -0
- package/dist/index.mjs.map +1 -0
- package/dist/index.node.cjs +28092 -0
- package/dist/index.node.cjs.map +1 -0
- package/dist/index.node.d.ts +15 -0
- package/dist/index.node.mjs +28035 -0
- package/dist/index.node.mjs.map +1 -0
- package/dist/src/Collection.d.ts +126 -0
- package/dist/src/CommonMethods.d.ts +32 -0
- package/dist/src/EventTypeDefs.d.ts +226 -0
- package/dist/src/Intersection.d.ts +100 -0
- package/dist/src/Observable.d.ts +54 -0
- package/dist/src/Pattern.d.ts +104 -0
- package/dist/src/Point.d.ts +232 -0
- package/dist/src/Shadow.d.ts +87 -0
- package/dist/src/brushes/BaseBrush.d.ts +105 -0
- package/dist/src/brushes/CircleBrush.d.ts +49 -0
- package/dist/src/brushes/PatternBrush.d.ts +23 -0
- package/dist/src/brushes/PencilBrush.d.ts +92 -0
- package/dist/src/brushes/SprayBrush.d.ts +79 -0
- package/dist/src/cache.d.ts +46 -0
- package/dist/src/canvas/Canvas.d.ts +567 -0
- package/dist/src/canvas/SelectableCanvas.d.ts +723 -0
- package/dist/src/canvas/StaticCanvas.d.ts +751 -0
- package/dist/src/canvas/TextEditingManager.d.ts +17 -0
- package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
- package/dist/src/color/Color.d.ts +174 -0
- package/dist/src/color/color_map.d.ts +155 -0
- package/dist/src/color/constants.d.ts +22 -0
- package/dist/src/color/util.d.ts +12 -0
- package/dist/src/config.d.ts +115 -0
- package/dist/src/constants.d.ts +14 -0
- package/dist/src/controls/Control.d.ts +228 -0
- package/dist/src/controls/changeWidth.d.ts +13 -0
- package/dist/src/controls/controls.render.d.ts +29 -0
- package/dist/src/controls/default_controls.d.ts +50 -0
- package/dist/src/controls/drag.d.ts +12 -0
- package/dist/src/controls/polyControl.d.ts +5 -0
- package/dist/src/controls/rotate.d.ts +12 -0
- package/dist/src/controls/scale.d.ts +47 -0
- package/dist/src/controls/scaleSkew.d.ts +39 -0
- package/dist/src/controls/skew.d.ts +33 -0
- package/dist/src/controls/util.d.ts +41 -0
- package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
- package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
- package/dist/src/env/browser.d.ts +3 -0
- package/dist/src/env/index.d.ts +7 -0
- package/dist/src/env/node.d.ts +3 -0
- package/dist/src/env/types.d.ts +15 -0
- package/dist/src/filters/BaseFilter.d.ts +156 -0
- package/dist/src/filters/BlendColor.d.ts +80 -0
- package/dist/src/filters/BlendImage.d.ts +90 -0
- package/dist/src/filters/Blur.d.ts +50 -0
- package/dist/src/filters/Boilerplate.d.ts +46 -0
- package/dist/src/filters/Brightness.d.ts +46 -0
- package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
- package/dist/src/filters/ColorMatrix.d.ts +62 -0
- package/dist/src/filters/ColorMatrixFilters.d.ts +1169 -0
- package/dist/src/filters/Composed.d.ts +47 -0
- package/dist/src/filters/Contrast.d.ts +44 -0
- package/dist/src/filters/Convolute.d.ts +82 -0
- package/dist/src/filters/FilterBackend.d.ts +14 -0
- package/dist/src/filters/Gamma.d.ts +53 -0
- package/dist/src/filters/Grayscale.d.ts +45 -0
- package/dist/src/filters/HueRotation.d.ts +24 -0
- package/dist/src/filters/Invert.d.ts +54 -0
- package/dist/src/filters/Noise.d.ts +53 -0
- package/dist/src/filters/Pixelate.d.ts +43 -0
- package/dist/src/filters/RemoveColor.d.ts +62 -0
- package/dist/src/filters/Resize.d.ts +134 -0
- package/dist/src/filters/Saturation.d.ts +47 -0
- package/dist/src/filters/Vibrance.d.ts +47 -0
- package/dist/src/filters/WebGLFilterBackend.d.ts +126 -0
- package/dist/src/filters/WebGLProbe.d.ts +28 -0
- package/dist/src/filters/typedefs.d.ts +49 -0
- package/dist/src/gradient/Gradient.d.ts +149 -0
- package/dist/src/gradient/constants.d.ts +15 -0
- package/dist/src/gradient/parser/index.d.ts +4 -0
- package/dist/src/gradient/parser/misc.d.ts +4 -0
- package/dist/src/gradient/parser/parseColorStops.d.ts +6 -0
- package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
- package/dist/src/gradient/typedefs.d.ts +93 -0
- package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
- package/dist/src/mixins/stateful.mixin.d.ts +18 -0
- package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
- package/dist/src/parkinglot/straighten.d.ts +2 -0
- package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
- package/dist/src/parser/attributes.d.ts +6 -0
- package/dist/src/parser/constants.d.ts +54 -0
- package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
- package/dist/src/parser/elementById.d.ts +6 -0
- package/dist/src/parser/elementMatchesRule.d.ts +5 -0
- package/dist/src/parser/elements_parser.d.ts +3 -0
- package/dist/src/parser/getCSSRules.d.ts +7 -0
- package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
- package/dist/src/parser/getGradientDefs.d.ts +7 -0
- package/dist/src/parser/getMultipleNodes.d.ts +2 -0
- package/dist/src/parser/getSvgRegex.d.ts +2 -0
- package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
- package/dist/src/parser/loadSVGFromString.d.ts +12 -0
- package/dist/src/parser/loadSVGFromURL.d.ts +13 -0
- package/dist/src/parser/normalizeAttr.d.ts +2 -0
- package/dist/src/parser/normalizeValue.d.ts +2 -0
- package/dist/src/parser/parseAttributes.d.ts +9 -0
- package/dist/src/parser/parseElements.d.ts +11 -0
- package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
- package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
- package/dist/src/parser/parseSVGDocument.d.ts +15 -0
- package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
- package/dist/src/parser/parseStyleObject.d.ts +2 -0
- package/dist/src/parser/parseStyleString.d.ts +2 -0
- package/dist/src/parser/parseTransformAttribute.d.ts +10 -0
- package/dist/src/parser/parseUseDirectives.d.ts +2 -0
- package/dist/src/parser/percent.d.ts +9 -0
- package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
- package/dist/src/parser/rotateMatrix.d.ts +2 -0
- package/dist/src/parser/scaleMatrix.d.ts +2 -0
- package/dist/src/parser/selectorMatches.d.ts +2 -0
- package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
- package/dist/src/parser/skewMatrix.d.ts +2 -0
- package/dist/src/parser/translateMatrix.d.ts +2 -0
- package/dist/src/shapes/ActiveSelection.d.ts +66 -0
- package/dist/src/shapes/Circle.d.ts +80 -0
- package/dist/src/shapes/Ellipse.d.ts +74 -0
- package/dist/src/shapes/Group.d.ts +381 -0
- package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
- package/dist/src/shapes/IText/IText.d.ts +322 -0
- package/dist/src/shapes/IText/ITextBehavior.d.ts +285 -0
- package/dist/src/shapes/IText/ITextClickBehavior.d.ts +81 -0
- package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +193 -0
- package/dist/src/shapes/IText/constants.d.ts +13 -0
- package/dist/src/shapes/Image.d.ts +283 -0
- package/dist/src/shapes/Line.d.ts +117 -0
- package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
- package/dist/src/shapes/Object/FabricObject.d.ts +9 -0
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
- package/dist/src/shapes/Object/InteractiveObject.d.ts +282 -0
- package/dist/src/shapes/Object/Object.d.ts +906 -0
- package/dist/src/shapes/Object/ObjectGeometry.d.ts +343 -0
- package/dist/src/shapes/Object/ObjectOrigin.d.ts +178 -0
- package/dist/src/shapes/Object/StackedObject.d.ts +62 -0
- package/dist/src/shapes/Object/defaultValues.d.ts +77 -0
- package/dist/src/shapes/Path.d.ts +123 -0
- package/dist/src/shapes/Polygon.d.ts +7 -0
- package/dist/src/shapes/Polyline.d.ts +130 -0
- package/dist/src/shapes/Rect.d.ts +62 -0
- package/dist/src/shapes/Text/StyledText.d.ts +118 -0
- package/dist/src/shapes/Text/Text.d.ts +656 -0
- package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
- package/dist/src/shapes/Textbox.d.ts +170 -0
- package/dist/src/shapes/Triangle.d.ts +17 -0
- package/dist/src/typedefs.d.ts +93 -0
- package/dist/src/util/animation/AnimationBase.d.ts +54 -0
- package/dist/src/util/animation/AnimationFrameProvider.d.ts +8 -0
- package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
- package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
- package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
- package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
- package/dist/src/util/animation/animate.d.ts +37 -0
- package/dist/src/util/animation/easing.d.ts +130 -0
- package/dist/src/util/animation/types.d.ts +87 -0
- package/dist/src/util/applyMixins.d.ts +8 -0
- package/dist/src/util/class_registry.d.ts +14 -0
- package/dist/src/util/dom_event.d.ts +5 -0
- package/dist/src/util/dom_misc.d.ts +40 -0
- package/dist/src/util/dom_request.d.ts +14 -0
- package/dist/src/util/dom_style.d.ts +7 -0
- package/dist/src/util/fireEvent.d.ts +3 -0
- package/dist/src/util/internals/cloneDeep.d.ts +2 -0
- package/dist/src/util/internals/getRandomInt.d.ts +8 -0
- package/dist/src/util/internals/ifNaN.d.ts +8 -0
- package/dist/src/util/internals/index.d.ts +4 -0
- package/dist/src/util/internals/removeFromArray.d.ts +9 -0
- package/dist/src/util/internals/uid.d.ts +2 -0
- package/dist/src/util/lang_class.d.ts +12 -0
- package/dist/src/util/lang_string.d.ts +22 -0
- package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
- package/dist/src/util/misc/capValue.d.ts +2 -0
- package/dist/src/util/misc/cos.d.ts +10 -0
- package/dist/src/util/misc/dom.d.ts +28 -0
- package/dist/src/util/misc/findScaleTo.d.ts +29 -0
- package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
- package/dist/src/util/misc/isTransparent.d.ts +11 -0
- package/dist/src/util/misc/matrix.d.ts +92 -0
- package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
- package/dist/src/util/misc/objectEnlive.d.ts +56 -0
- package/dist/src/util/misc/objectTransforms.d.ts +68 -0
- package/dist/src/util/misc/pick.d.ts +8 -0
- package/dist/src/util/misc/planeChange.d.ts +84 -0
- package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +51 -0
- package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +81 -0
- package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +25 -0
- package/dist/src/util/misc/projectStroke/index.d.ts +11 -0
- package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
- package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
- package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
- package/dist/src/util/misc/rotatePoint.d.ts +12 -0
- package/dist/src/util/misc/sin.d.ts +10 -0
- package/dist/src/util/misc/svgParsing.d.ts +53 -0
- package/dist/src/util/misc/textStyles.d.ts +32 -0
- package/dist/src/util/misc/toFixed.d.ts +8 -0
- package/dist/src/util/misc/vectors.d.ts +57 -0
- package/dist/src/util/path.d.ts +108 -0
- package/dist/src/util/transform_matrix_removal.d.ts +14 -0
- package/dist/src/util/types.d.ts +19 -0
- package/fabric.ts +427 -0
- package/index.node.ts +43 -0
- package/index.ts +1 -0
- package/package.json +90 -39
- package/publish.js +0 -26
- package/rollup.config.mjs +79 -0
- package/rollup.test.config.js +24 -0
- package/scripts/build.mjs +50 -0
- package/scripts/buildLock.mjs +115 -0
- package/scripts/buildReporter.mjs +15 -0
- package/scripts/buildStats.mjs +139 -0
- package/scripts/dirname.mjs +14 -0
- package/scripts/index.mjs +679 -0
- package/scripts/transform_files.mjs +504 -0
- package/src/Collection.ts +311 -0
- package/src/CommonMethods.ts +63 -0
- package/src/EventTypeDefs.ts +294 -0
- package/src/Intersection.ts +273 -0
- package/src/Observable.ts +175 -0
- package/src/Pattern.ts +211 -0
- package/src/Point.ts +388 -0
- package/src/Shadow.ts +215 -0
- package/src/brushes/{base_brush.class.js → BaseBrush.ts} +65 -42
- package/src/brushes/CircleBrush.ts +145 -0
- package/src/brushes/PatternBrush.ts +70 -0
- package/src/brushes/PencilBrush.ts +300 -0
- package/src/brushes/SprayBrush.ts +219 -0
- package/src/cache.ts +89 -0
- package/src/canvas/Canvas.ts +1672 -0
- package/src/canvas/SelectableCanvas.ts +1636 -0
- package/src/canvas/StaticCanvas.ts +1709 -0
- package/src/canvas/TextEditingManager.ts +48 -0
- package/src/canvas/canvas_gestures.mixin.ts +207 -0
- package/src/color/Color.ts +404 -0
- package/src/color/color_map.ts +154 -0
- package/src/color/constants.ts +26 -0
- package/src/color/util.ts +32 -0
- package/src/config.ts +159 -0
- package/src/constants.ts +19 -0
- package/src/controls/Control.ts +377 -0
- package/src/controls/changeWidth.ts +52 -0
- package/src/controls/controls.render.ts +138 -0
- package/src/controls/default_controls.ts +132 -0
- package/src/controls/drag.ts +31 -0
- package/src/controls/polyControl.ts +135 -0
- package/src/controls/rotate.ts +87 -0
- package/src/controls/scale.ts +277 -0
- package/src/controls/scaleSkew.ts +92 -0
- package/src/controls/skew.ts +242 -0
- package/src/controls/util.ts +154 -0
- package/src/controls/wrapWithFireEvent.ts +25 -0
- package/src/controls/wrapWithFixedAnchor.ts +20 -0
- package/src/env/browser.ts +28 -0
- package/src/env/index.ts +19 -0
- package/src/env/node.ts +52 -0
- package/src/env/types.ts +15 -0
- package/src/filters/{base_filter.class.js → BaseFilter.ts} +201 -149
- package/src/filters/BlendColor.ts +258 -0
- package/src/filters/BlendImage.ts +254 -0
- package/src/filters/Blur.ts +202 -0
- package/src/filters/Boilerplate.ts +91 -0
- package/src/filters/Brightness.ts +93 -0
- package/src/filters/Canvas2dFilterBackend.ts +65 -0
- package/src/filters/ColorMatrix.ts +156 -0
- package/src/filters/ColorMatrixFilters.ts +106 -0
- package/src/filters/Composed.ts +85 -0
- package/src/filters/Contrast.ts +94 -0
- package/src/filters/Convolute.ts +341 -0
- package/src/filters/FilterBackend.ts +32 -0
- package/src/filters/Gamma.ts +127 -0
- package/src/filters/Grayscale.ts +137 -0
- package/src/filters/HueRotation.ts +66 -0
- package/src/filters/Invert.ts +117 -0
- package/src/filters/Noise.ts +109 -0
- package/src/filters/Pixelate.ts +114 -0
- package/src/filters/RemoveColor.ts +148 -0
- package/src/filters/Resize.ts +540 -0
- package/src/filters/Saturation.ts +100 -0
- package/src/filters/Vibrance.ts +103 -0
- package/src/filters/WebGLFilterBackend.ts +430 -0
- package/src/filters/WebGLProbe.ts +62 -0
- package/src/filters/typedefs.ts +65 -0
- package/src/gradient/Gradient.ts +401 -0
- package/src/gradient/constants.ts +12 -0
- package/src/gradient/parser/index.ts +3 -0
- package/src/gradient/parser/misc.ts +13 -0
- package/src/gradient/parser/parseColorStops.ts +55 -0
- package/src/gradient/parser/parseCoords.ts +73 -0
- package/src/gradient/typedefs.ts +104 -0
- package/src/mixins/{eraser_brush.mixin.js → eraser_brush.mixin.ts} +350 -239
- package/src/mixins/stateful.mixin.ts +104 -0
- package/src/parkinglot/canvas_animation.mixin.ts +121 -0
- package/src/parkinglot/straighten.ts +58 -0
- package/src/parser/applyViewboxTransform.ts +162 -0
- package/src/parser/attributes.ts +25 -0
- package/src/parser/constants.ts +118 -0
- package/src/parser/doesSomeParentMatch.ts +19 -0
- package/src/parser/elementById.ts +23 -0
- package/src/parser/elementMatchesRule.ts +19 -0
- package/src/parser/elements_parser.ts +191 -0
- package/src/parser/getCSSRules.ts +62 -0
- package/src/parser/getGlobalStylesForElement.ts +19 -0
- package/src/parser/getGradientDefs.ts +32 -0
- package/src/parser/getMultipleNodes.ts +15 -0
- package/src/parser/getSvgRegex.ts +5 -0
- package/src/parser/hasAncestorWithNodeName.ts +14 -0
- package/src/parser/loadSVGFromString.ts +26 -0
- package/src/parser/loadSVGFromURL.ts +40 -0
- package/src/parser/normalizeAttr.ts +10 -0
- package/src/parser/normalizeValue.ts +63 -0
- package/src/parser/parseAttributes.ts +90 -0
- package/src/parser/parseElements.ts +28 -0
- package/src/parser/parseFontDeclaration.ts +44 -0
- package/src/parser/parsePointsAttribute.ts +36 -0
- package/src/parser/parseSVGDocument.ts +106 -0
- package/src/parser/parseStyleAttribute.ts +27 -0
- package/src/parser/parseStyleObject.ts +15 -0
- package/src/parser/parseStyleString.ts +16 -0
- package/src/parser/parseTransformAttribute.ts +155 -0
- package/src/parser/parseUseDirectives.ts +79 -0
- package/src/parser/percent.ts +27 -0
- package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
- package/src/parser/rotateMatrix.ts +21 -0
- package/src/parser/scaleMatrix.ts +9 -0
- package/src/parser/selectorMatches.ts +25 -0
- package/src/parser/setStrokeFillOpacity.ts +40 -0
- package/src/parser/skewMatrix.ts +6 -0
- package/src/parser/translateMatrix.ts +8 -0
- package/src/shapes/ActiveSelection.ts +157 -0
- package/src/shapes/Circle.ts +205 -0
- package/src/shapes/Ellipse.ts +154 -0
- package/src/shapes/Group.ts +1053 -0
- package/src/shapes/IText/DraggableTextDelegate.ts +394 -0
- package/src/shapes/IText/IText.ts +666 -0
- package/src/shapes/IText/ITextBehavior.ts +1055 -0
- package/src/shapes/IText/ITextClickBehavior.ts +321 -0
- package/src/shapes/IText/ITextKeyBehavior.ts +683 -0
- package/src/shapes/IText/constants.ts +47 -0
- package/src/shapes/Image.ts +789 -0
- package/src/shapes/Line.ts +329 -0
- package/src/shapes/Object/AnimatableObject.ts +106 -0
- package/src/shapes/Object/FabricObject.ts +19 -0
- package/src/shapes/Object/FabricObjectSVGExportMixin.ts +277 -0
- package/src/shapes/Object/InteractiveObject.ts +645 -0
- package/src/shapes/Object/Object.ts +1896 -0
- package/src/shapes/Object/ObjectGeometry.ts +830 -0
- package/src/shapes/Object/ObjectOrigin.ts +354 -0
- package/src/shapes/Object/StackedObject.ts +191 -0
- package/src/shapes/Object/defaultValues.ts +112 -0
- package/src/shapes/Path.ts +395 -0
- package/src/shapes/Polygon.ts +19 -0
- package/src/shapes/Polyline.ts +333 -0
- package/src/shapes/Rect.ts +199 -0
- package/src/shapes/Text/StyledText.ts +319 -0
- package/src/shapes/Text/Text.ts +1948 -0
- package/src/shapes/Text/TextSVGExportMixin.ts +288 -0
- package/src/shapes/Textbox.ts +471 -0
- package/src/shapes/Triangle.ts +45 -0
- package/src/typedefs.ts +119 -0
- package/src/util/animation/AnimationBase.ts +166 -0
- package/src/util/animation/AnimationFrameProvider.ts +28 -0
- package/src/util/animation/AnimationRegistry.ts +58 -0
- package/src/util/animation/ArrayAnimation.ts +27 -0
- package/src/util/animation/ColorAnimation.ts +74 -0
- package/src/util/animation/ValueAnimation.ts +29 -0
- package/src/util/animation/animate.ts +74 -0
- package/src/util/animation/easing.ts +327 -0
- package/src/util/animation/types.ts +136 -0
- package/src/util/applyMixins.ts +22 -0
- package/src/util/class_registry.ts +54 -0
- package/src/util/dom_event.ts +28 -0
- package/src/util/dom_misc.ts +138 -0
- package/src/util/dom_request.ts +64 -0
- package/src/util/dom_style.ts +20 -0
- package/src/util/fireEvent.ts +15 -0
- package/src/util/internals/cloneDeep.ts +2 -0
- package/src/util/internals/getRandomInt.ts +8 -0
- package/src/util/internals/ifNaN.ts +9 -0
- package/src/util/internals/index.ts +3 -0
- package/src/util/internals/removeFromArray.ts +14 -0
- package/src/util/internals/uid.ts +3 -0
- package/src/util/lang_class.ts +90 -0
- package/src/util/lang_string.ts +79 -0
- package/src/util/misc/boundingBoxFromPoints.ts +37 -0
- package/src/util/misc/capValue.ts +2 -0
- package/src/util/misc/cos.ts +24 -0
- package/src/util/misc/dom.ts +50 -0
- package/src/util/misc/findScaleTo.ts +44 -0
- package/src/util/misc/groupSVGElements.ts +15 -0
- package/src/util/misc/isTransparent.ts +51 -0
- package/src/util/misc/matrix.ts +207 -0
- package/src/util/misc/mergeClipPaths.ts +40 -0
- package/src/util/misc/objectEnlive.ts +189 -0
- package/src/util/misc/objectTransforms.ts +129 -0
- package/src/util/misc/pick.ts +17 -0
- package/src/util/misc/planeChange.ts +136 -0
- package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +112 -0
- package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +231 -0
- package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +75 -0
- package/src/util/misc/projectStroke/index.ts +53 -0
- package/src/util/misc/projectStroke/types.ts +24 -0
- package/src/util/misc/radiansDegreesConversion.ts +18 -0
- package/src/util/misc/resolveOrigin.ts +22 -0
- package/src/util/misc/rotatePoint.ts +15 -0
- package/src/util/misc/sin.ts +26 -0
- package/src/util/misc/svgParsing.ts +181 -0
- package/src/util/misc/textStyles.ts +133 -0
- package/src/util/misc/toFixed.ts +8 -0
- package/src/util/misc/vectors.ts +82 -0
- package/src/util/path.ts +941 -0
- package/src/util/transform_matrix_removal.ts +60 -0
- package/src/util/types.ts +78 -0
- package/tsconfig.json +106 -0
- package/HEADER.js +0 -203
- package/build.js +0 -287
- package/dist/fabric.js +0 -31187
- package/dist/fabric.min.js +0 -1
- package/old-travis-reference.yml +0 -97
- package/src/brushes/circle_brush.class.js +0 -144
- package/src/brushes/pattern_brush.class.js +0 -61
- package/src/brushes/pencil_brush.class.js +0 -310
- package/src/brushes/spray_brush.class.js +0 -219
- package/src/canvas.class.js +0 -1312
- package/src/color.class.js +0 -636
- package/src/control.class.js +0 -339
- package/src/controls.actions.js +0 -740
- package/src/controls.render.js +0 -99
- package/src/elements_parser.js +0 -152
- package/src/filters/2d_backend.class.js +0 -65
- package/src/filters/blendcolor_filter.class.js +0 -251
- package/src/filters/blendimage_filter.class.js +0 -247
- package/src/filters/blur_filter.class.js +0 -217
- package/src/filters/brightness_filter.class.js +0 -113
- package/src/filters/colormatrix_filter.class.js +0 -159
- package/src/filters/composed_filter.class.js +0 -72
- package/src/filters/contrast_filter.class.js +0 -113
- package/src/filters/convolute_filter.class.js +0 -352
- package/src/filters/filter_boilerplate.js +0 -111
- package/src/filters/filter_generator.js +0 -85
- package/src/filters/gamma_filter.class.js +0 -136
- package/src/filters/grayscale_filter.class.js +0 -154
- package/src/filters/hue_rotation.class.js +0 -107
- package/src/filters/invert_filter.class.js +0 -111
- package/src/filters/noise_filter.class.js +0 -134
- package/src/filters/pixelate_filter.class.js +0 -137
- package/src/filters/removecolor_filter.class.js +0 -173
- package/src/filters/resize_filter.class.js +0 -490
- package/src/filters/saturate_filter.class.js +0 -119
- package/src/filters/vibrance_filter.class.js +0 -122
- package/src/filters/webgl_backend.class.js +0 -396
- package/src/globalFabric.js +0 -4
- package/src/gradient.class.js +0 -490
- package/src/intersection.class.js +0 -172
- package/src/log.js +0 -11
- package/src/mixins/animation.mixin.js +0 -231
- package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
- package/src/mixins/canvas_events.mixin.js +0 -974
- package/src/mixins/canvas_gestures.mixin.js +0 -149
- package/src/mixins/canvas_grouping.mixin.js +0 -177
- package/src/mixins/canvas_serialization.mixin.js +0 -228
- package/src/mixins/collection.mixin.js +0 -170
- package/src/mixins/default_controls.js +0 -114
- package/src/mixins/itext.svg_export.js +0 -241
- package/src/mixins/itext_behavior.mixin.js +0 -940
- package/src/mixins/itext_click_behavior.mixin.js +0 -278
- package/src/mixins/itext_key_behavior.mixin.js +0 -694
- package/src/mixins/object.svg_export.js +0 -258
- package/src/mixins/object_geometry.mixin.js +0 -683
- package/src/mixins/object_interactivity.mixin.js +0 -314
- package/src/mixins/object_origin.mixin.js +0 -255
- package/src/mixins/object_stacking.mixin.js +0 -80
- package/src/mixins/object_straightening.mixin.js +0 -80
- package/src/mixins/observable.mixin.js +0 -141
- package/src/mixins/shared_methods.mixin.js +0 -94
- package/src/mixins/stateful.mixin.js +0 -107
- package/src/mixins/text_style.mixin.js +0 -324
- package/src/parser.js +0 -1090
- package/src/pattern.class.js +0 -189
- package/src/point.class.js +0 -337
- package/src/shadow.class.js +0 -195
- package/src/shapes/active_selection.class.js +0 -155
- package/src/shapes/circle.class.js +0 -210
- package/src/shapes/ellipse.class.js +0 -181
- package/src/shapes/group.class.js +0 -593
- package/src/shapes/image.class.js +0 -764
- package/src/shapes/itext.class.js +0 -526
- package/src/shapes/line.class.js +0 -324
- package/src/shapes/object.class.js +0 -2008
- package/src/shapes/path.class.js +0 -384
- package/src/shapes/polygon.class.js +0 -81
- package/src/shapes/polyline.class.js +0 -268
- package/src/shapes/rect.class.js +0 -187
- package/src/shapes/text.class.js +0 -1696
- package/src/shapes/textbox.class.js +0 -461
- package/src/shapes/triangle.class.js +0 -93
- package/src/static_canvas.class.js +0 -1881
- package/src/util/anim_ease.js +0 -398
- package/src/util/animate.js +0 -254
- package/src/util/animate_color.js +0 -74
- package/src/util/dom_event.js +0 -50
- package/src/util/dom_misc.js +0 -300
- package/src/util/dom_request.js +0 -54
- package/src/util/dom_style.js +0 -70
- package/src/util/lang_array.js +0 -94
- package/src/util/lang_class.js +0 -115
- package/src/util/lang_object.js +0 -75
- package/src/util/lang_string.js +0 -110
- package/src/util/misc.js +0 -1330
- package/src/util/named_accessors.mixin.js +0 -428
- package/src/util/path.js +0 -829
|
@@ -1,314 +0,0 @@
|
|
|
1
|
-
(function() {
|
|
2
|
-
|
|
3
|
-
var degreesToRadians = fabric.util.degreesToRadians;
|
|
4
|
-
|
|
5
|
-
fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {
|
|
6
|
-
/**
|
|
7
|
-
* Determines which corner has been clicked
|
|
8
|
-
* @private
|
|
9
|
-
* @param {Object} pointer The pointer indicating the mouse position
|
|
10
|
-
* @return {String|Boolean} corner code (tl, tr, bl, br, etc.), or false if nothing is found
|
|
11
|
-
*/
|
|
12
|
-
_findTargetCorner: function(pointer, forTouch) {
|
|
13
|
-
// objects in group, anykind, are not self modificable,
|
|
14
|
-
// must not return an hovered corner.
|
|
15
|
-
if (!this.hasControls || this.group || (!this.canvas || this.canvas._activeObject !== this)) {
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
var ex = pointer.x,
|
|
20
|
-
ey = pointer.y,
|
|
21
|
-
xPoints,
|
|
22
|
-
lines, keys = Object.keys(this.oCoords),
|
|
23
|
-
j = keys.length - 1, i;
|
|
24
|
-
this.__corner = 0;
|
|
25
|
-
|
|
26
|
-
// cycle in reverse order so we pick first the one on top
|
|
27
|
-
for (; j >= 0; j--) {
|
|
28
|
-
i = keys[j];
|
|
29
|
-
if (!this.isControlVisible(i)) {
|
|
30
|
-
continue;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
lines = this._getImageLines(forTouch ? this.oCoords[i].touchCorner : this.oCoords[i].corner);
|
|
34
|
-
// // debugging
|
|
35
|
-
//
|
|
36
|
-
// this.canvas.contextTop.fillRect(lines.bottomline.d.x, lines.bottomline.d.y, 2, 2);
|
|
37
|
-
// this.canvas.contextTop.fillRect(lines.bottomline.o.x, lines.bottomline.o.y, 2, 2);
|
|
38
|
-
//
|
|
39
|
-
// this.canvas.contextTop.fillRect(lines.leftline.d.x, lines.leftline.d.y, 2, 2);
|
|
40
|
-
// this.canvas.contextTop.fillRect(lines.leftline.o.x, lines.leftline.o.y, 2, 2);
|
|
41
|
-
//
|
|
42
|
-
// this.canvas.contextTop.fillRect(lines.topline.d.x, lines.topline.d.y, 2, 2);
|
|
43
|
-
// this.canvas.contextTop.fillRect(lines.topline.o.x, lines.topline.o.y, 2, 2);
|
|
44
|
-
//
|
|
45
|
-
// this.canvas.contextTop.fillRect(lines.rightline.d.x, lines.rightline.d.y, 2, 2);
|
|
46
|
-
// this.canvas.contextTop.fillRect(lines.rightline.o.x, lines.rightline.o.y, 2, 2);
|
|
47
|
-
|
|
48
|
-
xPoints = this._findCrossPoints({ x: ex, y: ey }, lines);
|
|
49
|
-
if (xPoints !== 0 && xPoints % 2 === 1) {
|
|
50
|
-
this.__corner = i;
|
|
51
|
-
return i;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return false;
|
|
55
|
-
},
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Calls a function for each control. The function gets called,
|
|
59
|
-
* with the control, the object that is calling the iterator and the control's key
|
|
60
|
-
* @param {Function} fn function to iterate over the controls over
|
|
61
|
-
*/
|
|
62
|
-
forEachControl: function(fn) {
|
|
63
|
-
for (var i in this.controls) {
|
|
64
|
-
fn(this.controls[i], i, this);
|
|
65
|
-
};
|
|
66
|
-
},
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Sets the coordinates of the draggable boxes in the corners of
|
|
70
|
-
* the image used to scale/rotate it.
|
|
71
|
-
* note: if we would switch to ROUND corner area, all of this would disappear.
|
|
72
|
-
* everything would resolve to a single point and a pythagorean theorem for the distance
|
|
73
|
-
* @private
|
|
74
|
-
*/
|
|
75
|
-
_setCornerCoords: function() {
|
|
76
|
-
var coords = this.oCoords;
|
|
77
|
-
|
|
78
|
-
for (var control in coords) {
|
|
79
|
-
var controlObject = this.controls[control];
|
|
80
|
-
coords[control].corner = controlObject.calcCornerCoords(
|
|
81
|
-
this.angle, this.cornerSize, coords[control].x, coords[control].y, false);
|
|
82
|
-
coords[control].touchCorner = controlObject.calcCornerCoords(
|
|
83
|
-
this.angle, this.touchCornerSize, coords[control].x, coords[control].y, true);
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Draws a colored layer behind the object, inside its selection borders.
|
|
89
|
-
* Requires public options: padding, selectionBackgroundColor
|
|
90
|
-
* this function is called when the context is transformed
|
|
91
|
-
* has checks to be skipped when the object is on a staticCanvas
|
|
92
|
-
* @param {CanvasRenderingContext2D} ctx Context to draw on
|
|
93
|
-
* @return {fabric.Object} thisArg
|
|
94
|
-
* @chainable
|
|
95
|
-
*/
|
|
96
|
-
drawSelectionBackground: function(ctx) {
|
|
97
|
-
if (!this.selectionBackgroundColor ||
|
|
98
|
-
(this.canvas && !this.canvas.interactive) ||
|
|
99
|
-
(this.canvas && this.canvas._activeObject !== this)
|
|
100
|
-
) {
|
|
101
|
-
return this;
|
|
102
|
-
}
|
|
103
|
-
ctx.save();
|
|
104
|
-
var center = this.getCenterPoint(), wh = this._calculateCurrentDimensions(),
|
|
105
|
-
vpt = this.canvas.viewportTransform;
|
|
106
|
-
ctx.translate(center.x, center.y);
|
|
107
|
-
ctx.scale(1 / vpt[0], 1 / vpt[3]);
|
|
108
|
-
ctx.rotate(degreesToRadians(this.angle));
|
|
109
|
-
ctx.fillStyle = this.selectionBackgroundColor;
|
|
110
|
-
ctx.fillRect(-wh.x / 2, -wh.y / 2, wh.x, wh.y);
|
|
111
|
-
ctx.restore();
|
|
112
|
-
return this;
|
|
113
|
-
},
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Draws borders of an object's bounding box.
|
|
117
|
-
* Requires public properties: width, height
|
|
118
|
-
* Requires public options: padding, borderColor
|
|
119
|
-
* @param {CanvasRenderingContext2D} ctx Context to draw on
|
|
120
|
-
* @param {Object} styleOverride object to override the object style
|
|
121
|
-
* @return {fabric.Object} thisArg
|
|
122
|
-
* @chainable
|
|
123
|
-
*/
|
|
124
|
-
drawBorders: function(ctx, styleOverride) {
|
|
125
|
-
styleOverride = styleOverride || {};
|
|
126
|
-
var wh = this._calculateCurrentDimensions(),
|
|
127
|
-
strokeWidth = this.borderScaleFactor,
|
|
128
|
-
width = wh.x + strokeWidth,
|
|
129
|
-
height = wh.y + strokeWidth,
|
|
130
|
-
hasControls = typeof styleOverride.hasControls !== 'undefined' ?
|
|
131
|
-
styleOverride.hasControls : this.hasControls,
|
|
132
|
-
shouldStroke = false;
|
|
133
|
-
|
|
134
|
-
ctx.save();
|
|
135
|
-
ctx.strokeStyle = styleOverride.borderColor || this.borderColor;
|
|
136
|
-
this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray);
|
|
137
|
-
|
|
138
|
-
ctx.strokeRect(
|
|
139
|
-
-width / 2,
|
|
140
|
-
-height / 2,
|
|
141
|
-
width,
|
|
142
|
-
height
|
|
143
|
-
);
|
|
144
|
-
|
|
145
|
-
if (hasControls) {
|
|
146
|
-
ctx.beginPath();
|
|
147
|
-
this.forEachControl(function(control, key, fabricObject) {
|
|
148
|
-
// in this moment, the ctx is centered on the object.
|
|
149
|
-
// width and height of the above function are the size of the bbox.
|
|
150
|
-
if (control.withConnection && control.getVisibility(fabricObject, key)) {
|
|
151
|
-
// reset movement for each control
|
|
152
|
-
shouldStroke = true;
|
|
153
|
-
ctx.moveTo(control.x * width, control.y * height);
|
|
154
|
-
ctx.lineTo(
|
|
155
|
-
control.x * width + control.offsetX,
|
|
156
|
-
control.y * height + control.offsetY
|
|
157
|
-
);
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
if (shouldStroke) {
|
|
161
|
-
ctx.stroke();
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
ctx.restore();
|
|
165
|
-
return this;
|
|
166
|
-
},
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Draws borders of an object's bounding box when it is inside a group.
|
|
170
|
-
* Requires public properties: width, height
|
|
171
|
-
* Requires public options: padding, borderColor
|
|
172
|
-
* @param {CanvasRenderingContext2D} ctx Context to draw on
|
|
173
|
-
* @param {object} options object representing current object parameters
|
|
174
|
-
* @param {Object} styleOverride object to override the object style
|
|
175
|
-
* @return {fabric.Object} thisArg
|
|
176
|
-
* @chainable
|
|
177
|
-
*/
|
|
178
|
-
drawBordersInGroup: function(ctx, options, styleOverride) {
|
|
179
|
-
styleOverride = styleOverride || {};
|
|
180
|
-
var bbox = fabric.util.sizeAfterTransform(this.width, this.height, options),
|
|
181
|
-
strokeWidth = this.strokeWidth,
|
|
182
|
-
strokeUniform = this.strokeUniform,
|
|
183
|
-
borderScaleFactor = this.borderScaleFactor,
|
|
184
|
-
width =
|
|
185
|
-
bbox.x + strokeWidth * (strokeUniform ? this.canvas.getZoom() : options.scaleX) + borderScaleFactor,
|
|
186
|
-
height =
|
|
187
|
-
bbox.y + strokeWidth * (strokeUniform ? this.canvas.getZoom() : options.scaleY) + borderScaleFactor;
|
|
188
|
-
ctx.save();
|
|
189
|
-
this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray);
|
|
190
|
-
ctx.strokeStyle = styleOverride.borderColor || this.borderColor;
|
|
191
|
-
ctx.strokeRect(
|
|
192
|
-
-width / 2,
|
|
193
|
-
-height / 2,
|
|
194
|
-
width,
|
|
195
|
-
height
|
|
196
|
-
);
|
|
197
|
-
|
|
198
|
-
ctx.restore();
|
|
199
|
-
return this;
|
|
200
|
-
},
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* Draws corners of an object's bounding box.
|
|
204
|
-
* Requires public properties: width, height
|
|
205
|
-
* Requires public options: cornerSize, padding
|
|
206
|
-
* @param {CanvasRenderingContext2D} ctx Context to draw on
|
|
207
|
-
* @param {Object} styleOverride object to override the object style
|
|
208
|
-
* @return {fabric.Object} thisArg
|
|
209
|
-
* @chainable
|
|
210
|
-
*/
|
|
211
|
-
drawControls: function(ctx, styleOverride) {
|
|
212
|
-
styleOverride = styleOverride || {};
|
|
213
|
-
ctx.save();
|
|
214
|
-
var retinaScaling = this.canvas.getRetinaScaling(), matrix, p;
|
|
215
|
-
ctx.setTransform(retinaScaling, 0, 0, retinaScaling, 0, 0);
|
|
216
|
-
ctx.strokeStyle = ctx.fillStyle = styleOverride.cornerColor || this.cornerColor;
|
|
217
|
-
if (!this.transparentCorners) {
|
|
218
|
-
ctx.strokeStyle = styleOverride.cornerStrokeColor || this.cornerStrokeColor;
|
|
219
|
-
}
|
|
220
|
-
this._setLineDash(ctx, styleOverride.cornerDashArray || this.cornerDashArray);
|
|
221
|
-
this.setCoords();
|
|
222
|
-
if (this.group) {
|
|
223
|
-
// fabricJS does not really support drawing controls inside groups,
|
|
224
|
-
// this piece of code here helps having at least the control in places.
|
|
225
|
-
// If an application needs to show some objects as selected because of some UI state
|
|
226
|
-
// can still call Object._renderControls() on any object they desire, independently of groups.
|
|
227
|
-
// using no padding, circular controls and hiding the rotating cursor is higly suggested,
|
|
228
|
-
matrix = this.group.calcTransformMatrix();
|
|
229
|
-
}
|
|
230
|
-
this.forEachControl(function(control, key, fabricObject) {
|
|
231
|
-
p = fabricObject.oCoords[key];
|
|
232
|
-
if (control.getVisibility(fabricObject, key)) {
|
|
233
|
-
if (matrix) {
|
|
234
|
-
p = fabric.util.transformPoint(p, matrix);
|
|
235
|
-
}
|
|
236
|
-
control.render(ctx, p.x, p.y, styleOverride, fabricObject);
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
ctx.restore();
|
|
240
|
-
|
|
241
|
-
return this;
|
|
242
|
-
},
|
|
243
|
-
|
|
244
|
-
/**
|
|
245
|
-
* Returns true if the specified control is visible, false otherwise.
|
|
246
|
-
* @param {String} controlKey The key of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'.
|
|
247
|
-
* @returns {Boolean} true if the specified control is visible, false otherwise
|
|
248
|
-
*/
|
|
249
|
-
isControlVisible: function(controlKey) {
|
|
250
|
-
return this.controls[controlKey] && this.controls[controlKey].getVisibility(this, controlKey);
|
|
251
|
-
},
|
|
252
|
-
|
|
253
|
-
/**
|
|
254
|
-
* Sets the visibility of the specified control.
|
|
255
|
-
* @param {String} controlKey The key of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'.
|
|
256
|
-
* @param {Boolean} visible true to set the specified control visible, false otherwise
|
|
257
|
-
* @return {fabric.Object} thisArg
|
|
258
|
-
* @chainable
|
|
259
|
-
*/
|
|
260
|
-
setControlVisible: function(controlKey, visible) {
|
|
261
|
-
if (!this._controlsVisibility) {
|
|
262
|
-
this._controlsVisibility = {};
|
|
263
|
-
}
|
|
264
|
-
this._controlsVisibility[controlKey] = visible;
|
|
265
|
-
return this;
|
|
266
|
-
},
|
|
267
|
-
|
|
268
|
-
/**
|
|
269
|
-
* Sets the visibility state of object controls.
|
|
270
|
-
* @param {Object} [options] Options object
|
|
271
|
-
* @param {Boolean} [options.bl] true to enable the bottom-left control, false to disable it
|
|
272
|
-
* @param {Boolean} [options.br] true to enable the bottom-right control, false to disable it
|
|
273
|
-
* @param {Boolean} [options.mb] true to enable the middle-bottom control, false to disable it
|
|
274
|
-
* @param {Boolean} [options.ml] true to enable the middle-left control, false to disable it
|
|
275
|
-
* @param {Boolean} [options.mr] true to enable the middle-right control, false to disable it
|
|
276
|
-
* @param {Boolean} [options.mt] true to enable the middle-top control, false to disable it
|
|
277
|
-
* @param {Boolean} [options.tl] true to enable the top-left control, false to disable it
|
|
278
|
-
* @param {Boolean} [options.tr] true to enable the top-right control, false to disable it
|
|
279
|
-
* @param {Boolean} [options.mtr] true to enable the middle-top-rotate control, false to disable it
|
|
280
|
-
* @return {fabric.Object} thisArg
|
|
281
|
-
* @chainable
|
|
282
|
-
*/
|
|
283
|
-
setControlsVisibility: function(options) {
|
|
284
|
-
options || (options = { });
|
|
285
|
-
|
|
286
|
-
for (var p in options) {
|
|
287
|
-
this.setControlVisible(p, options[p]);
|
|
288
|
-
}
|
|
289
|
-
return this;
|
|
290
|
-
},
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
/**
|
|
294
|
-
* This callback function is called every time _discardActiveObject or _setActiveObject
|
|
295
|
-
* try to to deselect this object. If the function returns true, the process is cancelled
|
|
296
|
-
* @param {Object} [options] options sent from the upper functions
|
|
297
|
-
* @param {Event} [options.e] event if the process is generated by an event
|
|
298
|
-
*/
|
|
299
|
-
onDeselect: function() {
|
|
300
|
-
// implemented by sub-classes, as needed.
|
|
301
|
-
},
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
/**
|
|
305
|
-
* This callback function is called every time _discardActiveObject or _setActiveObject
|
|
306
|
-
* try to to select this object. If the function returns true, the process is cancelled
|
|
307
|
-
* @param {Object} [options] options sent from the upper functions
|
|
308
|
-
* @param {Event} [options.e] event if the process is generated by an event
|
|
309
|
-
*/
|
|
310
|
-
onSelect: function() {
|
|
311
|
-
// implemented by sub-classes, as needed.
|
|
312
|
-
}
|
|
313
|
-
});
|
|
314
|
-
})();
|
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
(function() {
|
|
2
|
-
|
|
3
|
-
var degreesToRadians = fabric.util.degreesToRadians,
|
|
4
|
-
originXOffset = {
|
|
5
|
-
left: -0.5,
|
|
6
|
-
center: 0,
|
|
7
|
-
right: 0.5
|
|
8
|
-
},
|
|
9
|
-
originYOffset = {
|
|
10
|
-
top: -0.5,
|
|
11
|
-
center: 0,
|
|
12
|
-
bottom: 0.5
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Translates the coordinates from a set of origin to another (based on the object's dimensions)
|
|
19
|
-
* @param {fabric.Point} point The point which corresponds to the originX and originY params
|
|
20
|
-
* @param {String} fromOriginX Horizontal origin: 'left', 'center' or 'right'
|
|
21
|
-
* @param {String} fromOriginY Vertical origin: 'top', 'center' or 'bottom'
|
|
22
|
-
* @param {String} toOriginX Horizontal origin: 'left', 'center' or 'right'
|
|
23
|
-
* @param {String} toOriginY Vertical origin: 'top', 'center' or 'bottom'
|
|
24
|
-
* @return {fabric.Point}
|
|
25
|
-
*/
|
|
26
|
-
translateToGivenOrigin: function(point, fromOriginX, fromOriginY, toOriginX, toOriginY) {
|
|
27
|
-
var x = point.x,
|
|
28
|
-
y = point.y,
|
|
29
|
-
offsetX, offsetY, dim;
|
|
30
|
-
|
|
31
|
-
if (typeof fromOriginX === 'string') {
|
|
32
|
-
fromOriginX = originXOffset[fromOriginX];
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
fromOriginX -= 0.5;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (typeof toOriginX === 'string') {
|
|
39
|
-
toOriginX = originXOffset[toOriginX];
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
toOriginX -= 0.5;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
offsetX = toOriginX - fromOriginX;
|
|
46
|
-
|
|
47
|
-
if (typeof fromOriginY === 'string') {
|
|
48
|
-
fromOriginY = originYOffset[fromOriginY];
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
fromOriginY -= 0.5;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if (typeof toOriginY === 'string') {
|
|
55
|
-
toOriginY = originYOffset[toOriginY];
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
toOriginY -= 0.5;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
offsetY = toOriginY - fromOriginY;
|
|
62
|
-
|
|
63
|
-
if (offsetX || offsetY) {
|
|
64
|
-
dim = this._getTransformedDimensions();
|
|
65
|
-
x = point.x + offsetX * dim.x;
|
|
66
|
-
y = point.y + offsetY * dim.y;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return new fabric.Point(x, y);
|
|
70
|
-
},
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Translates the coordinates from origin to center coordinates (based on the object's dimensions)
|
|
74
|
-
* @param {fabric.Point} point The point which corresponds to the originX and originY params
|
|
75
|
-
* @param {String} originX Horizontal origin: 'left', 'center' or 'right'
|
|
76
|
-
* @param {String} originY Vertical origin: 'top', 'center' or 'bottom'
|
|
77
|
-
* @return {fabric.Point}
|
|
78
|
-
*/
|
|
79
|
-
translateToCenterPoint: function(point, originX, originY) {
|
|
80
|
-
var p = this.translateToGivenOrigin(point, originX, originY, 'center', 'center');
|
|
81
|
-
if (this.angle) {
|
|
82
|
-
return fabric.util.rotatePoint(p, point, degreesToRadians(this.angle));
|
|
83
|
-
}
|
|
84
|
-
return p;
|
|
85
|
-
},
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Translates the coordinates from center to origin coordinates (based on the object's dimensions)
|
|
89
|
-
* @param {fabric.Point} center The point which corresponds to center of the object
|
|
90
|
-
* @param {String} originX Horizontal origin: 'left', 'center' or 'right'
|
|
91
|
-
* @param {String} originY Vertical origin: 'top', 'center' or 'bottom'
|
|
92
|
-
* @return {fabric.Point}
|
|
93
|
-
*/
|
|
94
|
-
translateToOriginPoint: function(center, originX, originY) {
|
|
95
|
-
var p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY);
|
|
96
|
-
if (this.angle) {
|
|
97
|
-
return fabric.util.rotatePoint(p, center, degreesToRadians(this.angle));
|
|
98
|
-
}
|
|
99
|
-
return p;
|
|
100
|
-
},
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Returns the real center coordinates of the object
|
|
104
|
-
* @return {fabric.Point}
|
|
105
|
-
*/
|
|
106
|
-
getCenterPoint: function() {
|
|
107
|
-
var leftTop = new fabric.Point(this.left, this.top);
|
|
108
|
-
return this.translateToCenterPoint(leftTop, this.originX, this.originY);
|
|
109
|
-
},
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Returns the coordinates of the object based on center coordinates
|
|
113
|
-
* @param {fabric.Point} point The point which corresponds to the originX and originY params
|
|
114
|
-
* @return {fabric.Point}
|
|
115
|
-
*/
|
|
116
|
-
// getOriginPoint: function(center) {
|
|
117
|
-
// return this.translateToOriginPoint(center, this.originX, this.originY);
|
|
118
|
-
// },
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Returns the coordinates of the object as if it has a different origin
|
|
122
|
-
* @param {String} originX Horizontal origin: 'left', 'center' or 'right'
|
|
123
|
-
* @param {String} originY Vertical origin: 'top', 'center' or 'bottom'
|
|
124
|
-
* @return {fabric.Point}
|
|
125
|
-
*/
|
|
126
|
-
getPointByOrigin: function(originX, originY) {
|
|
127
|
-
var center = this.getCenterPoint();
|
|
128
|
-
return this.translateToOriginPoint(center, originX, originY);
|
|
129
|
-
},
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Returns the point in local coordinates
|
|
133
|
-
* @param {fabric.Point} point The point relative to the global coordinate system
|
|
134
|
-
* @param {String} originX Horizontal origin: 'left', 'center' or 'right'
|
|
135
|
-
* @param {String} originY Vertical origin: 'top', 'center' or 'bottom'
|
|
136
|
-
* @return {fabric.Point}
|
|
137
|
-
*/
|
|
138
|
-
toLocalPoint: function(point, originX, originY) {
|
|
139
|
-
var center = this.getCenterPoint(),
|
|
140
|
-
p, p2;
|
|
141
|
-
|
|
142
|
-
if (typeof originX !== 'undefined' && typeof originY !== 'undefined' ) {
|
|
143
|
-
p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
p = new fabric.Point(this.left, this.top);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
p2 = new fabric.Point(point.x, point.y);
|
|
150
|
-
if (this.angle) {
|
|
151
|
-
p2 = fabric.util.rotatePoint(p2, center, -degreesToRadians(this.angle));
|
|
152
|
-
}
|
|
153
|
-
return p2.subtractEquals(p);
|
|
154
|
-
},
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Returns the point in global coordinates
|
|
158
|
-
* @param {fabric.Point} The point relative to the local coordinate system
|
|
159
|
-
* @return {fabric.Point}
|
|
160
|
-
*/
|
|
161
|
-
// toGlobalPoint: function(point) {
|
|
162
|
-
// return fabric.util.rotatePoint(point, this.getCenterPoint(), degreesToRadians(this.angle)).addEquals(new fabric.Point(this.left, this.top));
|
|
163
|
-
// },
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Sets the position of the object taking into consideration the object's origin
|
|
167
|
-
* @param {fabric.Point} pos The new position of the object
|
|
168
|
-
* @param {String} originX Horizontal origin: 'left', 'center' or 'right'
|
|
169
|
-
* @param {String} originY Vertical origin: 'top', 'center' or 'bottom'
|
|
170
|
-
* @return {void}
|
|
171
|
-
*/
|
|
172
|
-
setPositionByOrigin: function(pos, originX, originY) {
|
|
173
|
-
var center = this.translateToCenterPoint(pos, originX, originY),
|
|
174
|
-
position = this.translateToOriginPoint(center, this.originX, this.originY);
|
|
175
|
-
this.set('left', position.x);
|
|
176
|
-
this.set('top', position.y);
|
|
177
|
-
},
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* @param {String} to One of 'left', 'center', 'right'
|
|
181
|
-
*/
|
|
182
|
-
adjustPosition: function(to) {
|
|
183
|
-
var angle = degreesToRadians(this.angle),
|
|
184
|
-
hypotFull = this.getScaledWidth(),
|
|
185
|
-
xFull = fabric.util.cos(angle) * hypotFull,
|
|
186
|
-
yFull = fabric.util.sin(angle) * hypotFull,
|
|
187
|
-
offsetFrom, offsetTo;
|
|
188
|
-
|
|
189
|
-
//TODO: this function does not consider mixed situation like top, center.
|
|
190
|
-
if (typeof this.originX === 'string') {
|
|
191
|
-
offsetFrom = originXOffset[this.originX];
|
|
192
|
-
}
|
|
193
|
-
else {
|
|
194
|
-
offsetFrom = this.originX - 0.5;
|
|
195
|
-
}
|
|
196
|
-
if (typeof to === 'string') {
|
|
197
|
-
offsetTo = originXOffset[to];
|
|
198
|
-
}
|
|
199
|
-
else {
|
|
200
|
-
offsetTo = to - 0.5;
|
|
201
|
-
}
|
|
202
|
-
this.left += xFull * (offsetTo - offsetFrom);
|
|
203
|
-
this.top += yFull * (offsetTo - offsetFrom);
|
|
204
|
-
this.setCoords();
|
|
205
|
-
this.originX = to;
|
|
206
|
-
},
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Sets the origin/position of the object to it's center point
|
|
210
|
-
* @private
|
|
211
|
-
* @return {void}
|
|
212
|
-
*/
|
|
213
|
-
_setOriginToCenter: function() {
|
|
214
|
-
this._originalOriginX = this.originX;
|
|
215
|
-
this._originalOriginY = this.originY;
|
|
216
|
-
|
|
217
|
-
var center = this.getCenterPoint();
|
|
218
|
-
|
|
219
|
-
this.originX = 'center';
|
|
220
|
-
this.originY = 'center';
|
|
221
|
-
|
|
222
|
-
this.left = center.x;
|
|
223
|
-
this.top = center.y;
|
|
224
|
-
},
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* Resets the origin/position of the object to it's original origin
|
|
228
|
-
* @private
|
|
229
|
-
* @return {void}
|
|
230
|
-
*/
|
|
231
|
-
_resetOrigin: function() {
|
|
232
|
-
var originPoint = this.translateToOriginPoint(
|
|
233
|
-
this.getCenterPoint(),
|
|
234
|
-
this._originalOriginX,
|
|
235
|
-
this._originalOriginY);
|
|
236
|
-
|
|
237
|
-
this.originX = this._originalOriginX;
|
|
238
|
-
this.originY = this._originalOriginY;
|
|
239
|
-
|
|
240
|
-
this.left = originPoint.x;
|
|
241
|
-
this.top = originPoint.y;
|
|
242
|
-
|
|
243
|
-
this._originalOriginX = null;
|
|
244
|
-
this._originalOriginY = null;
|
|
245
|
-
},
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* @private
|
|
249
|
-
*/
|
|
250
|
-
_getLeftTopCoords: function() {
|
|
251
|
-
return this.translateToOriginPoint(this.getCenterPoint(), 'left', 'top');
|
|
252
|
-
},
|
|
253
|
-
});
|
|
254
|
-
|
|
255
|
-
})();
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Moves an object to the bottom of the stack of drawn objects
|
|
5
|
-
* @return {fabric.Object} thisArg
|
|
6
|
-
* @chainable
|
|
7
|
-
*/
|
|
8
|
-
sendToBack: function() {
|
|
9
|
-
if (this.group) {
|
|
10
|
-
fabric.StaticCanvas.prototype.sendToBack.call(this.group, this);
|
|
11
|
-
}
|
|
12
|
-
else if (this.canvas) {
|
|
13
|
-
this.canvas.sendToBack(this);
|
|
14
|
-
}
|
|
15
|
-
return this;
|
|
16
|
-
},
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Moves an object to the top of the stack of drawn objects
|
|
20
|
-
* @return {fabric.Object} thisArg
|
|
21
|
-
* @chainable
|
|
22
|
-
*/
|
|
23
|
-
bringToFront: function() {
|
|
24
|
-
if (this.group) {
|
|
25
|
-
fabric.StaticCanvas.prototype.bringToFront.call(this.group, this);
|
|
26
|
-
}
|
|
27
|
-
else if (this.canvas) {
|
|
28
|
-
this.canvas.bringToFront(this);
|
|
29
|
-
}
|
|
30
|
-
return this;
|
|
31
|
-
},
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Moves an object down in stack of drawn objects
|
|
35
|
-
* @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object
|
|
36
|
-
* @return {fabric.Object} thisArg
|
|
37
|
-
* @chainable
|
|
38
|
-
*/
|
|
39
|
-
sendBackwards: function(intersecting) {
|
|
40
|
-
if (this.group) {
|
|
41
|
-
fabric.StaticCanvas.prototype.sendBackwards.call(this.group, this, intersecting);
|
|
42
|
-
}
|
|
43
|
-
else if (this.canvas) {
|
|
44
|
-
this.canvas.sendBackwards(this, intersecting);
|
|
45
|
-
}
|
|
46
|
-
return this;
|
|
47
|
-
},
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Moves an object up in stack of drawn objects
|
|
51
|
-
* @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object
|
|
52
|
-
* @return {fabric.Object} thisArg
|
|
53
|
-
* @chainable
|
|
54
|
-
*/
|
|
55
|
-
bringForward: function(intersecting) {
|
|
56
|
-
if (this.group) {
|
|
57
|
-
fabric.StaticCanvas.prototype.bringForward.call(this.group, this, intersecting);
|
|
58
|
-
}
|
|
59
|
-
else if (this.canvas) {
|
|
60
|
-
this.canvas.bringForward(this, intersecting);
|
|
61
|
-
}
|
|
62
|
-
return this;
|
|
63
|
-
},
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Moves an object to specified level in stack of drawn objects
|
|
67
|
-
* @param {Number} index New position of object
|
|
68
|
-
* @return {fabric.Object} thisArg
|
|
69
|
-
* @chainable
|
|
70
|
-
*/
|
|
71
|
-
moveTo: function(index) {
|
|
72
|
-
if (this.group && this.group.type !== 'activeSelection') {
|
|
73
|
-
fabric.StaticCanvas.prototype.moveTo.call(this.group, this, index);
|
|
74
|
-
}
|
|
75
|
-
else if (this.canvas) {
|
|
76
|
-
this.canvas.moveTo(this, index);
|
|
77
|
-
}
|
|
78
|
-
return this;
|
|
79
|
-
}
|
|
80
|
-
});
|