Skip to content

A rgb color gem, with a list of 750 diferent colors defined within 869 names

License

Notifications You must be signed in to change notification settings

P3t3rU5/pigment

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pigment

To install:

gem install pigment

Usage

RGB Color Format

The RGB color format is represented with four components between 0.0 and 1.0, representing 0 to 255

  • @red
  • @green
  • @blue
  • @alpha
require 'pigment/color/rgb'

red = Pigment::Color::RGB.new(1.0, 0.0, 0.0)
# RGB Color(red: 1.0, green: 0.0, blue: 0.0, alpha: 0.0)

red.to_a
# [1.0, 0.0, 0.0, 1.0]

semitransparent_red = Pigment::Color::RGB.new(1.0, 0.0, 0.0, 0.5)
# RGB Color(red: 1.0, green: 0.0, blue: 0.0, alpha: 0.5)

red + semitransparent_red
# RGB Color(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)

semitransparent_red + red 
# RGB Color(red: 1.0, green: 0.0, blue: 0.0, alpha: 0.5)

red - semitransparent_red
# RGB Color(red: 0.0, green: 0.0, blue: 0.0, alpha: 1.0)

half_red = red / 2
# RGB Color(red: 0.5, green: 0.0, blue: 0.0, alpha: 1.0)

half_red * 2 == red
# true

gray50 = Pigment::Color::RGB.new(1.0, 0.5, 0.0).grayscale
# RGB Color(red: 0.5, green: 0.5, blue: 0.5, alpha: 1.0)

gray50.grayscale?
# true

cyan = red.inverse
# RGB Color(red: 0.0, green: 1.0, blue: 1.0, alpha: 1.0)

green, blue = red.triadic
# [RGB Color(red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0), RGB Color(red: 0.0, green: 0.0, blue: 1.0, alpha: 1.0)]

red.to_hex
# '0xff0000ff'

red.to_hex(with_alpha: false)
# '0xff0000'

Pigment::Color::RGB.convert(Pigment::Color::HSL.new(0.0, 1, 0.5))
# RGB Color(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)

HSL Color Format

The HSL color format is represented with

  • @hue - a value from 0.0 to 1.0, representing 0 to 360 degrees
  • @saturation - a value from 0.0 to 1.0
  • @lightness - a value from 0.0 to 1.0
  • @alpha - a value from 0.0 to 1.0

This format is useful to calculate related colors:

  • triadic
  • split
  • analogous
  • tetradic
  • rectangular
  • tertiary
require 'pigment/color/hsl'

hsl_red = Pigment::Color::HSL.convert(red)
# HSL Color(hue: 0.0, saturation: 1.0, lightness: 0.5, alpha: 1.0)

hsl_red == Pigment::Color::HSL(0.0, 1, 0.5)
# HSL Color(hue: 0.0, saturation: 1.0, lightness: 0.5, alpha: 1.0)

hsl_red.triadic
hsl_red.split
hsl_red.analogous
hsl_red.tetradic
hsl_red.rectangular
hsl_red.tertiary

Color Module

The color module works as the base for any possible color format, implementing common methods

red.to_html
# '#ff0000'

red.into(Pigment::HSL)
# HSL Color(hue: 0.0, saturation: 1.0, lightness: 0.5, alpha: 1.0)

red.inverse?(cyan)
# true

red.triadic_of?(blue)
# true

red.triadic_include?(green, blue)
# true

red.split_of?
red.split_include?
red.analogous_of?
red.analogous_include?
red.tetradic_of?
red.tetradic_include?
red.rectangular_of?
red.rectangular_include?
red.tertiary_of?
red.tertiary_include?
# of -> checks if self is included in argument result  
# include -> checks if arguments are included in self result  

Color Palette

require 'pigment/palette'

pallete = Pigment::Palette.new(
  red: red,
  blue: blue,
)

pallete[:red]
# RGB Color(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)

pallete[:green] = green
# RGB Color(red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0)

# Pigment::Palette is enumerable

palette.map.to_a
# [RGB Color(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0), RGB Color(red: 0.0, green: 0.0, blue: 1.0, alpha: 1.0), RGB Color(red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0)]

Default Color Palette

require 'pigment/default_rgb_palette'

Pigment::Palette::RGB::DEFAULT[:Red]
# RGB Color(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)


Pigment::Palette::RGB::Green
# RGB Color(red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0)

Pigment::Palette::RGB.Blue
# RGB Color(red: 0.0, green: 0.0, blue: 1.0, alpha: 1.0)

Changes

See Changelog

Future Work

  • new color formats:
    • Y'CbCr
    • RYB
    • CMYK
  • redesign of Base Color module to support Additive color formats
  • Palette Loader to load palette files

License

See License

Related interests

  • color-names: javascript collection of 25586 color names

About

A rgb color gem, with a list of 750 diferent colors defined within 869 names

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages