in seriously.js [6267:6330]
function recompute() {
var matrix = me.matrix,
width = forceWidth || me.width,
height = forceHeight || me.height,
scaleX,
scaleY,
source = me.source,
sourceWidth = source && source.width || 1,
sourceHeight = source && source.height || 1,
aspectIn,
aspectOut;
if (mode === 'distort' || width === sourceWidth && height === sourceHeight) {
me.transformed = false;
return;
}
aspectIn = sourceWidth / sourceHeight;
aspectOut = width / height;
if (mode === 'none') {
scaleX = sourceWidth / width;
scaleY = sourceHeight / height;
} else if (mode === 'width' || mode === 'contain' && aspectOut <= aspectIn) {
scaleX = 1;
scaleY = aspectOut / aspectIn;
} else if (mode === 'height' || mode === 'contain' && aspectOut > aspectIn) {
scaleX = aspectIn / aspectOut;
scaleY = 1;
} else {
//mode === 'cover'
if (aspectOut > aspectIn) {
scaleX = 1;
scaleY = aspectOut / aspectIn;
} else {
scaleX = aspectIn / aspectOut;
scaleY = 1;
}
}
if (scaleX === 1 && scaleY === 1) {
me.transformed = false;
return;
}
//calculate transformation matrix
mat4.identity(matrix);
//scale
if (scaleX !== 1) {
matrix[0] *= scaleX;
matrix[1] *= scaleX;
matrix[2] *= scaleX;
matrix[3] *= scaleX;
}
if (scaleY !== 1) {
matrix[4] *= scaleY;
matrix[5] *= scaleY;
matrix[6] *= scaleY;
matrix[7] *= scaleY;
}
me.transformed = true;
}