Module c_api

Module c_api 

Source
Expand description

The C API, including structs, constants, functions and type aliases.

Includes also both automatically imported functions by bindgen, and manually wrapped and reimplemented global functions.

Re-exports§

pub use libc;libc

Modules§

ffi
Rust FFI bindings, automatically generated with bindgen.

Structs§

nccapabilities
Capabilities, derived from terminfo, environment variables, and queries
nccell
An nccell corresponds to a single character cell on some plane, which can be occupied by a single grapheme cluster (some root spacing glyph, along with possible combining characters, which might span multiple columns). At any cell, we can have a theoretically arbitrarily long UTF-8 EGC, a foreground color, a background color, and an attribute set. Valid grapheme cluster contents include:
ncdirect
ncdplot
ncfadectx
ncfdplane
ncfdplane_options
read from an fd until EOF (or beyond, if follow is set), invoking the user’s callback each time. runs in its own context. on EOF or error, the finalizer callback will be invoked, and the user ought destroy the ncfdplane. the data is not guaranteed to be nul-terminated, and may contain arbitrary zeroes.
ncinput
An input event. Cell coordinates are currently defined only for mouse events. It is not guaranteed that we can set the modifiers for a given ncinput. We encompass single Unicode codepoints, not complete EGCs. FIXME for abi4, combine the bools into |modifiers|
ncmenu
ncmenu_item
Menus. Horizontal menu bars are supported, on the top and/or bottom rows. If the menu bar is longer than the screen, it will be only partially visible. Menus may be either visible or invisible by default. In the event of a plane resize, menus will be automatically moved/resized. Elements can be dynamically enabled or disabled at all levels (menu, section, and item),
ncmenu_options
ncmenu_section
ncmselector_item
ncmultiselector
ncmultiselector_options
multiselection widget – a selector supporting multiple selections.
ncpalette
Palette API. Some terminals only support 256 colors, but allow the full palette to be specified with arbitrary RGB colors. In all cases, it’s more performant to use indexed colors, since it’s much less data to write to the terminal. If you can limit yourself to 256 colors, that’s probably best.
ncplane
ncplane_options
ncplot_options
ncprogbar
ncprogbar_options
ncreader
ncreader_options
ncreel
ncreel_options
ncselector
ncselector_item
selection widget – an ncplane with a title header and a body section. the body section supports infinite scrolling up and down.
ncselector_options
ncstats
whenever a new field is added here, ensure we add the proper rule to notcurses_stats_reset(), so that values are preserved in the stash stats.
ncsubproc
ncsubproc_options
nctab
nctabbed
nctabbed_options
nctablet
nctree
nctree_item
each item has a curry, and zero or more subitems.
nctree_options
ncuplot
ncvgeom
describes all geometries of an ncvisual: those which are inherent, and those dependent upon a given rendering regime. pixy and pixx are the true internal pixel geometry, taken directly from the load (and updated by ncvisual_resize()). cdimy/cdimx are the cell-pixel geometry at the time of this call (it can change with a font change, in which case all values other than pixy/pixx are invalidated). rpixy/rpixx are the pixel geometry as handed to the blitter, following any scaling. scaley/scalex are the number of input pixels drawn to a single cell; when using NCBLIT_PIXEL, they are equivalent to cdimy/cdimx. rcelly/rcellx are the cell geometry as written by the blitter, following any padding (there is padding whenever rpix{y, x} is not evenly divided by scale{y, x}, and also sometimes for Sixel). maxpixely/maxpixelx are defined only when NCBLIT_PIXEL is used, and specify the largest bitmap that the terminal is willing to accept. blitter is the blitter which will be used, a function of the requested blitter and the blitters actually supported by this environment. if no ncvisual was supplied, only cdimy/cdimx are filled in.
ncvisual
ncvisual_options
notcurses
notcurses_options
Configuration for notcurses_init().

Constants§

NCALIGN_BOTTOM
NcAlign_u32 Bottom alignment.
NCALIGN_CENTER
NcAlign_u32 Center alignment.
NCALIGN_LEFT
NcAlign_u32 Left alignment.
NCALIGN_RIGHT
NcAlign_u32 Right alignment.
NCALIGN_TOP
NcAlign_u32 Top alignment.
NCALIGN_UNALIGNED
NcAlign_u32 Nothing unaligned should be rendered.
NCALPHA_BLEND
NcAlpha_u32 bits indicating NcCell’s foreground or background color will be a composite between its color and the NcCells’ corresponding colors underneath it.
NCALPHA_HIGHCONTRAST
NcAlpha_u32 bits indicating NcCell’s foreground color will be high-contrast (relative to the computed background). Background cannot be high-contrast.
NCALPHA_OPAQUE
NcAlpha_u32 bits indicating NcCell’s foreground or background color is used unchanged.
NCALPHA_TRANSPARENT
NcAlpha_u32 bits indicating NcCell’s foreground or background color is derived entirely from the NcCells underneath it.
NCBLIT_1x1
NcBlitter_u32 mode using: space, compatible with ASCII.
NCBLIT_2x1
NcBlitter_u32 mode using: halves + 1x1 (space). ▄▀
NCBLIT_2x2
NcBlitter_u32 mode using: quadrants + 2x1. ▗▐ ▖▀▟▌▙
NCBLIT_3x2
NcBlitter_u32 mode using: sextants. 🬀🬁🬂🬃🬄🬅🬆🬇🬈🬉🬊🬋🬌🬍🬎🬏🬐🬑🬒🬓🬔🬕🬖🬗🬘🬙🬚🬛🬜🬝🬞🬟🬠🬡🬢🬣🬤🬥🬦🬧🬨🬩🬪🬫🬬🬭🬮🬯🬰🬱🬲🬳🬴🬵🬶🬷🬸🬹🬺🬻
NCBLIT_4x1
NcBlitter_u32 mode using: four vertical levels. █▆▄▂
NCBLIT_8x1
NcBlitter_u32 mode using: eight vertical levels. █▇▆▅▄▃▂▁
NCBLIT_BRAILLE
NcBlitter_u32 mode using: 4 rows, 2 cols (braille). ⡀⡄⡆⡇⢀⣀⣄⣆⣇⢠⣠⣤⣦⣧⢰⣰⣴⣶⣷⢸⣸⣼⣾⣿
NCBLIT_DEFAULT
NcBlitter_u32 mode where the blitter is automatically chosen.
NCBLIT_PIXEL
Sixel/Pixel mode.
NCBOXCORNER_MASK
NcBoxMask_u32 corner mask to control the drawing of boxes corners.
NCBOXCORNER_SHIFT
NcBoxMask_u32 the number of bits NCBOXCORNER_MASK is shifted.
NCBOXGRAD_BOTTOM
NcBoxMask_u32 bottom gradient mask.
NCBOXGRAD_LEFT
NcBoxMask_u32 left gradient mask.
NCBOXGRAD_RIGHT
NcBoxMask_u32 right gradient mask.
NCBOXGRAD_TOP
NcBoxMask_u32 top gradient mask.
NCBOXMASK_BOTTOM
NcBoxMask_u32 bottom border mask.
NCBOXMASK_LEFT
NcBoxMask_u32 left border mask.
NCBOXMASK_RIGHT
NcBoxMask_u32 right border mask.
NCBOXMASK_TOP
NcBoxMask_u32 top border mask.
NCDIRECT_OPTION_DRAIN_INPUT
NcDirectFlag_u64 flag that indicates input may be freely dropped.
NCDIRECT_OPTION_INHIBIT_CBREAK
NcDirectFlag_u64 flag to avoid placing the terminal into cbreak mode (disabling echo and line buffering)
NCDIRECT_OPTION_INHIBIT_SETLOCALE
NcDirectFlag_u64 flag to avoid calling setlocale(LC_ALL, NULL)
NCDIRECT_OPTION_NO_QUIT_SIGHANDLERS
NcDirectFlag_u64 flag that inhibits registration of the SIGINT, SIGSEGV, SIGABRT & SIGQUIT signal handlers.
NCDIRECT_OPTION_VERBOSE
NcDirectFlag_u64 flag that enables showing detailed information.
NCDIRECT_OPTION_VERY_VERBOSE
NcDirectFlag_u64 flag that enables showing all diagnostics (equivalent to NCLOGLEVEL_TRACE). Implies NCDIRECT_OPTION_VERBOSE.
NCKEY_BACKSPACE
NCKEY_BEGIN
NCKEY_BUTTON1
NCKEY_BUTTON2
NCKEY_BUTTON3
NCKEY_BUTTON4
scrollwheel up
NCKEY_BUTTON5
scrollwheel down
NCKEY_BUTTON6
NCKEY_BUTTON7
NCKEY_BUTTON8
NCKEY_BUTTON9
NCKEY_BUTTON10
NCKEY_BUTTON11
NCKEY_CANCEL
NCKEY_CAPS_LOCK
NCKEY_CENTER
NCKEY_CLOSE
NCKEY_CLS
“clear-screen or erase”
NCKEY_COMMAND
NCKEY_COPY
NCKEY_DEL
NCKEY_DLEFT
down + left on keypad
NCKEY_DOWN
NCKEY_DRIGHT
NCKEY_END
NCKEY_ENTER
NCKEY_EOF
Indicates that we have reached the end of input. Any further calls will continue to return this immediately.
NCKEY_ESC
NCKEY_EXIT
NCKEY_F00
NCKEY_F01
NCKEY_F02
NCKEY_F03
NCKEY_F04
NCKEY_F05
NCKEY_F06
NCKEY_F07
NCKEY_F08
NCKEY_F09
NCKEY_F10
NCKEY_F11
NCKEY_F12
NCKEY_F13
NCKEY_F14
NCKEY_F15
NCKEY_F16
NCKEY_F17
NCKEY_F18
NCKEY_F19
NCKEY_F20
NCKEY_F21
NCKEY_F22
NCKEY_F23
NCKEY_F24
NCKEY_F25
NCKEY_F26
NCKEY_F27
NCKEY_F28
NCKEY_F29
NCKEY_F30
NCKEY_F31
NCKEY_F32
NCKEY_F33
NCKEY_F34
NCKEY_F35
NCKEY_F36
NCKEY_F37
NCKEY_F38
NCKEY_F39
NCKEY_F40
NCKEY_F41
NCKEY_F42
NCKEY_F43
NCKEY_F44
NCKEY_F45
NCKEY_F46
NCKEY_F47
NCKEY_F48
NCKEY_F49
NCKEY_F50
NCKEY_F51
NCKEY_F52
NCKEY_F53
NCKEY_F54
NCKEY_F55
NCKEY_F56
NCKEY_F57
NCKEY_F58
NCKEY_F59
NCKEY_F60
NCKEY_HOME
NCKEY_INS
NCKEY_INVALID
NCKEY_L3SHIFT
AltGr in european keyboards
NCKEY_L5SHIFT
NCKEY_LALT
NCKEY_LCTRL
NCKEY_LEFT
NCKEY_LHYPER
NCKEY_LMETA
NCKEY_LSHIFT
NCKEY_LSUPER
NCKEY_MEDIA_FF
NCKEY_MEDIA_LVOL
NCKEY_MEDIA_MUTE
NCKEY_MEDIA_NEXT
NCKEY_MEDIA_PAUSE
NCKEY_MEDIA_PLAY
NCKEY_MEDIA_PPAUSE
NCKEY_MEDIA_PREV
NCKEY_MEDIA_RECORD
NCKEY_MEDIA_REV
NCKEY_MEDIA_REWIND
NCKEY_MEDIA_RVOL
NCKEY_MEDIA_STOP
NCKEY_MENU
NCKEY_MOD_ALT
NCKEY_MOD_CAPSLOCK
NCKEY_MOD_CTRL
NCKEY_MOD_HYPER
NCKEY_MOD_META
NCKEY_MOD_NUMLOCK
NCKEY_MOD_SHIFT
NCKEY_MOD_SUPER
NCKEY_MOTION
no buttons pressed
NCKEY_NUM_LOCK
NCKEY_PAUSE
NCKEY_PGDOWN
NCKEY_PGUP
NCKEY_PRINT
NCKEY_PRINT_SCREEN
NCKEY_RALT
NCKEY_RCTRL
NCKEY_REFRESH
NCKEY_RESIZE
we received SIGWINCH
NCKEY_RETURN
Alias of NCKEY_ENTER.
NCKEY_RHYPER
NCKEY_RIGHT
NCKEY_RMETA
NCKEY_RSHIFT
NCKEY_RSUPER
NCKEY_SCROLL_DOWN
Alias of NCKEY_BUTTON5.
NCKEY_SCROLL_LOCK
NCKEY_SCROLL_UP
Alias of NCKEY_BUTTON4.
NCKEY_SIGNAL
we received SIGCONT
NCKEY_SPACE
NCKEY_TAB
NCKEY_ULEFT
up + left on keypad
NCKEY_UP
NCKEY_URIGHT
NCLOGLEVEL_DEBUG
NcLogLevel_i32 this is honestly a bit much.
NCLOGLEVEL_ERROR
NcLogLevel_i32 we can’t keep doin’ this, but we can do other things.
NCLOGLEVEL_FATAL
NcLogLevel_i32 we’re hanging around, but we’ve had a horrible fault.
NCLOGLEVEL_INFO
NcLogLevel_i32 “detailed information.
NCLOGLEVEL_PANIC
NcLogLevel_i32 print diagnostics immediately related to crashing.
NCLOGLEVEL_SILENT
NcLogLevel_i32 default. print nothing once fullscreen service begins.
NCLOGLEVEL_TRACE
NcLogLevel_i32 there’s probably a better way to do what you want.
NCLOGLEVEL_VERBOSE
NcLogLevel_i32 “detailed information.
NCLOGLEVEL_WARNING
NcLogLevel_i32 you probably don’t want what’s happening to happen.
NCMENU_OPTION_BOTTOM
NcMenuOptions flag: Bottom row (as opposed to top row).
NCMENU_OPTION_HIDING
NcMenuOptions flag: Hides the menu when not unrolled.
NCMETRIC_BPREFIXCOLUMNS
NCMETRIC_BPREFIXSTRLEN
NCMETRIC_IPREFIXCOLUMNS
NCMETRIC_IPREFIXSTRLEN
NCMETRIC_PREFIXCOLUMNS
NCMETRIC_PREFIXSTRLEN
NCMICE_ALL_EVENTS
NcMiceEvents_u32 flag that enables all mice events.
NCMICE_BUTTON_EVENTS
NcMiceEvents_u32 flag that enables mice button* events
NCMICE_DRAG_EVENTS
NcMiceEvents_u32 flag that enables mice drag events
NCMICE_MOVE_EVENTS
NcMiceEvents_u32 flag that enables mice move events
NCMICE_NO_EVENTS
NcMiceEvents_u32 flag that disables all mice events.
NCOPTION_CLI_MODE
NcFlag_u64 flag set composed of NCOPTION_NO_ALTERNATE_SCREEN | NCOPTION_NO_CLEAR_BITMAPS | NCOPTION_PRESERVE_CURSOR | NCOPTION_SCROLLING.
NCOPTION_DRAIN_INPUT
NcFlag_u64 flag that indicates input may be freely dropped.
NCOPTION_INHIBIT_SETLOCALE
NcFlag_u64 flag to avoid calling setlocale().
NCOPTION_NO_ALTERNATE_SCREEN
NcFlag_u64 flag to avoid entering alternate mode.
NCOPTION_NO_CLEAR_BITMAPS
NcFlag_u64 flag to avoid trying to clear any preexisting bitmaps.
NCOPTION_NO_FONT_CHANGES
NcFlag_u64 flag to avoid modifying the font.
NCOPTION_NO_QUIT_SIGHANDLERS
NcFlag_u64 flag to avoid handling SIGINT, SIGSEGV, SIGABRT, SIGQUIT.
NCOPTION_NO_WINCH_SIGHANDLER
NcFlag_u64 flag to avoid handling SIGWINCH.
NCOPTION_PRESERVE_CURSOR
NcFlag_u64 flag to initialize the standard plane’s virtual cursor to match the physical cursor at context creation time.
NCOPTION_SCROLLING
NcFlag_u64 flag to prepare the standard plane in scrolling mode, useful for CLIs. This is equivalent to calling ncplane_set_scrolling(notcurses_stdplane(nc), true).
NCOPTION_SUPPRESS_BANNERS
NcFlag_u64 flag to avoid printing banners.
NCPALETTE_SIZE
The supported palette-indexed colors number is up to 8 bits.
NCPIXEL_ITERM2
NcPixelImpl_u32 iTerm2.
NCPIXEL_KITTY_ANIMATED
NcPixelImpl_u32 Kitty with animation but not reflexive composition.
NCPIXEL_KITTY_SELFREF
NcPixelImpl_u32 Kitty with reflexive composition.
NCPIXEL_KITTY_STATIC
NcPixelImpl_u32 Kitty prior to C=1 and animation.
NCPIXEL_LINUXFB
NcPixelImpl_u32 Linux framebuffer.
NCPIXEL_NONE
NcPixelImpl_u32 No pixel support.
NCPIXEL_SIXEL
NcPixelImpl_u32 Sixel.
NCPLANE_OPTION_AUTOGROW
NcPlaneFlag_u64 flag that enables automatic growth of the plane to accommodate output.
NCPLANE_OPTION_FIXED
NcPlaneFlag_u64 flag to avoid scrolling alongside its parent.
NCPLANE_OPTION_HORALIGNED
NcPlaneFlag_u64 Horizontal alignment relative to the parent plane.
NCPLANE_OPTION_MARGINALIZED
NcPlaneFlag_u64 flag to maximize relative to the parent plane, modulo the provided margins.
NCPLANE_OPTION_VERALIGNED
NcPlaneFlag_u64 flag for vertical alignment relative to the parent plane.
NCPLANE_OPTION_VSCROLL
NcPlaneFlag_u64 flag that enables vertical scrolling of the plane to accommodate output.
NCPLOT_OPTION_DETECTMAXONLY
Use domain detection only for max
NCPLOT_OPTION_EXPONENTIALD
Exponential dependent axis
NCPLOT_OPTION_LABELTICKSD
Show labels for dependent axis
NCPLOT_OPTION_NODEGRADE
Use domain detection only for max
NCPLOT_OPTION_VERTICALI
Independent axis is vertical
NCPROGBAR_OPTION_RETROGRADE
NcProgBarOptions flag to indicate proceeding left/down.
NCREADER_OPTION_CURSOR
Makes the terminal cursor visible across the lifetime of the ncreader, and have the ncreader manage the cursor’s placement.
NCREADER_OPTION_HORSCROLL
Enables horizontal scrolling. Virtual lines can then grow arbitrarily long.
NCREADER_OPTION_NOCMDKEYS
Disables all editing shortcuts. By default, emacs-style keys are available.
NCREADER_OPTION_VERSCROLL
Enables vertical scrolling. You can then use arbitrarily many virtual lines.
NCREEL_OPTION_CIRCULAR
is navigation circular (does moving down from the last tablet move to the first, and vice versa)? only meaningful when infinitescroll is true. if infinitescroll is false, this must be false.
NCREEL_OPTION_INFINITESCROLL
is scrolling infinite (can one move down or up forever, or is an end reached?). if true, ‘circular’ specifies how to handle the special case of an incompletely-filled reel.
NCRESULT_ERR
NcResult_i32 ERROR value.
NCRESULT_MAX
NcResult_i32 MAX value.
NCRESULT_OK
NcResult_i32 OK value.
NCSCALE_NONE
NcScale_u32 mode that maintains the original size.
NCSCALE_NONE_HIRES
NcScale_u32 mode that maintains the original size, admitting high-resolution blitters that don’t preserve the aspect ratio.
NCSCALE_SCALE
NcScale_u32 mode that maintains the aspect ratio.
NCSCALE_SCALE_HIRES
NcScale_u32 mode that maintains the aspect ratio, admitting high-resolution blitters that don’t preserve the aspect ratio.
NCSCALE_STRETCH
NcScale_u32 mode that throws away the aspect ratio.
NCSTYLE_BOLD
NcStyle_u16 Bold.
NCSTYLE_ITALIC
NcStyle_u16 Italic.
NCSTYLE_MASK
NcStyle_u16 mask.
NCSTYLE_NONE
NcStyle_u16 None.
NCSTYLE_STRUCK
NcStyle_u16 Struck.
NCSTYLE_UNDERCURL
NcStyle_u16 Undercurl.
NCSTYLE_UNDERLINE
NcStyle_u16 Underline.
NCTABBED_OPTION_BOTTOM
To display the tab list at the bottom instead of at the top of the plane.
NCTYPE_PRESS
NcInputType_u32 Press input type event.
NCTYPE_RELEASE
NcInputType_u32 Release input type event.
NCTYPE_REPEAT
NcInputType_u32 Repeat input type event.
NCTYPE_UNKNOWN
NcInputType_u32 Unknown input type event.
NCVISUAL_OPTION_ADDALPHA
NcVisualFlag_u64 flag to treat as transparent the color specified in the transcolor field.
NCVISUAL_OPTION_BLEND
NcVisualFlag_u64 flag uses NcAlpha::Blend with the NcVisual.
NCVISUAL_OPTION_CHILDPLANE
NcVisualFlag_u64 flag to indicate that the n field of ncvisual_options refers not to the plane onto which you’d like to blit, but the parent of a new plane.
NCVISUAL_OPTION_HORALIGNED
NcVisualFlag_u64 flag to indicate X is an alignment, not absolute.
NCVISUAL_OPTION_NODEGRADE
NcVisualFlag_u64 flag to fail rather than gracefully degrade.
NCVISUAL_OPTION_NOINTERPOLATE
NcVisualFlag_u64 flag to use non-interpolative scaling.
NCVISUAL_OPTION_VERALIGNED
NcVisualFlag_u64 flag to indicate Y is an alignment, not absolute.
NC_BGDEFAULT_MASK
If this bit is set, we are not using the default background color
NC_BG_ALPHA_MASK
Extract these bits to get the (background) NcAlpha mask.
NC_BG_PALETTE
If this bit and NC_BGDEFAULT_MASK are set, we’re using a palette-indexed background color
NC_BG_RGB_MASK
Extract these bits to get the background NcRgb value
NC_NOBACKGROUND_MASK
Does this glyph completely obscure the background?
PRETERUNICODEBASE
Offset for NCKEY_* values.

Functions§

ncblit_bgrx
Same as ncblit_rgba(), but for BGRx.
ncblit_rgb_loose
Supply an alpha value [0..255] to be applied throughout. linesize must be a multiple of 4 for this RGBx data.
ncblit_rgb_packed
Supply an alpha value [0..255] to be applied throughout.
ncblit_rgba
Blit a flat array ‘data’ of RGBA 32-bit values to the ncplane ‘vopts->n’, which mustn’t be NULL. the blit begins at ‘vopts->y’ and ‘vopts->x’ relative to the specified plane. Each source row ought occupy ‘linesize’ bytes (this might be greater than ‘vopts->lenx’ * 4 due to padding or partial blits). A subregion of the input can be specified with the ‘begy’x’begx’ and ‘leny’x’lenx’ fields from ‘vopts’. Returns the number of pixels blitted, or -1 on error.
nccapability_canchangecolor
Can we set the “hardware” palette?
nccell_bchannel
Gets the background alpha and coloring bits from the cell NcChannels_u64 as an NcChannel_u32.
nccell_bg_alpha
Gets the background NcAlpha_u32 from an NcCell (shifted to LSBs).
nccell_bg_default_p
Is the background NcChannel_u32 of this NcCell using the “default background color”?
nccell_bg_palindex
Gets the NcPaletteIndex of the background NcChannel_u32 of the NcCell.
nccell_bg_palindex_p
Is the background NcChannel_u32 of this NcCell using an NcPaletteIndex indexed NcPalette color?
nccell_bg_rgb
Gets the background NcRgb_u32 from an NcCell (shifted to LSBs).
nccell_bg_rgb8
Gets the background components of an NcCell, and returns the NcChannel_u32 (which can have some extra bits set).
nccell_channels
Gets the alpha and coloring bits from the cell NcChannels_u64.
nccell_cols
Returns the number of columns occupied by cell.
nccell_double_wide_p
Does the NcCell contain an East Asian Wide codepoint?
nccell_duplicate
Duplicate ‘c’ into ‘targ’; both must be/will be bound to ‘n’. Returns -1 on failure, and 0 on success.
nccell_extended_gcluster
return a pointer to the NUL-terminated EGC referenced by ‘c’. this pointer can be invalidated by any further operation on the plane ‘n’, so…watch out!
nccell_extractlibc
Saves the NcStyle_u16 and the NcChannels_u64, and returns the EGC, of an NcCell.
nccell_fchannel
Gets the foreground alpha and coloring bits from the cell NcChannels_u64 as an NcChannel_u32.
nccell_fg_alpha
Gets the foreground NcAlpha_u32 from an NcCell (shifted to LSBs).
nccell_fg_default_p
Is the foreground NcChannel_u32 of this NcCell using the “default foreground color”?
nccell_fg_palindex
Gets the NcPaletteIndex of the foreground NcChannel_u32 of the NcCell.
nccell_fg_palindex_p
Is the foreground NcChannel_u32 of this NcCell using an NcPaletteIndex indexed NcPalette color?
nccell_fg_rgb
Gets the foreground NcRgb_u32 from an NcCell (shifted to LSBs).
nccell_fg_rgb8
Gets the foreground components of an NcCell, and returns the NcChannel_u32 (which can have some extra bits set).
nccell_init
Initializes (zeroes out) an NcCell.
nccell_load
Breaks the UTF-8 string in ‘gcluster’ down, setting up the nccell ‘c’. Returns the number of bytes copied out of ‘gcluster’, or -1 on failure. The styling of the cell is left untouched, but any resources are released.
nccell_off_styles
Removes the specified NcStyle_u16 bits from an NcCell’s existing spec.
nccell_on_styles
Adds the specified NcStyle_u16 bits to an NcCell’s existing spec., whether they’re actively supported or not.
nccell_prime
Same as nccell_load, plus blasts the styling with style and channels.
nccell_release
Release resources held by the nccell ‘c’.
nccell_set_bchannel
Sets the background alpha and coloring bits of the cell from an NcChannel_u32, returning the new NcChannels_u64.
nccell_set_bg_alpha
Sets the background NcAlpha_u32 of an NcCell.
nccell_set_bg_default
Indicates to use the “default color” for the background NcChannel_u32 of an NcCell.
nccell_set_bg_palindex
Sets an NcCell’s background NcPaletteIndex.
nccell_set_bg_rgb
Sets the background NcRgb_u32 of an NcCell, and marks it as not using the default color.
nccell_set_bg_rgb8
Sets the background components of the NcCell, and marks it as not using the “default color”.
nccell_set_channels
Sets the alpha and coloring bits of the cell from an NcChannels_u64, returning the new NcChannels_u64.
nccell_set_fchannel
Sets the foreground alpha and coloring bits of the cell from an NcChannel_u32, returning the new NcChannels_u64.
nccell_set_fg_alpha
Sets the foreground NcAlpha_u32 of an NcCell.
nccell_set_fg_default
Indicates to use the “default color” for the foreground NcChannel_u32 of an NcCell.
nccell_set_fg_palindex
Sets an NcCell’s foreground NcPaletteIndex.
nccell_set_fg_rgb
Sets the foreground NcRgb_u32 of an NcCell, and marks it as not using the default color.
nccell_set_fg_rgb8
Sets the foreground components of the NcCell, and marks it as not using the “default color”.
nccell_set_styles
Sets just the specified NcStyle_u16 bits for an NcCell, whether they’re actively supported or not.
nccell_strduplibc
Copies the UTF8-encoded EGC out of the NcCell, whether simple or complex.
nccell_styles
Gets the NcStyle_u16 bits from an NcCell.
nccell_wide_left_p
Is this the left half of a wide character?
nccell_wide_right_p
Is this the right half of a wide character?
nccellcmplibc
Returns true if the two cells are distinct EGCs, attributes, or channels.
nccells_ascii_box
nccells_load_box with ASCII characters.
nccells_double_box
nccells_load_box with double line box-drawing characters.
nccells_heavy_box
nccells_load_box with heavy line box-drawing characters.
nccells_light_box
nccells_load_box with light line box-drawing characters.
nccells_load_box
Loads up six cells with the EGCs necessary to draw a box.
nccells_rounded_box
nccells_load_box with round line box-drawing characters.
ncchannel_alpha
Gets the NcAlpha_u32 from an NcChannel_u32.
ncchannel_b
Gets the blue component from an NcChannel_u32.
ncchannel_default_p
Is this NcChannel_u32 using the “default color” rather than RGB/palette-indexed?
ncchannel_g
Gets the green component from an NcChannel_u32.
ncchannel_palindex
Gets the NcPaletteIndex from the NcChannel_u32.
ncchannel_palindex_p
Is this NcChannel_u32 using palette-indexed color rather than RGB?
ncchannel_r
Gets the red component from an NcChannel_u32.
ncchannel_rgb
Gets the NcRgb_u32 of an NcChannel_u32.
ncchannel_rgb8
Gets the three RGB components from an NcChannel_u32, and returns it.
ncchannel_rgb_p
Returns true if this NcChannel_u32 is using RGB color.
ncchannel_set
Sets the NcRgb_u32 of an NcChannel_u32, and marks it as NOT using the “default color”, retaining the other bits unchanged.
ncchannel_set_alpha
Sets the NcAlpha_u32 of an NcChannel_u32.
ncchannel_set_b
Sets the blue component of an NcChannel_u32, and returns it.
ncchannel_set_default
Marks an NcChannel_u32 as using its “default color”. Sets alpha as OPAQUE.
ncchannel_set_g
Sets the green component of an NcChannel_u32, and returns it.
ncchannel_set_not_default
Marks an NcChannel_u32 as NOT using its “default color”, retaining the other bits unchanged.
ncchannel_set_palindex
Sets the NcPaletteIndex of the NcChannel_u32, and the channel into palette indexed mode.
ncchannel_set_r
Sets the red component of an NcChannel_u32, and returns it.
ncchannel_set_rgb8
Sets the three RGB components an NcChannel_u32, and marks it as NOT using the “default color”, retaining the other bits unchanged.
ncchannels_bchannel
Gets the background alpha and coloring bits as an NcChannel_u32 from a NcChannels_u64.
ncchannels_bg_alpha
Gets the background NcAlpha_u32 from an NcChannels_u64, shifted to LSBs.
ncchannels_bg_default_p
Is the background using the “default background color”?
ncchannels_bg_palindex
Gets the NcPaletteIndex from the background NcChannel_u32.
ncchannels_bg_palindex_p
Is the background of an NcChannels_u64 using an indexed NcPalette color?
ncchannels_bg_rgb
Gets the background NcRgb_u32 from an NcChannels_u64, shifted to LSBs.
ncchannels_bg_rgb8
Gets the three background RGB components from an NcChannels_u64, and returns the background NcChannel_u32 (which can have some extra bits set).
ncchannels_bg_rgb_p
Returns true if the background channel is set to RGB color.
ncchannels_channels
Gets the alpha and coloring bits as an NcChannels_u64.
ncchannels_combine
Combines two NcChannel_u32s into an NcChannels_u64.
ncchannels_fchannel
Gets the foreground alpha and coloring bits as an NcChannel_u32 from an NcChannels_u64.
ncchannels_fg_alpha
Gets the foreground NcAlpha_u32 from an NcChannels_u64, shifted to LSBs.
ncchannels_fg_default_p
Is the foreground of an NcChannels_u64 using the “default foreground color”?
ncchannels_fg_palindex
Gets the NcPaletteIndex from the foreground NcChannel_u32.
ncchannels_fg_palindex_p
Is the foreground of an NcChannels_u64 using an indexed NcPalette color?
ncchannels_fg_rgb
Gets the foreground NcRgb_u32 from an NcChannels_u64, shifted to LSBs.
ncchannels_fg_rgb8
Gets the three foreground RGB components from an NcChannels_u64, and returns the foreground NcChannel_u32 (which can have some extra bits set).
ncchannels_fg_rgb_p
Returns true if the foreground channel is set to RGB color.
ncchannels_reverse
Returns the NcChannels_u64 with the fore- and background’s color information swapped, but without touching housekeeping bits.
ncchannels_set_bchannel
Sets the background alpha and coloring bits of the NcChannels_u64 from an NcChannel_u32.
ncchannels_set_bg_alpha
Sets the NcAlpha_u32 of the background NcChannel_u32 of an NcChannels_u64.
ncchannels_set_bg_default
Marks the background of an NcChannels_u64 as using its “default color”, which also marks it opaque, and returns the new NcChannels_u64.
ncchannels_set_bg_not_default
Marks the background of an NcChannels_u64 as NOT using its “default color”, retaining the other bits unchanged, and returns the new NcChannels_u64.
ncchannels_set_bg_palindex
Sets the background of an NcChannels_u64 as using an indexed NcPalette color.
ncchannels_set_bg_rgb
Sets the foreground NcRgb_u32 of an NcChannels_u64, and marks it as NOT using the “default color”, retaining the other bits unchanged.
ncchannels_set_bg_rgb8
Sets the three background RGB components of an NcChannels_u64, and marks it as NOT using the “default color”, retaining the other bits unchanged.
ncchannels_set_channels
Sets the alpha and coloring bits of an NcChannels_u64 from another NcChannels_u64.
ncchannels_set_default
Marks both the foreground and background of an NcChannels_u64 as using their “default color”, which also marks them opaque, and returns the new NcChannels_u64.
ncchannels_set_fchannel
Sets the foreground alpha and coloring bits of the NcChannels_u64 from an NcChannel_u32.
ncchannels_set_fg_alpha
Sets the NcAlpha_u32 of the foreground NcChannel_u32 of an NcChannels_u64.
ncchannels_set_fg_default
Marks the foreground of an NcChannels_u64 as using its “default color”, which also marks it opaque, and returns the new NcChannels_u64.
ncchannels_set_fg_not_default
Marks the foreground of an NcChannels_u64 as NOT using its “default color”, retaining the other bits unchanged, and returns the new NcChannels_u64.
ncchannels_set_fg_palindex
Sets the foreground of an NcChannels_u64 as using an indexed NcPalette color.
ncchannels_set_fg_rgb
Sets the foreground NcRgb_u32 of an NcChannels_u64, and marks it as NOT using the “default color”, retaining the other bits unchanged.
ncchannels_set_fg_rgb8
Sets the three foreground RGB components of an NcChannels_u64, and marks it as NOT using the “default color”, retaining the other bits unchanged.
ncchannels_set_not_default
Marks both the foreground and background of an NcChannels_u64 as NOT using their “default color”, retaining the other bits unchanged, and returns the new NcChannels_u64.
ncdirect_box
Draw a box with its upper-left corner at the current cursor position, having dimensions |ylen|x|xlen|. See ncplane_box() for more information. The minimum box size is 2x2, and it cannot be drawn off-screen. |wchars| is an array of 6 wide characters: UL, UR, LL, LR, HL, VL.
ncdirect_canbraille
Can we reliably use Unicode Braille?
ncdirect_canchangecolor
Can we set the “hardware” palette? Requires the “ccc” terminfo capability.
ncdirect_canfade
Can we fade? Fading requires either the “rgb” or “ccc” terminfo capability.
ncdirect_canget_cursor
Is there support for acquiring the cursor’s current position? Requires the u7 terminfo capability, and that we are connected to an actual terminal.
ncdirect_canhalfblock
Can we reliably use Unicode halfblocks?
ncdirect_canopen_images
Can we open images? This requires being built against FFmpeg.
ncdirect_canopen_videos
Can we load videos? This requires being built against FFmpeg.
ncdirect_canquadrant
Can we reliably use Unicode quadrants?
ncdirect_cansextant
Can we reliably use Unicode 13 sextants?
ncdirect_cantruecolor
Can we directly specify RGB values per cell, or only use palettes?
ncdirect_canutf8
Is our encoding UTF-8? Requires LANG being set to a UTF8 locale.
ncdirect_capabilities
Returns the detected NcCapabilities.
ncdirect_check_pixel_support
Can we blit pixel-accurate bitmaps?
ncdirect_clear
Clear the screen.
ncdirect_core_init
The same as ncdirect_init(), but without any multimedia functionality, allowing for a svelter binary. Link with notcurses-core if this is used.
ncdirect_cursor_disable
ncdirect_cursor_down
ncdirect_cursor_enable
ncdirect_cursor_left
ncdirect_cursor_move_yx
Move the cursor in direct mode. -1 to retain current location on that axis.
ncdirect_cursor_pop
ncdirect_cursor_push
Push or pop the cursor location to the terminal’s stack. The depth of this stack, and indeed its existence, is terminal-dependent.
ncdirect_cursor_right
ncdirect_cursor_up
ncdirect_cursor_yx
Get the cursor position, when supported. This requires writing to the terminal, and then reading from it. If the terminal doesn’t reply, or doesn’t reply in a way we understand, the results might be deleterious.
ncdirect_detected_terminal
Capabilites
ncdirect_dim_x
Get the current number of columns/rows.
ncdirect_dim_y
ncdirect_double_box
ncdirect_box() with the double box-drawing characters
ncdirect_flush
Force a flush. Returns 0 on success, -1 on failure.
ncdirect_get
Provide a NULL ‘ts’ to block at length, a ‘ts’ of 0 for non-blocking operation, and otherwise an absolute deadline in terms of CLOCK_MONOTONIC. Returns a single Unicode code point, a synthesized special key constant, or (uint32_t)-1 on error. Returns 0 on a timeout. If an event is processed, the return value is the ‘id’ field from that event. ‘ni’ may be NULL.
ncdirect_get_blocking
Reads input blocking until an event is processed or a signal is received.
ncdirect_get_nblock
Reads input without blocking.
ncdirect_hline_interp
Draws horizontal lines using the specified NcChannels_u64s, interpolating between them as we go.
ncdirect_init
Initialize a direct-mode Notcurses context on the connected terminal at ‘fp’. ‘fp’ must be a tty. You’ll usually want stdout. Direct mode supports a limited subset of Notcurses routines which directly affect ‘fp’, and neither supports nor requires notcurses_render(). This can be used to add color and styling to text in the standard output paradigm. ‘flags’ is a bitmask over NCDIRECT_OPTION_*. Returns NULL on error, including any failure initializing terminfo.
ncdirect_inputready_fd
Get a file descriptor suitable for input event poll()ing. When this descriptor becomes available, you can call ncdirect_get_nblock(), and input ought be ready. This file descriptor is not necessarily the file descriptor associated with stdin (but it might be!).
ncdirect_off_styles
ncdirect_on_styles
ncdirect_palette_size
Returns the number of simultaneous colors claimed to be supported, or 1 if there is no color support. Note that several terminal emulators advertise more colors than they actually support, downsampling internally.
ncdirect_putegc
Output a single EGC (this might be several characters) from |utf8|, according to the channels |channels|. On success, the number of columns thought to have been used is returned, and if |sbytes| is not NULL, the number of bytes consumed will be written there.
ncdirect_putstr
Output the string |utf8| according to the channels |channels|. Note that ncdirect_putstr() does not explicitly flush output buffers, so it will not necessarily be immediately visible. Returns EOF on error.
ncdirect_raster_frame
Takes the result of ncdirect_render_frame() and writes it to the output, freeing it on all paths.
ncdirect_readline
Read a (heap-allocated) newline-delimited chunk of text, after printing the prompt. The newline itself, if present, is included. Returns NULL on error.
ncdirect_render_frame
Render an image using the specified blitter and scaling, but do not write the result. The image may be arbitrarily many rows – the output will scroll – but will only occupy the column of the cursor, and those to the right. To actually write (and free) this, invoke ncdirect_raster_frame(). ‘maxx’ and ‘maxy’ (cell geometry, not pixel), if greater than 0, are used for scaling; the terminal’s geometry is otherwise used.
ncdirect_render_image
Display an image using the specified blitter and scaling. The image may be arbitrarily many rows – the output will scroll – but will only occupy the column of the cursor, and those to the right. The render/raster process can be split by using ncdirect_render_frame() and ncdirect_raster_frame().
ncdirect_rounded_box
ncdirect_box() with the rounded box-drawing characters
ncdirect_set_bg_default
ncdirect_set_bg_palindex
ncdirect_set_bg_rgb
ncdirect_set_bg_rgb8
Sets the background component components.
ncdirect_set_fg_default
ncdirect_set_fg_palindex
ncdirect_set_fg_rgb
Direct mode. This API can be used to colorize and stylize output generated outside of notcurses, without ever calling notcurses_render(). These should not be intermixed with standard Notcurses rendering.
ncdirect_set_fg_rgb8
Sets the foreground component components.
ncdirect_set_styles
ncplane_styles_*() analogues
ncdirect_stop
Release ‘nc’ and any associated resources. 0 on success, non-0 on failure.
ncdirect_stream
Load successive frames from a file, invoking ‘streamer’ on each.
ncdirect_styles
ncdirect_supported_styles
Returns a 16-bit bitmask of supported curses-style attributes (NCSTYLE_UNDERLINE, NCSTYLE_BOLD, etc.) The attribute is only indicated as supported if the terminal can support it together with color. For more information, see the “ncv” capability in terminfo(5).
ncdirect_vline_interp
Draws horizontal lines using the specified NcChannels_u64s, interpolating between them as we go.
ncdirectf_free
Free a ncdirectf returned from ncdirectf_from_file().
ncdirectf_from_file
Load media from disk, but do not yet render it (presumably because you want to get its geometry via ncdirectf_geom(), or to use the same file with ncdirect_render_loaded_frame() multiple times). You must destroy the result with ncdirectf_free();
ncdirectf_geom
Having loaded the frame ‘frame’, get the geometry of a potential render.
ncdirectf_render
Same as ncdirect_render_frame(), except ‘frame’ must already have been loaded. A loaded frame may be rendered in different ways before it is destroyed.
ncdplot_add_sample
ncdplot_create
ncdplot_destroy
ncdplot_plane
ncdplot_sample
ncdplot_set_sample
ncfadectx_free
Release the resources associated with ‘nctx’.
ncfadectx_iterations
Return the number of iterations through which ‘nctx’ will fade.
ncfadectx_setup
Rather than the simple ncplane_fade{in/out}(), ncfadectx_setup() can be paired with a loop over ncplane_fade{in/out}_iteration() + ncfadectx_free().
ncfdplane_create
Create an ncfdplane around the fd ‘fd’. Consider this function to take ownership of the file descriptor, which will be closed in ncfdplane_destroy().
ncfdplane_destroy
ncfdplane_plane
ncinput_alt_p
Returns true if the Alt modifier is present.
ncinput_capslock_p
Returns true if the CapsLock modifier is present.
ncinput_ctrl_p
Returns true if the Ctrl modifier is present.
ncinput_equal_p
Returns true if the two NcInput are data-equivalent.
ncinput_hyper_p
Returns true if the Hyper modifier is present.
ncinput_meta_p
Returns true if the Meta modifier is present.
ncinput_nomod_p
Is this NcInput free of modifiers (alt, control, shift)?
ncinput_numlock_p
Returns true if the NumLock modifier is present.
ncinput_shift_p
Returns true if the Shift modifier is present.
ncinput_super_p
Returns true if the Super modifier is present.
nckey_mouse_p
Is the event a synthesized mouse event?
nckey_synthesized_p
Is this u32 number a synthesized event?
ncmenu_create
Create a menu with the specified options, bound to the specified plane.
ncmenu_destroy
Destroy a menu created with ncmenu_create().
ncmenu_item_set_status
Disable or enable a menu item. Returns 0 if the item was found.
ncmenu_mouse_selected
Return the item description corresponding to the mouse click ‘click’. The item must be on an actively unrolled section, and the click must be in the area of a valid item. If ‘ni’ is not NULL, and the selected item has a shortcut, ‘ni’ will be filled in with the shortcut.
ncmenu_nextitem
Move to the previous/next item within the currently unrolled section. If no section is unrolled, the first section will be unrolled.
ncmenu_nextsection
Unroll the previous/next section (relative to current unrolled). If no section is unrolled, the first section will be unrolled.
ncmenu_offer_input
Offer the input to the ncmenu. If it’s relevant, this function returns true, and the input ought not be processed further. If it’s irrelevant to the menu, false is returned. Relevant inputs include:
ncmenu_plane
Return the ncplane backing this ncmenu.
ncmenu_previtem
ncmenu_prevsection
ncmenu_rollup
Roll up any unrolled menu section, and hide the menu if using hiding.
ncmenu_selected
Return the selected item description, or NULL if no section is unrolled. If ‘ni’ is not NULL, and the selected item has a shortcut, ‘ni’ will be filled in with that shortcut–this can allow faster matching.
ncmenu_unroll
Unroll the specified menu section, making the menu visible if it was invisible, and rolling up any menu section that is already unrolled.
ncmetric
Takes an arbitrarily large number, and prints it into a fixed-size buffer by adding the necessary SI suffix.
ncmultiselector_create
ncmultiselector_destroy
Destroy the ncmultiselector.
ncmultiselector_offer_input
Offer the input to the ncmultiselector. If it’s relevant, this function returns true, and the input ought not be processed further. If it’s irrelevant to the multiselector, false is returned. Relevant inputs include:
ncmultiselector_plane
Return a reference to the ncmultiselector’s underlying ncplane.
ncmultiselector_selected
Return selected vector. An array of bools must be provided, along with its length. If that length doesn’t match the itemcount, it is an error.
ncpalette_free
Free the palette store ‘p’.
ncpalette_get
Returns the NcRgb_u32 value from an NcChannel_u32 entry inside an NcPalette.
ncpalette_get_rgb8
Extracts the RGB components from an NcChannel_u32 entry inside an NcPalette, and returns the NcChannel_u32.
ncpalette_new
Create a new palette store. It will be initialized with notcurses’ best knowledge of the currently configured palette.
ncpalette_set
Sets the NcRgb_u32 value of an NcChannel_u32 entry inside an NcPalette.
ncpalette_set_rgb8
Sets the RGB components of an NcChannel_u32 entry inside an NcPalette.
ncpalette_use
Attempt to configure the terminal with the provided palette ‘p’. Does not transfer ownership of ‘p’; ncpalette_free() can (ought) still be called.
ncpile_bottom
Return the bottommost plane of the pile containing ‘n’.
ncpile_create
Same as ncplane_create(), but creates a new pile. The returned plane will be the top, bottom, and root of this new pile.
ncpile_rasterize
Make the physical screen match the last rendered frame from the pile of which ‘n’ is a part. This is a blocking call. Don’t call this before the pile has been rendered (doing so will likely result in a blank screen).
ncpile_render
Renders the pile of which ‘n’ is a part. Rendering this pile again will blow away the render. To actually write out the render, call ncpile_rasterize().
ncpile_render_to_buffer
Perform the rendering and rasterization portion of ncpile_render() and ncpile_rasterize(), but do not write the resulting buffer out to the terminal. Using this function, the user can control the writeout process. The returned buffer must be freed by the caller.
ncpile_render_to_file
Write the last rendered frame, in its entirety, to ‘fp’. If a frame has not yet been rendered, nothing will be written.
ncpile_top
Return the topmost plane of the pile containing ‘n’.
ncpixel
Constructs a libav-compatible ABGR pixel from RGB components.
ncpixel_a
Extracts the 8-bit alpha component from an ABGR pixel.
ncpixel_b
Extracts the 8 bit blue component from an ABGR pixel.
ncpixel_g
Extracts the 8 bit green component from an ABGR pixel.
ncpixel_r
Extracts the 8 bit red component from an ABGR pixel.
ncpixel_set_a
Sets the 8-bit alpha component of an ABGR pixel.
ncpixel_set_b
Sets the 8-bit blue component of an ABGR pixel.
ncpixel_set_g
Sets the 8-bit green component of an ABGR pixel.
ncpixel_set_r
Sets the 8-bit red component of an ABGR pixel.
ncpixel_set_rgb8
Sets the RGB components of an ABGR pixel.
ncplane_above
Return the plane above this one, or NULL if this is at the top.
ncplane_abs_x
ncplane_abs_y
ncplane_abs_yx
Get the origin of plane ‘n’ relative to its pile. Either or both of ‘x’ and ‘y’ may be NULL.
ncplane_as_rgba
Create an RGBA flat array from the selected region of the ncplane ‘nc’. Start at the plane’s ‘begy’x’begx’ coordinate (which must lie on the plane), continuing for ‘leny’x’lenx’ cells. Either or both of ‘leny’ and ‘lenx’ can be specified as 0 to go through the boundary of the plane. Only glyphs from the specified ncblitset may be present. If ‘pxdimy’ and/or ‘pxdimx’ are non-NULL, they will be filled in with the total pixel geometry.
ncplane_ascii_box
Like ncplane_box using only ASCII characters.
ncplane_at_cursor
Retrieve the current contents of the cell under the cursor. The EGC is returned, or NULL on error. This EGC must be free()d by the caller. The stylemask and channels are written to ‘stylemask’ and ‘channels’, respectively.
ncplane_at_cursor_cell
Retrieve the current contents of the cell under the cursor into ‘c’. This cell is invalidated if the associated plane is destroyed. Returns the number of bytes in the EGC, or -1 on error.
ncplane_at_yx
Retrieve the current contents of the specified cell. The EGC is returned, or NULL on error. This EGC must be free()d by the caller. The stylemask and channels are written to ‘stylemask’ and ‘channels’, respectively. The return represents how the cell will be used during rendering, and thus integrates any base cell where appropriate. If called upon the secondary columns of a wide glyph, the EGC will be returned (i.e. this function does not distinguish between the primary and secondary columns of a wide glyph). If called on a sprixel plane, its control sequence is returned for all valid locations.
ncplane_at_yx_cell
Retrieve the current contents of the specified cell into ‘c’. This cell is invalidated if the associated plane is destroyed. Returns the number of bytes in the EGC, or -1 on error. Unlike ncplane_at_yx(), when called upon the secondary columns of a wide glyph, the return can be distinguished from the primary column (nccell_wide_right_p(c) will return true). It is an error to call this on a sprixel plane (unlike ncplane_at_yx()).
ncplane_autogrow_p
ncplane_base
Extract the ncplane’s base nccell into ‘c’. The reference is invalidated if ‘ncp’ is destroyed.
ncplane_bchannel
Gets the background alpha and coloring bits from an NcPlane as an NcChannel_u32.
ncplane_below
Return the plane below this one, or NULL if this is at the bottom.
ncplane_bg_alpha
Gets the background NcAlpha_u32 from the NcPlane, shifted to LSBs.
ncplane_bg_default_p
Is the plane’s background using the “default background color”?
ncplane_bg_rgb
Gets the background NcRgb_u32 from an NcPlane, shifted to LSBs.
ncplane_bg_rgb8
Gets the background RGB componentss from an NcPlane, and returns the background NcChannel_u32.
ncplane_box
Draw a box with its upper-left corner at the current cursor position, and its lower-right corner at ‘ystop’x’xstop’. The 6 cells provided are used to draw the upper-left, ur, ll, and lr corners, then the horizontal and vertical lines. ‘ctlword’ is defined in the least significant byte, where bits [7, 4] are a gradient mask, and [3, 0] are a border mask:
ncplane_box_sized
Draws a box with its upper-left corner at the current cursor position, having dimensions len_y * len_x.
ncplane_center_abs
Find the center coordinate of a plane, preferring the top/left in the case of an even number of rows/columns (in such a case, there will be one more cell to the bottom/right of the center than the top/left). The center is then modified relative to the plane’s origin.
ncplane_channels
Gets the NcChannels_u64 of an NcPlane.
ncplane_contents
Create a flat string from the EGCs of the selected region of the ncplane ‘n’. Start at the plane’s ‘begy’x’begx’ coordinate (which must lie on the plane), continuing for ‘leny’x’lenx’ cells. Either or both of ‘leny’ and ‘lenx’ can be specified as 0 to go through the boundary of the plane. -1 can be specified for ‘begx’/‘begy’ to use the current cursor location.
ncplane_create
Create a new ncplane bound to plane ‘n’, at the offset ‘y’x’x’ (relative to the origin of ‘n’) and the specified size. The number of ‘rows’ and ‘cols’ must both be positive. This plane is initially at the top of the z-buffer, as if ncplane_move_top() had been called on it. The void* ‘userptr’ can be retrieved (and reset) later. A ‘name’ can be set, used in debugging.
ncplane_cursor_move_rel
Move the cursor relative to the current cursor position (the cursor needn’t be visible). Returns -1 on error, including target position exceeding the plane’s dimensions.
ncplane_cursor_move_yx
Move the cursor to the specified position (the cursor needn’t be visible). Pass -1 as either coordinate to hold that axis constant. Returns -1 if the move would place the cursor outside the plane.
ncplane_cursor_x
Returns the current row of the cursor within this NcPlane.
ncplane_cursor_y
Returns the current row of the cursor within this NcPlane.
ncplane_cursor_yx
Get the current position of the cursor within n. y and/or x may be NULL.
ncplane_destroy
Destroy the specified ncplane. None of its contents will be visible after the next call to notcurses_render(). It is an error to attempt to destroy the standard plane.
ncplane_dim_x
Gets the columns of the NcPlane.
ncplane_dim_y
Gets the rows of the NcPlane.
ncplane_dim_yx
Return the dimensions of this ncplane. y or x may be NULL.
ncplane_double_box
Like ncplane_box with the double box-drawing characters.
ncplane_double_box_sized
Like ncplane_box_sized with the double box-drawing characters.
ncplane_dup
Duplicate an existing ncplane. The new plane will have the same geometry, will duplicate all content, and will start with the same rendering state. The new plane will be immediately above the old one on the z axis, and will be bound to the same parent (unless ‘n’ is a root plane, in which case the new plane will be bound to it). Bound planes are not duplicated; the new plane is bound to the parent of ‘n’, but has no bound planes.
ncplane_erase
Erase every cell in the ncplane (each cell is initialized to the null glyph and the default channels/styles). All cells associated with this ncplane are invalidated, and must not be used after the call, excluding the base cell. The cursor is homed. The plane’s active attributes are unaffected.
ncplane_erase_region
Erase every cell in the region starting at {ystart, xstart} and having size {|ylen|x|xlen|} for non-zero lengths. If ystart and/or xstart are -1, the current cursor position along that axis is used; other negative values are an error. A negative ylen means to move up from the origin, and a negative xlen means to move left from the origin. A positive ylen moves down, and a positive xlen moves right. A value of 0 for the length erases everything along that dimension. It is an error if the starting coordinate is not in the plane, but the ending coordinate may be outside the plane.
ncplane_fadein
Fade the ncplane in over the specified time. Load the ncplane with the target cells without rendering, then call this function. When it’s done, the ncplane will have reached the target levels, starting from zeroes.
ncplane_fadein_iteration
Fade in through ‘iter’ iterations, where ‘iter’ < ‘ncfadectx_iterations(nctx)’.
ncplane_fadeout
Fade the ncplane out over the provided time, calling ‘fader’ at each iteration. Requires a terminal which supports truecolor, or at least palette modification (if the terminal uses a palette, our ability to fade planes is limited, and affected by the complexity of the rest of the screen).
ncplane_fadeout_iteration
Fade out through ‘iter’ iterations, where ‘iter’ < ‘ncfadectx_iterations(nctx)’.
ncplane_fchannel
Gets the foreground alpha and coloring bits from an NcPlane as an NcChannel_u32.
ncplane_fg_alpha
Gets the foreground NcAlpha_u32 from the NcPlane, shifted to LSBs.
ncplane_fg_default_p
Is the plane’s foreground using the “default foreground color”?
ncplane_fg_rgb
Gets the foreground NcRgb_u32 from an NcPlane, shifted to LSBs.
ncplane_fg_rgb8
Gets the foreground RGB components from an NcPlane. and returns the background NcChannel_u32.
ncplane_format
Set the given style throughout the specified region, keeping content and channels unchanged. The upper left corner is at ‘y’, ‘x’, and -1 may be specified to indicate the cursor’s position in that dimension. The area is specified by ‘ylen’, ‘xlen’, and 0 may be specified to indicate everything remaining to the right and below, respectively. It is an error for any coordinate to be outside the plane. Returns the number of cells set, or -1 on failure.
ncplane_gradient
Draws a gradient with its upper-left corner at the current cursor position, stopping at end_y×end_x.
ncplane_gradient2x1
Do a high-resolution gradient using upper blocks and synced backgrounds. This doubles the number of vertical gradations, but restricts you to half blocks (appearing to be full blocks). Returns the number of cells filled on success, or -1 on error.
ncplane_greyscale
Convert the plane’s content to greyscale.
ncplane_halign
Returns the column at which numcols columns ought start in order to be aligned according to align within the plane.
ncplane_hline
Draws horizontal lines using the specified NcCell, starting at the current cursor position.
ncplane_hline_interp
Draw horizontal or vertical lines using the specified cell, starting at the current cursor position. The cursor will end at the cell following the last cell output (even, perhaps counter-intuitively, when drawing vertical lines), just as if ncplane_putc() was called at that spot. Return the number of cells drawn on success. On error, return the negative number of cells drawn. A length of 0 is an error, resulting in a return of -1.
ncplane_home
Move the cursor to 0, 0. Can’t fail.
ncplane_mergedown
Merge the ncplane ‘src’ down onto the ncplane ‘dst’. This is most rigorously defined as “write to ‘dst’ the frame that would be rendered were the entire stack made up only of the specified subregion of ‘src’ and, below it, the subregion of ‘dst’ having the specified origin. Supply -1 to indicate the current cursor position in the relevant dimension. Merging is independent of the position of ‘src’ viz ‘dst’ on the z-axis. It is an error to define a subregion that is not entirely contained within ‘src’. It is an error to define a target origin such that the projected subregion is not entirely contained within ‘dst’. Behavior is undefined if ‘src’ and ‘dst’ are equivalent. ‘dst’ is modified, but ‘src’ remains unchanged. Neither ‘src’ nor ‘dst’ may have sprixels. Lengths of 0 mean “everything left”.
ncplane_mergedown_simple
Merge the entirety of ‘src’ down onto the ncplane ‘dst’. If ‘src’ does not intersect with ‘dst’, ‘dst’ will not be changed, but it is not an error.
ncplane_move_above
Splice ncplane ‘n’ out of the z-buffer, and reinsert it above ‘above’. Returns non-zero if ‘n’ is already in the desired location. ‘n’ and ‘above’ must not be the same plane. If ‘above’ is NULL, ‘n’ is moved to the bottom of its pile.
ncplane_move_below
Splice ncplane ‘n’ out of the z-buffer, and reinsert it below ‘below’. Returns non-zero if ‘n’ is already in the desired location. ‘n’ and ‘below’ must not be the same plane. If ‘below’ is NULL, ‘n’ is moved to the top of its pile.
ncplane_move_bottom
Relocates this NcPlane at the bottom of the z-buffer.
ncplane_move_family_above
Splice ncplane ‘n’ and its bound planes out of the z-buffer, and reinsert them above or below ‘targ’. Relative order will be maintained between the reinserted planes. For a plane E bound to C, with z-ordering A B C D E, moving the C family to the top results in C E A B D, while moving it to the bottom results in A B D C E.
ncplane_move_family_below
ncplane_move_family_bottom
Splices this plane and its bound planes out of the z-buffer, and reinserts them at the bottom.
ncplane_move_family_top
Splices this plane and its bound planes out of the z-buffer, and reinserts them at the top.
ncplane_move_top
Relocates this NcPlane at the top of the z-buffer.
ncplane_move_yx
Move this plane relative to the standard plane, or the plane to which it is bound (if it is bound to a plane). It is an error to attempt to move the standard plane.
ncplane_moverel
Moves this NcPlane relative to its current location.
ncplane_notcurses
Extract the Notcurses context to which this plane is attached.
ncplane_notcurses_const
ncplane_off_styles
Remove the specified styles from the ncplane’s existing spec.
ncplane_on_styles
Add the specified styles to the ncplane’s existing spec.
ncplane_parent
Get the plane to which the plane ‘n’ is bound, if any.
ncplane_parent_const
ncplane_perimeter
Draws the perimeter around plane.
ncplane_perimeter_double
Like ncplane_perimeter with the double box-drawing characters.
ncplane_perimeter_rounded
Like ncplane_perimeter with the rounded box-drawing characters.
ncplane_pixel_geom
Retrieve pixel geometry for the display region (‘pxy’, ‘pxx’), each cell (‘celldimy’, ‘celldimx’), and the maximum displayable bitmap (‘maxbmapy’, ‘maxbmapx’). If bitmaps are not supported, or if there is no artificial limit on bitmap size, ‘maxbmapy’ and ‘maxbmapx’ will be 0. Any of the geometry arguments may be NULL.
ncplane_polyfill_yx
Starting at the specified coordinate, if its glyph is different from that of ‘c’, ‘c’ is copied into it, and the original glyph is considered the fill target. We do the same to all cardinally-connected cells having this same fill target. Returns the number of cells polyfilled. An invalid initial y, x is an error. Returns the number of cells filled, or -1 on error.
ncplane_pulse
Pulse the plane in and out until the callback returns non-zero, relying on the callback ‘fader’ to initiate rendering. ‘ts’ defines the half-period (i.e. the transition from black to full brightness, or back again). Proper use involves preparing (but not rendering) an ncplane, then calling ncplane_pulse(), which will fade in from black to the specified colors.
ncplane_putc
Replaces the NcCell at the current location with the provided cell, advancing the cursor by its width (but not past the end of the plane).
ncplane_putc_yx
Replace the cell at the specified coordinates with the provided cell ‘c’, and advance the cursor by the width of the cell (but not past the end of the plane). On success, returns the number of columns the cursor was advanced. ‘c’ must already be associated with ‘n’. On failure, -1 is returned.
ncplane_putchar
Replaces the NcCell at the current location with the provided char, using the current style.
ncplane_putchar_stained
Replaces the NcCell at the current location with the provided char, while retaining the previous style.
ncplane_putchar_yx
Replaces the NcCell at the specified coordinates with the provided char, using the current style.
ncplane_putegc
Replaces the NcCell at the current location with the provided egc, using the current style.
ncplane_putegc_stained
Replaces the NcCell at the current location with the provided egc, while retaining the previous style.
ncplane_putegc_yx
Replaces the NcCell at the specified coordinates with the provided egc, using the current style.
ncplane_putnstr
Writes a string to the current location, using the current style, and no more than num_bytes bytes will be written.
ncplane_putnstr_aligned
ncplane_putnstr_yx
Writes a series of EGCs to the provided location, using the current style, and no more than num_bytes bytes will be written.
ncplane_putstr
Writes a string to the current location, using the current style.
ncplane_putstr_aligned
Writes a string to the provided location, using the current style and NcAlign_u32ed on x.
ncplane_putstr_stained
Writes a string to the current location, retaining the previous style.
ncplane_putstr_yx
Writes a string to the provided location, using the current style.
ncplane_puttext
Write the specified text to the plane, breaking lines sensibly, beginning at the specified line. Returns the number of columns written. When breaking a line, the line will be cleared to the end of the plane (the last line will not be so cleared). The number of bytes written from the input is written to ‘*bytes’ if it is not NULL. Cleared columns are included in the return value, but not included in the number of bytes written. Leaves the cursor at the end of output. A partial write will be accomplished as far as it can; determine whether the write completed by inspecting ‘*bytes’. Can output to multiple rows even in the absence of scrolling, but not more rows than are available. With scrolling enabled, arbitrary amounts of data can be emitted. All provided whitespace is preserved – ncplane_puttext() followed by an appropriate ncplane_contents() will read back the original output.
ncplane_putwegc_stained
Replace the EGC underneath us, but retain the styling. The current styling of the plane will not be changed.
ncplane_putwstr_stained
ncplane_qrcode
Draw a QR code at the current position on the plane. If there is insufficient room to draw the code here, or there is any other error, non-zero will be returned. Otherwise, the QR code “version” (size) is returned. The QR code is (version * 4 + 17) columns wide, and ⌈version * 4 + 17⌉ rows tall (the properly-scaled values are written back to ‘*ymax’ and ‘*xmax’).
ncplane_reparent
Plane ‘n’ will be unbound from its parent plane, and will be made a bound child of ‘newparent’. It is an error if ‘n’ or ‘newparent’ are NULL. If ‘newparent’ is equal to ‘n’, ‘n’ becomes the root of a new pile, unless ‘n’ is already the root of a pile, in which case this is a no-op. Returns ‘n’. The standard plane cannot be reparented. Any planes bound to ‘n’ are reparented to the previous parent of ‘n’.
ncplane_reparent_family
The same as ncplane_reparent(), except any planes bound to ‘n’ come along with it to its new destination. Their z-order is maintained. If ‘newparent’ is an ancestor of ‘n’, NULL is returned, and no changes are made.
ncplane_resize
Resize the specified ncplane. The four parameters ‘keepy’, ‘keepx’, ‘keepleny’, and ‘keeplenx’ define a subset of the ncplane to keep, unchanged. This may be a region of size 0, though none of these four parameters may be negative. ‘keepx’ and ‘keepy’ are relative to the ncplane. They must specify a coordinate within the ncplane’s totality. ‘yoff’ and ‘xoff’ are relative to ‘keepy’ and ‘keepx’, and place the upper-left corner of the resized ncplane. Finally, ‘ylen’ and ‘xlen’ are the dimensions of the ncplane after resizing. ‘ylen’ must be greater than or equal to ‘keepleny’, and ‘xlen’ must be greater than or equal to ‘keeplenx’. It is an error to attempt to resize the standard plane. If either of ‘keepleny’ or ‘keeplenx’ is non-zero, both must be non-zero.
ncplane_resize_marginalized
resize the plane to its parent’s size, attempting to enforce the margins supplied along with NCPLANE_OPTION_MARGINALIZED.
ncplane_resize_maximize
resize the plane to the visual region’s size (used for the standard plane).
ncplane_resize_placewithin
move the plane such that it is entirely within its parent, if possible. no resizing is performed.
ncplane_resize_realign
realign the plane ‘n’ against its parent, using the alignments specified with NCPLANE_OPTION_HORALIGNED and/or NCPLANE_OPTION_VERALIGNED.
ncplane_resize_simple
Resizes the plane, retaining what data we can (everything, unless we’re shrinking in some dimension). Keep the origin where it is.
ncplane_resizecb
Returns the ncplane’s current resize callback.
ncplane_rotate_ccw
ncplane_rotate_cw
Rotate the plane π/2 radians clockwise or counterclockwise. This cannot be performed on arbitrary planes, because glyphs cannot be arbitrarily rotated. The glyphs which can be rotated are limited: line-drawing characters, spaces, half blocks, and full blocks. The plane must have an even number of columns. Use the ncvisual rotation for a more flexible approach.
ncplane_rounded_box
Like ncplane_box with the rounded box-drawing characters.
ncplane_rounded_box_sized
Like ncplane_box_sized with the rounded box-drawing characters.
ncplane_scrolling_p
ncplane_scrollup
Effect |r| scroll events on the plane |n|. Returns an error if |n| is not a scrolling plane, and otherwise returns the number of lines scrolled.
ncplane_scrollup_child
Scroll |n| up until |child| is no longer hidden beneath it. Returns an error if |child| is not a child of |n|, or |n| is not scrolling, or |child| is fixed. Returns the number of scrolling events otherwise (might be 0). If the child plane is not fixed, it will likely scroll as well.
ncplane_set_autogrow
By default, planes are created with autogrow disabled. Autogrow can be dynamically controlled with ncplane_set_autogrow(). Returns true if autogrow was previously enabled, or false if it was disabled.
ncplane_set_base
Set the ncplane’s base nccell. It will be used for purposes of rendering anywhere that the ncplane’s gcluster is 0. Note that the base cell is not affected by ncplane_erase(). ‘egc’ must be an extended grapheme cluster. Returns the number of bytes copied out of ‘gcluster’, or -1 on failure.
ncplane_set_base_cell
Set the ncplane’s base nccell to ‘c’. The base cell is used for purposes of rendering anywhere that the ncplane’s gcluster is 0. Note that the base cell is not affected by ncplane_erase(). ‘c’ must not be a secondary cell from a multicolumn EGC.
ncplane_set_bchannel
Sets the background alpha and coloring bits of an NcPlane from an NcChannel_u32, and returns the new NcChannels_u64.
ncplane_set_bg_alpha
ncplane_set_bg_default
ncplane_set_bg_not_default
Marks the background as NOT using the “default color”, and returns the new NcChannels_u64.
ncplane_set_bg_palindex
ncplane_set_bg_rgb
ncplane_set_bg_rgb8
ncplane_set_channels
Sets the NcChannels_u64 of an NcPlane.
ncplane_set_default
Marks both the foreground and background as using the “default color”, and returns the new NcChannels_u64.
ncplane_set_fchannel
Sets the background alpha and coloring bits of an NcPlane from an NcChannel_u32, and returns the new NcChannels_u64.
ncplane_set_fg_alpha
Set the alpha parameters for ncplane ‘n’.
ncplane_set_fg_default
Use the default color for the foreground/background.
ncplane_set_fg_not_default
Marks the foreground as NOT using the “default color”, and returns the new NcChannels_u64.
ncplane_set_fg_palindex
Set the ncplane’s foreground palette index, set the foreground palette index bit, set it foreground-opaque, and clear the foreground default color bit.
ncplane_set_fg_rgb
Same, but with rgb assembled into a channel (i.e. lower 24 bits).
ncplane_set_fg_rgb8
Set the current fore/background color using RGB specifications. If the terminal does not support directly-specified 3x8b cells (24-bit “TrueColor”, indicated by the “RGB” terminfo capability), the provided values will be interpreted in some lossy fashion. None of r, g, or b may exceed 255. “HP-like” terminals require setting foreground and background at the same time using “color pairs”; Notcurses will manage color pairs transparently.
ncplane_set_not_default
Marks both the foreground and background as NOT using the “default color”, and returns the new NcChannels_u64.
ncplane_set_resizecb
Replace the ncplane’s existing resizecb with ‘resizecb’ (which may be NULL). The standard plane’s resizecb may not be changed.
ncplane_set_scrolling
All planes are created with scrolling disabled. Scrolling can be dynamically controlled with ncplane_set_scrolling(). Returns true if scrolling was previously enabled, or false if it was disabled.
ncplane_set_styles
Set the specified style bits for the ncplane ‘n’, whether they’re actively supported or not.
ncplane_set_userptr
Manipulate the opaque user pointer associated with this plane. ncplane_set_userptr() returns the previous userptr after replacing it with ‘opaque’. the others simply return the userptr.
ncplane_stain
Set the given channels throughout the specified region, keeping content and channels unchanged. The upper left corner is at ‘y’, ‘x’, and -1 may be specified to indicate the cursor’s position in that dimension. The area is specified by ‘ylen’, ‘xlen’, and 0 may be specified to indicate everything remaining to the right and below, respectively. It is an error for any coordinate to be outside the plane. Returns the number of cells set, or -1 on failure.
ncplane_styles
Get the current styling for the ncplane ‘n’.
ncplane_translate
provided a coordinate relative to the origin of ‘src’, map it to the same absolute coordinate relative to the origin of ‘dst’. either or both of ‘y’ and ‘x’ may be NULL. if ‘dst’ is NULL, it is taken to be the standard plane.
ncplane_translate_abs
Fed absolute ‘y’/‘x’ coordinates, determine whether that coordinate is within the ncplane ‘n’. If not, return false. If so, return true. Either way, translate the absolute coordinates relative to ‘n’. If the point is not within ‘n’, these coordinates will not be within the dimensions of the plane.
ncplane_userptr
ncplane_valign
Returns the row at which numrows rows ought start in order to be aligned according to align within this NcPlane.
ncplane_vline
Draws vertical lines using the specified cell, starting at the current cursor position.
ncplane_vline_interp
ncplane_x
ncplane_y
ncplane_yx
Get the origin of plane ‘n’ relative to its bound plane, or pile (if ‘n’ is a root plane). To get absolute coordinates, use ncplane_abs_yx().
ncprogbar_create
Takes ownership of the ncplane ‘n’, which will be destroyed by ncprogbar_destroy(). The progress bar is initially at 0%.
ncprogbar_destroy
Destroy the progress bar and its underlying ncplane.
ncprogbar_plane
Return a reference to the ncprogbar’s underlying ncplane.
ncprogbar_progress
Get the progress bar’s completion, a double on [0, 1].
ncprogbar_set_progress
Set the progress bar’s completion, a double 0 <= ‘p’ <= 1.
ncreader_clear
empty the ncreader of any user input, and home the cursor.
ncreader_contents
return a heap-allocated copy of the current (UTF-8) contents.
ncreader_create
ncreaders provide freeform input in a (possibly multiline) region, supporting optional readline keybindings. takes ownership of ‘n’, destroying it on any error (ncreader_destroy() otherwise destroys the ncplane).
ncreader_destroy
destroy the reader and its bound plane. if ‘contents’ is not NULL, the UTF-8 input will be heap-duplicated and written to ‘contents’.
ncreader_move_down
ncreader_move_left
Atttempt to move in the specified direction. Returns 0 if a move was successfully executed, -1 otherwise. Scrolling is taken into account.
ncreader_move_right
ncreader_move_up
ncreader_offer_input
Offer the input to the ncreader. If it’s relevant, this function returns true, and the input ought not be processed further. Almost all inputs are relevant to an ncreader, save synthesized ones.
ncreader_plane
ncreader_write_egc
Destructively write the provided EGC to the current cursor location. Move the cursor as necessary, scrolling if applicable.
ncreel_add
Add a new nctablet to the provided ncreel ‘nr’, having the callback object ‘opaque’. Neither, either, or both of ‘after’ and ‘before’ may be specified. If neither is specified, the new tablet can be added anywhere on the reel. If one or the other is specified, the tablet will be added before or after the specified tablet. If both are specified, the tablet will be added to the resulting location, assuming it is valid (after->next == before->prev); if it is not valid, or there is any other error, NULL will be returned.
ncreel_create
Take over the ncplane ‘nc’ and use it to draw a reel according to ‘popts’. The plane will be destroyed by ncreel_destroy(); this transfers ownership.
ncreel_del
Delete the tablet specified by t from the ncreel ‘nr’. Returns -1 if the tablet cannot be found.
ncreel_destroy
Destroy an ncreel allocated with ncreel_create().
ncreel_focused
Return the focused tablet, if any tablets are present. This is not a copy; be careful to use it only for the duration of a critical section.
ncreel_next
Change focus to the next tablet, if one exists
ncreel_offer_input
Offer input ‘ni’ to the ncreel ‘nr’. If it’s relevant, this function returns true, and the input ought not be processed further. If it’s irrelevant to the reel, false is returned. Relevant inputs include:
ncreel_plane
Returns the ncplane on which this ncreel lives.
ncreel_prev
Change focus to the previous tablet, if one exists
ncreel_redraw
Redraw the ncreel ‘nr’ in its entirety. The reel will be cleared, and tablets will be lain out, using the focused tablet as a fulcrum. Tablet drawing callbacks will be invoked for each visible tablet.
ncreel_tabletcount
Return the number of nctablets in the ncreel ‘nr’.
ncresizecb_to_c
Converts NcResizeCb to NcResizeCbUnsafe.
ncresizecb_to_rust
Converts NcResizeCbUnsafe to NcResizeCb.
ncselector_additem
Dynamically add or delete items. It is usually sufficient to supply a static list of items via ncselector_options->items.
ncselector_create
ncselector_delitem
ncselector_destroy
Destroy the ncselector.
ncselector_nextitem
ncselector_offer_input
Offer the input to the ncselector. If it’s relevant, this function returns true, and the input ought not be processed further. If it’s irrelevant to the selector, false is returned. Relevant inputs include:
ncselector_plane
Return a reference to the ncselector’s underlying ncplane.
ncselector_previtem
Move up or down in the list. A reference to the newly-selected item is returned, or NULL if there are no items in the list.
ncselector_selected
Return reference to the selected option, or NULL if there are no items.
ncstrwidth
Returns the number of columns occupied by the longest valid prefix of a multibyte (UTF-8) string. If an invalid character is encountered, -1 will be returned, and the number of valid bytes and columns will be written into *|validbytes| and *|validwidth| (assuming them non-NULL). If the entire string is valid, *|validbytes| and *|validwidth| reflect the entire string.
ncsubproc_createv
see exec(2). p-types use $PATH. e-type passes environment vars.
ncsubproc_createvp
ncsubproc_createvpe
ncsubproc_destroy
ncsubproc_plane
nctab_cb
Returns the tab callback.
nctab_move
Move ‘t’ after ‘after’ (if not NULL) and before ‘before’ (if not NULL). If both ‘after’ and ‘before’ are NULL, the function returns -1, otherwise it returns 0.
nctab_move_left
Move ‘t’ to the right by one tab, looping around to become the last tab if needed.
nctab_move_right
Move ‘t’ to the right by one tab, looping around to become leftmost if needed.
nctab_name
Returns the tab name. This is not a copy and it should not be stored.
nctab_name_width
Returns the width (in columns) of the tab’s name.
nctab_next
Returns the tab to the right of ‘t’. This does not change which tab is selected.
nctab_prev
Returns the tab to the left of ‘t’. This does not change which tab is selected.
nctab_set_cb
Set the tab callback function for ‘t’. Returns the previous tab callback.
nctab_set_name
Change the name of ‘t’. Returns -1 if ‘newname’ is NULL, and 0 otherwise.
nctab_set_userptr
Set the user pointer of ‘t’. Returns the previous user pointer.
nctab_userptr
Returns the tab’s user pointer.
nctabbed_add
Add a new tab to ‘nt’ with the given tab callback, name, and user pointer. If both ‘before’ and ‘after’ are NULL, the tab is inserted after the selected tab. Otherwise, it gets put after ‘after’ (if not NULL) and before ‘before’ (if not NULL). If both ‘after’ and ‘before’ are given, they must be two neighboring tabs (the tab list is circular, so the last tab is immediately before the leftmost tab), otherwise the function returns NULL. If ‘name’ is NULL or a string containing illegal characters, the function returns NULL. On all other failures the function also returns NULL. If it returns NULL, none of the arguments are modified, and the widget state is not altered.
nctabbed_channels
Write the channels for tab headers, the selected tab header, and the separator to ‘*hdrchan’, ‘*selchan’, and ‘*sepchan’ respectively.
nctabbed_content_plane
Returns the tab content plane.
nctabbed_create
Creates a new nctabbed widget, associated with the given ncplane ‘n’, and with additional options given in ‘opts’. When ‘opts’ is NULL, it acts as if it were called with an all-zero opts. The widget takes ownership of ‘n’, and destroys it when the widget is destroyed. Returns the newly created widget. Returns NULL on failure, also destroying ‘n’.
nctabbed_del
Remove a tab ‘t’ from ‘nt’. Its neighboring tabs become neighbors to each other. If ‘t’ if the selected tab, the tab after ‘t’ becomes selected. Likewise if ‘t’ is the leftmost tab, the tab after ‘t’ becomes leftmost. If ‘t’ is the only tab, there will no more be a selected or leftmost tab, until a new tab is added. Returns -1 if ‘t’ is NULL, and 0 otherwise.
nctabbed_destroy
Destroy an nctabbed widget. All memory belonging to ‘nt’ is deallocated, including all tabs and their names. The plane associated with ‘nt’ is also destroyed. Calling this with NULL does nothing.
nctabbed_ensure_selected_header_visible
Make sure the tab header of the currently selected tab is at least partially visible. (by rotating tabs until at least one column is displayed) Does nothing if there are no tabs.
nctabbed_leftmost
Returns the leftmost tab, or NULL if there are no tabs.
nctabbed_next
Select the tab after the currently selected tab, and return the newly selected tab. Returns NULL if there are no tabs.
nctabbed_plane
Returns the plane associated to ‘nt’.
nctabbed_prev
Select the tab before the currently selected tab, and return the newly selected tab. Returns NULL if there are no tabs.
nctabbed_redraw
Redraw the widget. This calls the tab callback of the currently selected tab to draw tab contents, and draws tab headers. The tab content plane is not modified by this function, apart from resizing the plane is necessary.
nctabbed_rotate
Rotate the tabs of ‘nt’ right by ‘amt’ tabs, or ‘-amt’ tabs left if ‘amt’ is negative. Tabs are rotated only by changing the leftmost tab; the selected tab stays the same. If there are no tabs, nothing happens.
nctabbed_select
Change the selected tab to be ‘t’. Returns the previously selected tab.
nctabbed_selected
Returns the currently selected tab, or NULL if there are no tabs.
nctabbed_separator
Returns the tab separator. This is not a copy and it should not be stored. This can be NULL, if the separator was set to NULL in ncatbbed_create() or nctabbed_set_separator().
nctabbed_separator_width
Returns the tab separator width, or zero if there is no separator.
nctabbed_set_hdrchan
Set the tab headers channel for ‘nt’.
nctabbed_set_selchan
Set the selected tab header channel for ‘nt’.
nctabbed_set_separator
Change the tab separator for ‘nt’. Returns -1 if ‘separator’ is not NULL and is not a valid string, and 0 otherwise.
nctabbed_set_sepchan
Set the tab separator channel for ‘nt’.
nctabbed_tabcount
Returns the number of tabs in the widget.
nctablet_plane
Access the ncplane associated with nctablet ‘t’, if one exists.
nctablet_userptr
Returns a pointer to a user pointer associated with this nctablet.
nctree_add
Insert |add| into the nctree |n| at |spec|. The path up to the last element must already exist. If an item already exists at the path, it will be moved to make room for |add|.
nctree_create
|opts| may not be NULL, since it is necessary to define a callback function.
nctree_del
Delete the item at |spec|, including any subitems.
nctree_destroy
Destroy the nctree.
nctree_focused
Return the focused item, if any items are present. This is not a copy; be careful to use it only for the duration of a critical section.
nctree_goto
Go to the item specified by the array |spec| (a spec is a series of unsigned values, each identifying a subelement in the hierarchy thus far, terminated by UINT_MAX). If the spec is invalid, NULL is returned, and the depth of the first invalid spec is written to *|failspec|. Otherwise, the true depth is written to *|failspec|, and the curry is returned (|failspec| is necessary because the curry could itself be NULL).
nctree_next
Change focus to the next item.
nctree_offer_input
Offer input ‘ni’ to the nctree ‘n’. If it’s relevant, this function returns true, and the input ought not be processed further. If it’s irrelevant to the tree, false is returned. Relevant inputs include:
nctree_plane
Returns the ncplane on which this nctree lives.
nctree_prev
Change focus to the previous item.
nctree_redraw
Redraw the nctree ‘n’ in its entirety. The tree will be cleared, and items will be lain out, using the focused item as a fulcrum. Item-drawing callbacks will be invoked for each visible item.
ncuplot_add_sample
Add to or set the value corresponding to this x. If x is beyond the current x window, the x window is advanced to include x, and values passing beyond the window are lost. The first call will place the initial window. The plot will be redrawn, but notcurses_render() is not called.
ncuplot_create
Use the provided plane ‘n’ for plotting according to the options ‘opts’. The plot will make free use of the entirety of the plane. For domain autodiscovery, set miny == maxy == 0. ncuplot holds uint64_ts, while ncdplot holds doubles.
ncuplot_destroy
ncuplot_plane
Return a reference to the ncplot’s underlying ncplane.
ncuplot_sample
ncuplot_set_sample
ncvisual_at_yx
Get the specified pixel from the specified ncvisual.
ncvisual_blit
Render the decoded frame according to the provided options (which may be NULL). The plane used for rendering depends on vopts->n and vopts->flags. If NCVISUAL_OPTION_CHILDPLANE is set, vopts->n must not be NULL, and the plane will always be created as a child of vopts->n. If this flag is not set, and vopts->n is NULL, a new plane is created as root of a new pile. If the flag is not set and vopts->n is not NULL, we render to vopts->n. A subregion of the visual can be rendered using ‘begx’, ‘begy’, ‘lenx’, and ‘leny’. Negative values for any of these are an error. It is an error to specify any region beyond the boundaries of the frame. Returns the (possibly newly-created) plane to which we drew. Pixels may not be blitted to the standard plane.
ncvisual_decode
extract the next frame from an ncvisual. returns 1 on end of file, 0 on success, and -1 on failure.
ncvisual_decode_loop
decode the next frame ala ncvisual_decode(), but if we have reached the end, rewind to the first frame of the ncvisual. a subsequent ‘ncvisual_blit()’ will render the first frame, as if the ncvisual had been closed and reopened. the return values remain the same as those of ncvisual_decode().
ncvisual_destroy
Destroy an ncvisual. Rendered elements will not be disrupted, but the visual can be neither decoded nor rendered any further.
ncvisual_from_bgra
ncvisual_from_rgba(), but ‘bgra’ is arranged as BGRA. note that this is a byte-oriented layout, despite being bunched in 32-bit pixels; the lowest memory address ought be B, and A is reached by adding 3 to that address. It is an error if ‘rows’, ‘cols’, or ‘rowstride’ are not positive, if ‘rowstride’ is not a multiple of 4, or if ‘rowstride’ is less than ‘cols’ * 4.
ncvisual_from_file
Open a visual at ‘file’, extract a codec and parameters, decode the first image to memory.
ncvisual_from_palidx
ncvisual_from_rgba(), but ‘data’ is ‘pstride’-byte palette-indexed pixels, arranged in ‘rows’ lines of ‘rowstride’ bytes each, composed of ‘cols’ pixels. ‘palette’ is an array of at least ‘palsize’ ncchannels. It is an error if ‘rows’, ‘cols’, ‘rowstride’, or ‘pstride’ are not positive, if ‘rowstride’ is not a multiple of ‘pstride’, or if ‘rowstride’ is less than ‘cols’ * ‘pstride’.
ncvisual_from_plane
Promote an ncplane ‘n’ to an ncvisual. The plane may contain only spaces, half blocks, and full blocks. The latter will be checked, and any other glyph will result in a NULL being returned. This function exists so that planes can be subjected to ncvisual transformations. If possible, it’s better to create the ncvisual from memory using ncvisual_from_rgba(). Lengths of 0 are interpreted to mean “all available remaining area”.
ncvisual_from_rgb_loose
ncvisual_from_rgba(), but the pixels are 4-byte RGBx. A is filled in throughout using ‘alpha’. It is an error if ‘rows’, ‘cols’, or ‘rowstride’ are not positive, if ‘rowstride’ is not a multiple of 4, or if ‘rowstride’ is less than ‘cols’ * 4.
ncvisual_from_rgb_packed
ncvisual_from_rgba(), but the pixels are 3-byte RGB. A is filled in throughout using ‘alpha’. It is an error if ‘rows’, ‘rowstride’, or ‘cols’ is not positive, if ‘rowstride’ is not a multiple of 3, or if ‘rowstride’ is less than ‘cols’ * 3.
ncvisual_from_rgba
Prepare an ncvisual, and its underlying plane, based off RGBA content in memory at ‘rgba’. ‘rgba’ is laid out as ‘rows’ lines, each of which is ‘rowstride’ bytes in length. Each line has ‘cols’ 32-bit 8bpc RGBA pixels followed by possible padding (there will be ‘rowstride’ - ‘cols’ * 4 bytes of padding). The total size of ‘rgba’ is thus (‘rows’ * ‘rowstride’) bytes, of which (‘rows’ * ‘cols’ * 4) bytes are actual non-padding data. It is an error if any argument is not positive, if ‘rowstride’ is not a multiple of 4, or if ‘rowstride’ is less than ‘cols’ * 4.
ncvisual_from_sixel
Construct an ncvisual from a nul-terminated Sixel control sequence.
ncvisual_geom
all-purpose ncvisual geometry solver. one or both of ‘nc’ and ‘n’ must be non-NULL. if ‘nc’ is NULL, only pixy/pixx will be filled in, with the true pixel geometry of ‘n’. if ‘n’ is NULL, only cdimy/cdimx, blitter, scaley/scalex, and maxpixely/maxpixelx are filled in. cdimy/cdimx and maxpixely/maxpixelx are only ever filled in if we know them.
ncvisual_media_defblitter
Get the default media (not plot) blitter for this environment when using the specified scaling method. Currently, this means:
ncvisual_polyfill_yx
Polyfill at the specified location within the ncvisual ‘n’, using ‘rgba’.
ncvisual_resize
Scale the visual to ‘rows’ X ‘columns’ pixels, using the best scheme available. This is a lossy transformation, unless the size is unchanged.
ncvisual_resize_noninterpolative
Scale the visual to ‘rows’ X ‘columns’ pixels, using non-interpolative (naive) scaling. No new colors will be introduced as a result.
ncvisual_rotate
Rotate the visual ‘rads’ radians. Only M_PI/2 and -M_PI/2 are supported at the moment, but this might change in the future.
ncvisual_set_yx
Set the specified pixel in the specified ncvisual.
ncvisual_simple_streamer
Shut up and display my frames! Provide as an argument to ncvisual_stream(). If you’d like subtitles to be decoded, provide an ncplane as the curry. If the curry is NULL, subtitles will not be displayed.
ncvisual_stream
Stream the entirety of the media, according to its own timing. Blocking, obviously. streamer may be NULL; it is otherwise called for each frame, and its return value handled as outlined for streamcb. If streamer() returns non-zero, the stream is aborted, and that value is returned. By convention, return a positive number to indicate intentional abort from within streamer(). ‘timescale’ allows the frame duration time to be scaled. For a visual naturally running at 30FPS, a ‘timescale’ of 0.1 will result in 300FPS, and a ‘timescale’ of 10 will result in 3FPS. It is an error to supply ‘timescale’ less than or equal to 0.
ncvisual_subtitle_plane
If a subtitle ought be displayed at this time, return a new plane (bound to ‘parent’ containing the subtitle, which might be text or graphics (depending on the input format).
notcurses_accountname
Returns a heap-allocated copy of the user name under which we are running.
notcurses_align
Returns the offset into avail_u at which u ought be output given the requirements of align.
notcurses_at_yx
Retrieve the contents of the specified cell as last rendered. Returns the EGC or NULL on error. This EGC must be free()d by the caller. The stylemask and channels are written to ‘stylemask’ and ‘channels’, respectively.
notcurses_bottom
Returns the bottommost NcPlane on the standard pile, of which there is always at least one.
notcurses_canbraille
Returns true if we can reliably use Unicode Braille.
notcurses_canchangecolor
Returns true if it’s possible to set the “hardware” palette.
notcurses_canfade
Returns true if fading is possible.
notcurses_canhalfblock
Returns true if we can reliably use Unicode half blocks.
notcurses_canopen_images
Can we load images? This requires being built against FFmpeg/OIIO.
notcurses_canopen_videos
Can we load videos? This requires being built against FFmpeg.
notcurses_canpixel
Returns true if we can blit pixel-accurate bitmaps.
notcurses_canquadrant
Returns true if we can reliably use Unicode quadrant blocks.
notcurses_cansextant
Returns true if we can reliably use Unicode 13 sextants.
notcurses_cantruecolor
Returns true if it’s possible to directly specify RGB values per cell, or false if it’s only possible to use palettes.
notcurses_canutf8
Returns true if the encoding is UTF-8.
notcurses_capabilities
notcurses_check_pixel_support
Can we blit pixel-accurate bitmaps?
notcurses_core_init
The same as notcurses_init(), but without any multimedia functionality, allowing for a svelter binary. Link with notcurses-core if this is used.
notcurses_cursor_disable
Disable the hardware cursor. It is an error to call this while the cursor is already disabled.
notcurses_cursor_enable
Enable or disable the terminal’s cursor, if supported, placing it at ‘y’, ‘x’. Immediate effect (no need for a call to notcurses_render()). It is an error if ‘y’, ‘x’ lies outside the standard plane. Can be called while already visible to move the cursor.
notcurses_cursor_yx
Get the current location of the terminal’s cursor, whether visible or not.
notcurses_debug
Dump selected Notcurses state to the supplied ‘debugfp’. Output is freeform, newline-delimited, and subject to change. It includes geometry of all planes, from all piles. No line has more than 80 columns’ worth of output.
notcurses_default_background
Get the default background color, if it is known. Returns -1 on error (unknown background). On success, returns 0, writing the RGB value to ‘bg’ (if non-NULL) and setting ‘bgtrans’ high iff the background color is treated as transparent.
notcurses_default_foreground
Get the default foreground color, if it is known. Returns -1 on error (unknown foreground). On success, returns 0, writing the RGB value to ‘fg’ (if non-NULL)
notcurses_detected_terminal
Returns the name (and sometimes version) of the terminal, as Notcurses has been best able to determine.
notcurses_drop_planes
Destroy all ncplanes other than the stdplane.
notcurses_enter_alternate_screen
Shift to the alternate screen, if available. If already using the alternate screen, this returns 0 immediately. If the alternate screen is not available, this returns -1 immediately. Entering the alternate screen turns off scrolling for the standard plane.
notcurses_get
Read a UTF-32-encoded Unicode codepoint from input. This might only be part of a larger EGC. Provide a NULL ‘ts’ to block at length, and otherwise a timespec specifying an absolute deadline calculated using CLOCK_MONOTONIC. Returns a single Unicode code point, or a synthesized special key constant, or (uint32_t)-1 on error. Returns 0 on a timeout. If an event is processed, the return value is the ‘id’ field from that event. ‘ni’ may be NULL.
notcurses_get_blocking
Reads input blocking until an event is processed or a signal is received (including resize events)
notcurses_get_nblock
Reads input without blocking.
notcurses_getvec
Acquire up to ‘vcount’ ncinputs at the vector ‘ni’. The number read will be returned, or -1 on error without any reads, 0 on timeout.
notcurses_hostname
Returns a heap-allocated copy of the local host name.
notcurses_init
Initialize a Notcurses context on the connected terminal at ‘fp’. ‘fp’ must be a tty. You’ll usually want stdout. NULL can be supplied for ‘fp’, in which case /dev/tty will be opened. Returns NULL on error, including any failure initializing terminfo.
notcurses_inputready_fd
Get a file descriptor suitable for input event poll()ing. When this descriptor becomes available, you can call notcurses_get_nblock(), and input ought be ready. This file descriptor is not necessarily the file descriptor associated with stdin (but it might be!).
notcurses_leave_alternate_screen
Exit the alternate screen. Immediately returns 0 if not currently using the alternate screen.
notcurses_lex_blitter
Lex a blitter.
notcurses_lex_margins
Lex a margin argument according to the standard Notcurses definition. There can be either a single number, which will define all margins equally, or there can be four numbers separated by commas.
notcurses_lex_scalemode
Lex a scaling mode (one of “none”, “stretch”, “scale”, “hires”, “scalehi”, or “inflate”).
notcurses_linesigs_disable
Disable signals originating from the terminal’s line discipline, i.e. SIGINT (^C), SIGQUIT (^), and SIGTSTP (^Z). They are enabled by default.
notcurses_linesigs_enable
Restore signals originating from the terminal’s line discipline, i.e. SIGINT (^C), SIGQUIT (^), and SIGTSTP (^Z), if disabled.
notcurses_mice_disable
Disables all mice tracking.
notcurses_mice_enable
Enable mice events according to ‘eventmask’; an eventmask of 0 will disable all mice tracking. On failure, -1 is returned. On success, 0 is returned, and mouse events will be published to notcurses_get().
notcurses_osversion
Returns a heap-allocated copy of human-readable OS name and version.
notcurses_palette_size
Returns the number of simultaneous colors claimed to be supported, or 1 if there is no color support. Note that several terminal emulators advertise more colors than they actually support, downsampling internally.
notcurses_refresh
Refresh the physical screen to match what was last rendered (i.e., without reflecting any changes since the last call to notcurses_render()). This is primarily useful if the screen is externally corrupted, or if an NCKEY_RESIZE event has been read and you’re not yet ready to render. The current screen geometry is returned in ‘y’ and ‘x’, if they are not NULL.
notcurses_render
Renders and rasterizes the standard pile in one shot. Blocking call.
notcurses_stats
Acquire an atomic snapshot of the Notcurses object’s stats.
notcurses_stats_alloc
Allocate an ncstats object. Use this rather than allocating your own, since future versions of Notcurses might enlarge this structure.
notcurses_stats_reset
Reset all cumulative stats (immediate ones, such as fbbytes, are not reset), first copying them into |*stats| (if |stats| is not NULL).
notcurses_stddim_yx
notcurses_stdplane, plus free bonus dimensions written to non-NULL y/x!
notcurses_stddim_yx_const
notcurses_stdplane_const, plus free bonus dimensions written to non-NULL y/x!
notcurses_stdplane
Get a reference to the standard plane (one matching our current idea of the terminal size) for this terminal. The standard plane always exists, and its origin is always at the uppermost, leftmost cell of the terminal.
notcurses_stdplane_const
notcurses_stop
Destroy a Notcurses context. A NULL ‘nc’ is a no-op.
notcurses_str_blitter
Get the name of a blitter.
notcurses_str_scalemode
Get the name of a scaling mode.
notcurses_supported_styles
Returns a 16-bit bitmask of supported curses-style attributes (NCSTYLE_UNDERLINE, NCSTYLE_BOLD, etc.) The attribute is only indicated as supported if the terminal can support it together with color. For more information, see the “ncv” capability in terminfo(5).
notcurses_term_dim_yx
Returns our current idea of the terminal dimensions in rows and cols.
notcurses_top
Returns the topmost NcPlane on the standard pile, of which there is always at least one.
notcurses_version
Get a human-readable string describing the running Notcurses version.
notcurses_version_components
Cannot be inline, as we want to get the versions of the actual Notcurses library we loaded, not what we compile against.

Type Aliases§

NcAlign_u32
Alignment within an NcPlane or terminal.
NcAlpha_u32
2 bits of alpha (surrounded by context dependent bits) part of an NcChannel.
NcBlitter_u32
The blitter mode to use for rasterizing an NcVisual.
NcBoxMask_u32
Controls the drawing of borders, gradients and corners.
NcChannel_u32
32 bits of context-dependent info containing NcRgb_u32
NcChannels_u64
64 bits containing a foreground and background NcChannel_u32.
NcDirectFlag_u64
A bitmask of NcDirect flags.
NcFlag_u64
A bitmask of Nc flags.
NcInputType_u32
The type of the NcInput event.
NcLogLevel_i32
Log level for NcOptions.
NcMiceEvents_u32
A bitmask for mice input events.
NcPixelImpl_u32
Pixel blitting implementations, informative only.
NcPixel_u32
An ABGR pixel.
NcPlaneFlag_u64
A bitmask of flags for NcPlaneOptions.
NcResizeCbUnsafe
The unsafe version of NcResizeCb expected by the notcurses C API.
NcResult_i32
The int value used to return errors.
NcRgb_u32
24 bits broken into 3x RGB components.
NcRgba_u32
32 bits broken into 3x RGB components plus one alpha component.
NcScale_u32
Indicates how to scale an NcVisual during rendering.
NcStyle_u16
Styling attribute flags.
NcVGeom
Describes all geometries of an NcVisual.
NcVisualFlag_u64