Trait ansi_colours::AsRGB

source ·
pub trait AsRGB {
    // Required method
    fn as_u32(&self) -> u32;

    // Provided method
    fn to_ansi256(&self) -> u8 { ... }
}
Expand description

Type which (can) represent an sRGB colour. Used to provide overloaded versions of ansi256_from_rgb function.

Required Methods§

source

fn as_u32(&self) -> u32

Returns representation of the sRGB colour as a 24-bit 0xRRGGBB integer.

Provided Methods§

source

fn to_ansi256(&self) -> u8

Returns index of a colour in 256-colour ANSI palette approximating given sRGB colour.

This is provided by default and uses Self::as_u32 to determine 24-bit sRGB representation of the colour.

An implementation should provide its own definition if it can offer a more direct approximation. For example, if Self represents shades of grey, it’s faster to use ansi256_from_grey than relay on to_u32 conversion; or if it represents a variant which can store index in the palette or an RGB colour, it’s better to either return the index or perform approximation depending on the variant.

Implementations on Foreign Types§

source§

impl<C: Component> AsRGB for RGB<C>

source§

fn as_u32(&self) -> u32

Returns representation of the sRGB colour as a 24-bit 0xRRGGBB integer.

This implementation is present only if rgb crate feature is enabled. Implementation is provided for u8 and u16 colour component types.

Examples
use ansi_colours::{AsRGB, ansi256_from_rgb};

assert_eq!(0x123456, rgb::RGB8::new(0x12, 0x34, 0x56).as_u32());

assert_eq!( 16, ansi256_from_rgb(rgb::RGB8::new(  1,   1,   1)));
assert_eq!( 16, ansi256_from_rgb(rgb::RGB8::new(  0,   1,   2)));
assert_eq!( 67, ansi256_from_rgb(rgb::RGB8::new( 95, 135, 175)));
assert_eq!(231, ansi256_from_rgb(rgb::RGB8::new(255, 255, 255)));

assert_eq!(0x123456, rgb::RGB16::new(0x12ab, 0x34cd, 0x56ef).as_u32());

assert_eq!( 16, ansi256_from_rgb(rgb::RGB16::new(  256,   511,   256)));
assert_eq!( 16, ansi256_from_rgb(rgb::RGB16::new(  128,   256,   512)));
assert_eq!( 67, ansi256_from_rgb(rgb::RGB16::new(24500, 34600, 44800)));
assert_eq!(231, ansi256_from_rgb(rgb::RGB16::new(65535, 65535, 65535)));
source§

impl<'a, T: AsRGB + ?Sized> AsRGB for &'a T

source§

fn as_u32(&self) -> u32

source§

impl AsRGB for u32

Representation of an RGB colour as 24-bit 0xRRGGBB integer.

source§

fn as_u32(&self) -> u32

source§

impl AsRGB for [u8; 3]

source§

fn as_u32(&self) -> u32

source§

impl AsRGB for (u8, u8, u8)

source§

fn as_u32(&self) -> u32

source§

impl<C: Component> AsRGB for BGR<C>

source§

fn as_u32(&self) -> u32

Returns representation of the sRGB colour as a 24-bit 0xRRGGBB integer.

This implementation is present only if rgb crate feature is enabled. Implementation is provided for u8 and u16 colour component types.

Examples
use ansi_colours::{AsRGB, ansi256_from_rgb};
use rgb::alt::{BGR8, BGR16};

assert_eq!(0x123456, BGR8 { b: 0x56, g: 0x34, r: 0x12 }.as_u32());

assert_eq!( 16, ansi256_from_rgb(BGR8 { r:   1, g:   1, b:   1 }));
assert_eq!( 16, ansi256_from_rgb(BGR8 { r:   0, g:   1, b:   2 }));
assert_eq!( 67, ansi256_from_rgb(BGR8 { r:  95, g: 135, b: 175 }));
assert_eq!(231, ansi256_from_rgb(BGR8 { r: 255, g: 255, b: 255 }));

assert_eq!(0x123456, BGR16 { b: 0x56ef, g: 0x34cd, r: 0x12ab }.as_u32());

assert_eq!( 16, ansi256_from_rgb(BGR16 { r:   256, g:   511, b:   256 }));
assert_eq!( 16, ansi256_from_rgb(BGR16 { r:   128, g:   256, b:   512 }));
assert_eq!( 67, ansi256_from_rgb(BGR16 { r: 24500, g: 34600, b: 44800 }));
assert_eq!(231, ansi256_from_rgb(BGR16 { r: 65535, g: 65535, b: 65535 }));
source§

impl<C: Component> AsRGB for Gray<C>

source§

fn to_ansi256(&self) -> u8

Returns index of a colour in 256-colour ANSI palette approximating given shade grey.

This implementation is present only if rgb crate feature is enabled. Implementation is provided for u8 and u16 colour component types.

Examples
use ansi_colours::ansi256_from_rgb;

assert_eq!(244, ansi256_from_rgb(rgb::alt::Gray::<u8>(128)));
assert_eq!(244, ansi256_from_rgb(rgb::alt::Gray::<u16>(33023)));
source§

fn as_u32(&self) -> u32

Implementors§