mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-01 10:48:38 -05:00
2b62eb5cfa
In some special circumstances, when position was passed in constructor and when position key was before size key, bounds were wrongly calculated. This ensure that when size is set, even the first time, bounds are properly recalculated. Closes #1686
86 lines
2.1 KiB
JavaScript
86 lines
2.1 KiB
JavaScript
/*
|
|
* Paper.js - The Swiss Army Knife of Vector Graphics Scripting.
|
|
* http://paperjs.org/
|
|
*
|
|
* Copyright (c) 2011 - 2019, Juerg Lehni & Jonathan Puckey
|
|
* http://scratchdisk.com/ & https://puckey.studio/
|
|
*
|
|
* Distributed under the MIT license. See LICENSE file for details.
|
|
*
|
|
* All rights reserved.
|
|
*/
|
|
|
|
QUnit.module('Shape');
|
|
|
|
test('shape.toPath().toShape()', function() {
|
|
var shapes = {
|
|
circle: new Shape.Circle({
|
|
center: [100, 100],
|
|
radius: 50,
|
|
fillColor: 'red'
|
|
}),
|
|
|
|
ellipse: new Shape.Ellipse({
|
|
center: [100, 200],
|
|
radius: [50, 25],
|
|
fillColor: 'blue',
|
|
strokeColor: 'black',
|
|
strokeWidth: 4,
|
|
rotation: 20
|
|
}),
|
|
|
|
rect: new Shape.Rectangle({
|
|
center: [100, 300],
|
|
size: [100, 50],
|
|
fillColor: 'green',
|
|
strokeColor: 'black',
|
|
strokeWidth: 4,
|
|
rotation: -20
|
|
}),
|
|
|
|
roundRect: new Shape.Rectangle({
|
|
center: [100, 400],
|
|
size: [50, 100],
|
|
radius: [15, 20],
|
|
fillColor: 'orange',
|
|
strokeColor: 'black',
|
|
strokeWidth: 4,
|
|
rotation: 20
|
|
})
|
|
};
|
|
|
|
Base.each(shapes, function(shape, name) {
|
|
equals(shape.toPath().toShape(), shape, name + '.toPath().toShape()');
|
|
});
|
|
});
|
|
|
|
test('new Shape.Rectangle() with position set before size', function() {
|
|
var shape1 = new Shape.Rectangle({
|
|
position: [0, 0],
|
|
size: new Size(100, 100)
|
|
});
|
|
equals(shape1.bounds.width, 100);
|
|
});
|
|
|
|
test('Shape.Rectangle radius works with negative size', function() {
|
|
var shape = new Shape.Rectangle({
|
|
center: [50, 50],
|
|
size: 50,
|
|
fillColor: 'black'
|
|
});
|
|
|
|
shape.size = [-25, -25];
|
|
|
|
equals(shape.radius.width, 0);
|
|
equals(shape.radius.height, 0);
|
|
|
|
shape.radius = [10, 50];
|
|
shape.size = [50, -25];
|
|
|
|
equals(shape.radius.width, 10);
|
|
equals(shape.radius.height, 12.5);
|
|
|
|
shape.size = [50, 75];
|
|
|
|
equals(shape.radius.height, 12.5);
|
|
});
|