mirror of
https://github.com/dankamongmen/notcurses.git
synced 2024-11-20 03:25:47 +00:00
rust: move inline replacements to libnotcurses-sys
This commit is contained in:
parent
ff18138349
commit
0d38adc60a
@ -4,6 +4,86 @@
|
||||
|
||||
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
|
||||
|
||||
pub fn ncplane_putstr_yx(_n: *mut ncplane, mut _y: i32, mut _x: i32, _str: &str) -> usize {
|
||||
let mut ret = 0;
|
||||
while ret < _str.len() {
|
||||
let mut wcs = 0;
|
||||
unsafe {
|
||||
let col =ncplane_putegc_yx(_n, -1, -1, std::ffi::CString::new(&_str[ret..]).expect("Bad string").as_ptr(), &mut wcs);
|
||||
if col < 0 {
|
||||
return ret; // FIXME return error result
|
||||
}
|
||||
ret += col as usize;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
pub fn ncplane_putstr(_n: *mut ncplane, _str: &str) -> usize {
|
||||
return ncplane_putstr_yx(_n, -1, -1, _str);
|
||||
}
|
||||
|
||||
pub fn ncplane_dim_y(_n: *const ncplane) -> i32 {
|
||||
unsafe {
|
||||
let mut y = 0;
|
||||
ncplane_dim_yx(_n, &mut y, std::ptr::null_mut());
|
||||
return y;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn ncplane_dim_x(_n: *const ncplane) -> i32 {
|
||||
unsafe {
|
||||
let mut x = 0;
|
||||
ncplane_dim_yx(_n, std::ptr::null_mut(), &mut x);
|
||||
return x;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn ncplane_perimeter(_n: *mut ncplane, _ul: *const cell,
|
||||
_ur: *const cell, _ll: *const cell,
|
||||
_lr: *const cell, _hl: *const cell,
|
||||
_vl: *const cell, _ctlword: u32)
|
||||
-> std::result::Result<(), std::io::Error> {
|
||||
let r;
|
||||
unsafe {
|
||||
r =ncplane_cursor_move_yx(_n, 0, 0);
|
||||
}
|
||||
if r != 0 {
|
||||
return Err(std::io::Error::new(std::io::ErrorKind::Other, "error moving cursor"));
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn cell_prime(_n: *mut ncplane, _c: *mut cell, _egc: &str,
|
||||
_attr: u32, _channels: u64) -> i32 {
|
||||
unsafe{
|
||||
(*_c).attrword = _attr;
|
||||
(*_c).channels = _channels;
|
||||
return cell_load(_n, _c, std::ffi::CString::new(_egc).unwrap().as_ptr());
|
||||
}
|
||||
}
|
||||
|
||||
pub fn cells_load_box(_n: *mut ncplane, _attrs: u32, _channels: u64,
|
||||
_ul: *mut cell, _ur: *mut cell,
|
||||
_ll: *mut cell, _lr: *mut cell,
|
||||
_hl: *mut cell, _vl: *mut cell, _egcs: &str)
|
||||
-> std::result::Result<(), std::io::Error> {
|
||||
let rul = cell_prime(_n, _ul, _egcs, _attrs, _channels);
|
||||
if rul <= 0 {
|
||||
return Err(std::io::Error::new(std::io::ErrorKind::Other, "error priming cell"));
|
||||
// FIXME cell_prime()s
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn cells_rounded_box(_n: *mut ncplane, _attr: u32, _channels: u64,
|
||||
_ul: *mut cell, _ur: *mut cell,
|
||||
_ll: *mut cell, _lr: *mut cell,
|
||||
_hl: *mut cell, _vl: *mut cell)
|
||||
-> std::result::Result<(), std::io::Error> {
|
||||
return cells_load_box(_n, _attr, _channels, _ul, _ur, _ll, _lr, _hl, _vl, "╭╮╰╯─│");
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
@ -8,41 +8,6 @@ pub fn getc_blocking(_n: *mut ffi::notcurses, _ni: &mut ffi::ncinput) -> u32 {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn ncplane_putstr_yx(_n: *mut ffi::ncplane, mut _y: i32, mut _x: i32, _str: &str) -> usize {
|
||||
let mut ret = 0;
|
||||
while ret < _str.len() {
|
||||
let mut wcs = 0;
|
||||
unsafe {
|
||||
let col = ffi::ncplane_putegc_yx(_n, -1, -1, std::ffi::CString::new(&_str[ret..]).expect("Bad string").as_ptr(), &mut wcs);
|
||||
if col < 0 {
|
||||
return ret; // FIXME return error result
|
||||
}
|
||||
ret += col as usize;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
pub fn ncplane_putstr(_n: *mut ffi::ncplane, _str: &str) -> usize {
|
||||
return ncplane_putstr_yx(_n, -1, -1, _str);
|
||||
}
|
||||
|
||||
pub fn ncplane_dim_y(_n: *const ffi::ncplane) -> i32 {
|
||||
unsafe {
|
||||
let mut y = 0;
|
||||
ffi::ncplane_dim_yx(_n, &mut y, std::ptr::null_mut());
|
||||
return y;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn ncplane_dim_x(_n: *const ffi::ncplane) -> i32 {
|
||||
unsafe {
|
||||
let mut x = 0;
|
||||
ffi::ncplane_dim_yx(_n, std::ptr::null_mut(), &mut x);
|
||||
return x;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn render(_n: *mut ffi::notcurses) -> std::result::Result<(), std::io::Error> {
|
||||
unsafe {
|
||||
let r = ffi::notcurses_render(_n);
|
||||
@ -67,51 +32,6 @@ pub fn dim_yx(_n: *const ffi::notcurses, _dimy: &mut i32, _dimx: &mut i32) {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn ncplane_perimeter(_n: *mut ffi::ncplane, _ul: *const ffi::cell,
|
||||
_ur: *const ffi::cell, _ll: *const ffi::cell,
|
||||
_lr: *const ffi::cell, _hl: *const ffi::cell,
|
||||
_vl: *const ffi::cell, _ctlword: u32)
|
||||
-> std::result::Result<(), std::io::Error> {
|
||||
let r;
|
||||
unsafe {
|
||||
r = ffi::ncplane_cursor_move_yx(_n, 0, 0);
|
||||
}
|
||||
if r != 0 {
|
||||
return Err(std::io::Error::new(std::io::ErrorKind::Other, "error moving cursor"));
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn cell_prime(_n: *mut ffi::ncplane, _c: *mut ffi::cell, _egc: &str,
|
||||
_attr: u32, _channels: u64) -> i32 {
|
||||
unsafe{
|
||||
(*_c).attrword = _attr;
|
||||
(*_c).channels = _channels;
|
||||
return ffi::cell_load(_n, _c, std::ffi::CString::new(_egc).unwrap().as_ptr());
|
||||
}
|
||||
}
|
||||
|
||||
pub fn cells_load_box(_n: *mut ffi::ncplane, _attrs: u32, _channels: u64,
|
||||
_ul: *mut ffi::cell, _ur: *mut ffi::cell,
|
||||
_ll: *mut ffi::cell, _lr: *mut ffi::cell,
|
||||
_hl: *mut ffi::cell, _vl: *mut ffi::cell, _egcs: &str)
|
||||
-> std::result::Result<(), std::io::Error> {
|
||||
let rul = cell_prime(_n, _ul, _egcs, _attrs, _channels);
|
||||
if rul <= 0 {
|
||||
return Err(std::io::Error::new(std::io::ErrorKind::Other, "error priming cell"));
|
||||
// FIXME cell_prime()s
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn cells_rounded_box(_n: *mut ffi::ncplane, _attr: u32, _channels: u64,
|
||||
_ul: *mut ffi::cell, _ur: *mut ffi::cell,
|
||||
_ll: *mut ffi::cell, _lr: *mut ffi::cell,
|
||||
_hl: *mut ffi::cell, _vl: *mut ffi::cell)
|
||||
-> std::result::Result<(), std::io::Error> {
|
||||
return cells_load_box(_n, _attr, _channels, _ul, _ur, _ll, _lr, _hl, _vl, "╭╮╰╯─│");
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
Loading…
Reference in New Issue
Block a user