mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-01 02:38:43 -05:00
205 lines
No EOL
5.7 KiB
JavaScript
205 lines
No EOL
5.7 KiB
JavaScript
/*
|
|
* Paper.js
|
|
*
|
|
* This file is part of Paper.js, a JavaScript Vector Graphics Library,
|
|
* based on Scriptographer.org and designed to be largely API compatible.
|
|
* http://paperjs.org/
|
|
* http://scriptographer.org/
|
|
*
|
|
* Copyright (c) 2011, Juerg Lehni & Jonathan Puckey
|
|
* http://lehni.org/ & http://jonathanpuckey.com/
|
|
*
|
|
* Distributed under the MIT license. See LICENSE file for details.
|
|
*
|
|
* All rights reserved.
|
|
*/
|
|
|
|
module('Color');
|
|
|
|
test('Set named color', function() {
|
|
var path = new Path();
|
|
path.fillColor = 'red';
|
|
compareRgbColors(path.fillColor, new RgbColor(1, 0, 0));
|
|
equals(path.fillColor.toCssString(), 'rgba(255, 0, 0, 1)');
|
|
});
|
|
|
|
test('Set color to hex', function() {
|
|
var path = new Path();
|
|
path.fillColor = '#ff0000';
|
|
compareRgbColors(path.fillColor, new RgbColor(1, 0, 0));
|
|
equals(path.fillColor.toCssString(), 'rgba(255, 0, 0, 1)');
|
|
|
|
var path = new Path();
|
|
path.fillColor = '#f00';
|
|
compareRgbColors(path.fillColor, new RgbColor(1, 0, 0));
|
|
equals(path.fillColor.toCssString(), 'rgba(255, 0, 0, 1)');
|
|
});
|
|
|
|
test('Set color to object', function() {
|
|
var path = new Path();
|
|
path.fillColor = { red: 1, green: 0, blue: 1};
|
|
compareRgbColors(path.fillColor, new RgbColor(1, 0, 1));
|
|
equals(path.fillColor.toCssString(), 'rgba(255, 0, 255, 1)');
|
|
|
|
var path = new Path();
|
|
path.fillColor = { gray: 0.2 };
|
|
compareRgbColors(path.fillColor, new RgbColor(0.8, 0.8, 0.8));
|
|
equals(path.fillColor.toCssString(), 'rgba(204, 204, 204, 1)');
|
|
});
|
|
|
|
test('Set color to array', function() {
|
|
var path = new Path();
|
|
path.fillColor = [1, 0, 0];
|
|
compareRgbColors(path.fillColor, new RgbColor(1, 0, 0));
|
|
equals(path.fillColor.toCssString(), 'rgba(255, 0, 0, 1)');
|
|
});
|
|
|
|
test('Creating colors', function() {
|
|
|
|
compareRgbColors(new RgbColor('#ff0000'), new RgbColor(1, 0, 0),
|
|
'RgbColor from hex code');
|
|
|
|
compareRgbColors(new RgbColor({ red: 1, green: 0, blue: 1}),
|
|
new RgbColor(1, 0, 1), 'RgbColor from rgb object literal');
|
|
|
|
compareRgbColors(new RgbColor({ gray: 0.2 }),
|
|
new RgbColor(0.8, 0.8, 0.8), 'RgbColor from gray object literal');
|
|
|
|
compareRgbColors(new RgbColor({ hue: 0, saturation: 1, brightness: 1}),
|
|
new RgbColor(1, 0, 0), 'RgbColor from hsb object literal');
|
|
|
|
compareRgbColors(new RgbColor([1, 0, 0]), new RgbColor(1, 0, 0),
|
|
'RgbColor from array');
|
|
|
|
compareHsbColors(new HsbColor('#000000'), new HsbColor(0, 0, 0),
|
|
'HsbColor from hex code');
|
|
|
|
compareHsbColors(new HsbColor({ red: 1, green: 0, blue: 0}),
|
|
new HsbColor(0, 1, 1), 'HsbColor from rgb object literal');
|
|
|
|
compareHsbColors(new HsbColor({ gray: 0.8 }),
|
|
new HsbColor(0, 0, 0.2), 'RgbColor from gray object literal');
|
|
|
|
compareHsbColors(new HsbColor([1, 0, 0]), new HsbColor(1, 0, 0),
|
|
'HsbColor from array');
|
|
|
|
compareGrayColors(new GrayColor('#000000'), new GrayColor(1),
|
|
'GrayColor from hex code');
|
|
|
|
compareGrayColors(new GrayColor('#ffffff'), new GrayColor(0),
|
|
'GrayColor from hex code');
|
|
|
|
compareGrayColors(new GrayColor({ red: 1, green: 1, blue: 1}),
|
|
new GrayColor(0), 'GrayColor from rgb object literal');
|
|
|
|
compareGrayColors(new GrayColor({ gray: 0.2 }),
|
|
new GrayColor(0.2), 'GrayColor from gray object literal');
|
|
|
|
compareGrayColors(new GrayColor({ hue: 0, saturation: 0, brightness: 0.8}),
|
|
new GrayColor(0.2), 'GrayColor from hsb object literal');
|
|
|
|
compareGrayColors(new GrayColor([1]), new GrayColor(1),
|
|
'GrayColor from array');
|
|
});
|
|
|
|
test('Get gray from RgbColor', function() {
|
|
var color = new RgbColor(1, 0.5, 0.2);
|
|
compareNumbers(color.gray, 0.38458251953125);
|
|
|
|
var color = new RgbColor(0.5, 0.2, 0.1);
|
|
compareNumbers(color.gray, 0.72137451171875);
|
|
});
|
|
|
|
test('Get gray from HsbColor', function() {
|
|
var color = new HsbColor(0, 0, 0.2);
|
|
compareNumbers(color.gray, 0.8);
|
|
});
|
|
|
|
test('Get red from HsbColor', function() {
|
|
var color = new HsbColor(0, 1, 1);
|
|
compareNumbers(color.red, 1);
|
|
});
|
|
|
|
test('Get hue from RgbColor', function() {
|
|
var color = new RgbColor(1, 0, 0);
|
|
compareNumbers(color.hue, 0);
|
|
compareNumbers(color.saturation, 1);
|
|
});
|
|
|
|
test('Gray Color', function() {
|
|
var color = new GrayColor(1);
|
|
compareNumbers(color.gray, 1);
|
|
compareNumbers(color.red, 0);
|
|
|
|
color.red = 0.5;
|
|
compareNumbers(color.gray, '0.84999');
|
|
|
|
color.green = 0.2;
|
|
compareNumbers(color.gray, '0.82051');
|
|
});
|
|
|
|
test('Converting Colors', function() {
|
|
var rgbColor = new RgbColor(1, 0.5, 0.2);
|
|
compareNumbers(new GrayColor(rgbColor).gray, 0.38299560546875);
|
|
|
|
var grayColor = new GrayColor(0.2);
|
|
var rgbColor = new RgbColor(grayColor);
|
|
compareRgbColors(rgbColor, [ 0.8, 0.8, 0.8, 1]);
|
|
|
|
var hsbColor = new HsbColor(grayColor);
|
|
compareHsbColors(hsbColor, [ 0, 0, 0.8, 1]);
|
|
|
|
var rgbColor = new RgbColor(1, 0, 0);
|
|
compareHsbColors(new HsbColor(rgbColor), [0, 1, 1, 1]);
|
|
});
|
|
|
|
test('Setting RgbColor#gray', function() {
|
|
var color = new RgbColor(1, 0.5, 0.2);
|
|
color.gray = 0.1;
|
|
compareRgbColors(color, [ 0.9, 0.9, 0.9, 1]);
|
|
});
|
|
|
|
test('Setting HsbColor#red', function() {
|
|
var color = new HsbColor(180, 0, 0);
|
|
color.red = 1;
|
|
compareHsbColors(color, [0, 1, 1, 1]);
|
|
});
|
|
|
|
test('Setting HsbColor#gray', function() {
|
|
var color = new HsbColor(180, 0, 0);
|
|
color.gray = 0.5;
|
|
compareHsbColors(color, [0, 0, 0.5, 1]);
|
|
});
|
|
|
|
test('Color.read(channels)', function() {
|
|
var color = Color.read([0, 0, 1]);
|
|
compareRgbColors(color, [0, 0, 1, 1]);
|
|
});
|
|
|
|
test('Cloning colors', function() {
|
|
var color = new RgbColor(0, 0, 0);
|
|
equals(function() {
|
|
return color.clone() != color;
|
|
}, true);
|
|
|
|
equals(function() {
|
|
return new RgbColor(color) != color;
|
|
}, true);
|
|
});
|
|
|
|
test('Color#convert', function() {
|
|
var color = new RgbColor(0, 0, 0);
|
|
var converted = color.convert('rgb');
|
|
equals(function() {
|
|
return converted !== color;
|
|
}, true);
|
|
equals(function() {
|
|
return converted.equals(color);
|
|
}, true);
|
|
});
|
|
|
|
test('Saturation from black rgb', function() {
|
|
equals(function() {
|
|
return new RgbColor(0, 0, 0).saturation == 0;
|
|
}, true);
|
|
}); |