Notcurses-Native.git | lib/Notcurses/Native/ | Cell.rakumod


use NativeCall; use Notcurses::Native::Types; use Notcurses::Native; use Notcurses::Native::Str; unit module Notcurses::Native::Cell; # 47 bindings — all nccell_*, nccells_*, nccellcmp functions # Signatures verified against notcurses.h # === Cell getters === sub nccell_channels(Nccell $c --> uint64) is native(&ffi-lib) is export { * } sub nccell_bchannel(Nccell $c --> uint32) is native(&ffi-lib) is export { * } sub nccell_fchannel(Nccell $c --> uint32) is native(&ffi-lib) is export { * } sub nccell_fg_rgb(Nccell $c --> uint32) is native(&ffi-lib) is export { * } sub nccell_bg_rgb(Nccell $c --> uint32) is native(&ffi-lib) is export { * } sub nccell_fg_rgb8(Nccell $c, uint32 $r is rw, uint32 $g is rw, uint32 $b is rw --> uint32) is native(&ffi-lib) is export { * } sub nccell_bg_rgb8(Nccell $c, uint32 $r is rw, uint32 $g is rw, uint32 $b is rw --> uint32) is native(&ffi-lib) is export { * } sub nccell_fg_alpha(Nccell $c --> uint32) is native(&ffi-lib) is export { * } sub nccell_bg_alpha(Nccell $c --> uint32) is native(&ffi-lib) is export { * } sub nccell_fg_palindex(Nccell $c --> uint32) is native(&ffi-lib) is export { * } sub nccell_bg_palindex(Nccell $c --> uint32) is native(&ffi-lib) is export { * } sub nccell_fg_default_p(Nccell $c --> bool) is native(&ffi-lib) is export { * } sub nccell_bg_default_p(Nccell $c --> bool) is native(&ffi-lib) is export { * } sub nccell_fg_palindex_p(Nccell $c --> bool) is native(&ffi-lib) is export { * } sub nccell_bg_palindex_p(Nccell $c --> bool) is native(&ffi-lib) is export { * } sub nccell_double_wide_p(Nccell $c --> bool) is native(&ffi-lib) is export { * } sub nccell_wide_left_p(Nccell $c --> bool) is native(&ffi-lib) is export { * } sub nccell_wide_right_p(Nccell $c --> bool) is native(&ffi-lib) is export { * } sub nccell_cols(Nccell $c --> uint32) is native(&ffi-lib) is export { * } sub nccell_styles(Nccell $c --> uint16) is native(&ffi-lib) is export { * } # === Cell setters === sub nccell_init(Nccell $c) is native(&ffi-lib) is export { * } sub nccell_set_channels(Nccell $c, uint64 $channels --> uint64) is native(&ffi-lib) is export { * } sub nccell_set_bchannel(Nccell $c, uint32 $channel --> uint64) is native(&ffi-lib) is export { * } sub nccell_set_fchannel(Nccell $c, uint32 $channel --> uint64) is native(&ffi-lib) is export { * } sub nccell_set_fg_rgb(Nccell $c, uint32 $channel --> int32) is native(&ffi-lib) is export { * } sub nccell_set_bg_rgb(Nccell $c, uint32 $channel --> int32) is native(&ffi-lib) is export { * } sub nccell_set_fg_rgb8(Nccell $c, uint32 $r, uint32 $g, uint32 $b --> int32) is native(&ffi-lib) is export { * } sub nccell_set_bg_rgb8(Nccell $c, uint32 $r, uint32 $g, uint32 $b --> int32) is native(&ffi-lib) is export { * } sub nccell_set_fg_rgb8_clipped(Nccell $c, int32 $r, int32 $g, int32 $b) is native(&ffi-lib) is export { * } sub nccell_set_bg_rgb8_clipped(Nccell $c, int32 $r, int32 $g, int32 $b) is native(&ffi-lib) is export { * } sub nccell_set_fg_alpha(Nccell $c, uint32 $alpha --> int32) is native(&ffi-lib) is export { * } sub nccell_set_bg_alpha(Nccell $c, uint32 $alpha --> int32) is native(&ffi-lib) is export { * } sub nccell_set_fg_default(Nccell $c) is native(&ffi-lib) is export { * } sub nccell_set_bg_default(Nccell $c) is native(&ffi-lib) is export { * } sub nccell_set_fg_palindex(Nccell $c, uint32 $idx --> int32) is native(&ffi-lib) is export { * } sub nccell_set_bg_palindex(Nccell $c, uint32 $idx --> int32) is native(&ffi-lib) is export { * } sub nccell_set_styles(Nccell $c, uint32 $stylebits) is native(&ffi-lib) is export { * } sub nccell_on_styles(Nccell $c, uint32 $stylebits) is native(&ffi-lib) is export { * } sub nccell_off_styles(Nccell $c, uint32 $stylebits) is native(&ffi-lib) is export { * } # === Cell load/release/dup === sub nccell_load(NcplaneHandle $n, Nccell $c, Str $gcluster --> int32) is native(&core-lib) is export { * } sub nccell_release(NcplaneHandle $n, Nccell $c) is native(&core-lib) is export { * } sub nccell_duplicate(NcplaneHandle $n, Nccell $targ, Nccell $c --> int32) is native(&core-lib) is export { * } sub nccell_prime(NcplaneHandle $n, Nccell $c, Str $gcluster, uint16 $stylemask, uint64 $channels --> int32) is native(&ffi-lib) is export { * } sub nccell_load_char(NcplaneHandle $n, Nccell $c, uint8 $ch --> int32) is native(&ffi-lib) is export { * } sub nccell_load_egc32(NcplaneHandle $n, Nccell $c, uint32 $egc --> int32) is native(&ffi-lib) is export { * } sub nccell_load_ucs32(NcplaneHandle $n, Nccell $c, uint32 $u --> int32) is native(&ffi-lib) is export { * } # === Cell extract/strdup === # nccell_extract and nccell_strdup return heap-allocated EGC strings # that the caller must free. sub _nccell_extract_raw(NcplaneHandle $n, Nccell $c, uint16 $stylemask is rw, uint64 $channels is rw --> Pointer) is native(&ffi-lib) is symbol('nccell_extract') { * } sub nccell_extract(NcplaneHandle $n, Nccell $c, uint16 $stylemask is rw, uint64 $channels is rw --> Str) is export { strdup-copy-and-free(_nccell_extract_raw($n, $c, $stylemask, $channels)) } sub _nccell_strdup_raw(NcplaneHandle $n, Nccell $c --> Pointer) is native(&ffi-lib) is symbol('nccell_strdup') { * } sub nccell_strdup(NcplaneHandle $n, Nccell $c --> Str) is export { strdup-copy-and-free(_nccell_strdup_raw($n, $c)) } #| OWNED-BY-LIBRARY: returns a pointer into the cell's egcpool inside the #| owning plane. Caller MUST NOT free. `--> Str` is safe — Raku copies. sub nccell_extended_gcluster(NcplaneHandle $n, Nccell $c --> Str) is native(&core-lib) is export { * } # === Cell comparison === sub nccellcmp(NcplaneHandle $n1, Nccell $c1, NcplaneHandle $n2, Nccell $c2 --> bool) is native(&ffi-lib) is export { * } # === Box cell helpers === sub nccells_ascii_box(NcplaneHandle $n, uint16 $attr, uint64 $channels, Nccell $ul, Nccell $ur, Nccell $ll, Nccell $lr, Nccell $hl, Nccell $vl --> int32) is native(&ffi-lib) is export { * } sub nccells_double_box(NcplaneHandle $n, uint16 $attr, uint64 $channels, Nccell $ul, Nccell $ur, Nccell $ll, Nccell $lr, Nccell $hl, Nccell $vl --> int32) is native(&ffi-lib) is export { * } sub nccells_rounded_box(NcplaneHandle $n, uint16 $attr, uint64 $channels, Nccell $ul, Nccell $ur, Nccell $ll, Nccell $lr, Nccell $hl, Nccell $vl --> int32) is native(&ffi-lib) is export { * } sub nccells_light_box(NcplaneHandle $n, uint16 $attr, uint64 $channels, Nccell $ul, Nccell $ur, Nccell $ll, Nccell $lr, Nccell $hl, Nccell $vl --> int32) is native(&ffi-lib) is export { * } sub nccells_heavy_box(NcplaneHandle $n, uint16 $attr, uint64 $channels, Nccell $ul, Nccell $ur, Nccell $ll, Nccell $lr, Nccell $hl, Nccell $vl --> int32) is native(&ffi-lib) is export { * } sub nccells_load_box(NcplaneHandle $n, uint16 $styles, uint64 $channels, Nccell $ul, Nccell $ur, Nccell $ll, Nccell $lr, Nccell $hl, Nccell $vl, Str $gclusters --> int32) is native(&ffi-lib) is export { * }