ding-image-editor 3.15.3
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/README.md +193 -0
- package/dist/svg/icon-a.svg +376 -0
- package/dist/svg/icon-b.svg +369 -0
- package/dist/svg/icon-c.svg +369 -0
- package/dist/svg/icon-d.svg +369 -0
- package/dist/tui-image-editor.css +6 -0
- package/dist/tui-image-editor.js +62329 -0
- package/dist/tui-image-editor.min.css +5 -0
- package/dist/tui-image-editor.min.js +15 -0
- package/index.d.ts +334 -0
- package/package.json +52 -0
- package/src/css/buttons.styl +102 -0
- package/src/css/checkbox.styl +86 -0
- package/src/css/colorpicker.styl +98 -0
- package/src/css/gridtable.styl +45 -0
- package/src/css/icon.styl +44 -0
- package/src/css/index.styl +17 -0
- package/src/css/main.styl +163 -0
- package/src/css/position.styl +309 -0
- package/src/css/range.styl +91 -0
- package/src/css/submenu.styl +168 -0
- package/src/index.js +29 -0
- package/src/js/action.js +686 -0
- package/src/js/command/addIcon.js +42 -0
- package/src/js/command/addImageObject.js +34 -0
- package/src/js/command/addObject.js +43 -0
- package/src/js/command/addShape.js +51 -0
- package/src/js/command/addText.js +73 -0
- package/src/js/command/applyFilter.js +95 -0
- package/src/js/command/changeIconColor.js +48 -0
- package/src/js/command/changeSelection.js +31 -0
- package/src/js/command/changeShape.js +84 -0
- package/src/js/command/changeText.js +44 -0
- package/src/js/command/changeTextStyle.js +80 -0
- package/src/js/command/clearObjects.js +33 -0
- package/src/js/command/flip.js +36 -0
- package/src/js/command/loadImage.js +58 -0
- package/src/js/command/removeFilter.js +38 -0
- package/src/js/command/removeObject.js +37 -0
- package/src/js/command/resize.js +41 -0
- package/src/js/command/resizeCanvasDimension.js +40 -0
- package/src/js/command/rotate.js +64 -0
- package/src/js/command/setObjectPosition.js +50 -0
- package/src/js/command/setObjectProperties.js +55 -0
- package/src/js/component/cropper.js +407 -0
- package/src/js/component/filter.js +229 -0
- package/src/js/component/flip.js +146 -0
- package/src/js/component/freeDrawing.js +144 -0
- package/src/js/component/icon.js +246 -0
- package/src/js/component/imageLoader.js +84 -0
- package/src/js/component/line.js +205 -0
- package/src/js/component/resize.js +103 -0
- package/src/js/component/rotation.js +91 -0
- package/src/js/component/shape.js +601 -0
- package/src/js/component/text.js +572 -0
- package/src/js/component/zoom.js +708 -0
- package/src/js/consts.js +404 -0
- package/src/js/drawingMode/cropper.js +35 -0
- package/src/js/drawingMode/freeDrawing.js +36 -0
- package/src/js/drawingMode/icon.js +35 -0
- package/src/js/drawingMode/lineDrawing.js +36 -0
- package/src/js/drawingMode/resize.js +35 -0
- package/src/js/drawingMode/shape.js +35 -0
- package/src/js/drawingMode/text.js +35 -0
- package/src/js/drawingMode/zoom.js +37 -0
- package/src/js/extension/arrowLine.js +172 -0
- package/src/js/extension/blur.js +29 -0
- package/src/js/extension/colorFilter.js +104 -0
- package/src/js/extension/cropzone.js +568 -0
- package/src/js/extension/emboss.js +29 -0
- package/src/js/extension/mask.js +90 -0
- package/src/js/extension/sharpen.js +29 -0
- package/src/js/factory/command.js +36 -0
- package/src/js/factory/errorMessage.js +27 -0
- package/src/js/graphics.js +1539 -0
- package/src/js/helper/imagetracer.js +1396 -0
- package/src/js/helper/selectionModifyHelper.js +86 -0
- package/src/js/helper/shapeFilterFillHelper.js +564 -0
- package/src/js/helper/shapeResizeHelper.js +237 -0
- package/src/js/imageEditor.js +1795 -0
- package/src/js/interface/command.js +131 -0
- package/src/js/interface/component.js +127 -0
- package/src/js/interface/drawingMode.js +47 -0
- package/src/js/invoker.js +292 -0
- package/src/js/polyfill.js +498 -0
- package/src/js/ui/crop.js +139 -0
- package/src/js/ui/draw.js +187 -0
- package/src/js/ui/filter.js +510 -0
- package/src/js/ui/flip.js +87 -0
- package/src/js/ui/history.js +171 -0
- package/src/js/ui/icon.js +191 -0
- package/src/js/ui/locale/locale.js +19 -0
- package/src/js/ui/mask.js +96 -0
- package/src/js/ui/panelMenu.js +130 -0
- package/src/js/ui/resize.js +241 -0
- package/src/js/ui/rotate.js +123 -0
- package/src/js/ui/shape.js +265 -0
- package/src/js/ui/submenuBase.js +122 -0
- package/src/js/ui/template/controls.js +21 -0
- package/src/js/ui/template/mainContainer.js +38 -0
- package/src/js/ui/template/style.js +146 -0
- package/src/js/ui/template/submenu/crop.js +73 -0
- package/src/js/ui/template/submenu/draw.js +42 -0
- package/src/js/ui/template/submenu/filter.js +157 -0
- package/src/js/ui/template/submenu/flip.js +41 -0
- package/src/js/ui/template/submenu/history.js +22 -0
- package/src/js/ui/template/submenu/icon.js +108 -0
- package/src/js/ui/template/submenu/mask.js +30 -0
- package/src/js/ui/template/submenu/resize.js +54 -0
- package/src/js/ui/template/submenu/rotate.js +32 -0
- package/src/js/ui/template/submenu/shape.js +45 -0
- package/src/js/ui/template/submenu/text.js +67 -0
- package/src/js/ui/template/submenu/zoom.js +41 -0
- package/src/js/ui/text.js +279 -0
- package/src/js/ui/theme/standard.js +220 -0
- package/src/js/ui/theme/theme.js +249 -0
- package/src/js/ui/tools/colorpicker.js +250 -0
- package/src/js/ui/tools/range.js +390 -0
- package/src/js/ui.js +858 -0
- package/src/js/util.js +551 -0
- package/src/svg/default.svg +335 -0
- package/src/svg/icon-a/ic-apply.svg +6 -0
- package/src/svg/icon-a/ic-cancel.svg +6 -0
- package/src/svg/icon-a/ic-color-transparent-w.svg +12 -0
- package/src/svg/icon-a/ic-crop.svg +7 -0
- package/src/svg/icon-a/ic-delete-all.svg +6 -0
- package/src/svg/icon-a/ic-delete.svg +6 -0
- package/src/svg/icon-a/ic-draw-free.svg +5 -0
- package/src/svg/icon-a/ic-draw-line.svg +5 -0
- package/src/svg/icon-a/ic-draw.svg +6 -0
- package/src/svg/icon-a/ic-filter.svg +7 -0
- package/src/svg/icon-a/ic-flip-reset.svg +7 -0
- package/src/svg/icon-a/ic-flip-x.svg +6 -0
- package/src/svg/icon-a/ic-flip-y.svg +6 -0
- package/src/svg/icon-a/ic-flip.svg +6 -0
- package/src/svg/icon-a/ic-history-check.svg +5 -0
- package/src/svg/icon-a/ic-history-crop.svg +7 -0
- package/src/svg/icon-a/ic-history-delete.svg +9 -0
- package/src/svg/icon-a/ic-history-draw.svg +7 -0
- package/src/svg/icon-a/ic-history-filter.svg +8 -0
- package/src/svg/icon-a/ic-history-flip.svg +6 -0
- package/src/svg/icon-a/ic-history-group.svg +9 -0
- package/src/svg/icon-a/ic-history-icon.svg +6 -0
- package/src/svg/icon-a/ic-history-load.svg +7 -0
- package/src/svg/icon-a/ic-history-mask.svg +9 -0
- package/src/svg/icon-a/ic-history-resize.svg +12 -0
- package/src/svg/icon-a/ic-history-rotate.svg +16 -0
- package/src/svg/icon-a/ic-history-shape.svg +7 -0
- package/src/svg/icon-a/ic-history-text.svg +8 -0
- package/src/svg/icon-a/ic-history.svg +6 -0
- package/src/svg/icon-a/ic-icon-arrow-2.svg +5 -0
- package/src/svg/icon-a/ic-icon-arrow-3.svg +5 -0
- package/src/svg/icon-a/ic-icon-arrow.svg +5 -0
- package/src/svg/icon-a/ic-icon-bubble.svg +5 -0
- package/src/svg/icon-a/ic-icon-heart.svg +5 -0
- package/src/svg/icon-a/ic-icon-load.svg +8 -0
- package/src/svg/icon-a/ic-icon-location.svg +8 -0
- package/src/svg/icon-a/ic-icon-polygon.svg +5 -0
- package/src/svg/icon-a/ic-icon-star-2.svg +5 -0
- package/src/svg/icon-a/ic-icon-star.svg +5 -0
- package/src/svg/icon-a/ic-icon.svg +5 -0
- package/src/svg/icon-a/ic-mask-load.svg +8 -0
- package/src/svg/icon-a/ic-mask.svg +6 -0
- package/src/svg/icon-a/ic-redo.svg +7 -0
- package/src/svg/icon-a/ic-reset.svg +7 -0
- package/src/svg/icon-a/ic-resize.svg +13 -0
- package/src/svg/icon-a/ic-rotate-clockwise.svg +7 -0
- package/src/svg/icon-a/ic-rotate-counterclockwise.svg +7 -0
- package/src/svg/icon-a/ic-rotate.svg +7 -0
- package/src/svg/icon-a/ic-shape-circle.svg +5 -0
- package/src/svg/icon-a/ic-shape-rectangle.svg +5 -0
- package/src/svg/icon-a/ic-shape-triangle.svg +5 -0
- package/src/svg/icon-a/ic-shape.svg +6 -0
- package/src/svg/icon-a/ic-text-align-center.svg +6 -0
- package/src/svg/icon-a/ic-text-align-left.svg +6 -0
- package/src/svg/icon-a/ic-text-align-right.svg +6 -0
- package/src/svg/icon-a/ic-text-bold.svg +7 -0
- package/src/svg/icon-a/ic-text-italic.svg +6 -0
- package/src/svg/icon-a/ic-text-underline.svg +7 -0
- package/src/svg/icon-a/ic-text.svg +7 -0
- package/src/svg/icon-a/ic-undo.svg +7 -0
- package/src/svg/icon-a/ic-zoom-hand.svg +8 -0
- package/src/svg/icon-a/ic-zoom-zoom-in.svg +10 -0
- package/src/svg/icon-a/ic-zoom-zoom-out.svg +9 -0
- package/src/svg/icon-a/img-bi.svg +5 -0
- package/src/svg/icon-b/ic-apply.svg +6 -0
- package/src/svg/icon-b/ic-cancel.svg +6 -0
- package/src/svg/icon-b/ic-crop.svg +7 -0
- package/src/svg/icon-b/ic-delete-all.svg +6 -0
- package/src/svg/icon-b/ic-delete.svg +6 -0
- package/src/svg/icon-b/ic-draw-free.svg +5 -0
- package/src/svg/icon-b/ic-draw-line.svg +5 -0
- package/src/svg/icon-b/ic-draw.svg +6 -0
- package/src/svg/icon-b/ic-filter.svg +7 -0
- package/src/svg/icon-b/ic-flip-reset.svg +7 -0
- package/src/svg/icon-b/ic-flip-x.svg +6 -0
- package/src/svg/icon-b/ic-flip-y.svg +6 -0
- package/src/svg/icon-b/ic-flip.svg +6 -0
- package/src/svg/icon-b/ic-history-check.svg +5 -0
- package/src/svg/icon-b/ic-history-crop.svg +7 -0
- package/src/svg/icon-b/ic-history-delete.svg +9 -0
- package/src/svg/icon-b/ic-history-draw.svg +7 -0
- package/src/svg/icon-b/ic-history-filter.svg +8 -0
- package/src/svg/icon-b/ic-history-flip.svg +6 -0
- package/src/svg/icon-b/ic-history-group.svg +9 -0
- package/src/svg/icon-b/ic-history-icon.svg +6 -0
- package/src/svg/icon-b/ic-history-load.svg +7 -0
- package/src/svg/icon-b/ic-history-mask.svg +9 -0
- package/src/svg/icon-b/ic-history-resize.svg +12 -0
- package/src/svg/icon-b/ic-history-rotate.svg +16 -0
- package/src/svg/icon-b/ic-history-shape.svg +7 -0
- package/src/svg/icon-b/ic-history-text.svg +8 -0
- package/src/svg/icon-b/ic-history.svg +6 -0
- package/src/svg/icon-b/ic-icon-arrow-2.svg +5 -0
- package/src/svg/icon-b/ic-icon-arrow-3.svg +5 -0
- package/src/svg/icon-b/ic-icon-arrow.svg +5 -0
- package/src/svg/icon-b/ic-icon-bubble.svg +5 -0
- package/src/svg/icon-b/ic-icon-heart.svg +5 -0
- package/src/svg/icon-b/ic-icon-load.svg +8 -0
- package/src/svg/icon-b/ic-icon-location.svg +8 -0
- package/src/svg/icon-b/ic-icon-polygon.svg +5 -0
- package/src/svg/icon-b/ic-icon-star-2.svg +5 -0
- package/src/svg/icon-b/ic-icon-star.svg +5 -0
- package/src/svg/icon-b/ic-icon.svg +5 -0
- package/src/svg/icon-b/ic-mask-load.svg +8 -0
- package/src/svg/icon-b/ic-mask.svg +6 -0
- package/src/svg/icon-b/ic-redo.svg +7 -0
- package/src/svg/icon-b/ic-reset.svg +7 -0
- package/src/svg/icon-b/ic-resize.svg +13 -0
- package/src/svg/icon-b/ic-rotate-clockwise.svg +7 -0
- package/src/svg/icon-b/ic-rotate-counterclockwise.svg +7 -0
- package/src/svg/icon-b/ic-rotate.svg +7 -0
- package/src/svg/icon-b/ic-shape-circle.svg +5 -0
- package/src/svg/icon-b/ic-shape-rectangle.svg +5 -0
- package/src/svg/icon-b/ic-shape-triangle.svg +5 -0
- package/src/svg/icon-b/ic-shape.svg +6 -0
- package/src/svg/icon-b/ic-text-align-center.svg +6 -0
- package/src/svg/icon-b/ic-text-align-left.svg +6 -0
- package/src/svg/icon-b/ic-text-align-right.svg +6 -0
- package/src/svg/icon-b/ic-text-bold.svg +7 -0
- package/src/svg/icon-b/ic-text-italic.svg +6 -0
- package/src/svg/icon-b/ic-text-underline.svg +7 -0
- package/src/svg/icon-b/ic-text.svg +7 -0
- package/src/svg/icon-b/ic-undo.svg +7 -0
- package/src/svg/icon-b/ic-zoom-hand.svg +8 -0
- package/src/svg/icon-b/ic-zoom-zoom-in.svg +12 -0
- package/src/svg/icon-b/ic-zoom-zoom-out.svg +11 -0
- package/src/svg/icon-b/img-bi.svg +5 -0
- package/src/svg/icon-c/ic-apply.svg +6 -0
- package/src/svg/icon-c/ic-cancel.svg +6 -0
- package/src/svg/icon-c/ic-crop.svg +7 -0
- package/src/svg/icon-c/ic-delete-all.svg +6 -0
- package/src/svg/icon-c/ic-delete.svg +6 -0
- package/src/svg/icon-c/ic-draw-free.svg +5 -0
- package/src/svg/icon-c/ic-draw-line.svg +5 -0
- package/src/svg/icon-c/ic-draw.svg +6 -0
- package/src/svg/icon-c/ic-filter.svg +7 -0
- package/src/svg/icon-c/ic-flip-reset.svg +7 -0
- package/src/svg/icon-c/ic-flip-x.svg +6 -0
- package/src/svg/icon-c/ic-flip-y.svg +6 -0
- package/src/svg/icon-c/ic-flip.svg +6 -0
- package/src/svg/icon-c/ic-history-check.svg +5 -0
- package/src/svg/icon-c/ic-history-crop.svg +7 -0
- package/src/svg/icon-c/ic-history-delete.svg +9 -0
- package/src/svg/icon-c/ic-history-draw.svg +7 -0
- package/src/svg/icon-c/ic-history-filter.svg +8 -0
- package/src/svg/icon-c/ic-history-flip.svg +6 -0
- package/src/svg/icon-c/ic-history-group.svg +9 -0
- package/src/svg/icon-c/ic-history-icon.svg +6 -0
- package/src/svg/icon-c/ic-history-load.svg +7 -0
- package/src/svg/icon-c/ic-history-mask.svg +9 -0
- package/src/svg/icon-c/ic-history-resize.svg +12 -0
- package/src/svg/icon-c/ic-history-rotate.svg +16 -0
- package/src/svg/icon-c/ic-history-shape.svg +7 -0
- package/src/svg/icon-c/ic-history-text.svg +8 -0
- package/src/svg/icon-c/ic-history.svg +6 -0
- package/src/svg/icon-c/ic-icon-arrow-2.svg +5 -0
- package/src/svg/icon-c/ic-icon-arrow-3.svg +5 -0
- package/src/svg/icon-c/ic-icon-arrow.svg +5 -0
- package/src/svg/icon-c/ic-icon-bubble.svg +5 -0
- package/src/svg/icon-c/ic-icon-heart.svg +5 -0
- package/src/svg/icon-c/ic-icon-load.svg +8 -0
- package/src/svg/icon-c/ic-icon-location.svg +8 -0
- package/src/svg/icon-c/ic-icon-polygon.svg +5 -0
- package/src/svg/icon-c/ic-icon-star-2.svg +5 -0
- package/src/svg/icon-c/ic-icon-star.svg +5 -0
- package/src/svg/icon-c/ic-icon.svg +5 -0
- package/src/svg/icon-c/ic-mask-load.svg +8 -0
- package/src/svg/icon-c/ic-mask.svg +6 -0
- package/src/svg/icon-c/ic-redo.svg +7 -0
- package/src/svg/icon-c/ic-reset.svg +7 -0
- package/src/svg/icon-c/ic-resize.svg +13 -0
- package/src/svg/icon-c/ic-rotate-clockwise.svg +7 -0
- package/src/svg/icon-c/ic-rotate-counterclockwise.svg +7 -0
- package/src/svg/icon-c/ic-rotate.svg +7 -0
- package/src/svg/icon-c/ic-shape-circle.svg +5 -0
- package/src/svg/icon-c/ic-shape-rectangle.svg +5 -0
- package/src/svg/icon-c/ic-shape-triangle.svg +5 -0
- package/src/svg/icon-c/ic-shape.svg +6 -0
- package/src/svg/icon-c/ic-text-align-center.svg +6 -0
- package/src/svg/icon-c/ic-text-align-left.svg +6 -0
- package/src/svg/icon-c/ic-text-align-right.svg +6 -0
- package/src/svg/icon-c/ic-text-bold.svg +7 -0
- package/src/svg/icon-c/ic-text-italic.svg +6 -0
- package/src/svg/icon-c/ic-text-underline.svg +7 -0
- package/src/svg/icon-c/ic-text.svg +7 -0
- package/src/svg/icon-c/ic-undo.svg +7 -0
- package/src/svg/icon-c/ic-zoom-hand.svg +8 -0
- package/src/svg/icon-c/ic-zoom-zoom-in.svg +12 -0
- package/src/svg/icon-c/ic-zoom-zoom-out.svg +11 -0
- package/src/svg/icon-c/img-bi.svg +5 -0
- package/src/svg/icon-d/ic-apply.svg +6 -0
- package/src/svg/icon-d/ic-cancel.svg +6 -0
- package/src/svg/icon-d/ic-crop.svg +7 -0
- package/src/svg/icon-d/ic-delete-all.svg +6 -0
- package/src/svg/icon-d/ic-delete.svg +6 -0
- package/src/svg/icon-d/ic-draw-free.svg +5 -0
- package/src/svg/icon-d/ic-draw-line.svg +5 -0
- package/src/svg/icon-d/ic-draw.svg +6 -0
- package/src/svg/icon-d/ic-filter.svg +7 -0
- package/src/svg/icon-d/ic-flip-reset.svg +7 -0
- package/src/svg/icon-d/ic-flip-x.svg +6 -0
- package/src/svg/icon-d/ic-flip-y.svg +6 -0
- package/src/svg/icon-d/ic-flip.svg +6 -0
- package/src/svg/icon-d/ic-history-check.svg +5 -0
- package/src/svg/icon-d/ic-history-crop.svg +7 -0
- package/src/svg/icon-d/ic-history-delete.svg +9 -0
- package/src/svg/icon-d/ic-history-draw.svg +7 -0
- package/src/svg/icon-d/ic-history-filter.svg +8 -0
- package/src/svg/icon-d/ic-history-flip.svg +6 -0
- package/src/svg/icon-d/ic-history-group.svg +9 -0
- package/src/svg/icon-d/ic-history-icon.svg +6 -0
- package/src/svg/icon-d/ic-history-load.svg +7 -0
- package/src/svg/icon-d/ic-history-mask.svg +9 -0
- package/src/svg/icon-d/ic-history-resize.svg +12 -0
- package/src/svg/icon-d/ic-history-rotate.svg +16 -0
- package/src/svg/icon-d/ic-history-shape.svg +7 -0
- package/src/svg/icon-d/ic-history-text.svg +8 -0
- package/src/svg/icon-d/ic-history.svg +6 -0
- package/src/svg/icon-d/ic-icon-arrow-2.svg +5 -0
- package/src/svg/icon-d/ic-icon-arrow-3.svg +5 -0
- package/src/svg/icon-d/ic-icon-arrow.svg +5 -0
- package/src/svg/icon-d/ic-icon-bubble.svg +5 -0
- package/src/svg/icon-d/ic-icon-heart.svg +5 -0
- package/src/svg/icon-d/ic-icon-load.svg +8 -0
- package/src/svg/icon-d/ic-icon-location.svg +8 -0
- package/src/svg/icon-d/ic-icon-polygon.svg +5 -0
- package/src/svg/icon-d/ic-icon-star-2.svg +5 -0
- package/src/svg/icon-d/ic-icon-star.svg +5 -0
- package/src/svg/icon-d/ic-icon.svg +5 -0
- package/src/svg/icon-d/ic-mask-load.svg +8 -0
- package/src/svg/icon-d/ic-mask.svg +6 -0
- package/src/svg/icon-d/ic-redo.svg +7 -0
- package/src/svg/icon-d/ic-reset.svg +7 -0
- package/src/svg/icon-d/ic-resize.svg +13 -0
- package/src/svg/icon-d/ic-rotate-clockwise.svg +7 -0
- package/src/svg/icon-d/ic-rotate-counterclockwise.svg +7 -0
- package/src/svg/icon-d/ic-rotate.svg +7 -0
- package/src/svg/icon-d/ic-shape-circle.svg +5 -0
- package/src/svg/icon-d/ic-shape-rectangle.svg +5 -0
- package/src/svg/icon-d/ic-shape-triangle.svg +5 -0
- package/src/svg/icon-d/ic-shape.svg +6 -0
- package/src/svg/icon-d/ic-text-align-center.svg +6 -0
- package/src/svg/icon-d/ic-text-align-left.svg +6 -0
- package/src/svg/icon-d/ic-text-align-right.svg +6 -0
- package/src/svg/icon-d/ic-text-bold.svg +7 -0
- package/src/svg/icon-d/ic-text-italic.svg +6 -0
- package/src/svg/icon-d/ic-text-underline.svg +7 -0
- package/src/svg/icon-d/ic-text.svg +7 -0
- package/src/svg/icon-d/ic-undo.svg +7 -0
- package/src/svg/icon-d/ic-zoom-hand.svg +8 -0
- package/src/svg/icon-d/ic-zoom-zoom-in.svg +12 -0
- package/src/svg/icon-d/ic-zoom-zoom-out.svg +11 -0
- package/src/svg/icon-d/img-bi.svg +5 -0
@@ -0,0 +1,146 @@
|
|
1
|
+
import extend from 'tui-code-snippet/object/extend';
|
2
|
+
import Component from '@/interface/component';
|
3
|
+
import { componentNames, rejectMessages } from '@/consts';
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Flip
|
7
|
+
* @class Flip
|
8
|
+
* @param {Graphics} graphics - Graphics instance
|
9
|
+
* @extends {Component}
|
10
|
+
* @ignore
|
11
|
+
*/
|
12
|
+
class Flip extends Component {
|
13
|
+
constructor(graphics) {
|
14
|
+
super(componentNames.FLIP, graphics);
|
15
|
+
}
|
16
|
+
|
17
|
+
/**
|
18
|
+
* Get current flip settings
|
19
|
+
* @returns {{flipX: Boolean, flipY: Boolean}}
|
20
|
+
*/
|
21
|
+
getCurrentSetting() {
|
22
|
+
const canvasImage = this.getCanvasImage();
|
23
|
+
|
24
|
+
return {
|
25
|
+
flipX: canvasImage.flipX,
|
26
|
+
flipY: canvasImage.flipY,
|
27
|
+
};
|
28
|
+
}
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Set flipX, flipY
|
32
|
+
* @param {{flipX: Boolean, flipY: Boolean}} newSetting - Flip setting
|
33
|
+
* @returns {Promise}
|
34
|
+
*/
|
35
|
+
set(newSetting) {
|
36
|
+
const setting = this.getCurrentSetting();
|
37
|
+
const isChangingFlipX = setting.flipX !== newSetting.flipX;
|
38
|
+
const isChangingFlipY = setting.flipY !== newSetting.flipY;
|
39
|
+
|
40
|
+
if (!isChangingFlipX && !isChangingFlipY) {
|
41
|
+
return Promise.reject(rejectMessages.flip);
|
42
|
+
}
|
43
|
+
|
44
|
+
extend(setting, newSetting);
|
45
|
+
this.setImageProperties(setting, true);
|
46
|
+
this._invertAngle(isChangingFlipX, isChangingFlipY);
|
47
|
+
this._flipObjects(isChangingFlipX, isChangingFlipY);
|
48
|
+
|
49
|
+
return Promise.resolve({
|
50
|
+
flipX: setting.flipX,
|
51
|
+
flipY: setting.flipY,
|
52
|
+
angle: this.getCanvasImage().angle,
|
53
|
+
});
|
54
|
+
}
|
55
|
+
|
56
|
+
/**
|
57
|
+
* Invert image angle for flip
|
58
|
+
* @param {boolean} isChangingFlipX - Change flipX
|
59
|
+
* @param {boolean} isChangingFlipY - Change flipY
|
60
|
+
*/
|
61
|
+
_invertAngle(isChangingFlipX, isChangingFlipY) {
|
62
|
+
const canvasImage = this.getCanvasImage();
|
63
|
+
let { angle } = canvasImage;
|
64
|
+
|
65
|
+
if (isChangingFlipX) {
|
66
|
+
angle *= -1;
|
67
|
+
}
|
68
|
+
if (isChangingFlipY) {
|
69
|
+
angle *= -1;
|
70
|
+
}
|
71
|
+
canvasImage.rotate(parseFloat(angle)).setCoords(); // parseFloat for -0 to 0
|
72
|
+
}
|
73
|
+
|
74
|
+
/**
|
75
|
+
* Flip objects
|
76
|
+
* @param {boolean} isChangingFlipX - Change flipX
|
77
|
+
* @param {boolean} isChangingFlipY - Change flipY
|
78
|
+
* @private
|
79
|
+
*/
|
80
|
+
_flipObjects(isChangingFlipX, isChangingFlipY) {
|
81
|
+
const canvas = this.getCanvas();
|
82
|
+
|
83
|
+
if (isChangingFlipX) {
|
84
|
+
canvas.forEachObject((obj) => {
|
85
|
+
obj
|
86
|
+
.set({
|
87
|
+
angle: parseFloat(obj.angle * -1), // parseFloat for -0 to 0
|
88
|
+
flipX: !obj.flipX,
|
89
|
+
left: canvas.width - obj.left,
|
90
|
+
})
|
91
|
+
.setCoords();
|
92
|
+
});
|
93
|
+
}
|
94
|
+
if (isChangingFlipY) {
|
95
|
+
canvas.forEachObject((obj) => {
|
96
|
+
obj
|
97
|
+
.set({
|
98
|
+
angle: parseFloat(obj.angle * -1), // parseFloat for -0 to 0
|
99
|
+
flipY: !obj.flipY,
|
100
|
+
top: canvas.height - obj.top,
|
101
|
+
})
|
102
|
+
.setCoords();
|
103
|
+
});
|
104
|
+
}
|
105
|
+
canvas.renderAll();
|
106
|
+
}
|
107
|
+
|
108
|
+
/**
|
109
|
+
* Reset flip settings
|
110
|
+
* @returns {Promise}
|
111
|
+
*/
|
112
|
+
reset() {
|
113
|
+
return this.set({
|
114
|
+
flipX: false,
|
115
|
+
flipY: false,
|
116
|
+
});
|
117
|
+
}
|
118
|
+
|
119
|
+
/**
|
120
|
+
* Flip x
|
121
|
+
* @returns {Promise}
|
122
|
+
*/
|
123
|
+
flipX() {
|
124
|
+
const current = this.getCurrentSetting();
|
125
|
+
|
126
|
+
return this.set({
|
127
|
+
flipX: !current.flipX,
|
128
|
+
flipY: current.flipY,
|
129
|
+
});
|
130
|
+
}
|
131
|
+
|
132
|
+
/**
|
133
|
+
* Flip y
|
134
|
+
* @returns {Promise}
|
135
|
+
*/
|
136
|
+
flipY() {
|
137
|
+
const current = this.getCurrentSetting();
|
138
|
+
|
139
|
+
return this.set({
|
140
|
+
flipX: current.flipX,
|
141
|
+
flipY: !current.flipY,
|
142
|
+
});
|
143
|
+
}
|
144
|
+
}
|
145
|
+
|
146
|
+
export default Flip;
|
@@ -0,0 +1,144 @@
|
|
1
|
+
import { fabric } from 'fabric';
|
2
|
+
import Component from '@/interface/component';
|
3
|
+
import { componentNames } from '@/consts';
|
4
|
+
|
5
|
+
/**
|
6
|
+
* FreeDrawing
|
7
|
+
* @class FreeDrawing
|
8
|
+
* @param {Graphics} graphics - Graphics instance
|
9
|
+
* @extends {Component}
|
10
|
+
* @ignore
|
11
|
+
*/
|
12
|
+
class FreeDrawing extends Component {
|
13
|
+
constructor(graphics) {
|
14
|
+
super(componentNames.FREE_DRAWING, graphics);
|
15
|
+
|
16
|
+
/**
|
17
|
+
* Brush width
|
18
|
+
* @type {number}
|
19
|
+
*/
|
20
|
+
this.width = 12;
|
21
|
+
|
22
|
+
/**
|
23
|
+
* fabric.Color instance for brush color
|
24
|
+
* @type {fabric.Color}
|
25
|
+
*/
|
26
|
+
this.oColor = new fabric.Color('rgba(0, 0, 0, 0.5)');
|
27
|
+
this._handlers = {
|
28
|
+
mousedown: this._onFabricMouseDown.bind(this),
|
29
|
+
mousemove: this._onFabricMouseMove.bind(this),
|
30
|
+
mouseup: this._onFabricMouseUp.bind(this),
|
31
|
+
};
|
32
|
+
}
|
33
|
+
|
34
|
+
/**
|
35
|
+
* Start free drawing mode
|
36
|
+
* @param {{width: ?number, color: ?string}} [setting] - Brush width & color
|
37
|
+
*/
|
38
|
+
start(setting) {
|
39
|
+
console.log(setting);
|
40
|
+
if (setting?.masik) {
|
41
|
+
this.startMasik();
|
42
|
+
} else {
|
43
|
+
const canvas = this.getCanvas();
|
44
|
+
canvas.isDrawingMode = true;
|
45
|
+
this.setBrush(setting);
|
46
|
+
}
|
47
|
+
}
|
48
|
+
|
49
|
+
/**
|
50
|
+
* Set brush
|
51
|
+
* @param {{width: ?number, color: ?string}} [setting] - Brush width & color
|
52
|
+
*/
|
53
|
+
setBrush(setting) {
|
54
|
+
const brush = this.getCanvas().freeDrawingBrush;
|
55
|
+
|
56
|
+
setting = setting || {};
|
57
|
+
this.width = setting.width || this.width;
|
58
|
+
if (setting.color) {
|
59
|
+
this.oColor = new fabric.Color(setting.color);
|
60
|
+
}
|
61
|
+
brush.width = this.width;
|
62
|
+
brush.color = this.oColor.toRgba();
|
63
|
+
}
|
64
|
+
|
65
|
+
/**
|
66
|
+
* End free drawing mode
|
67
|
+
*/
|
68
|
+
end() {
|
69
|
+
const canvas = this.getCanvas();
|
70
|
+
canvas.isDrawingMode = false;
|
71
|
+
canvas.selection = true;
|
72
|
+
canvas.off('mouse:down', this._handlers.mousedown);
|
73
|
+
}
|
74
|
+
|
75
|
+
/**
|
76
|
+
* Set masik
|
77
|
+
*/
|
78
|
+
startMasik() {
|
79
|
+
const canvas = this.getCanvas();
|
80
|
+
canvas.selection = false;
|
81
|
+
canvas.on('mouse:down', this._handlers.mousedown);
|
82
|
+
}
|
83
|
+
|
84
|
+
/**
|
85
|
+
* MouseDown event handler on canvas
|
86
|
+
* @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event object
|
87
|
+
* @private
|
88
|
+
*/
|
89
|
+
_onFabricMouseDown() {
|
90
|
+
const canvas = this.getCanvas();
|
91
|
+
canvas.on({
|
92
|
+
'mouse:move': this._handlers.mousemove,
|
93
|
+
'mouse:up': this._handlers.mouseup,
|
94
|
+
});
|
95
|
+
}
|
96
|
+
|
97
|
+
/**
|
98
|
+
* MouseDown event handler on canvas
|
99
|
+
* @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event object
|
100
|
+
* @private
|
101
|
+
*/
|
102
|
+
_onFabricMouseMove(fEvent) {
|
103
|
+
const canvas = this.getCanvas();
|
104
|
+
const blockSize = 20;
|
105
|
+
const startPoints = canvas.getPointer(fEvent.e);
|
106
|
+
const startX = startPoints.x;
|
107
|
+
const startY = startPoints.y;
|
108
|
+
const ctx = canvas.getContext('2d');
|
109
|
+
const imageData = ctx.getImageData(startX, startY, blockSize, blockSize);
|
110
|
+
const { data } = imageData;
|
111
|
+
let r = 0;
|
112
|
+
let g = 0;
|
113
|
+
let b = 0;
|
114
|
+
for (let i = 0; i < data.length; i += 4) {
|
115
|
+
r += data[i];
|
116
|
+
g += data[i + 1];
|
117
|
+
b += data[i + 2];
|
118
|
+
}
|
119
|
+
r = Math.floor(r / (blockSize * blockSize));
|
120
|
+
g = Math.floor(g / (blockSize * blockSize));
|
121
|
+
b = Math.floor(b / (blockSize * blockSize));
|
122
|
+
for (let i = 0; i < data.length; i += 4) {
|
123
|
+
data[i] = r;
|
124
|
+
data[i + 1] = g;
|
125
|
+
data[i + 2] = b;
|
126
|
+
data[i + 3] = 255; // Alpha值
|
127
|
+
}
|
128
|
+
ctx.putImageData(imageData, startX, startY);
|
129
|
+
}
|
130
|
+
|
131
|
+
/**
|
132
|
+
* MouseUp event handler on canvas
|
133
|
+
* @private
|
134
|
+
*/
|
135
|
+
_onFabricMouseUp() {
|
136
|
+
const canvas = this.getCanvas();
|
137
|
+
canvas.off({
|
138
|
+
'mouse:move': this._handlers.mousemove,
|
139
|
+
'mouse:up': this._handlers.mouseup,
|
140
|
+
});
|
141
|
+
}
|
142
|
+
}
|
143
|
+
|
144
|
+
export default FreeDrawing;
|
@@ -0,0 +1,246 @@
|
|
1
|
+
import { fabric } from 'fabric';
|
2
|
+
import extend from 'tui-code-snippet/object/extend';
|
3
|
+
import forEach from 'tui-code-snippet/collection/forEach';
|
4
|
+
import Component from '@/interface/component';
|
5
|
+
import { eventNames as events, rejectMessages, componentNames, fObjectOptions } from '@/consts';
|
6
|
+
|
7
|
+
const pathMap = {
|
8
|
+
arrow: 'M 0 90 H 105 V 120 L 160 60 L 105 0 V 30 H 0 Z',
|
9
|
+
cancel:
|
10
|
+
'M 0 30 L 30 60 L 0 90 L 30 120 L 60 90 L 90 120 L 120 90 ' +
|
11
|
+
'L 90 60 L 120 30 L 90 0 L 60 30 L 30 0 Z',
|
12
|
+
};
|
13
|
+
|
14
|
+
/**
|
15
|
+
* Icon
|
16
|
+
* @class Icon
|
17
|
+
* @param {Graphics} graphics - Graphics instance
|
18
|
+
* @extends {Component}
|
19
|
+
* @ignore
|
20
|
+
*/
|
21
|
+
class Icon extends Component {
|
22
|
+
constructor(graphics) {
|
23
|
+
super(componentNames.ICON, graphics);
|
24
|
+
|
25
|
+
/**
|
26
|
+
* Default icon color
|
27
|
+
* @type {string}
|
28
|
+
*/
|
29
|
+
this._oColor = '#000000';
|
30
|
+
|
31
|
+
/**
|
32
|
+
* Path value of each icon type
|
33
|
+
* @type {Object}
|
34
|
+
*/
|
35
|
+
this._pathMap = pathMap;
|
36
|
+
|
37
|
+
/**
|
38
|
+
* Type of the drawing icon
|
39
|
+
* @type {string}
|
40
|
+
* @private
|
41
|
+
*/
|
42
|
+
this._type = null;
|
43
|
+
|
44
|
+
/**
|
45
|
+
* Color of the drawing icon
|
46
|
+
* @type {string}
|
47
|
+
* @private
|
48
|
+
*/
|
49
|
+
this._iconColor = null;
|
50
|
+
|
51
|
+
/**
|
52
|
+
* Event handler list
|
53
|
+
* @type {Object}
|
54
|
+
* @private
|
55
|
+
*/
|
56
|
+
this._handlers = {
|
57
|
+
mousedown: this._onFabricMouseDown.bind(this),
|
58
|
+
mousemove: this._onFabricMouseMove.bind(this),
|
59
|
+
mouseup: this._onFabricMouseUp.bind(this),
|
60
|
+
};
|
61
|
+
}
|
62
|
+
|
63
|
+
/**
|
64
|
+
* Set states of the current drawing shape
|
65
|
+
* @ignore
|
66
|
+
* @param {string} type - Icon type ('arrow', 'cancel', custom icon name)
|
67
|
+
* @param {string} iconColor - Icon foreground color
|
68
|
+
*/
|
69
|
+
setStates(type, iconColor) {
|
70
|
+
this._type = type;
|
71
|
+
this._iconColor = iconColor;
|
72
|
+
}
|
73
|
+
|
74
|
+
/**
|
75
|
+
* Start to draw the icon on canvas
|
76
|
+
* @ignore
|
77
|
+
*/
|
78
|
+
start() {
|
79
|
+
const canvas = this.getCanvas();
|
80
|
+
canvas.selection = false;
|
81
|
+
canvas.on('mouse:down', this._handlers.mousedown);
|
82
|
+
}
|
83
|
+
|
84
|
+
/**
|
85
|
+
* End to draw the icon on canvas
|
86
|
+
* @ignore
|
87
|
+
*/
|
88
|
+
end() {
|
89
|
+
const canvas = this.getCanvas();
|
90
|
+
|
91
|
+
canvas.selection = true;
|
92
|
+
canvas.off({
|
93
|
+
'mouse:down': this._handlers.mousedown,
|
94
|
+
});
|
95
|
+
}
|
96
|
+
|
97
|
+
/**
|
98
|
+
* Add icon
|
99
|
+
* @param {string} type - Icon type
|
100
|
+
* @param {Object} options - Icon options
|
101
|
+
* @param {string} [options.fill] - Icon foreground color
|
102
|
+
* @param {string} [options.left] - Icon x position
|
103
|
+
* @param {string} [options.top] - Icon y position
|
104
|
+
* @returns {Promise}
|
105
|
+
*/
|
106
|
+
add(type, options) {
|
107
|
+
return new Promise((resolve, reject) => {
|
108
|
+
const canvas = this.getCanvas();
|
109
|
+
const path = this._pathMap[type];
|
110
|
+
const selectionStyle = fObjectOptions.SELECTION_STYLE;
|
111
|
+
const icon = path ? this._createIcon(path) : null;
|
112
|
+
this._icon = icon;
|
113
|
+
|
114
|
+
if (!icon) {
|
115
|
+
reject(rejectMessages.invalidParameters);
|
116
|
+
}
|
117
|
+
|
118
|
+
icon.set(
|
119
|
+
extend(
|
120
|
+
{
|
121
|
+
type: 'icon',
|
122
|
+
fill: this._oColor,
|
123
|
+
},
|
124
|
+
selectionStyle,
|
125
|
+
options,
|
126
|
+
this.graphics.controlStyle
|
127
|
+
)
|
128
|
+
);
|
129
|
+
|
130
|
+
canvas.add(icon).setActiveObject(icon);
|
131
|
+
|
132
|
+
resolve(this.graphics.createObjectProperties(icon));
|
133
|
+
});
|
134
|
+
}
|
135
|
+
|
136
|
+
/**
|
137
|
+
* Register icon paths
|
138
|
+
* @param {{key: string, value: string}} pathInfos - Path infos
|
139
|
+
*/
|
140
|
+
registerPaths(pathInfos) {
|
141
|
+
forEach(
|
142
|
+
pathInfos,
|
143
|
+
(path, type) => {
|
144
|
+
this._pathMap[type] = path;
|
145
|
+
},
|
146
|
+
this
|
147
|
+
);
|
148
|
+
}
|
149
|
+
|
150
|
+
/**
|
151
|
+
* Set icon object color
|
152
|
+
* @param {string} color - Color to set
|
153
|
+
* @param {fabric.Path}[obj] - Current activated path object
|
154
|
+
*/
|
155
|
+
setColor(color, obj) {
|
156
|
+
this._oColor = color;
|
157
|
+
|
158
|
+
if (obj && obj.get('type') === 'icon') {
|
159
|
+
obj.set({ fill: this._oColor });
|
160
|
+
this.getCanvas().renderAll();
|
161
|
+
}
|
162
|
+
}
|
163
|
+
|
164
|
+
/**
|
165
|
+
* Get icon color
|
166
|
+
* @param {fabric.Path}[obj] - Current activated path object
|
167
|
+
* @returns {string} color
|
168
|
+
*/
|
169
|
+
getColor(obj) {
|
170
|
+
return obj.fill;
|
171
|
+
}
|
172
|
+
|
173
|
+
/**
|
174
|
+
* Create icon object
|
175
|
+
* @param {string} path - Path value to create icon
|
176
|
+
* @returns {fabric.Path} Path object
|
177
|
+
*/
|
178
|
+
_createIcon(path) {
|
179
|
+
return new fabric.Path(path);
|
180
|
+
}
|
181
|
+
|
182
|
+
/**
|
183
|
+
* MouseDown event handler on canvas
|
184
|
+
* @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event object
|
185
|
+
* @private
|
186
|
+
*/
|
187
|
+
_onFabricMouseDown(fEvent) {
|
188
|
+
const canvas = this.getCanvas();
|
189
|
+
|
190
|
+
this._startPoint = canvas.getPointer(fEvent.e);
|
191
|
+
const { x: left, y: top } = this._startPoint;
|
192
|
+
|
193
|
+
this.add(this._type, {
|
194
|
+
left,
|
195
|
+
top,
|
196
|
+
fill: this._iconColor,
|
197
|
+
}).then(() => {
|
198
|
+
this.fire(events.ADD_OBJECT, this.graphics.createObjectProperties(this._icon));
|
199
|
+
canvas.on('mouse:move', this._handlers.mousemove);
|
200
|
+
canvas.on('mouse:up', this._handlers.mouseup);
|
201
|
+
});
|
202
|
+
}
|
203
|
+
|
204
|
+
/**
|
205
|
+
* MouseMove event handler on canvas
|
206
|
+
* @param {{target: fabric.Object, e: MouseEvent}} fEvent - Fabric event object
|
207
|
+
* @private
|
208
|
+
*/
|
209
|
+
_onFabricMouseMove(fEvent) {
|
210
|
+
const canvas = this.getCanvas();
|
211
|
+
|
212
|
+
if (!this._icon) {
|
213
|
+
return;
|
214
|
+
}
|
215
|
+
const moveOriginPointer = canvas.getPointer(fEvent.e);
|
216
|
+
|
217
|
+
const scaleX = (moveOriginPointer.x - this._startPoint.x) / this._icon.width;
|
218
|
+
const scaleY = (moveOriginPointer.y - this._startPoint.y) / this._icon.height;
|
219
|
+
|
220
|
+
this._icon.set({
|
221
|
+
scaleX: Math.abs(scaleX * 2),
|
222
|
+
scaleY: Math.abs(scaleY * 2),
|
223
|
+
});
|
224
|
+
|
225
|
+
this._icon.setCoords();
|
226
|
+
canvas.renderAll();
|
227
|
+
}
|
228
|
+
|
229
|
+
/**
|
230
|
+
* MouseUp event handler on canvas
|
231
|
+
* @private
|
232
|
+
*/
|
233
|
+
_onFabricMouseUp() {
|
234
|
+
const canvas = this.getCanvas();
|
235
|
+
|
236
|
+
this.fire(events.OBJECT_ADDED, this.graphics.createObjectProperties(this._icon));
|
237
|
+
|
238
|
+
this._icon = null;
|
239
|
+
|
240
|
+
canvas.off('mouse:down', this._handlers.mousedown);
|
241
|
+
canvas.off('mouse:move', this._handlers.mousemove);
|
242
|
+
canvas.off('mouse:up', this._handlers.mouseup);
|
243
|
+
}
|
244
|
+
}
|
245
|
+
|
246
|
+
export default Icon;
|
@@ -0,0 +1,84 @@
|
|
1
|
+
import Component from '@/interface/component';
|
2
|
+
import { componentNames, rejectMessages } from '@/consts';
|
3
|
+
|
4
|
+
const imageOption = {
|
5
|
+
padding: 0,
|
6
|
+
crossOrigin: 'Anonymous',
|
7
|
+
};
|
8
|
+
|
9
|
+
/**
|
10
|
+
* ImageLoader components
|
11
|
+
* @extends {Component}
|
12
|
+
* @class ImageLoader
|
13
|
+
* @param {Graphics} graphics - Graphics instance
|
14
|
+
* @ignore
|
15
|
+
*/
|
16
|
+
class ImageLoader extends Component {
|
17
|
+
constructor(graphics) {
|
18
|
+
super(componentNames.IMAGE_LOADER, graphics);
|
19
|
+
}
|
20
|
+
|
21
|
+
/**
|
22
|
+
* Load image from url
|
23
|
+
* @param {?string} imageName - File name
|
24
|
+
* @param {?(fabric.Image|string)} img - fabric.Image instance or URL of an image
|
25
|
+
* @returns {Promise}
|
26
|
+
*/
|
27
|
+
load(imageName, img) {
|
28
|
+
let promise;
|
29
|
+
|
30
|
+
if (!imageName && !img) {
|
31
|
+
// Back to the initial state, not error.
|
32
|
+
const canvas = this.getCanvas();
|
33
|
+
|
34
|
+
canvas.backgroundImage = null;
|
35
|
+
canvas.renderAll();
|
36
|
+
|
37
|
+
promise = new Promise((resolve) => {
|
38
|
+
this.setCanvasImage('', null);
|
39
|
+
resolve();
|
40
|
+
});
|
41
|
+
} else {
|
42
|
+
promise = this._setBackgroundImage(img).then((oImage) => {
|
43
|
+
this.setCanvasImage(imageName, oImage);
|
44
|
+
this.adjustCanvasDimension();
|
45
|
+
|
46
|
+
return oImage;
|
47
|
+
});
|
48
|
+
}
|
49
|
+
|
50
|
+
return promise;
|
51
|
+
}
|
52
|
+
|
53
|
+
/**
|
54
|
+
* Set background image
|
55
|
+
* @param {?(fabric.Image|String)} img fabric.Image instance or URL of an image to set background to
|
56
|
+
* @returns {Promise}
|
57
|
+
* @private
|
58
|
+
*/
|
59
|
+
_setBackgroundImage(img) {
|
60
|
+
if (!img) {
|
61
|
+
return Promise.reject(rejectMessages.loadImage);
|
62
|
+
}
|
63
|
+
|
64
|
+
return new Promise((resolve, reject) => {
|
65
|
+
const canvas = this.getCanvas();
|
66
|
+
|
67
|
+
canvas.setBackgroundImage(
|
68
|
+
img,
|
69
|
+
() => {
|
70
|
+
const oImage = canvas.backgroundImage;
|
71
|
+
|
72
|
+
if (oImage && oImage.getElement()) {
|
73
|
+
resolve(oImage);
|
74
|
+
} else {
|
75
|
+
reject(rejectMessages.loadingImageFailed);
|
76
|
+
}
|
77
|
+
},
|
78
|
+
imageOption
|
79
|
+
);
|
80
|
+
});
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
export default ImageLoader;
|