Commit Graph

840 Commits (afe724ee1da00edf1144b7cc3589d3c228b66a52)

Author SHA1 Message Date
nick black 6bf812a306 demo: elide nonfree demos in DFSG build #316 5 years ago
nick black 832451a966
notcurses-view: erase base plane each frame #314
On a resize, notcurses-view left cruft in the middle of the
top line due to the frame/time being moved. An erase is awfully
heavyweight here, in the abstract, but it gets the job done
simply, and doesn't seem to have much performance impact.
5 years ago
nick black ab3a91c5d0
python for ncdirect 5 years ago
nick black 8ac16b734f
keep ncmenu on top #179 5 years ago
nick black 2a9f3c5ab3
ncmenu_selected(), update docs #179 5 years ago
nick black 4d613217b3
ncmenu: only allow one at a time 5 years ago
nick black 10a269c963
ncmenu: reject double menu 5 years ago
nick black 039a390877
ncmenu: print item shortcut aligned right #179 5 years ago
nick black 49013433ea
demo: spruce up table a bit more 5 years ago
nick black f54e73278e
chunli: return error on load failure 5 years ago
nick black 79a92fcfb1
ncmenu: highlight shortcut keys for menu items 5 years ago
nick black 553f81da4e
ncmenu: unicode shortcut test 5 years ago
nick black 3821b66bc7
menu: highlight (bold+uline) section shortcuts 5 years ago
nick black 5cd4fc9a1f
menu: reject empty sections #179 5 years ago
nick black 0977fa0d56
menu: don't alight cursor on separators 5 years ago
nick black ee6eb1a37b
ncmenu: support iteration within a section 5 years ago
nick black fa88f9b525
ncmenu: nextsection/prevsection 5 years ago
nick black 88a0ffff07 ncmenu: fill in sections #179 5 years ago
nick black c3ad38adb9 ncmenu: size body width based on items #179 5 years ago
nick black 4586dd7e19 ncmenu: properly place unrolled menu #179 5 years ago
nick black ce965fcbcd ncmenu: add unroll and rollup #179 5 years ago
nick black 2118c5d81a menu: draw background only onto header row #179 5 years ago
nick black db53b36d94 ncmenu: calculate height based off sections #179 5 years ago
nick black 7708ec5c96
notcurses_stop_minimal() for use from signal handler #313 5 years ago
nick black 31a07dab33
menu: extend across width of screen #179 5 years ago
nick black 015ce4764e ncmenu: set up the section headers #179 5 years ago
nick black fdc541c6e5 copy over menu elements #179 5 years ago
nick black 54c57b3487 s/CELL_STYLE/NCSTYLE/ throughout 5 years ago
nick black 8984422f1e basics of menu #179 5 years ago
nick black 6e642f1749 more menu work #179 5 years ago
nick black 321ea908f1
Fix up BGR/RGB reversal in blitter #311 5 years ago
nick black 25ce448889
rgba_blit()/bgrx_blit() #311 5 years ago
nick black f3af2b8760
Convert mbtowc to mbrtowc everywhere #308 5 years ago
nick black 44f80694a3
selector: bind with ┴ where appropriate #309 5 years ago
nick black 4716b5f495
selector: bind riser to body #309 5 years ago
nick black 20e4c106a2
FreeBSD build fixen #304 5 years ago
nick black 4af5c79b2a
notcurses-input: cast input to wchar_t for output 5 years ago
nick black 39f99dfa4a
Selector: final styling touches #302 5 years ago
nick black c1664170fd
selector: bgchannels only inside the body #302 5 years ago
nick black eab1ce0262
selector: align secondary/footer #302 5 years ago
nick black 45235fc076
Selector: add arrows if there are more options #302 5 years ago
nick black fad612bd2f
Use column width in selector calculations #302 5 years ago
nick black 43ce3e5ccb
selector: don't FPE on empty itemlist #302 5 years ago
nick black 05a83e54c7
Selector: inverse rather than reverse video #302 5 years ago
nick black fe51f93a4c
selector: destroy ncplane on exit 5 years ago
nick black 77432ee1c5
set ~ICRNL with termios.c_iflag #303 5 years ago
nick black 99b79cbf4f
ncselector_create: fix base_egc fuckup #302 5 years ago
nick black 6a4cfcde95
selector: always rotate options #302 5 years ago
nick black d30df23f43
selector: support non-zero default idx #302 5 years ago
nick black 09d2e35372 C++ wrappers: kill Visual::destroy_plane() #299
ncvisual_destroy() already calls ncplane_destroy() when
appropriate. There's never a need for the C++ wrappers
to explicitly free the Visual's underlying Plane. With
this change, valgrind no longer complains upon exiting
notcurses-view(1).
5 years ago
nick black a57f0f234c
selector styling 5 years ago
nick black e4dcccc409
selector: implement scrolling 5 years ago
nick black 3991b3e53a
selector: implement maxdisplay. unit tests! 5 years ago
nick black ac2b951fa9
ncselector_selected(), unit tests 5 years ago
Nick Black da0283ac25
Selector widget #166, subtitles #95 (#301)
Get rid of annoying empty line in notcurses-view (and ncvisuals at offsets in general)
Implement most of the Selector widget. Need to add styling and scrolling still. #166
Reenable ubuntu focal build
Subtitles! We decode them, and display them in notcurses-view. If ncvisual_simple_streamer() is provided an extra ncplane, it will use it to display subtitles. #95
We now build Python by default, as things are working much better.
ncplane_set_base() now takes channel, attrword, and EGC, so you can usually avoid having to set up and release a cell. ncplane_set_base_cell() takes over duty from ncplane_set_base() for ease of conversion.
notcurses-demo and notcurses-view now both accept a 0 for delay multiplier, meaning 'go as fast as you possibly can'. Very small multipliers (e.g. 0.00001) no longer cause floating point exceptions.
fading routines no longer cause floating point exceptions on very small timescales.
5 years ago
nick black 345ed60abd
Improve smcup handling
If we're going to issue smcup to switch to the alternate screen,
flush immediately after doing so. Otherwise, subsequent output
prior to the first render can be swept away. See growlight issue
75: https://github.com/dankamongmen/growlight/issues/75. In the
demo, we now get this output either (a) at the beginning (if smcup
is inhibited) or (b) at the end (default). Only perform our pause
on startup in case (a).
5 years ago
Marek Habersack cd6d1e16d1 Properly clean up when NotCurses instance is destructed
We need to set `_instance` to `nullptr` or we'll leave a dangling
pointer.
5 years ago
nick black 4e19d51e57
geom: tighten things up a bit 5 years ago
nick black 652cfbc9f1
more dumb geometry block tricks 5 years ago
nick black c3d4ac8caa
geom.c: PoC fun with geometric shapes 5 years ago
nick black c04a68896c
README: add FAQ entry about c++ scopes 5 years ago
nick black 24fc43fab5
demo: support 100k+ frames in HUD 5 years ago
nick black 2cad2bbfd5 direct mode: properly initialize termcaps #77 5 years ago
nick black 81b58234ee
direct mode: reset terminal, check vals #77 5 years ago
nick black 1fd0563093
Direct mode with its own type #77
Introduce the new type 'ncdirect', a stripped-down 'notcurses'
suitable for inline modification of regular output. Used the new
type because otherwise there were going to be if(directmode) checks
everywhere. Direct mode encompasses only colorizing and styling.
Add new man page notcurses_directmode(3). Add new section to README.
Add new PoC using direct mode RGB. Update demo table summary to use
direct mode.
5 years ago
nick black 83e40d3472
direct mode RGB PoC 5 years ago
nick black ceb15e4e8f demo summary: PoC direct mode with color #77 5 years ago
nick black 3d4e157af6 direct-mode coloring #77 5 years ago
nick black d8849bb4b1 uniblocks: add a few missing blocks 5 years ago
nick black e899f8b7ed demo summary: also print real FPS 5 years ago
nick black 2ea10d4b28 Remove clear_screen_start option
As it turns out, we can't portably load the initial terminal contents
(there are some hacks of various EXTREME nature, but none of them are
worth it for the rather limited benefit). The O(1)-time damage
inference requires knowledge of what was previously present to
inibit unnecessary draws. We would then need some special cell value
indicating "not yet written to" to distinguish a purposeful null
cell from an initial cell. Again, we could do this, but for what value?

Finally, the idea of clearing new area on SIGWINCH was always flawed,
as we can't do that from a signal handler.

With the advent of direct mode #77, the reason for this largely goes
away in any case.
5 years ago
nick black 78650e00da
replace gibberish with einstein field equation RHS 5 years ago
nick black 55699c6a3c
render summary: autoscale all times 5 years ago
Marek Habersack 75a90461dd Add C++ bindings 5 years ago
nick black 22f71c9a80
implement quantize_rgb8() for linux console #288 #4 5 years ago
nick black 48025cd794
report Alt in ncinput #228 5 years ago
nick black be3a53f3cf
input: function key defs through kf59 5 years ago
nick black 1aa462385e
detect ctrl+letter, prep ncinput appropriately #228 5 years ago
nick black 4ece4a9075
demo: skip demos which we don't have support for 5 years ago
nick black b7bc693ef7
i'm WarMECH, bitch 5 years ago
nick black ec5e857a6c
palette256: fix up unit tests 5 years ago
nick black 004f5ca1ea
Note copyright of Mark Ferrari for jungle demo 5 years ago
nick black bee5be9d80
chunli: finalize out 5 years ago
nick black 19db2a5675
still more chunli 5 years ago
nick black cffd08418a
more chun li 5 years ago
nick black bb0cdb2b88
demo: add demo_nanosleep() for HUD 5 years ago
nick black 1e403123e1
s/notcurses_render/demo_render/g pass 5 years ago
nick black 6a2dae0279
box: punch it up a little 5 years ago
nick black eb8ecb2433
jungle: center image, use demo_render() 5 years ago
Nick Black 3d612aebcb
ruins color cycling demo #253 (#287)
* palette_set: update pal256 damage map #230
* drone: use newest builders
* palette: send oc on exit for color reset #285
* palette_new: copy existing palette in #230
* Python: use checkRGB everywhere
* more palette unit testing
* add ncplane_set_*_palindex()
* render fg palindex #230
* palette index color is out of 1000
* jungle demo works #253
5 years ago
nick black 02698ebbd1
add jungle demo 5 years ago
nick black 03e3c5406d
interrogate_term: check CCC if initc is defined 5 years ago
nick black f450c1261a
libav: don't molest user pointer 5 years ago
nick black c23b4196a2
notcurses-view: get status line back, urk 5 years ago
nick black 3e9347a339
palette color: unit test for alpha clear 5 years ago
nick black f5e151e9a0
render+raster palette-index support #230 5 years ago
nick black b02acd8631
Curry a void* to fader callbacks #284 5 years ago
nick black d95069fb1e
fallin: more blocks, many more #283 5 years ago
nick black ed783fe421 drop ncplane_erase() from slider 5 years ago
nick black 98fe08727b fallen: open the curtain on patents.png 5 years ago
nick black ff34fb387a fallin' demo pretty much works #267 5 years ago
nick black 5d69545f22 rgb_greyscale: linear approximation to gamma decomp 5 years ago
nick black fe2dcc3387 unibloick: call ncplane_greyscale() at start 5 years ago
nick black 1b01494c79 implement ncplane_greyscale() #280 5 years ago
nick black 3bd0732e81 notcurses_view: accept -s option 5 years ago
nick black 56479fd777 panelreel-demo: lock in border background 5 years ago
nick black 97e17c6cf5 demos: lock in some backgrounds 5 years ago
nick black 44af796e74 demos: lock in some backgrounds 5 years ago
nick black 3e6a862603 libav: require alpha 192 to be visible 5 years ago
nick black 02b845ba75 notcurses-view: quit on 'q' 5 years ago
nick black 4c7093901b banner: print term shortname/dims 5 years ago
nick black 011f7524bb reject bad demo spec before starting 5 years ago
nick black df08a8fb8a fallen demo working up through disappearance #267 5 years ago
nick black 9046bbfbe7 notcurses-view: erase screen between files 5 years ago
nick black b3f4fbdf51 fix fallin' bug 5 years ago
nick black 55c946ca6b fallin' 5 years ago
nick black 7860e1eace first start of fallin' demo 5 years ago
nick black 2783a1b503 ncplane_move bugfix when already in desired config 5 years ago
nick black 08f6fa0e79 implement ncplane_dup() 5 years ago
nick black 38b2b3d075 render: fix bad reference in final pass 5 years ago
nick black 209d4f41f4 palette: add necessary predicates #230 5 years ago
nick black 0e70304596 palette indexing: set up attributes #230 5 years ago
nick black 20f4b3493c send palette updates (initc) #230 5 years ago
nick black dfcdd10cb5 more palette support/testing #230 5 years ago
nick black 684bcdcc8c introduce palette256 #230 5 years ago
nick black 98446b4810 render: fix setting of channel on wide 5 years ago
nick black 97c0a34504 make pulser() available to all 5 years ago
nick black d7d61aa669 trans: pulse up so HUD clock keeps moving 5 years ago
nick black f953d18cfb HUD: move to lower left 5 years ago
nick black 79c1314854 uniblock: up with the white and gold 5 years ago
nick black fc1341ea5a
painter: skip unnecessary work 5 years ago
nick black b2dcc7cdf2 demo: push delaymult through to ncvisuals 5 years ago
nick black 0f435240d6 xray: scroll twice as quickly 5 years ago
nick black 7295377db7 panelreeldemo: don't block on input 5 years ago
nick black aba9a4f967 Eliminate fprintf() for ~20% FPS boost #277
Profiling with `perf` revealed the fprintf() inside term_esc_rgb()
to dominate our performance. Replace it with a u8->str lookup table
and a hand-assembled string fed into a single fputs(). On a 80x70
xfce4-terminal geometry, this wins 20%+ FPS on the demo, w00t!

Huzzah for profiling!
5 years ago
nick black 19c2d7d6df demo: export delaymultiplier 5 years ago
nick black 785ef20937 view: legend visible on 80x24 5 years ago
nick black afcd265253 handle 10^4 FPS in summary table :) 5 years ago
nick black b8f25ff89b Map 8-bit ffmpeg α to 2-bit notcurses α #276 5 years ago
nick black f857edd09d libav: render spaces when possible 5 years ago
nick black 17df279b66 libnotcurses-sys rust lowlevel bindings 5 years ago
nick black 5cf8b8327a demo: don't overcount time in summary table 5 years ago
nick black 3011a59cbd don't call ncplane_dim_yx() in notcurses_render_internal 5 years ago
nick black 385d37ac8c painter: drop loop at end, nice FPS gain 5 years ago
nick black 1c17b05434
allow rtl uniblocks 5 years ago
nick black c8f12b6412
uniblock: darken the area above the block 5 years ago
nick black 631c684a88
cut view demo runtime by 1/3 5 years ago
nick black adf808110d
convert remaining man1 pages to pandoc 5 years ago
nick black a419e866fe
witherworms: color/timing tweaks 5 years ago
nick black 5f58ef3a4d
implement ncvisual timescaling #275 5 years ago
nick black dd7f8eff4b
ncvisual_stream: add timescale param 5 years ago
nick black 347f85150f
witherworms: just lighten head #272 5 years ago
Nick Black 7ec022d067
Painter's algorithm #255 (#274)
* notcursesI.avi 30 -> 60fps
* painter's algorithm works #255
5 years ago
nick black 7c687faea0
pulsing text + unit test + docs #163 5 years ago
nick black 13c2dc9841
fade: propagate fader return value 5 years ago
nick black 56a54b5441
break apart render/rasterize #155 5 years ago
nick black 1b83c8b182
uniblock: drop rtl blocks for now #183 #259 5 years ago
nick black 49d684c772
render: always restore char when recovering 5 years ago
nick black 2ebc3e2bfe blend: conditionally blend in alpha 5 years ago
nick black f280db744d panelreeldemo: support abort/fail 5 years ago
nick black 6508135667 witherworm: enable mathtext 5 years ago
nick black 3faffaa847 channels_blend() : don't blend in wide status #260 5 years ago
nick black 38fb082c61 pthread_cond_timedwait() requires CLOCK_REALTIME :/ 5 years ago
nick black f8c870bb76 demo: reject multiplier <= 0 5 years ago
nick black 9b62958bd0 witherworm: support abort v failed 5 years ago
nick black a120e40816 panelreel-demo: support abort vs fail 5 years ago
nick black 6a7d7a750c xray: support abort vs failed 5 years ago
nick black 8b4de3f482 add internal cell_debug() 5 years ago
nick black 0f60af347d add clipped set functions 5 years ago
nick black c4ee0acff0 demo: support aborted vs failed 5 years ago
nick black 5742c7396c viewdemo: support abort vs failed 5 years ago
nick black 4f629cc5b3 lighting kick! 5 years ago
nick black b1995190c4 don't be an asshole 5 years ago
nick black b8e11e5ef4 poc mathtext works now #260 5 years ago
nick black f36431bc19 render: inherit wide mask on assignment #260 5 years ago
nick black 3ee48a8233 vfprintf: need a va_copy() 5 years ago
nick black dc2f788d28 summary: match rounding #268 5 years ago
nick black 7895d06273 cursor_move(-1,-1) while invalid is invalid #270 5 years ago
nick black fc039b034e notcurses-demo: implement -r option 5 years ago
nick black 00e6ecac7d fade: avoid divide by zero on empty plane #269 5 years ago
nick black 602b34bc0c mathtext: full strings #260 5 years ago
nick black abc17d37aa ncplane_vprintf_prep: reprint after realloc #260 5 years ago
nick black d055faed9a add mathtext PoC #260 5 years ago
nick black 7d598a5033
demo: add -p to usage() 5 years ago
nick black 1be4025289
CMake: true fix for #208, use NOTCURSES_SHARE 5 years ago
nick black ebbac42bf6
whoomp, there it is: fix all libav timing issues #159 5 years ago
nick black 306045116f API: always call complex from static simple 5 years ago
nick black d8c6e2434a
demo: summary table adds render% 5 years ago
nick black f092e62bca
demo summary: total out columns 5 years ago
nick black a56846468e
notcurses-view: keypress skips, not aborts 5 years ago
nick black acef43c759
avcodec_parameters_to_context() #215 5 years ago
nick black 75f0ea6ca0
HUD: print framecount 5 years ago
nick black 9677114e45
notcurses-view: support -l 5 years ago
nick black f4cda62d63
uniblock: don't emit useless \u200e 5 years ago
nick black 309211e308
enmetric() for small values #256 5 years ago
nick black 14d7bed6db
notcurses-input: fix banner display #263 5 years ago
nick black b37ea582a3
enmetric()ize total time output in demo summary 5 years ago
nick black c00fc3c3f7
mask out SIGWINCH in demo #262 5 years ago
nick black 7e59cf1053
don't print Term line with suppress_banner 5 years ago
nick black 24ba1c4425
grid: fix error on superlarge geometries 5 years ago