blob: aeadba4e5b67ef19827143d8fca265163f420908 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* Casts a map of options as an incoming load request to test CopyParameters.
*
* @param {Image} source
* @param {Object} options
* @return {!ImageLoaderUtil.CopyParameters} Calculated copy parameters.
*/
function calculateCopyParametersFromOptions(source, options) {
return ImageLoaderUtil.calculateCopyParameters(
source, /** @type{!LoadImageRequest} */ (options));
}
/**
* Test case:
* - Source image: 200x50
* - Target: max size is 100x100
*/
function testNormalImage() {
var source = new Image();
source.width = 200;
source.height = 50;
var options = {
maxWidth: 100,
maxHeight: 100,
orientation: ImageOrientation.fromClockwiseRotation(0)
};
var result = calculateCopyParametersFromOptions(source, options);
assertEquals(0, result.source.x);
assertEquals(0, result.source.y);
assertEquals(200, result.source.width);
assertEquals(50, result.source.height);
assertEquals(0, result.target.x);
assertEquals(0, result.target.y);
assertEquals(100, result.target.width);
assertEquals(25, result.target.height);
assertEquals(100, result.canvas.width);
assertEquals(25, result.canvas.height);
}
/**
* Test case:
* - Source image: 50x200 90 deg clock-wise rotated image.
* - Target: max size is 100x100
*/
function testRotatedImage() {
var source = new Image();
source.width = 50;
source.height = 200;
var options = {
maxWidth: 100,
maxHeight: 100,
orientation: ImageOrientation.fromClockwiseRotation(1)
};
var result = calculateCopyParametersFromOptions(source, options);
assertEquals(0, result.source.x);
assertEquals(0, result.source.y);
assertEquals(50, result.source.width);
assertEquals(200, result.source.height);
assertEquals(0, result.target.x);
assertEquals(0, result.target.y);
assertEquals(25, result.target.width);
assertEquals(100, result.target.height);
assertEquals(100, result.canvas.width);
assertEquals(25, result.canvas.height);
}
/**
* Test case:
* - Source image: 800x100
* - Target: 50x50 cropped image.
*/
function testCroppedImage() {
var source = new Image();
source.width = 800;
source.height = 100;
var options = {
width: 50,
height: 50,
crop: true,
orientation: ImageOrientation.fromClockwiseRotation(0)
};
var result = calculateCopyParametersFromOptions(source, options);
assertEquals(350, result.source.x);
assertEquals(0, result.source.y);
assertEquals(100, result.source.width);
assertEquals(100, result.source.height);
assertEquals(0, result.target.x);
assertEquals(0, result.target.y);
assertEquals(50, result.target.width);
assertEquals(50, result.target.height);
assertEquals(50, result.canvas.width);
assertEquals(50, result.canvas.height);
}
/**
* Test case:
* - Source image: 200x25
* - Target: 50x50 cropped image.
*/
function testCroppedImageWithResize() {
var source = new Image();
source.width = 200;
source.height = 25;
var options = {
width: 50,
height: 50,
crop: true,
orientation: ImageOrientation.fromClockwiseRotation(0)
};
var result = calculateCopyParametersFromOptions(source, options);
assertEquals(87, result.source.x);
assertEquals(0, result.source.y);
assertEquals(25, result.source.width);
assertEquals(25, result.source.height);
assertEquals(0, result.target.x);
assertEquals(0, result.target.y);
assertEquals(50, result.target.width);
assertEquals(50, result.target.height);
assertEquals(50, result.canvas.width);
assertEquals(50, result.canvas.height);
}
/**
* Test case:
* - Source image: 20x10
* - Target: 50x50 cropped image.
*/
function testCroppedTinyImage() {
var source = new Image();
source.width = 20;
source.height = 10;
var options = {
width: 50,
height: 50,
crop: true,
orientation: ImageOrientation.fromClockwiseRotation(0)
};
var result = calculateCopyParametersFromOptions(source, options);
assertEquals(5, result.source.x);
assertEquals(0, result.source.y);
assertEquals(10, result.source.width);
assertEquals(10, result.source.height);
assertEquals(0, result.target.x);
assertEquals(0, result.target.y);
assertEquals(50, result.target.width);
assertEquals(50, result.target.height);
assertEquals(50, result.canvas.width);
assertEquals(50, result.canvas.height);
}
/**
* Test case:
* - Source image: 100x400 90 degree clock-wise rotated.
* - Target: 50x50 cropped image
*/
function testCroppedRotatedImage() {
var source = new Image();
source.width = 100;
source.height = 400;
var options = {
width: 50,
height: 50,
crop: true,
orientation: ImageOrientation.fromClockwiseRotation(1)
};
var result = calculateCopyParametersFromOptions(source, options);
assertEquals(0, result.source.x);
assertEquals(150, result.source.y);
assertEquals(100, result.source.width);
assertEquals(100, result.source.height);
assertEquals(0, result.target.x);
assertEquals(0, result.target.y);
assertEquals(50, result.target.width);
assertEquals(50, result.target.height);
assertEquals(50, result.canvas.width);
assertEquals(50, result.canvas.height);
}