Notcurses 2.1.0 sexblitter via notcurses-view
in a 343x70 xterm4-terminal
, Liberation Mono 11—let's play Global Thermonuclear War.
88 issues were closed since 2.0, including:
- A
notcurses
context now supports one or more piles. A pile is a set ofncplane
s, ordered on a distinct z-axis. Distinct piles can be freely modified or rendered concurrently. Rendering and rasterization have been broken up; seencpile_render()
andncpile_rasterize()
. Of course,notcurses_render()
continues to function, rendering+rasterizing the standard pile (that pile with which the standard plane is associated).- Added
ncpile_top()
andncpile_bottom()
- Unless you're using parallelism to achieve the highest level of performance, you probably needn't concern yourself with piles. There is no API/conceptual breakage, only extensions.
- Added
- The powerful new 3x2 "sexblitter" (and plotter) has been added, using Unicode 13's sextant glyphs.
- Support for these glyphs is not yet robust in all terminal emulators, but we're working on it!
- It's not yet been set as the default for
NCSCALE_STRETCH
, but will be soon
- Added the
ncls
tool, and a manual page for it. - @igo95862 's experimental new Python wrappers are available, though the original ones are still around
- You are encouraged to migrate to these wrappers! They're much better.
cell
has been renamednccell
. The former name is retained as an alias.cell
is kept for backwards-compatibility only. It will be removed in 3.0.
- Fixed a longstanding bug in input when pasting long supra-ASCII sequences
- Fixed a longstanding bug with EGCs containing multiple printing glyphs
ncvisual_decode_loop()
has been added to support looping through the frames of a video, and back to the beginning.- The
keller
demo was added, providing a slideshow of media blitted using each blitter in sequence.- This is the last planned demo. There are now 25 demos in
notcurses-demo
.
- This is the last planned demo. There are now 25 demos in
notcurses-demo
can now runnotcurses_debug()
in a subwindow on demand.notcurses-demo
now graphs frames plots at 2Hz, using Braille- Fixed the colors of the birds in the
eagle
demo notcurses-view
now accepts-q
to inhibit writing info while rendering.- Blitter switching in media res has been fixed in
notcurses-view
. - Quadblitter's rasterization emits fewer bytes of control sequences
- Quadblitter's rasterization has been substantially optimized time-wise.
ncmenu
items can be disabled/enabled on the fly.ncmenu
s now stretch/shrink along with their binding planencmenu_offer_input()
now handles section shortcuts.ncmenu
handles menu items without long descriptions properly now.- Added the
ncinput_equal()
predicate. - Small bugfixes were made to tablet-positioning in
ncreel
. - A plane's resize callback function can be set/acquired with
ncplane_set_resizecb()
andncplane_resizecb()
. - Resize callbacks are now propagated across
ncplane_dup()
ncplane_create()
is now preferred toncplane_new()
. Thencplane_options
struct has eliminated itshoriz
union, replacing it withint x
(previously a member of said union). We weren't buying any actual type safety with the union, and this means less to type in initializers. Sorry for the API breakage :(.- A bug that could send the ffmpeg decoder into a livelock has been resolved.
- Fixed a bug in plots when the range of values was very small
ncdirect_image_render()
now properly resets colors and styles upon completion.ncreader
now supports most major readline keyboard shortcuts.- Manual pages no longer have
--
folded down into an en dash. - Notcurses now supports
NCSTYLE_STRUCK
for struckthrough text.- As this isn't defined in
terminfo
, you use it at your own risk, though I suppose that's true for everything.
- As this isn't defined in
- Bug fixed affecting
NCSTYLE_ITALIC
following other SGR controls in both fullscreen and direct mode. - A longstanding bug in the
subproc
unit tests leading to deadlock has been resolved. ncplane_reparent_family()
has been added, allowing anncplane
to be reparented without losing its children.- Added
notcurses_stddim_yx_const()
, aconst
analogue ofnotcurses_stddim_yx()
. - Added new
cell_load_egc32()
to support loading from auint32_t
(as opposed toconst char*
) - New macros
NOTCURSES_VERSION_COMPARABLE
andNOTCURSES_VERNUM_ORDERED
As you'll note, API change has dropped drastically since the freewheeling 1.x days, but I'm still of a mind to suffer a one-time breakage rather than carry crap eternally forward, especially if the fixups are trivial (as they were in the case of ncplane_options
). If you can't deal with that, there are about four-thousand other TUI libraries...
...but none of them are so 🔥🌿💯 as Notcurses =]. Word is bond.
Hack on! —dank and the gang