Project

color

0.32
No release in over 3 years
Low commit activity in last 3 years
Color is a Ruby library to provide basic RGB, CMYK, HSL, and other colourspace manipulation support to applications that require it. It also provides 152 named RGB colours (184 with spelling variations) that are commonly supported in HTML, SVG, and X11 applications. A technique for generating monochromatic contrasting palettes is also included. The Color library performs purely mathematical manipulation of the colours based on colour theory without reference to colour profiles (such as sRGB or Adobe RGB). For most purposes, when working with RGB and HSL colour spaces, this won't matter. Absolute colour spaces (like CIE L*a*b* and XYZ) and cannot be reliably converted to relative colour spaces (like RGB) without colour profiles. Color 1.8 adds an alpha parameter to all <tt>#css_rgba</tt> calls, fixes a bug exposed by new constant lookup semantics in Ruby 2, and ensures that <tt>Color.equivalent?</tt> can only be called on Color instances. Barring bugs introduced in this release, this (really) is the last version of color that supports Ruby 1.8, so make sure that your gem specification is set properly (to <tt>~> 1.8</tt>) if that matters for your application. This version will no longer be supported one year after the release of color 2.0.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies
 Project Readme

Color -- Color Math in Ruby

Description

Color is a Ruby library to provide RGB, CMYK, HSL, and other color space manipulation support to applications that require it. It provides optional named RGB colors that are commonly supported in HTML, # SVG, and X11 applications.

The Color library performs purely mathematical manipulation of the colors based on color theory without reference to device color profiles (such as sRGB or Adobe RGB). For most purposes, when working with RGB and HSL color spaces, this won't matter. Absolute color spaces (like CIE LAB and CIE XYZ) cannot be reliably converted to relative color spaces (like RGB) without color profiles. When necessary for conversions, Color provides D65 and D50 reference white values in Color::XYZ.

Color 2.0 is a major release, dropping support for all versions of Ruby prior to 3.2 as well as removing or renaming a number of features. The main breaking changes are:

  • Color classes are immutable Data objects; they are no longer mutable.
  • RGB named colors are no longer loaded on gem startup, but must be required explicitly (this is not done via autoload because there are more than 100 named colors with spelling variations) with require "color/rgb/colors".
  • Color palettes have been removed.
  • Color::CSS and Color::CSS#[] have been removed.

Examples

Suppose you want to make a given RGB color a little lighter. Adjusting the RGB color curves will change the hue and saturation will also change. Instead, use the CIE LAB color space keeping the color components intact, altering only the lightness component:

c = Color::RGB.from_values(r, g, b).to_lab

if (t = c.l / 50.0) < 1
  c.l = 50 * ((1.0 - t) * Math.sqrt(t) + t**2)
end

c.to_rgb