From 2acdcafe09ca0f06e0e3298e2a8fe5387ddd213c Mon Sep 17 00:00:00 2001 From: Rikard Bartholf Date: Thu, 18 May 2017 11:45:43 +0200 Subject: [PATCH] Add method for getting crop data editor.canvas.getImage().transformation.getData() get an object with information about the image, it's width, height, if it's mirrored and so on. --- src/js/components/ImageEditor/FrameHandler.js | 7 +++ .../ImageEditor/ImageTransformationHandler.js | 45 ++++++++++++++++++- .../components/extend-fabric-functionality.js | 3 ++ 3 files changed, 54 insertions(+), 1 deletion(-) diff --git a/src/js/components/ImageEditor/FrameHandler.js b/src/js/components/ImageEditor/FrameHandler.js index 2280783..572bf61 100644 --- a/src/js/components/ImageEditor/FrameHandler.js +++ b/src/js/components/ImageEditor/FrameHandler.js @@ -34,6 +34,13 @@ function FrameHandler(viewport) { init(); + /** + * @return {String} + */ + this.getFrameType = function () { + return _frameType; + }; + this.setVisible = function (isVisible) { isVisible = typeof isVisible === 'undefined' ? true : !!isVisible; diff --git a/src/js/components/ImageEditor/ImageTransformationHandler.js b/src/js/components/ImageEditor/ImageTransformationHandler.js index 0b2be17..be7f49f 100644 --- a/src/js/components/ImageEditor/ImageTransformationHandler.js +++ b/src/js/components/ImageEditor/ImageTransformationHandler.js @@ -1,7 +1,50 @@ 'use strict'; function ImageTransformationHandler(img) { - var _transformations = {}; + var _transformations = { + mirror: false + }; + + /** + * Gets information about how the cropped image is dragged + * @return {Object} + */ + this.getCropData = function () { + var viewportBounds = img.canvas.getViewport().getBounds(); + var dragAxis = img.canvas.getViewport().getData().axis; + + return { + x: dragAxis === 'h' ? (viewportBounds.left - img.left) / img.width : 0, + y: dragAxis === 'v' ? (viewportBounds.top - img.top) / img.height : 0, + }; + }; + + /** + * Gets an object containing applied transformations for the Image and also + * how it is cropped and dragged. + * @return {Object} + */ + this.getData = function () { + var viewportData = img.canvas.getViewport().getData(); + + var returnValue = $.extend( + {}, + _transformations, + { + width: viewportData.dim.width, + height: viewportData.dim.height, + }, + this.getCropData() + ); + + if (img.canvas.__type === 'canvas') { + var frameHandler = img.canvas.getViewport().getFrameHandler(); + returnValue.edge = frameHandler.getFrameType(); + returnValue.framed = returnValue.edge !== 'none'; + } + + return returnValue; + }; /** * @param {String} name diff --git a/src/js/components/extend-fabric-functionality.js b/src/js/components/extend-fabric-functionality.js index 8cde5a0..3b2223e 100644 --- a/src/js/components/extend-fabric-functionality.js +++ b/src/js/components/extend-fabric-functionality.js @@ -50,6 +50,9 @@ function ExtendFabricFunctionality() { height: bounds.height - this.strokeWidth * 2 }; + returnValue.right = returnValue.left + returnValue.width; + returnValue.bottom = returnValue.top + returnValue.height; + returnValue.min = { left: returnValue.left, top: returnValue.top