Commit Graph

2465 Commits (602531ff33c7ecbebe5cac958dd64c18e0eb2b83)

Author SHA1 Message Date
nick black af07822d35 Document base cell better
Improve the documentation for ncplane_set_base_cell() and
ncplane_set_base(). Go by render.c's authority (all three
channels are independently checked for transparency, and
replaced with the base cell if so--egc, fg, and bg). Add a
BASE CELL section to notcurses_plane.3. Check for, and reject,
an nccell which is secondary among a multicolumn EGC.

Closes #1238.
4 years ago
nick black cc49c715a6
ffmpeg: averr is a raw int 4 years ago
nick black bc4fe21ed1
get smxx/rmxx from terminfo 4 years ago
nick black a9ccbc28f9
ncls: support -V/--version #1266 4 years ago
nick black e37b466eea
notcurses-demo: support 'V' for version out #1266 4 years ago
nick black 4616d60ae9
notcurses-view: support 'V' for version out #1266 4 years ago
nick black 0bcb107ae6
fallin: don't carry cell across planes #1265 4 years ago
nick black 449455cf4b
microoptimize channels_blend() top half #1262 4 years ago
nick black 8e4158a817
inline postpaint_cell into raster #1262 4 years ago
nick black 23d3e03386
ncls: handle --help option 4 years ago
nick black 69e329d328
BigMult unit tests: fix for non-'.' decseps 4 years ago
nick black 7e20a25482
ncdirect_*_palindex -> ncdirect_set_*_palindex #1261 4 years ago
nick black f1253560ad
ncdirect: set_ on rgb functions #1261 4 years ago
nick black 76d8e2dfce
ncdirect_{fg, bg}_default() -> ncdirect_set_{fg, bg}_default() #1261 4 years ago
nick black 58bc9bd3bc
fix up writeout stats, report in shutdown banner 4 years ago
nick black 0e8faed3f5
ncneofetch: check LOGO field in /etc/os-release #1246 4 years ago
nick black 638dde7657
remove unnecessary args from ncdirect_raster_frame() #1248 4 years ago
nick black 1d8fcbb5e4
ncdirect: styles{set, on, off} -> _styles #1247 4 years ago
nick black f608df2af8 progbar PoC: call through on 1 #1258 4 years ago
nick black 8824495924 uniblock demo: properly set progress 4 years ago
nick black f729d855f9 complete SingleCellDown/SingleCellUp tests #1258 4 years ago
nick black b0c6f697e0
yield: render in pfill loop so we never look locked up 4 years ago
nick black 68f5ea711e
demo: move HUD over by 2, don't block legend 4 years ago
nick black f22ddfa72f
progbar: don't overrun on 1.0 #1257 4 years ago
nick black c9fb385ebe fold out test breakage #1250 4 years ago
nick black 91e932ed26 ncvisual_render: handle NCSCALE_NONE_HIRES #1250 4 years ago
nick black 56d94e9392 intro: add a bar on top to match bottom 4 years ago
nick black 15664b9799 ncdirect: handle new scalings #1250 4 years ago
nick black dd1cdc40d5 add NCSCALE_NONE_HIRES, NCSCALE_SCALE_HIRES #1250 4 years ago
nick black a4bad2318f
dragon: don't force 3x2 4 years ago
nick black 3f26c36458
direct: honor transparency in image blitting #1252 4 years ago
nick black 1fa4580a3e
throw some D's on that bitch #1114
If the TERM string contains either of "kitty", "vte", or
"gnome", enable sextants. Fuck it, we'll do it live!
4 years ago
nick black 4d8efcab82
Progress towards NCBLIT_3x2 by default
Add a new member 'sextants' to the terminfo cache (both
notcurses and ncvisual contain one of these, and both
initialize it the same way -- interrogate_terminfo()).
Add a new function, 'notcurses_media_defblitter()', and
deprecate 'ncvisual_default_blitter()' (the latter didn't
receive enough information to return NCBLIT_3x2). Update
all callers. Add new *internal* function rgba_default_blitter(),
so this logic can be freely changed in the future. If
sextants are available, and we're scaling, return NCBLIT_3x2.
Once we detect sextant availability, we'll have sexblitter
as a default -- stay tuned! #1114
4 years ago
nick black b8c33a6caf
ncplane_highgradient: use direct blitting #1249 4 years ago
nick black 4e5dbfd2b9
render: use hpa in place of cuf #1245 4 years ago
nick black e6a45d5422
wcwidth: print running measure 4 years ago
nick black 6ca8949845 add kittyzapper PoC #1117 4 years ago
nick black 0578e86e02 introduce terminal-specific heuristics
Kitty conflates an RGB background specification that aligns
with the default background color with that actual background
color. This can result in translucent background when we're
expecting opaque ones. Detect kitty (strstr check of terminal
name for "kitty"), and if it's active, mark `bg_collides_default`
with the rgb of the default background color. For now, we assume
this to be (0,0,0), but we ought improve it by determining (or
setting, if that's impossible) the precise default bg color.
Closes #1117.
4 years ago
nick black 7df2c7cd04
ncdirect: use sgr0, properly align images 4 years ago
nick black 1fb4a66853
raster: fine-grained emits of op for default #1240 4 years ago
nick black 408004ee66
define fgop/bgop for fine-grained default color #1240 4 years ago
nick black 248dd1fff2
add dynamic linesig control #1228 4 years ago
nick black 99abcb5f07
cbreak_mode: move to input.c 4 years ago
nick black d1fdaf7614 view: add -t option for timeouts
When the -t switch is provided to notcurses-view, its
floating-point argument is the number of seconds for
which we delay after showing an image. When this is used,
the standard "press any key to continue" prompt is not
displayed, and indeed keybindings are not honored. This
can be used for a slideshow, or just for fullscreen display
involving no user interaction. It does not apply in the
case of -L for looping. Closes #1229.
4 years ago
nick black c0316ee96c view: document and parse -t time argument #1229 4 years ago
nick black 0b633fbdad
ncplane_at_yx_cell/at_cursor_cell: return bytes of egc 4 years ago
nick black fd146db050
demo: reject extra command line arguments 4 years ago
Nick Black 730e9f69ec
Multithreaded ncls (#1232)
Thread out ncls to perform the media decode in different threads, in parallel. Only the display needs be locked. On a directory of 200 files on my 39070X, this speeds ncls from ~5s to ~1s. On 75 files, we go from ~.5s to ~.2s. On a single file, we lose about 5%. To facilitate this, ncdirect_render_image() has been split into two helpers, ncdirect_render_frame() and ncdirect_raster_frame().
4 years ago
nick black d7fd7fa39e
ncdirect_render_image: save/restore colors #1230 4 years ago
nick black bf3e3eb0b5
ncplane_at_cursor_cell: rewrite with ncplane_at_yx_cell() 4 years ago
nick black 1798e061e1
fallin': drop unused nccell c #1231 4 years ago
nick black 28b1a80433
ncplane_at_yx_cell: work directly with cell_duplicate() #1231 4 years ago
nick black 1b613591fe
ncmenu_create: missing newline on diagnostic 4 years ago
nick black e43d127b42
ncdirect_render_image: reset colors after each line #1222 4 years ago
nick black 14778e4b71
ncdirect_dump_plane: always emit newline #1222 4 years ago
nick black 85b0a37154
ncdirect: retry fflush() on EAGAIN on all paths 4 years ago
nick black 0fb455f0ee
ncls: don't flush output after each line 4 years ago
nick black 9b0f88f024
ncpile_drop(): reset stdplane's blist #1226 4 years ago
nick black 3226652936
reel demo: kill tablets on demo_render() exit #1225 4 years ago
nick black 4fabba6789
s/reception/receipt/ 4 years ago
Nick Black 1bdd2d0555
Progress bar polishing (#1219)
Progress bars now support four 32-bit channels in ncprogbar_options, and uses them to color a gradient. The redraw procedure has been changed from O(n) to O(1). ASCII progress bars have been repaired. Closes #1213.
4 years ago
nick black 243b8bd4d4
uniblock: scrub all legend residue 4 years ago
nick black 7b4f978256
ncplane_resize_internal: disallow bad keepy/keepx #1215 4 years ago
nick black 66150c1f42
ncplane_resize_internal: reject keep > len #1215 4 years ago
nick black a0c722ff0d
notcurses_nccell.3 -> notcurses_cell.3 4 years ago
nick black 913373c27e
ncplane_reparent: update boundto in non-root case #1214 4 years ago
nick black f83bdab99c
progress bars: full resolution for retrograde #1210 4 years ago
nick black a598c706db
Correctly splice children of reparented root plane
Tremendous thanks to @kaniini, @Ikke and everyone else over
at Alpine Linux for helping to chase this down. I blundered
in ncplane_reparent() when reparenting a root plane with
children (the children need to come into the root plane
list). This will hopefully fix our amd64 failures on Alpine
since late 2.0.x. Closes #1197.
4 years ago
Ariadne Conill b49ac58d3e cope with situations where /dev/tty is not actually a TTY
this can happen in situations where a child process is not running in a
session group associated with a TTY, such as on a build server.
4 years ago
nick black f2cbfff8d9
demo: remove meaningless average r%/w% 4 years ago
nick black 8ec6d2e6fc
progbars: full resolution, fix vert inversion #1210 4 years ago
nick black 2ff20108c8
force LTR override on UC_BIDI_AL #1204 4 years ago
nick black 1bbbdd9dc0
annotate many functions with ((nonnull)) 4 years ago
nick black f7d55e8fa8
allglyph demo: add two fat vertical progress bars 4 years ago
nick black 6b859b6a32
ncls: add --align argument #1195 4 years ago
nick black ee9ed23e04
uniblock: fixed-width progress bar to better show off smooth fill #1209 4 years ago
nick black 5036e655cb
ASCII fallback for progress bar #1209 4 years ago
nick black fb38818667
progbar: cover all dependent regions #1209 4 years ago
nick black 91431f84d9
progress bars: 8x resolution #1209 4 years ago
nick black d5574cab9a
restructure progbar logic to prep for highres #1209 4 years ago
nick black 4984903d61
intro: better use of flipmode bar 4 years ago
nick black ca547bc521
progbar: get vertical progbars working #1209 4 years ago
nick black cd3fd17174
uniblock demo: add a progress bar #1151 4 years ago
nick black 827d758c19 properly color progbar #1202 4 years ago
nick black d56ea8b5e7 progbar: remove egcs options 4 years ago
nick black c3b5069eae progbar PoC: use retrograde #1202 4 years ago
nick black 82ffac8eed remove ncprogbar locking options #1202 4 years ago
nick black e37540c76e ncprogbar: implement core draw loop #1202 4 years ago
nick black 08b2d38721 progbar: directions + channels 4 years ago
nick black ff798e69e9 progbar PoC: finish up 4 years ago
nick black 1d74979718 progbar core / poc #1202 4 years ago
nick black be3bd474f6
model.dot: simplify 4 years ago
nick black 11efb0f98f
selector: no NULL deref on error path 4 years ago
nick black 97c2d53abf
notcurses-view: remove unused variable 'gotinput' 4 years ago
nick black ea131b9b11
scan-build: remove unused stores 4 years ago
nick black 33862979da
scan-build: remove dead stores 4 years ago
nick black 228bd17237
rtl PoC #1204 4 years ago
nick black a2ab467219
whiteout demo: fix up brace extensions 4 years ago
nick black c98d6c2576
selectively copy width in paint() #1207 4 years ago
nick black fd2acde1b1 rename cell->nccell, keep alias #1200 4 years ago
nick black e66f1a03ad
keller: give each phase a full demodelay 4 years ago
Nick Black 6106dea18a
track+use width for polycolumn EGCs #1203 (#1205)
Some EGCs are more than 2 columns (wcwidth() never returns more than 2, so far as i can tell, but when multiple characters combine, we use the sum). An example would be ကြေ (Myanmar) which occupies three columns over the course of three characters. Track the width (biased by 1) in cell->width, taking over 8 bits from cell->reserved. Use this width in rasterization. Closes #1203.
4 years ago
nick black a3e7b3b5d0
utf8_egc_len: count all printing glyphs #1174 4 years ago
nick black f66425b819
wcwidth PoC: print total bytes 4 years ago
Nick Black 438e042cdf
Multipile resize support #1172 (#1190)
drone: use ctest -V
4 years ago
nick black 2c4566fdb3
notcurses-tester: drop loglevel to _ERROR 4 years ago
nick black 1c673a57af
assume default 80x24 when ioctl() fails #1197 4 years ago
nick black 876c5a91a1
notcurses: remove unused truecols field 4 years ago
nick black 1239ac7a29
mathtext PoC: loop properly 4 years ago
nick black 764df80816
notcurses_resize: call resizecb's across root plane #1172 4 years ago
nick black edf55d8cc1
notcurses_rasterize: adapt to piles 4 years ago
nick black b0aecee29d
ncplane_reparent: kill FIXMEs, fix up blists 4 years ago
nick black 1ff0c0e88c
resize_children -> resize_callbacks_children 4 years ago
nick black 3b5efb0351
ncpile: add roots element, track from bprev 4 years ago
nick black 22790943bc
demo: change plot to 2Hz to avoid gaps 4 years ago
nick black a3220b8a73
add ncplane_descendant_p(), unit test it #1192 4 years ago
nick black 5bce6d62a8 cell_egc_idx: fix up endianness #1130 4 years ago
nick black e1201c7c30
fix character loading on bigendian #1130 4 years ago
nick black e7f208342f
ncls: don't create Ncpp ctx until post-getopt #1194 4 years ago
nick black 42ac6bb90b
more pile reparenting testing #1193 4 years ago
nick black 8fe3e17b54
boxdemo: rotate colors through at finer granularity #1186 4 years ago
nick black b3b700a8c0
rtl_egc(): augment *bytes VR by ltrmark size #1174 4 years ago
nick black c95bb1ad48
demo: index summary from 1 4 years ago
nick black 23af0a2626
htole() on cell_egc_idx() constants #1130 4 years ago
nick black e60a7aa463
add stat for notcurses_refresh() 4 years ago
nick black 39cc06a5f7
input: properly terminate asap when handling multibyte #1188 4 years ago
nick black 2922b8c663
define AT_NO_AUTOMOUNT to 0 on freebsd #1187 4 years ago
nick black 7140d1349c
demo: fix demo_getc() to use MAXSLEEP (12.5ms) 4 years ago
nick black 4cf4a4ce0b
egcpool: fix cell_egc_idx() math #1179 4 years ago
nick black 838280ce6b
ncls: don't use AT_NO_AUTOMOUNT on freebsd 4 years ago
nick black 564fcafee3
fileroller/procroller: use alternate screen 4 years ago
nick black 03c95b2b14
demo: minimal-width debug plane 4 years ago
nick black aeae053214
strange things going on with kitty + zalgo... 4 years ago
nick black 16320792c2
demo: turn on NCPLOT_OPTION_PRINTSAMPLE #1183 4 years ago
nick black 4b2fe60032
plots: use slotcount - 1 for samples #1183 4 years ago
nick black 14fa544433
add NCPLOT_OPTION_PRINTSAMPLE #1183 4 years ago
nick black 5257232f2f
plot: use T-type intervalbase #1184 4 years ago
nick black e46d9e2a2b
fpsgraph_stop: don't render 4 years ago
nick black 9b7238fdc9
demo: preserve plot/hud/etc. on shutdown
If we're using -k to inhibit use of the alternate screen
for notcurses-demo, we want to see what was on the screen
when we quit. If we're actually quitting, don't destroy
these components manually, so they remain visible.
4 years ago
nick black a7f59e4fab
plots: use pool_blit_direct() #1182
Use pool_blit_direct() instead of ncplane_putwc_yx() in
redraw_plot(). This eliminates use of rtl_egc() and wcwidth()
on the EGCs used in plots, sidestepping Debian's -1 wcwidth
for sextants (in the same fashion blitting does) and slightly
speeding up plot drawing. At a plot rate of 10Hz, notcurses-demo
is now faster than it used to be at 1Hz, so that's nice.
4 years ago
nick black 73d9668d13
de-picklize eagles with help from k. sarkozy 4 years ago
nick black 8091e5c7e0
demo: plot by decisecond instead of second #1081 4 years ago
nick black 2cb8295146
demo: use braille for plot, looks great 4 years ago
nick black ea771217fb
cell_load_char() unit tests #1176 4 years ago
nick black 66b911de38
move wcwidth()==-1 emoji to end of mojibake 4 years ago
nick black ea18be772a don't call egc_rtl() on negative bytes 4 years ago
nick black 0cba073cc9 simplify pool_blit_direct() 4 years ago
nick black 11bbf3c4ff correct endianness for cell_simple_p() 4 years ago
nick black afbccc5bde big-endian fix for iscntrl() 4 years ago
nick black 429bfac785 apply htole() to blanks in paint() 4 years ago
nick black 1c188508d4 add a 1x1 run to widestomp PoC 4 years ago
nick black 35bd9aaae0
whiteout demo: change timing to allow for analysis 4 years ago
nick black e5306f6197
widestomp PoC: eliminate color weirdness #1175 4 years ago
nick black f6a5aebf71
link to ncurses/libunistring in readme 4 years ago
nick black b38d742358
wcwidth PoC: only print (!) for errors 4 years ago
nick black 6fb5c1e512 Fill out some API holes, improve some comments
- Disambiguate the docs for ncplane_erase()
- Add ncpile_top(), ncpile_bottom()
- Refuse attempts to modify the standard plane's resizecb
- Copy alignment and resizecb in ncplane_dup()
- Add cell_load_egc32()
4 years ago
nick black fd9e0e6510
Merge branch 'master' of github.com:dankamongmen/notcurses 4 years ago
nick black 744ba8a75c
reels: properly size cbp when drawing bottom border #1082 4 years ago
nick black 2c85142b2a
notcurses_init: don't treat setup_signals as fatal error #1168 4 years ago
nick black 698540286c ncmenu: move unrolled section on resize #1162 4 years ago
nick black fc609f9d7d ncmenu: resize and redraw callback #1165 4 years ago
nick black 76f2353cb4 lock all accesses to notcurses_resize() #1162 4 years ago
nick black 1b1cc291f6 Resolve segfaults/undefined behavior on resize
Consult the new section of HACKING.md for full details. By
performing the resize check in rasterization, we potentially
have too many (3) different geometries at work once we hit
rasterization. Furthermore, we have some pessimal behavior
regarding rendering into enlarged terminals, since we don't
know the new size at render time. Instead, move it to the top
of ncpile_render(), and guard it with a lock (this was in any
case necessary, since the screen geometry can be
shared/mutated concurrently with render operations).
Closes #1162.
4 years ago
nick black 9b1207dd5f notcurses_rasterize_inner: receive an ncpile #1162 4 years ago
nick black c6e06eef29 add some comments to rendering 4 years ago
nick black 192c583aad
try forcing LC_CTYPE, C.UTF-8 if not inhibited #1150 4 years ago
nick black 1cfc406496
ffmpeg: error out on avcodec_send_packet error #1156 4 years ago
nick black 067aaa9bbb
ncls: cover up some unused-param warnings 4 years ago
nick black 55694ef966 finish ncls #693 4 years ago
nick black 84dc81fee4 ncls: render images in handle_inode() #693 4 years ago
nick black 5335e69b41 ncls: unify within lsContext #693 4 years ago
nick black bc8905b30c ncls: handle_deref() #693 4 years ago
nick black 41c7dece64 ncls: recurse into directories, when appropriate #693 4 years ago
nick black c733f33b81 ncls: add -L argument, skeleton for stat() 4 years ago
nick black 65856c37b4 ncls: more command line parameters 4 years ago
nick black de3944b114 ncls getopt skeleton #693 4 years ago
nick black b01113941d
is_egc_wordbreak(): portably initialize mbstate 4 years ago
nick black 4b682585b9
reel: don't assert() in tablet draw callback 4 years ago
nick black dcde23e74c apply htole() where needed #1130 4 years ago
nick black 4d524f92bc apply htole() in ncpixel_*() #1130 4 years ago
nick black 253b9582b2
index.html: scale down headers by one 4 years ago
nick black 47d5347f01
run mojibake after normal; it looks cool 4 years ago
nick black 2e78ae1c5e
update logo to notcurses II xray #1144 4 years ago
nick black 4655c9dd13
we want builddef.h from visual-details.h 4 years ago
Marek Habersack c063ce4e36 [C++] API sync
Added:

  * Pile: new class derived from Plane, which implements all the
    `ncpile_*` calls
  * Plane: `get_parent` (`ncplane_parent`)
  * Plane: protected constructor for use by `Pile` (or other derived
    classes which cannot provide a valid `ncplane*` when invoking parent
    constructor.
  * Plane: `set_plane` for use by the derived classes above.

Changed:

  * Plane: `to_ncplane` is a `const` method now.
4 years ago
nick black 6a9029b60c
ncdirect_styles_set: restore italics/struck after sgr #1138 4 years ago
nick black b7ea4e2359
run sgr-full and sgr-direct in test suite #1138 4 years ago
nick black f82ad10667
Properly set italics/struck following sgr #1138 4 years ago
nick black 0ed8c0d234
rasterize: set up NCSTYLE_STRUCK with italics #1138 4 years ago
nick black fd804be520
beef up sgr-full a bit #1138 4 years ago
nick black fbe383415f
drop confusing sgr PoC 4 years ago
nick black 725ecc9267
32-bit fixes for various diagnostics 4 years ago
nick black ebc80915a3 c++/rust struck #1138 4 years ago
nick black f89ca15640 sgr-full PoC: add NCSTYLE_STRUCK #1138 4 years ago
nick black fe164b6210 add NCSTYLE_STRUCK #1138 4 years ago
nick black fd97aa844c implement ncpile_{render, rasterize}() 🦀🦀 #1135 4 years ago
nick black 7a21574798 implement notcurses_render() using ncpile_render() #1135 4 years ago
nick black 8f7fa9da44 move postpaint() out of render step #1135 4 years ago
nick black b2516d8534 Declare ncpile_render() and ncpile_rasterize() #1135 4 years ago
nick black 8c9f8d193a notcurses_version_components(): drop atoi()s #1131 4 years ago