pigment v0.1.0
Pigment
A color information, conversion and manipulation library with support for various color models!
Installation
$ npm install pigmentUsage
To use pigment in your projects, you need to require the node module first.
var Color = require("pigment");If you don't need all the functionality, you can use the basic package.
var Color = require("pigment/basic");The basic package supports the name, rgb, hex and hsl color models.
It also includes the following methods for color manipulation,
luminance()- luminance value of the colordarkness()- darkness value of the colornegate()- negative color of the colorgreyscale()/grayscale()- greyscale color from the colormix(add, weight)- mix with another color, whereaddis a valid color of any supported models,weight(0-1, default: 0.5) is the amount to addfadein(ratio)- increase alpha value byratio(0-1)fadeout(ratio)- decrease alpha value byratio(0-1)rotate(degrees)- rotate the hue bydegrees(0-360)saturate(ratio)- increase the saturation byratio(0-1)desaturate(ratio)- decrease the saturation byratio(0-1)lighten(ratio)- increase the luma byratio(0-1)darken(ratio)- decrease the luma byratio(0-1)
The default package supports all the models supported by the basic package as well as the hsv, hwb, xyz, lab and cmyk color models;
You can use the full package if you want color schemes and color blindness support.
var Color = require("pigment/full");To be able to perform any operations on a color, create a new color object. To convert to a specific color model, just prefix the model name by to.
var c = new Color("#f06860");
/* Get the color in hex, rgb, hsl etc. */
c.tohex(); // #f06860
c.torgb(); // rgb(240, 104, 96)
c.tohsla(); // hsla(3, 83%, 66%, 1)
/* Get luminance or darkness of the color */
c.luminance(); // 0.29270422282503833
c.darkness(); // 0.4362666666666666
/* Perform operations on the color */
c.fadeout(.2).mix("#e9f060", .5).fadein(.1).torgba(); // rgba(236, 186, 96, 0.99)Apart from color conversion and manipulation, pigment is also able to parse a chunk of text to find out any colors.
var colors = Color.parse("Some roses aren't #ff0000, some violets aren't rgb(0, 0, 255), nobody's wrong, except maybe you!")
for (var i = 0, l = colors.length; i < l; i++) {
console.log(colors[i].tohex()); // #ff0000, #0000ff
}Generating a random color is also easy,
Color.random().tohex(); // #a68a4bCore API
All the functionality in pigment is achieved with models. The addModel method can be used to add a new color model to pigment.
Color.addModel(name, model);The model object must consist 3 properties,
match- A function or a regex which is used to detect if the color is represented in the specific model representation.format- A function which formats the color string into model's representation.convert- A function which converts the color object into model's representation.frommodel- A function which converts the model's representation into an object withred,greenandblueproperties, and an optionalalphaproperty.tomodel- A function which converts the color to the model representation.
There is also an optional init method which is called when instantiating a color object.
Any dependencies on other color models can be specified with a depends property with the model names in an array.
Have a look at the models directory in the repository for examples.