libnotcurses_sys/
capabilities.rs

1//! `NcCapabilities`
2
3use crate::Nc;
4
5/// Capabilities, derived from terminfo, environment variables, and queries.
6pub type NcCapabilities = crate::c_api::ffi::nccapabilities;
7
8impl NcCapabilities {
9    ///
10    pub fn from_nc(nc: &mut Nc) -> Self {
11        nc.capabilities()
12    }
13}
14
15pub(crate) mod reimplemented {
16    use crate::{NcCapabilities, NcPalette};
17    use core::mem::size_of;
18
19    /// Can we set the "hardware" palette?
20    ///
21    /// Requires the "ccc" terminfo capability, and that the number of colors
22    /// supported is at least the size of our `NcPalette` structure.
23    #[inline]
24    pub fn nccapability_canchangecolor(caps: &NcCapabilities) -> bool {
25        if !caps.can_change_colors {
26            return false;
27        }
28        // CHECK this does the same as:
29        // if(caps.colors < sizeof(p->chans) / sizeof(*p->chans)){
30        //
31        if (caps.colors as usize) < size_of::<NcPalette>() / size_of::<u32>() {
32            return false;
33        }
34        true
35    }
36}