advanced-cropper
Version:
The core of the advanced cropper libraries family
52 lines (47 loc) • 2.43 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
require('tslib');
var utils = require('../service/utils.js');
var helpers = require('../service/helpers.js');
var copyState = require('../state/copyState.js');
require('../types/index.js');
require('../state/setCoordinates.js');
function flipImageAlgorithm(state, settings, horizontal, vertical) {
if (helpers.isInitializedState(state)) {
var result = copyState.copyState(state);
var rotate = state.transforms.rotate;
var imageSize = helpers.getTransformedImageSize(state);
var changed = {
horizontal: horizontal,
vertical: vertical,
};
if (changed.horizontal || changed.vertical) {
var imageCenter = utils.rotatePoint({
left: imageSize.width / 2,
top: imageSize.height / 2,
}, -rotate);
var oldCenter = utils.rotatePoint(utils.getCenter(result.coordinates), -rotate);
var newCenter = utils.rotatePoint({
left: changed.horizontal ? imageCenter.left - (oldCenter.left - imageCenter.left) : oldCenter.left,
top: changed.vertical ? imageCenter.top - (oldCenter.top - imageCenter.top) : oldCenter.top,
}, rotate);
result.coordinates = utils.applyMove(result.coordinates, utils.diff(newCenter, utils.getCenter(result.coordinates)));
oldCenter = utils.rotatePoint(utils.getCenter(result.visibleArea), -rotate);
newCenter = utils.rotatePoint({
left: changed.horizontal ? imageCenter.left - (oldCenter.left - imageCenter.left) : oldCenter.left,
top: changed.vertical ? imageCenter.top - (oldCenter.top - imageCenter.top) : oldCenter.top,
}, rotate);
result.visibleArea = utils.applyMove(result.visibleArea, utils.diff(newCenter, utils.getCenter(result.visibleArea)));
result.visibleArea = utils.moveToPositionRestrictions(result.visibleArea, helpers.getAreaPositionRestrictions(result, settings));
}
if (changed.horizontal) {
result.transforms.flip.horizontal = !state.transforms.flip.horizontal;
}
if (changed.vertical) {
result.transforms.flip.vertical = !state.transforms.flip.vertical;
}
return result;
}
return state;
}
exports.flipImageAlgorithm = flipImageAlgorithm;