Crate csscolorparser[][src]

Expand description

Overview

Rust library to parse CSS color string as defined in the W3C’s CSS Color Module Level 4.

Supported Color Format

  • Named colors
  • RGB hexadecimal (with and without # prefix)
    • Short format #rgb
    • Short format with alpha #rgba
    • Long format #rrggbb
    • Long format with alpha #rrggbbaa
  • rgb() and rgba()
  • hsl() and hsla()
  • hwb()
  • hwba(), hsv(), hsva() - not in CSS standard.

Not yet supported: lab(), lch().

Example Color Format

transparent
gold
rebeccapurple
lime
#0f0
#0f0f
#00ff00
#00ff00ff
rgb(0,255,0)
rgb(0% 100% 0%)
rgb(0 255 0 / 100%)
rgba(0,255,0,1)
hsl(120,100%,50%)
hsl(120deg 100% 50%)
hsl(-240 100% 50%)
hsl(-240deg 100% 50%)
hsl(0.3333turn 100% 50%)
hsl(133.333grad 100% 50%)
hsl(2.0944rad 100% 50%)
hsla(120,100%,50%,100%)
hwb(120 0% 0%)
hwb(480deg 0% 0% / 100%)
hsv(120,100%,100%)
hsv(120deg 100% 100% / 100%)

Usage

Add this to your Cargo.toml

csscolorparser = "0.5.0"

Examples

Using csscolorparser::parse() function.

let c = csscolorparser::parse("rgb(100%,0%,0%)")?;

assert_eq!(c.rgba(), (1.0, 0.0, 0.0, 1.0));
assert_eq!(c.rgba_u8(), (255, 0, 0, 255));
assert_eq!(c.to_hex_string(), "#ff0000");
assert_eq!(c.to_rgb_string(), "rgb(255,0,0)");

Using parse() method on &str.

use csscolorparser::Color;

let c = "#ff00007f".parse::<Color>()?;

assert_eq!(c.rgba_u8(), (255, 0, 0, 127));
assert_eq!(c.to_hex_string(), "#ff00007f");

Default Feature

Optional Features

  • rust-rgb: Enables converting from rgb crate types into Color.
  • cint: Enables converting cint crate types to and from Color.
  • serde: Enables serializing (into HEX string) and deserializing (from any supported string color format) using serde framework.

Structs

Color

The color

Enums

ParseColorError

Functions

parse

Parse CSS color string