Colir

Build Status

Description

This tiny library provides support for RGB colours and some simple manipulations with them.

Installation

gem install colir

Synopsis

The name Colir means “colour” in Ukrainian (roughly). OK, enough of rant, let’s talk about the API instead.

Basics

You can create colours with human readable names. For example, the following code would create opaque red colour (0xff000000).

```ruby require ‘colir’

Create a new Colir.

red = Colir.red #=> #<Colir:…> # Get a valid RGB colour, represented as an integer number. red.hex #=> 16711680 # Why do you never trust me? red.hex.to_s(16) #=> “ff0000”

You can also get the same colour, but with alpha channel.

red.hexa #=> 4278190080 # Okay, okay! red.hexa.to_s(16) #=> “ff000000” ```

The list of all human readable colour names can be found at w3schools. Actually, you can create any valid RGB colours, not just the predefined ones.

ruby # This is valid. yup = Colir.new(0xff0000) #=> #<Colir:...> # This isn't. There is no such RGB colour. nope = Colir.new(0xff00001) #=> RangeError: out of allowed RGB values

Transparency

As you may have noticed, the library supports transparent colours.

```ruby # Shortcut methods have only 1 parameter, which is transparency. It must lie # within the range of 0..1 red = Colir.red(0.3) red.hexa #=> 4278190110 red.hexa.to_s(16) #=> “ff00001e” red.transparency #=> 0.3

With arbitrary colours you can pass the second parameter.

green = Colir.new(0x00ff00, 0.3) green.hexa #=> 16711710 green.hexa.to_s(16) #=> “0x00ff001e” green.transparency #=> 0.3

The default transparency is 0.0

green = Colir.new(0x00ff00) green.transparency #=> 0.0 ```

It’s possible to adjust a Colir’s transparency.

```ruby # #opaque! and #transparent! set a Colir’s transparency to 0.0 # and 1.0 respectively. blue = Colir.new(0x0000ff, 0.45) blue.transparency #=> 0.3 blue.transparent! #=> (Colir: 0x00ff00e1) blue.transparency #=> 0.0 blue.opaque! #=> (Colir: 0x00ff00ff) blue.transparency #=> 1.0

You can set your own transparency value.

blue.transparency = 0.9 #=> 0.9 blue.transparency #=> 0.9

But be careful, as the valid value is anything in between 0 and 1.

blue.transparency = 1.01 #=> RangeError: … ```

Shades

Last but not least, you can use colour shades.

```ruby yellow = Colir.yellow yellow.shade #=> 0

Let’s make it a bit darker.

yellow.darken #=> #<Colir:…> yellow.shade #=> -1 yellow.hex #=> 13421568

Hum, that’s not dark enough. Let’s do it one more time.

yellow.darken yellow.shade #=> -2 yellow.hex #=> 10066176

Actually, the previous shade was better!

yellow.lighten yellow.shade #=> -1 yellow.hex #=> 13421568 ```

The previous examples modify the Colir object (#darken and #lighten). Hovewer, there are two other methods that return a new object: #darker and #lighter.

```ruby # HEXes orange = Colir.orange orange.hex #=> 16753920 orange.darker.hex #=> 13403392 orange.hex #=> 16753920

Shades

orange = Colir.orange orange.shade #=> 0 orange.lighter.shade #=> 1 orange.shade #=> 0 ```

There is a handy way to reset the shade level. Can you guess it? Of course, it’s the #reset_shade method!

ruby indigo = Colir.indigo indigo.lighten indigo.lighten indigo.lighten indigo.lighten indigo.lighten indigo.shades #=> 5 indigo.reset_shade #=> #<Colir:...> indigo.shade #=> 0

Limitations

OS support

Colir is a cross-platform library.

Rubies

  • Ruby 1.9.3 and higher
  • Rubinius 2.0.0rc1 and higher (mode 1.9 and higher)

Initially I wanted to supprot JRuby 1.7.3 (mode 1.9), but it has a critical bug in BigDecimal library, which Colir actively utilises.

Credits

  • The first contributor badge goes to kachick

Licence

The project uses Zlib licence. See LICENCE file for more information.