colors_transform

Crates.io

A module for color conversion and mutation written in Rust.

Online documentation

Cargo.toml Entries

Add the following lines to your Cargo.toml file:

toml [dependencies] colors_transform = "0.2"

For now you can work with four color representation options: Rgb, Rgb, Hsl, Hsla. Each of them has a variety of methods to modify and convert. See the Color trait they implement. There are also a couple of methods for hex string color.

All values are given as f32 for more accurate calculations.

What It Can Do

getters & setters

```Rust use colorstransform::{Rgb, Color}; let rgb = Rgb::fromtuple((57.3, 12.7, 53.0)); // where tuple is ($red, $green, $blue)

let modified = rgb .setred(245.0) // Rgb { r: 245.0, g: 152.0, b: 53.0 } .setgreen(152.0) // Rgb { r: 245.0, g: 152.0, b: 53.0 } .set_hue(279.0); // Rgb { r: 177.80003, g: 53.00001, b: 245.0 }

let saturation = rgb.getsaturation(); // 63.71429 let blue = rgb.getblue(); // 53.00001

```

conversion

Rust let hex_color = Hsl::from_tuple((315.9, 99.7, 50.0)) // where tuple is ($hue, $saturation, $lightness) .to_rgb() // ~Rgb { r: 254.6, g: 0.38, b: 187.24 } .set_saturation(33.3) // ~Rgb { r: 169.9, g: 85.04, b: 147.45 } .to_hsla() // Hsla { h: 315.9, s: 33.3, l: 50.0 alpha: 1.0 } .set_alpha(0.47) // Hsla { h: 315.9, s: 99.7, l: 50.0 alpha: 0.47 } .to_rgb() // Rgb { r: 169.95749, g: 85.0425, b: 147.45502 } .to_css_hex_string(); // #aa5593

modification

Rust let rgb = Rgb::from_tuple((245.0,152.0,53.0)) .lighten(21.0) // Rgb { r: 250.05188, g: 204.03442, b: 155.04813 } .saturate( 3.9999 ); // Rgb { r: 252.14981, g: 204.1, b: 152.9502 } // TODO: grayscale, invert and other

parsing from string

```Rust let hsla: Hsla = "hsla(359,12,71,0.3)".parse().unwrap(); // Hsla { h: 359.0, s: 12.0, l: 71.0 alpha: 0.3 }

let rgb = "rgb(12,13,14)" .parse::() .unwrap() .adjust_color( RgbColor::Green, 139.7 ); // Rgb { r: 12.0, g: 152.7, b: 14.0 }

let rgb = Rgb::fromhexstr("#fc0").unwrap(); // Rgb { r: 255.0, g: 204.0, b: 0.0 } ```

As you see it is completely chainable.

Color unit ranges

All color units is f32. Here are their ranges: - red - 0.0 .. 255.0 - green - 0.0 .. 255.0 - blue - 0.0 .. 255.0 - hue - 0.0 .. 360.0 - saturation - 0.0 .. 100.0 - lightness - 0.0 .. 100.0 - alpha - 0.0 .. 1.0

Enjoy using!

License

This module is MIT licensed.