[rust] add ncvisual_from_rgb_* functions and methods

- update some docs.
pull/1799/head
joseLuís 3 years ago
parent b2b31e723a
commit e5092ad4eb

@ -8,7 +8,7 @@
// BUG ISSUES: // BUG ISSUES:
// https://github.com/rust-lang/rust-bindgen/issues/1470 // https://github.com/rust-lang/rust-bindgen/issues/1470
#[allow(clippy::all)] #[allow(clippy::all)]
// https://github.com/rust-lang/rust-bindgen/issues/2066 // https://github.com/rust-lang/rust-bindgen/issues/1651
#[allow(unknown_lints, deref_nullptr)] #[allow(unknown_lints, deref_nullptr)]
pub mod ffi { pub mod ffi {
//! Rust FFI bindings, automatically generated with bindgen. //! Rust FFI bindings, automatically generated with bindgen.
@ -744,6 +744,8 @@ pub use ffi::{
ncvisual_from_bgra, ncvisual_from_bgra,
ncvisual_from_file, ncvisual_from_file,
ncvisual_from_plane, ncvisual_from_plane,
ncvisual_from_rgb_loose,
ncvisual_from_rgb_packed,
ncvisual_from_rgba, ncvisual_from_rgba,
ncvisual_media_defblitter, ncvisual_media_defblitter,
ncvisual_polyfill_yx, ncvisual_polyfill_yx,

@ -30,6 +30,9 @@ impl NcDirect {
/// `flags` is a bitmask over: /// `flags` is a bitmask over:
/// - [NCDIRECT_OPTION_INHIBIT_CBREAK][crate::NCDIRECT_OPTION_INHIBIT_CBREAK] /// - [NCDIRECT_OPTION_INHIBIT_CBREAK][crate::NCDIRECT_OPTION_INHIBIT_CBREAK]
/// - [NCDIRECT_OPTION_INHIBIT_SETLOCALE][crate::NCDIRECT_OPTION_INHIBIT_SETLOCALE] /// - [NCDIRECT_OPTION_INHIBIT_SETLOCALE][crate::NCDIRECT_OPTION_INHIBIT_SETLOCALE]
/// - [NCDIRECT_OPTION_NO_QUIT_SIGHANDLERS][crate::NCDIRECT_OPTION_NO_QUIT_SIGHANDLERS]
/// - [NCDIRECT_OPTION_VERBOSE][crate::NCDIRECT_OPTION_VERBOSE]
/// - [NCDIRECT_OPTION_VERY_VERBOSE][crate::NCDIRECT_OPTION_VERY_VERBOSE]
/// ///
/// *C style function: [ncdirect_init()][crate::ncdirect_init].* /// *C style function: [ncdirect_init()][crate::ncdirect_init].*
pub fn with_flags<'a>(flags: NcDirectFlags) -> NcResult<&'a mut NcDirect> { pub fn with_flags<'a>(flags: NcDirectFlags) -> NcResult<&'a mut NcDirect> {

@ -4,9 +4,9 @@ use core::ptr::null_mut;
use libc::c_void; use libc::c_void;
use crate::{ use crate::{
cstring, error, error_ref_mut, rstring, Nc, NcBlitter, NcDim, NcDirect, NcDirectF, NcDirectV, cstring, error, error_ref_mut, rstring, Nc, NcBlitter, NcComponent, NcDim, NcDirect, NcDirectF,
NcError, NcIntResult, NcPixel, NcPlane, NcResult, NcRgba, NcScale, NcTime, NcVGeom, NcVisual, NcDirectV, NcError, NcIntResult, NcPixel, NcPlane, NcResult, NcRgba, NcScale, NcTime, NcVGeom,
NcVisualOptions, NCBLIT_PIXEL, NCRESULT_ERR, NcVisual, NcVisualOptions, NCBLIT_PIXEL, NCRESULT_ERR,
}; };
/// # NcVisualOptions Constructors /// # NcVisualOptions Constructors
@ -176,6 +176,64 @@ impl NcVisual {
] ]
} }
/// Like [`from_rgba`][NcVisual#method.from_rgba], but the pixels are
/// 4-byte RGBX. Alpha is filled in throughout using 'alpha'.
///
/// `rowstride` must be a multiple of 4.
///
/// *C style function: [ncvisual_from_rgb_loose()][crate::ncvisual_from_rgb_loose].*
pub fn from_rgb_loose<'a>(
rgba: &[u8],
rows: NcDim,
rowstride: NcDim,
cols: NcDim,
alpha: NcComponent,
) -> NcResult<&'a mut NcVisual> {
error_ref_mut![
unsafe {
crate::ncvisual_from_rgb_loose(
rgba.as_ptr() as *const c_void,
rows as i32,
rowstride as i32,
cols as i32,
alpha as i32,
)
},
&format!(
"NcVisual::from_rgb_loose(rgba, {}, {}, {}, {})",
rows, rowstride, cols, alpha
)
]
}
/// Like [`from_rgba`][NcVisual#method.from_rgba], but the pixels are
/// 3-byte RGB. Alpha is filled in throughout using 'alpha'.
///
/// *C style function: [ncvisual_from_rgb_packed()][crate::ncvisual_from_rgb_packed].*
pub fn from_rgb_packed<'a>(
rgba: &[u8],
rows: NcDim,
rowstride: NcDim,
cols: NcDim,
alpha: NcComponent,
) -> NcResult<&'a mut NcVisual> {
error_ref_mut![
unsafe {
crate::ncvisual_from_rgb_packed(
rgba.as_ptr() as *const c_void,
rows as i32,
rowstride as i32,
cols as i32,
alpha as i32,
)
},
&format!(
"NcVisual::from_rgb_packed(rgba, {}, {}, {}, {})",
rows, rowstride, cols, alpha
)
]
}
/// Prepares an NcVisual, and its underlying NcPlane, based off RGBA content /// Prepares an NcVisual, and its underlying NcPlane, based off RGBA content
/// in memory at `rgba`. /// in memory at `rgba`.
/// ///

@ -1,6 +1,6 @@
// functions already exported by bindgen : 24 // functions already exported by bindgen : 26
// ----------------------------------------- // -----------------------------------------
// (W) wrap: 20 // (W) wrap: 22
// (#) test: 0 // (#) test: 0
// ----------------------------------------- // -----------------------------------------
//W ncdirectf_free //W ncdirectf_free
@ -16,6 +16,8 @@
//W ncvisual_from_file //W ncvisual_from_file
//W ncvisual_from_plane //W ncvisual_from_plane
//W ncvisual_from_rgba //W ncvisual_from_rgba
//W ncvisual_from_rgb_packed
//W ncvisual_from_rgb_loose
//W ncvisual_inflate //W ncvisual_inflate
//W ncvisual_blitter_geom //W ncvisual_blitter_geom
//W ncvisual_media_defblitter //W ncvisual_media_defblitter

Loading…
Cancel
Save