UNPKG

advanced-cropper

Version:

The core of the advanced cropper libraries family

52 lines (47 loc) 2.43 kB
'use strict'; 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;