Merge remote branch 'origin/master'

This commit is contained in:
Jonathan Puckey 2011-05-05 13:22:09 +01:00
commit f806c68dc0
6 changed files with 97 additions and 64 deletions

View file

@ -161,8 +161,8 @@ var Color = this.Color = Base.extend(new function() {
* @return {@true if the GrayColor is the same}
*/
equals: function(color) {
if (color && color._colorType == this._colorType) {
for (var i = 0, l = this._components; i < l; i++) {
if (color && color._colorType === this._colorType) {
for (var i = 0, l = this._components.length; i < l; i++) {
var component = '_' + this._components[i];
if (this[component] !== color[component])
return false;

View file

@ -85,6 +85,7 @@ var PathStyle = this.PathStyle = Base.extend(new function() {
} else if (style != childStyle) {
// If there is another item with a different style,
// the style is not defined:
// TODO: Port back to Sg (currently returns null)
return undefined;
}
}

View file

@ -182,12 +182,40 @@ var Path = this.Path = PathItem.extend({
// TODO: Port back support for adding multiple segments at once to Sg
add: function(segment1 /*, segment2, ... */) {
return this._add(Segment.readAll(arguments), true);
return arguments.length > 1 && typeof segment1 != 'number'
// addSegments
? this._add(Segment.readAll(arguments), true)
// addSegment
: this._add([ Segment.read(arguments) ], true)[0];
},
// TODO: Port back support for adding multiple segments at once to Sg
insert: function(index, segment1 /*, segment2, ... */) {
return this._add(Segment.readAll(arguments, 1), true, index);
return arguments.length > 2 && typeof segment1 != 'number'
// insertSegments
? this._add(Segment.readAll(arguments, 1), true, index)
// insertSegment
: this._add([ Segment.read(arguments, 1) ], true, index)[0];
},
// TODO: Port back to Sg
addSegment: function(segment) {
return this._add([ Segment.read(arguments) ], true)[0];
},
// TODO: Port back to Sg
insertSegment: function(index, segment) {
return this._add([ Segment.read(arguments, 1) ], true, index)[0];
},
// TODO: Port back to Sg
addSegments: function(segments) {
return this._add(Segment.readAll(segments), true);
},
// TODO: Port back to Sg
insertSegments: function(index, segments) {
return this._add(Segment.readAll(segments), true, index);
},
// TODO: Port back to Sg

View file

@ -7,17 +7,21 @@ function compareNumbers(number1, number2, message) {
}
function comparePoints(point1, point2, message) {
compareNumbers(point1.x, point2.x, message ? message + ' x' : undefined);
compareNumbers(point1.y, point2.y, message ? message + ' y' : undefined);
compareNumbers(point1.x, point2.x,
(message || '') + ' x');
compareNumbers(point1.y, point2.y,
(message || '') + ' y');
}
function compareRectangles(rect1, rect2, message) {
compareNumbers(rect1.x, rect2.x, message ? message + ' x' : undefined);
compareNumbers(rect1.y, rect2.y, message ? message + ' y' : undefined);
compareNumbers(rect1.x, rect2.x,
(message || '') + ' x');
compareNumbers(rect1.y, rect2.y,
(message || '') + ' y');
compareNumbers(rect1.width, rect2.width,
message ? message + ' width' : undefined);
(message || '') + ' width');
compareNumbers(rect1.height, rect2.height,
message ? message + ' height' : undefined);
(message || '') + ' height');
}
function compareRGBColors(color1, color2, message) {
@ -25,13 +29,13 @@ function compareRGBColors(color1, color2, message) {
color2 = new RGBColor(color2);
compareNumbers(color1.red, color2.red,
message ? message + ' red' : undefined);
(message || '') + ' red');
compareNumbers(color1.green, color2.green,
message ? message + ' green' : undefined);
(message || '') + ' green');
compareNumbers(color1.blue, color2.blue,
message ? message + ' blue' : undefined);
(message || '') + ' blue');
compareNumbers(color1.alpha, color2.alpha,
message ? message + ' alpha' : undefined);
(message || '') + ' alpha');
}
function compareHSBColors(color1, color2, message) {
@ -39,13 +43,13 @@ function compareHSBColors(color1, color2, message) {
color2 = new HSBColor(color2);
compareNumbers(color1.hue, color2.hue,
message ? message + ' hue' : undefined);
(message || '') + ' hue');
compareNumbers(color1.saturation, color2.saturation,
message ? message + ' saturation' : undefined);
(message || '') + ' saturation');
compareNumbers(color1.brightness, color2.brightness,
message ? message + ' brightness' : undefined);
(message || '') + ' brightness');
compareNumbers(color1.alpha, color2.alpha,
message ? message + ' alpha' : undefined);
(message || '') + ' alpha');
}
function compareGrayColors(color1, color2, message) {
@ -53,5 +57,5 @@ function compareGrayColors(color1, color2, message) {
color2 = new GrayColor(color2);
compareNumbers(color1.gray, color2.gray,
message ? message + ' gray' : undefined);
(message || '') + ' gray');
}

View file

@ -3,46 +3,46 @@ module('Path');
test('path.join(path)', function() {
var doc = new Document();
var path = new Path();
path.add([0, 0]);
path.add([10, 0]);
path.add(0, 0);
path.add(10, 0);
var path2 = new Path();
path2.add([10, 0]);
path2.add([20, 10]);
path2.add(10, 0);
path2.add(20, 10);
path.join(path2);
equals(path.segments.toString(), '{ point: { x: 0, y: 0 } },{ point: { x: 10, y: 0 } },{ point: { x: 20, y: 10 } }');
equals(doc.activeLayer.children.length, 1);
var path = new Path();
path.add([0, 0]);
path.add([10, 0]);
path.add(0, 0);
path.add(10, 0);
var path2 = new Path();
path2.add([20, 10]);
path2.add([10, 0]);
path2.add(20, 10);
path2.add(10, 0);
path.join(path2);
equals(path.segments.toString(), '{ point: { x: 0, y: 0 } },{ point: { x: 10, y: 0 } },{ point: { x: 20, y: 10 } }');
var path = new Path();
path.add([0, 0]);
path.add([10, 0]);
path.add(0, 0);
path.add(10, 0);
var path2 = new Path();
path2.add([30, 10]);
path2.add([40, 0]);
path2.add(30, 10);
path2.add(40, 0);
path.join(path2);
equals(path.segments.toString(), '{ point: { x: 0, y: 0 } },{ point: { x: 10, y: 0 } },{ point: { x: 30, y: 10 } },{ point: { x: 40, y: 0 } }');
var path = new Path();
path.add([0, 0]);
path.add([10, 0]);
path.add([20, 10]);
path.add(0, 0);
path.add(10, 0);
path.add(20, 10);
var path2 = new Path();
path2.add([0, 0]);
path2.add([10, 5]);
path2.add([20, 10]);
path2.add(0, 0);
path2.add(10, 5);
path2.add(20, 10);
path.join(path2);
@ -53,10 +53,10 @@ test('path.join(path)', function() {
test('path.remove()', function() {
var doc = new Document();
var path = new Path();
path.add([0, 0]);
path.add([10, 0]);
path.add([20, 0]);
path.add([30, 0]);
path.add(0, 0);
path.add(10, 0);
path.add(20, 0);
path.add(30, 0);
path.removeSegment(0);
equals(path.segments.length, 3);

View file

@ -4,12 +4,12 @@ test('currentStyle', function() {
var doc = new Document();
doc.currentStyle.fillColor = 'black';
var path = new Path();
compareRGBColors(path.fillColor, 'black');
compareRGBColors(path.fillColor, 'black', 'path.fillColor');
// When changing the current style of the document, the style of
// paths created using document.currentStyle should not change.
doc.currentStyle.fillColor = 'red';
compareRGBColors(path.fillColor, 'black');
compareRGBColors(path.fillColor, 'black', 'path.fillColor');
});
test('setting currentStyle to an object', function() {
@ -19,8 +19,8 @@ test('setting currentStyle to an object', function() {
strokeColor: 'green'
};
var path = new Path();
compareRGBColors(path.fillColor, 'red');
compareRGBColors(path.strokeColor, 'green');
compareRGBColors(path.fillColor, 'red', 'path.fillColor');
compareRGBColors(path.strokeColor, 'green', 'path.strokeColor');
});
test('setting path styles to an object', function() {
@ -30,8 +30,8 @@ test('setting path styles to an object', function() {
fillColor: 'red',
strokeColor: 'green'
};
compareRGBColors(path.fillColor, 'red');
compareRGBColors(path.strokeColor, 'green');
compareRGBColors(path.fillColor, 'red', 'path.fillColor');
compareRGBColors(path.strokeColor, 'green', 'path.strokeColor');
});
test('setting group styles to an object', function() {
@ -43,8 +43,8 @@ test('setting group styles to an object', function() {
fillColor: 'red',
strokeColor: 'green'
};
compareRGBColors(path.fillColor, 'red');
compareRGBColors(path.strokeColor, 'green');
compareRGBColors(path.fillColor, 'red', 'path.fillColor');
compareRGBColors(path.strokeColor, 'green', 'path.strokeColor');
});
test('getting group styles', function() {
@ -54,7 +54,7 @@ test('getting group styles', function() {
path.fillColor = 'red';
group.appendTop(path);
compareRGBColors(group.fillColor, 'red');
compareRGBColors(group.fillColor, 'red', 'group.fillColor');
var secondPath = new Path();
secondPath.fillColor = 'black';
@ -62,11 +62,11 @@ test('getting group styles', function() {
// the group now contains two paths with different fillColors and therefore
// should return null:
equals(group.fillColor, null);
equals(group.fillColor, null, 'group.fillColor');
//If we remove the first path, it should now return 'black':
group.children[0].remove();
compareRGBColors(group.fillColor, 'black');
compareRGBColors(group.fillColor, 'black', 'group.fillColor');
});
test('setting group styles', function() {
@ -86,11 +86,11 @@ test('setting group styles', function() {
// the paths contained in the group should now both have their fillColor
// set to black:
compareRGBColors(path.fillColor, 'black');
compareRGBColors(secondPath.fillColor, 'black');
compareRGBColors(path.fillColor, 'black', 'path.fillColor');
compareRGBColors(secondPath.fillColor, 'black', 'secondPath.fillColor');
// The second path still has its strokeColor set to red:
compareRGBColors(secondPath.strokeColor, 'red');
compareRGBColors(secondPath.strokeColor, 'red', 'secondPath.strokeColor');
});
test('setting group styles 2', function() {
@ -100,31 +100,31 @@ test('setting group styles 2', function() {
path.fillColor = 'red';
group.appendTop(path);
compareRGBColors(group.fillColor, 'red');
compareRGBColors(group.fillColor, 'red', 'group.fillColor');
var secondPath = new Path();
secondPath.fillColor = 'blue';
secondPath.strokeColor = 'red';
group.appendTop(secondPath);
compareRGBColors(secondPath.fillColor, 'blue');
compareRGBColors(secondPath.strokeColor, 'red');
compareRGBColors(secondPath.fillColor, 'blue', 'secondPath.fillColor');
compareRGBColors(secondPath.strokeColor, 'red', 'secondPath.strokeColor');
// By appending a path with a different fillcolor,
// the group's fillColor should return null:
equals(group.fillColor, null);
// the group's fillColor should return undefined:
equals(group.fillColor, undefined, 'group.fillColor');
// But, both paths have a red strokeColor, so:
compareRGBColors(group.strokeColor, 'red');
compareRGBColors(group.strokeColor, 'red', 'group.strokeColor');
// Change the fill color of the group's style:
group.style.fillColor = 'black';
// the paths contained in the group should now both have their fillColor
// set to black:
compareRGBColors(path.fillColor, 'black');
compareRGBColors(secondPath.fillColor, 'black');
compareRGBColors(path.fillColor, 'black', 'path.fillColor');
compareRGBColors(secondPath.fillColor, 'black', 'secondPath.fillColor');
// The second path still has its strokeColor set to red:
compareRGBColors(secondPath.strokeColor, 'red');
compareRGBColors(secondPath.strokeColor, 'red', 'secondPath.strokeColor');
});