libnotcurses_sys/palette/
reimplemented.rs

1//! `ncpalette_*` reimplemented functions.
2
3use crate::{
4    c_api::{self, NcChannel_u32, NcRgb_u32},
5    NcPalette, NcPaletteIndex,
6};
7
8/// Returns the [`NcRgb_u32`] value from an [`NcChannel_u32`] entry inside
9/// an [`NcPalette`].
10///
11/// *Method: NcPalette.[get()][NcPalette#method.get].*
12#[inline]
13pub fn ncpalette_get(palette: &NcPalette, index: impl Into<NcPaletteIndex>) -> NcRgb_u32 {
14    c_api::ncchannel_rgb(palette.chans[index.into() as usize])
15}
16
17/// Extracts the RGB components from an [`NcChannel_u32`] entry inside
18/// an [`NcPalette`], and returns the `NcChannel_u32`.
19///
20/// *Method: NcPalette.[get_rgb8()][NcPalette#method.get_rgb8].*
21#[inline]
22pub fn ncpalette_get_rgb8(
23    palette: &NcPalette,
24    index: impl Into<NcPaletteIndex>,
25    red: &mut u8,
26    green: &mut u8,
27    blue: &mut u8,
28) -> NcChannel_u32 {
29    c_api::ncchannel_rgb8(palette.chans[index.into() as usize], red, green, blue)
30}
31
32/// Sets the [`NcRgb_u32`] value of an [`NcChannel_u32`] entry inside an
33/// [`NcPalette`].
34///
35/// *Method: NcPalette.[set()][NcPalette#method.set].*
36#[inline]
37pub fn ncpalette_set(palette: &mut NcPalette, index: impl Into<NcPaletteIndex>, rgb: NcRgb_u32) {
38    c_api::ncchannel_set(&mut palette.chans[index.into() as usize], rgb);
39}
40
41/// Sets the RGB components of an [`NcChannel_u32`] entry inside an
42/// [`NcPalette`].
43///
44/// *Method: NcPalette.[set_rgb8()][NcPalette#method.set_rgb8].*
45#[inline]
46pub fn ncpalette_set_rgb8(
47    palette: &mut NcPalette,
48    index: impl Into<NcPaletteIndex>,
49    red: u8,
50    green: u8,
51    blue: u8,
52) {
53    c_api::ncchannel_set_rgb8(&mut palette.chans[index.into() as usize], red, green, blue)
54}