Struct i_slint_core::Color
source · #[repr(C)]pub struct Color { /* private fields */ }
Expand description
Color represents a color in the Slint run-time, represented using 8-bit channels for
red, green, blue and the alpha (opacity).
It can be conveniently converted using the to_
and from_
(a)rgb helper functions:
let col = some_color.to_argb_f32();
do_something_with_red_and_green(col.red, col.green);
let RgbaColor { red, blue, green, .. } = some_color.to_argb_u8();
do_something_with_red(red);
let new_col = Color::from(RgbaColor{ red: 0.5, green: 0.65, blue: 0.32, alpha: 1.});
Implementations§
source§impl Color
impl Color
sourcepub const fn from_argb_encoded(encoded: u32) -> Color
pub const fn from_argb_encoded(encoded: u32) -> Color
Construct a color from an integer encoded as 0xAARRGGBB
sourcepub fn as_argb_encoded(&self) -> u32
pub fn as_argb_encoded(&self) -> u32
Returns (alpha, red, green, blue)
encoded as u32
sourcepub const fn from_argb_u8(alpha: u8, red: u8, green: u8, blue: u8) -> Self
pub const fn from_argb_u8(alpha: u8, red: u8, green: u8, blue: u8) -> Self
Construct a color from the alpha, red, green and blue color channel parameters.
sourcepub const fn from_rgb_u8(red: u8, green: u8, blue: u8) -> Self
pub const fn from_rgb_u8(red: u8, green: u8, blue: u8) -> Self
Construct a color from the red, green and blue color channel parameters. The alpha channel will have the value 255.
sourcepub fn from_argb_f32(alpha: f32, red: f32, green: f32, blue: f32) -> Self
pub fn from_argb_f32(alpha: f32, red: f32, green: f32, blue: f32) -> Self
Construct a color from the alpha, red, green and blue color channel parameters.
sourcepub fn from_rgb_f32(red: f32, green: f32, blue: f32) -> Self
pub fn from_rgb_f32(red: f32, green: f32, blue: f32) -> Self
Construct a color from the red, green and blue color channel parameters. The alpha channel will have the value 255.
sourcepub fn to_argb_u8(&self) -> RgbaColor<u8>
pub fn to_argb_u8(&self) -> RgbaColor<u8>
Converts this color to an RgbaColor struct for easy destructuring.
sourcepub fn to_argb_f32(&self) -> RgbaColor<f32>
pub fn to_argb_f32(&self) -> RgbaColor<f32>
Converts this color to an RgbaColor struct for easy destructuring.
sourcepub fn from_hsva(hue: f32, saturation: f32, value: f32, alpha: f32) -> Self
pub fn from_hsva(hue: f32, saturation: f32, value: f32, alpha: f32) -> Self
Construct a color from the hue, saturation, and value HSV color space parameters.
Hue is between 0 and 360, the others parameters between 0 and 1.
sourcepub fn brighter(&self, factor: f32) -> Self
pub fn brighter(&self, factor: f32) -> Self
Returns a new version of this color that has the brightness increased
by the specified factor. This is done by converting the color to the HSV
color space and multiplying the brightness (value) with (1 + factor).
The result is converted back to RGB and the alpha channel is unchanged.
So for example brighter(0.2)
will increase the brightness by 20%, and
calling brighter(-0.5)
will return a color that’s 50% darker.
sourcepub fn darker(&self, factor: f32) -> Self
pub fn darker(&self, factor: f32) -> Self
Returns a new version of this color that has the brightness decreased
by the specified factor. This is done by converting the color to the HSV
color space and dividing the brightness (value) by (1 + factor). The
result is converted back to RGB and the alpha channel is unchanged.
So for example darker(0.3)
will decrease the brightness by 30%.
sourcepub fn transparentize(&self, factor: f32) -> Self
pub fn transparentize(&self, factor: f32) -> Self
Returns a new version of this color with the opacity decreased by factor
.
The transparency is obtained by multiplying the alpha channel by (1 - factor)
.
§Examples
Decreasing the opacity of a red color by half:
let red = Color::from_argb_u8(255, 255, 0, 0);
assert_eq!(red.transparentize(0.5), Color::from_argb_u8(128, 255, 0, 0));
Decreasing the opacity of a blue color by 20%:
let blue = Color::from_argb_u8(200, 0, 0, 255);
assert_eq!(blue.transparentize(0.2), Color::from_argb_u8(160, 0, 0, 255));
Negative values increase the opacity
let blue = Color::from_argb_u8(200, 0, 0, 255);
assert_eq!(blue.transparentize(-0.1), Color::from_argb_u8(220, 0, 0, 255));
sourcepub fn mix(&self, other: &Self, factor: f32) -> Self
pub fn mix(&self, other: &Self, factor: f32) -> Self
Returns a new color that is a mix of this color and other
. The specified factor is
clamped to be between 0.0
and 1.0
and then applied to this color, while 1.0 - factor
is applied to other
.
§Examples
Mix red with black half-and-half:
let red = Color::from_rgb_u8(255, 0, 0);
let black = Color::from_rgb_u8(0, 0, 0);
assert_eq!(red.mix(&black, 0.5), Color::from_rgb_u8(128, 0, 0));
Mix Purple with OrangeRed, with 75%
purpe and 25%
orange red ratio:
let purple = Color::from_rgb_u8(128, 0, 128);
let orange_red = Color::from_rgb_u8(255, 69, 0);
assert_eq!(purple.mix(&orange_red, 0.75), Color::from_rgb_u8(160, 17, 96));
sourcepub fn with_alpha(&self, alpha: f32) -> Self
pub fn with_alpha(&self, alpha: f32) -> Self
Returns a new version of this color with the opacity set to alpha
.
Trait Implementations§
source§impl InterpolatedPropertyValue for Color
impl InterpolatedPropertyValue for Color
source§fn interpolate(&self, target_value: &Self, t: f32) -> Self
fn interpolate(&self, target_value: &Self, t: f32) -> Self
source§impl PartialOrd for Color
impl PartialOrd for Color
impl Copy for Color
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> CloneToUninit for Twhere
T: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)