libnotcurses_sys/pixel/
reimplemented.rs

1//!
2
3use crate::c_api::NcPixel_u32;
4
5/// Constructs a libav-compatible ABGR pixel from RGB components.
6#[inline]
7#[allow(clippy::unnecessary_cast)]
8pub const fn ncpixel(red: u8, green: u8, blue: u8) -> NcPixel_u32 {
9    0xff000000 as NcPixel_u32
10        | red as NcPixel_u32
11        | (green as NcPixel_u32) << 8
12        | (blue as NcPixel_u32) << 16
13}
14
15/// Extracts the 8-bit alpha component from an ABGR pixel.
16#[inline]
17pub const fn ncpixel_a(pixel: NcPixel_u32) -> u8 {
18    ((pixel.to_le() & 0xff000000) >> 24) as u8
19}
20
21/// Extracts the 8 bit blue component from an ABGR pixel.
22#[inline]
23pub const fn ncpixel_b(pixel: NcPixel_u32) -> u8 {
24    ((pixel.to_le() & 0x00ff0000) >> 16) as u8
25}
26
27/// Extracts the 8 bit green component from an ABGR pixel.
28#[inline]
29pub const fn ncpixel_g(pixel: NcPixel_u32) -> u8 {
30    ((pixel.to_le() & 0x0000ff00) >> 8) as u8
31}
32
33/// Extracts the 8 bit red component from an ABGR pixel.
34#[inline]
35pub const fn ncpixel_r(pixel: NcPixel_u32) -> u8 {
36    (pixel.to_le() & 0x000000ff) as u8
37}
38
39/// Sets the 8-bit alpha component of an ABGR pixel.
40#[inline]
41pub fn ncpixel_set_a(pixel: &mut NcPixel_u32, alpha: u8) {
42    *pixel = (((*pixel).to_le() & 0x00ffffff) | ((alpha as NcPixel_u32) << 24)).to_le();
43}
44
45/// Sets the 8-bit blue component of an ABGR pixel.
46#[inline]
47pub fn ncpixel_set_b(pixel: &mut NcPixel_u32, blue: u8) {
48    *pixel = (((*pixel).to_le() & 0xff00ffff) | ((blue as NcPixel_u32) << 16)).to_le();
49}
50
51/// Sets the 8-bit green component of an ABGR pixel.
52#[inline]
53pub fn ncpixel_set_g(pixel: &mut NcPixel_u32, green: u8) {
54    *pixel = (((*pixel).to_le() & 0xffff00ff) | ((green as NcPixel_u32) << 8)).to_le();
55}
56
57/// Sets the 8-bit red component of an ABGR pixel.
58#[inline]
59pub fn ncpixel_set_r(pixel: &mut NcPixel_u32, red: u8) {
60    *pixel = (((*pixel).to_le() & 0xffffff00) | red as NcPixel_u32).to_le();
61}
62
63/// Sets the RGB components of an ABGR pixel.
64#[inline]
65pub fn ncpixel_set_rgb8(pixel: &mut NcPixel_u32, red: u8, green: u8, blue: u8) {
66    ncpixel_set_b(pixel, blue);
67    ncpixel_set_g(pixel, green);
68    ncpixel_set_r(pixel, red);
69}