/* * 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); });