Color

Struct Color 

Source
pub struct Color(pub [u8; 4]);
Expand description

Represents a color in RGBA format.

This struct encapsulates color information using red, green, blue, and alpha (opacity) channels. Each channel is an 8-bit unsigned integer.

§Examples

Creating and manipulating colors:

use grafo::Color;

// Create a black color
let black = Color::BLACK;

// Create a red color with full opacity
let red = Color::rgb(255, 0, 0);

// Create a semi-transparent blue color
let semi_blue = Color::rgba(0, 0, 255, 128);

// Normalize the color values to [0.0, 1.0]
let normalized = red.normalize();
assert_eq!(normalized, [1.0, 0.0, 0.0, 1.0]);

// Convert the color to an array
let color_array = semi_blue.to_array();
assert_eq!(color_array, [0, 0, 255, 128]);

Tuple Fields§

§0: [u8; 4]

Implementations§

Source§

impl Color

Source

pub const TRANSPARENT: Self

A transparent color.

All color channels are set to zero, making the color fully transparent.

Source

pub const BLACK: Self

A black color.

Red, green, and blue channels are set to zero, and alpha is fully opaque.

Source

pub const WHITE: Self

A white color.

Red, green, and blue channels are set to zero, and alpha is fully opaque.

Source

pub fn rgb(r: u8, g: u8, b: u8) -> Self

Creates a new color with the specified RGB values and full opacity.

§Parameters
  • r: Red channel (0-255)
  • g: Green channel (0-255)
  • b: Blue channel (0-255)
§Examples
use grafo::Color;

let green = Color::rgb(0, 255, 0);
assert_eq!(green, Color([0, 255, 0, 255]));
Source

pub fn rgba(r: u8, g: u8, b: u8, a: u8) -> Self

Creates a new color with the specified RGBA values.

§Parameters
  • r: Red channel (0-255)
  • g: Green channel (0-255)
  • b: Blue channel (0-255)
  • a: Alpha channel (0-255), where 0 is fully transparent and 255 is fully opaque
§Examples
use grafo::Color;

// Semi-transparent purple
let purple = Color::rgba(128, 0, 128, 128);
assert_eq!(purple, Color([128, 0, 128, 128]));
Source

pub fn normalize(&self) -> [f32; 4]

Normalizes the color values to the range [0.0, 1.0].

This is useful for graphics operations that require floating-point color values.

§Examples
use grafo::Color;

let red = Color::rgb(255, 0, 0);
let normalized = red.normalize();
assert_eq!(normalized, [1.0, 0.0, 0.0, 1.0]);
Source

pub fn to_array(&self) -> [u8; 4]

Returns the color as an array of 4 u8 values.

§Examples
use grafo::Color;

let blue = Color::rgb(0, 0, 255);
let array = blue.to_array();
assert_eq!(array, [0, 0, 255, 255]);

Trait Implementations§

Source§

impl Clone for Color

Source§

fn clone(&self) -> Color

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Color

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Color

Source§

fn default() -> Color

Returns the “default value” for a type. Read more
Source§

impl PartialEq for Color

Source§

fn eq(&self, other: &Color) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Color

Source§

impl StructuralPartialEq for Color

Auto Trait Implementations§

§

impl Freeze for Color

§

impl RefUnwindSafe for Color

§

impl Send for Color

§

impl Sync for Color

§

impl Unpin for Color

§

impl UnwindSafe for Color

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,