/** * @module engine/resize */ let pRatio = 1.0, cRatio = 1.0; /** * Calculate how to scale a content to fill its container in `outer-box` mode. * @param {Vector} containerSize Size of container. * @param {Vector} contentSize Size of the content. * @return {object} { left , top , scale } */ module.exports.outerBoxResize = function(containerSize, contentSize) { pRatio = containerSize.x / containerSize.y; cRatio = contentSize.x / contentSize.y; let result = { left: 0, top: 0, scale: 1 }; if (pRatio > cRatio) { result.scale = containerSize.y / contentSize.y; result.left = (containerSize.x - contentSize.x * result.scale) * 0.5; } else { result.scale = containerSize.x / contentSize.x; result.top = (containerSize.y - contentSize.y * result.scale) * 0.5; } return result; }; /** * Calculate how to scale a content to fill its container in `inner-box` mode. * @param {Vector} containerSize Size of container. * @param {Vector} contentSize Size of the content. * @return {object} { left , top , scale } */ module.exports.innerBoxResize = function(containerSize, contentSize) { pRatio = containerSize.x / containerSize.y; cRatio = contentSize.x / contentSize.y; let result = { left: 0, top: 0, scale: 1 }; if (pRatio < cRatio) { result.scale = containerSize.y / contentSize.y; result.left = (containerSize.x - contentSize.x * result.scale) * 0.5; } else { result.scale = containerSize.x / contentSize.x; result.top = (containerSize.y - contentSize.y * result.scale) * 0.5; } return result; };