Commit Graph

650 Commits

Author SHA1 Message Date
nick black
acef43c759
avcodec_parameters_to_context() #215 2020-01-07 09:30:50 -05:00
nick black
75f0ea6ca0
HUD: print framecount 2020-01-07 08:21:18 -05:00
nick black
9677114e45
notcurses-view: support -l 2020-01-07 07:55:23 -05:00
nick black
f4cda62d63
uniblock: don't emit useless \u200e 2020-01-07 03:40:15 -05:00
nick black
309211e308
enmetric() for small values #256 2020-01-07 00:24:20 -05:00
nick black
14d7bed6db
notcurses-input: fix banner display #263 2020-01-06 23:32:06 -05:00
nick black
b37ea582a3
enmetric()ize total time output in demo summary 2020-01-06 15:58:16 -05:00
nick black
c00fc3c3f7
mask out SIGWINCH in demo #262 2020-01-06 00:00:49 -05:00
nick black
7e59cf1053
don't print Term line with suppress_banner 2020-01-05 05:13:05 -05:00
nick black
24ba1c4425
grid: fix error on superlarge geometries 2020-01-05 05:05:30 -05:00
nick black
a170e4334a
cmake: write install prefix #208 2020-01-05 04:53:43 -05:00
nick black
c8148fe949
xray: don't blend banner 2020-01-05 04:38:53 -05:00
nick black
3d02318e29
panelreel-demo: hook up pipe 2020-01-05 04:38:32 -05:00
nick black
1a2cccaa18 fold out ncplane_move_cursor_yx() wherever possible #257 2020-01-05 03:46:51 -05:00
nick black
7016e7f5da summary: clean up table's unicode BDC 2020-01-05 03:46:51 -05:00
nick black
6cb945f3d5 panelreel: initial tablet count based on height 2020-01-05 03:46:51 -05:00
nick black
930968f31a
demo: add legend to summary table #258 2020-01-05 01:33:03 -05:00
nick black
07c175b320
refrain from using undefined terminfo capabilities #252 2020-01-05 00:17:59 -05:00
nick black
9c8ce83f95
chunli/view: trans out 2020-01-04 07:49:10 -05:00
nick black
54fb468dfe chunli: use demo_render() 2020-01-04 07:25:01 -05:00
Nick Black
f5c6297902
Chun Li demo (#251)
* chun li demo
* ncvisual_decode: allow multiple renders of the same frame
* add -H to notcurses-demo man page
* update section 1 man page versions
2020-01-04 07:21:54 -05:00
nick black
a748dea61b uniblock: restore colors/fade 2020-01-04 06:39:57 -05:00
nick black
5dd90f3735 add ncplane_dim_[yx] quick accessors 2020-01-04 04:34:29 -05:00
Nick Black
f6975d11d5
Docs/API sweep for 1.0.0 #244 #249 (#250)
* sync up some docs #244
* sync README and man page
* notcurses_output() man page work
* pull attr/channels from output functions #244
* witherworm: clean up explicit moves #244
* still more man page work
* notcurses_lines, last of the man pages i think
* panelreel man page #244
* debian: ruby-ronn->pandoc
* debian: full multiarch compliance
* debian: symbols file
* pandoc: fix syntax for lexgrog
* fm6.mkv: strip audio
* pandoc: fix up apropos man syntax #249
* ncurses_lines man page
2020-01-04 02:37:55 -05:00
nick black
a868a29c24
notcurses-view: support resizes post-render 2020-01-03 21:37:36 -05:00
nick black
03636b14d3
maxcolor -> trans, document loglevels 2020-01-03 12:13:03 -05:00
nick black
781a0eda44 clean up input thread in demo #246 2020-01-03 05:51:27 -05:00
nick black
bd27e056e7 don't ncvisual_decode+stream #246 2020-01-03 05:51:27 -05:00
nick black
c7558550f4 drop sprite-enhalfen 2020-01-03 05:51:27 -05:00
nick black
0de1856e38 accept a loglevel for libav 2020-01-03 05:51:27 -05:00
nick black
6518e2f888 xray: free up path accessor 2020-01-03 05:51:27 -05:00
nick black
867a0db3e9 witherworms: rewrite with ncplane_at_yx() 2020-01-03 05:51:27 -05:00
nick black
b1c16cd437
more space between instances than letters, ick 2020-01-01 11:29:18 -05:00
nick black
029142e2c2
grid demo: actually do something now 2020-01-01 09:13:19 -05:00
nick black
44da49d351
ncvisual: free up the oframe #241 2020-01-01 07:25:39 -05:00
nick black
e05ec51629
ncvisual: fix the major memory leak in streaming #241 2020-01-01 07:18:25 -05:00
nick black
bc1f9bfb43
ncvisual: free up image alloc #241 2020-01-01 07:07:45 -05:00
nick black
9fdee8f672
xray: kill obsolete FIXME and static 2020-01-01 06:48:49 -05:00
Nick Black
2fbc94e41c
Higher planes obliterate bisected wide glyphs #158 (#243)
* higher planes stomp wide glyphs
* broken unit test
* develop out widestomp PoC
* fix notcurses_at_yx()
* fix up dig_visible_cell() return value
* refuse wide glyph on last column #242
* set adjacent cell wide when rendering #158
* xray: eliminate weird color flicker
* witherworm: don't eat wide glyphs
* unit test for boxed glyph
* uniblock: no need to emit so many U+200Es
* witherworm: remove wide glyph hack
2020-01-01 06:41:19 -05:00
nick black
48177b8474
implement notcurses_at_yx() 2019-12-31 21:30:20 -05:00
nick black
35aa7f6e85
move cell_egc_copy() to internal.h 2019-12-31 21:29:57 -05:00
nick black
bdcea181a2
don't sleep without defined interval #224 2019-12-30 07:55:50 -05:00
nick black
e03653b964
fix libav when DISABLE_FFMPEG is used 2019-12-30 07:04:07 -05:00
nick black
99541cc036
pull out terminfo's cub1 2019-12-30 07:03:46 -05:00
nick black
32ff214be2
update demos for ncplane_aligned #237 2019-12-30 02:43:33 -05:00
nick black
2ea4f77875
introduce ncplane_aligned() #237 2019-12-30 02:28:40 -05:00
nick black
8926fc5879
cursor: always get cnorm/civis defs #240 2019-12-30 01:50:43 -05:00
nick black
7d4f9b5231 witherworm: message 2019-12-30 01:10:10 -05:00
nick black
bcd12279c0 ncvisual: handle plane resize #169 2019-12-30 01:10:10 -05:00
nick black
ed980f1059 pull _get from all accessors 2019-12-30 01:10:10 -05:00
nick black
014afa348b rename ncplane default -> base #236 2019-12-30 01:10:10 -05:00
nick black
d5748c634d ncvisual: keep duration sum for better sync #113 2019-12-29 23:28:14 -05:00
nick black
707862507d use video pts when available #113 2019-12-29 23:28:14 -05:00
nick black
c21a04137c curry a void* through ncvisual_stream #113 2019-12-29 23:28:14 -05:00
nick black
41153e3c7e notcurses-view: rewrite using ncvisual_stream #113 2019-12-29 23:28:14 -05:00
nick black
db8b99d594
notcurses_render: simplify using new alpha rules 2019-12-29 19:37:24 -05:00
nick black
c0126b3389
maxcolor: add a legend for transparencies 2019-12-29 19:29:46 -05:00
nick black
924d80f0d5
don't blend default colors #235 2019-12-29 17:49:38 -05:00
nick black
46b1b8e622
notcurses_stats man page #213 2019-12-29 03:24:32 -05:00
nick black
21c3861804
s/bannner/banner/g, heh 2019-12-28 18:37:44 -05:00
nick black
e9890eefc0 general foreground elision #131 2019-12-27 20:27:12 -05:00
nick black
5b322add56 glyph-based background spec elision #131
When we emit a glyph that has no background pixels (i.e.
the U+2588 FULL BLOCK glyph), there's no need to emit a
background color change.

Eagle demo currently has hand-coded elision. Results from
80x70 runs using the `-c` parameter:

No optimization: 12.63MiB
Hand-optimized: 12.48MiB
New scheme, no hand-coded optimization: 12.45MiB

w00t!
2019-12-27 20:27:12 -05:00
Nick Black
ce2a390b52
Out with googletest, in with doctest #202 (#231)
* introduce doctest over googletest #202
* call dtester in in targets
* doctest conversion #202
* channel.cpp -> doctest #202
* egcpool tests -> doctest #202
* input tests to doctester
* zaxis -> doctest
* drone: always define LANG
* libav to doctest #202
* panelreel tests to doctest #202
* spec that a C++17 compiler is now required for doctest #202
* enmetric tests -> doctest #202
* fade tests -> doctest #202
* notcurses test case -> doctest #202
* last conversion to doctest #202
* finish move to doctest #202
* drone: set up make test
2019-12-27 17:20:20 -05:00
nick black
d4caefc55d
fade: throw a 10ms cap in, improves visual and lessens load 2019-12-27 10:41:49 -05:00
nick black
148114c6ca
rewrite term_esc_rgb for ~8% more FPS 2019-12-27 09:55:06 -05:00
nick black
38ace7677f
build man pages properly #213 2019-12-27 08:01:15 -05:00
nick black
132793211c
capabilities testing for fade/ffmpeg 2019-12-27 05:13:29 -05:00
nick black
3544bd86e2
witherworm: don't hide chars below message 2019-12-27 04:33:11 -05:00
nick black
fe0c18d5e4
disable eventfd in panelreel demo for now #196 2019-12-27 03:51:07 -05:00
nick black
bf49db1ae4
FreeBSD: guard all uses of _unlocked #196 2019-12-27 03:46:39 -05:00
nick black
90f750dec8
eagle: remove direct libav calls 2019-12-27 03:35:36 -05:00
nick black
af7cf118a9 HUD: properly initialize backchannel 2019-12-27 03:23:42 -05:00
nick black
09aa606281 FreeBSD: no CLOCK_MONOTONIC_RAW #196 2019-12-27 02:48:13 -05:00
nick black
caf7e41737 need struct AVFrame for sans-libav build 2019-12-27 02:48:13 -05:00
nick black
430a321557 don't import av headers in non-ffmpeg build 2019-12-27 02:48:13 -05:00
nick black
bd034c983a input: handle modifiers+mouse (alt, shift, ctrl) #226 2019-12-27 02:48:13 -05:00
nick black
1cc100cd2d UMOK: get endgame working once more 2019-12-27 02:48:13 -05:00
nick black
fb0e03fe89 UMOK: fadecb for faders #162 2019-12-27 02:48:13 -05:00
nick black
a218851acb sweet-ass stats in HUD #162 2019-12-27 02:48:13 -05:00
nick black
91a00b3400 ULTRAMEGAOK: feed the HUD #162 2019-12-27 02:48:13 -05:00
nick black
9402d7e927 HUD: click on X to close HUD 2019-12-27 02:48:13 -05:00
nick black
ee99eb53c3 HUD: throw a close-X on the hud 2019-12-27 02:48:13 -05:00
nick black
b13da606f6 whiten and shrink HUD 2019-12-27 02:48:13 -05:00
nick black
7f82ac6f16 ULTRAMEGAOK: mouse-moveable HUD #162 2019-12-27 02:48:13 -05:00
nick black
13b376f94f
panelreels: fix logic error at bottom #222 2019-12-25 11:45:42 -05:00
nick black
7906989582
kill obsolete FIXME 2019-12-25 10:45:22 -05:00
nick black
4e841865b3
panelreel-tester: accept offset arguments #180 2019-12-25 10:38:13 -05:00
nick black
770cdf4773
panelreel: plug up hole at the bottom #220 2019-12-25 10:22:07 -05:00
Nick Black
4571b57ece
Rust/FreeBSD (#221)
* rust bindings
* update release documentation with Rust info
* panelreel tester: accept command-line options#180
* input: char32_t not wchar_t in output
* freebsd compilation issues #196
2019-12-25 10:11:24 -05:00
nick black
4d877603c3
maxcolor: fix direction switch 2019-12-25 06:55:15 -05:00
Nick Black
63ada9289c
Implement CELL_ALPHA_BLEND, improve transparency semantics #191 (#219)
* channels_blend() introduced
* implement CELL_ALPHA_BLEND #191
* maxcolor demo: slidingpanel
* much improved transparency semantics #191
* maxcolor: show all transparencies #191
2019-12-25 06:36:35 -05:00
nick black
4b6063e1ce sliders: fix timing 2019-12-25 02:24:10 -05:00
nick black
cb2bf16a73 support building sans ffmpeg #153 2019-12-25 02:24:10 -05:00
nick black
99fb662f59
eagle: speed up eagles on small screens 2019-12-25 00:35:10 -05:00
nick black
8d26803ed8
fix linear interpolation on large geometries #216 2019-12-25 00:12:21 -05:00
nick black
7424b3b78c
grid: fix boundary conditions on large displays 2019-12-24 23:55:48 -05:00
nick black
4ba9845143 grid: better background on last scene 2019-12-24 23:50:21 -05:00
nick black
1554685165
boxdemo: default background cell explicitly #211 2019-12-24 05:44:13 -05:00
nick black
4b953e33f2
render: carry state across renders #203 2019-12-24 05:34:39 -05:00
nick black
e8064f717b
xray: kill subplane when done 2019-12-24 02:13:55 -05:00
nick black
43e0cb3d30
xray: prep for CELL_ALPHA_BLEND #191 2019-12-24 02:04:05 -05:00
nick black
ca5e14cdad
xraydemo: isolate avi/text 2019-12-24 01:17:49 -05:00
nick black
53efe2bd1f
demo-view: don't exit on spurious wakeup 2019-12-24 01:17:26 -05:00
nick black
2601fe9191
demo-input: pass 'q' through in addition to interrupt 2019-12-24 01:17:02 -05:00
nick black
a14ec34d78
intro: blink warning if screen is small 2019-12-24 01:16:45 -05:00
nick black
4e0ebde876
intro: advertise 'q' demo: print full matrix 2019-12-24 00:47:31 -05:00
nick black
9e9e5ef648
demoinput: process 'q' at all times 2019-12-24 00:47:20 -05:00
nick black
1017bf42e0
panelreeldemo: stop advertising 'q' 2019-12-24 00:46:55 -05:00
nick black
17a55261dc
witherworms: allow them more space 2019-12-24 00:46:36 -05:00
nick black
86efad6f67
griddemo: clip rgb values, kill white line on side 2019-12-24 00:46:12 -05:00
nick black
efcfa372ae
ULTRAMEGAOK: toplevel event handler #207
enable mouse events in the demo. spawn a thread from main() which
brokers all input events. it will consume mouse events, and
publish keyboard events to a queue. rewrite all demo notcurses_getc()
calls to demo_getc() equivalents.
2019-12-24 00:10:20 -05:00
nick black
452e1d302e
output API enhancements #210 #209
Allow -1 in move specification to remain where we are on that
axis (#210), necessary for context-sensitive aligned output.
Add _aligned forms to printf and vprintf. Invert various output
functions so that simpler form is static inline wrapper around
more complicated form, rather than complicated form being a
static inline composition, facilitating atomic move+output. All
output forms now have a simple form (no alignment, placement at
cursor), an _aligned() form, and a _yx() form.
2019-12-23 23:12:29 -05:00
nick black
f742676aee Mouse support using button event tracking #165
Request and parse up mouse messages. We handle up to 11 mouse
buttons, 3 modifiers (currently thrown away), motion while
holding down a button, and loss/gain of focus. I've added twelve
new NCKEYs: one for each button, and one for release. In addition,
I've introduced the 'ncinput' struct, which encodes the nckey plus
extra data. The only extra data thus far is coordinates for mouse
events. It is not necessary to provide a ncinput to all input
functions; NULL can be provided if the caller doesn't care about
details. All demos are updated. notcurses-input has been updated
to decode full information of returned ncinputs.

The primary resource for this work was Dickey at al's "XTerm Control
Sequences", https://invisible-island.net/xterm/ctlseqs/ctlseqs.html.
2019-12-23 19:08:12 -05:00
nick black
aceda89261 input: add NCKEY_MOUSEEVENT, match against CSI prefix #165 2019-12-23 19:08:12 -05:00
nick black
b4b4b3684a yaml 2019-12-23 19:08:12 -05:00
nick black
1555edfa6c
notcurses: disable mouse events on startup/shutdown 2019-12-23 03:38:38 -05:00
nick black
78633de427
mouse: use SGR extended coordinates 2019-12-23 03:36:29 -05:00
nick black
ae52d04435
notcurses-input: dim previous lines 2019-12-23 03:36:13 -05:00
nick black
ab47ab8976
notcurses_mouse_on()/_off() #165 2019-12-23 02:47:34 -05:00
nick black
046d0314b9
add links to useful man pages 2019-12-22 22:45:20 -05:00
nick black
fe7b6bbf89
Samoa, tula'i ma sisi ia lau fu'a, lou pale lea! 2019-12-22 16:59:16 -05:00
nick black
f9e18fa1ee
witherworms breed, paint xray banner 2019-12-22 15:58:05 -05:00
nick black
2a256192ad
input: allow duplications of escapes #199 2019-12-22 15:57:41 -05:00
nick black
6b6a00c013
luigi: jump off the right side of the screen 2019-12-22 12:41:44 -05:00
nick black
605293c103
deretardize the witherworms 2019-12-22 12:32:28 -05:00
nick black
708159c686
x-ray demo 2019-12-22 12:27:35 -05:00
Nick Black
4278a53523
Dankamongmen/no prisoners damage (#198)
* notcurses: set up lastframe #189
* render: o(1) take no prisoners damage detection
* EAAAAAAAAAAGLES
* slight background on intro
* 0.9.2
2019-12-22 09:29:56 -05:00
Nick Black
9b81de3789
O(1) passive damage detection #189 (#197)
* notcurses: set up lastframe #189
* render: o(1) take no prisoners damage detection #189
2019-12-22 08:08:53 -05:00
nick black
8b1b2ebdf0
term_esc_rgb: add note about ITU T.416 syntax 2019-12-22 02:02:12 -05:00
nick black
d50ee9ec50
ncplane_erase() at the beginning of viewdemo #194 2019-12-22 01:18:49 -05:00
nick black
c3fa7ea664
bleachworm replaces widechomper #177 2019-12-22 00:27:43 -05:00
nick black
a710222df1
enmetric(): support localized decimal separator #192 2019-12-21 20:44:34 -05:00
Nick Black
3ad2124246
Partial visual renders #170 (#193)
* ncvisual_render() accept four bounding dims #175
* ncvisual_render(): partial renders #175
2019-12-21 16:02:27 -05:00
nick black
7f01dfc241
planereel-tester: delete support 2019-12-20 22:23:33 -05:00
nick black
eaf510676d
planereel-tester: randomly-sized tablets #180 2019-12-20 22:11:10 -05:00
Nick Black
0e0925a84e
Planereel exploration app, panelreel logic fixes (#188)
* planereels tester #180
* suppress_banner in all tests
* tabletcb: start passing back tablet
* properly initialize fbbytes stat
* panelreel: logic fixes #178
* install all testing data
2019-12-20 20:38:13 -05:00
nick black
b0b1679de6
ncvisual_render(): use true transparency #186 2019-12-20 12:54:29 -05:00
nick black
5403642764
notcurses-input: throw up a banner 2019-12-20 12:36:59 -05:00
nick black
1ebe02cf93
libav: disable stderr logging #174 2019-12-20 12:06:11 -05:00
nick black
0e6c921b28
we break 1k fps in kitty :) 2019-12-20 11:06:19 -05:00
nick black
898806fec1
demo: minimum field width on FPS 2019-12-20 11:03:41 -05:00
nick black
3f326ee0a8 fix up ncplane_set_{bf}g 2019-12-20 09:42:41 -05:00
nick black
21a8e661be
convert all demos to find_data() 2019-12-20 07:36:38 -05:00
nick black
660949a461
griddemo: fix wonky right line 2019-12-20 07:35:29 -05:00
nick black
4950a5ac1a
print enmetricized byte totals 2019-12-20 03:42:00 -05:00
nick black
792b1f2cfb
notcurses-demo: accept -p to find data files #160 2019-12-20 01:32:14 -05:00
nick black
db89e71595
track each part of demo #164 2019-12-20 01:10:28 -05:00
nick black
5bec85746d
allow banners to be suppressed 2019-12-20 00:34:21 -05:00
nick black
32e9fd0a1d
notcurses_reset_stats() added + test #164 2019-12-20 00:05:03 -05:00
nick black
15ac1d0411
outro: balance up messages for centering 2019-12-19 23:17:02 -05:00
nick black
11d6f60ed4
clean up eagle poop 2019-12-19 22:26:25 -05:00
nick black
6be6ae2393 eagles: zoom to lower left 2019-12-19 22:20:18 -05:00
nick black
1dde53d0e2 holy fucking shit it works 2019-12-19 22:20:18 -05:00
nick black
d6bcb3211f eagles level starts at lower-right 2019-12-19 22:20:18 -05:00
nick black
712c7a16eb fuck yeah 2019-12-19 22:20:18 -05:00
nick black
7ab6febbf9 viewdemo: add a legend. baller as fuck 2019-12-19 22:20:18 -05:00
nick black
b257f40a35 sync input documentation for char32_t #172 2019-12-19 22:20:18 -05:00
nick black
0861b96bde wchar_t -> char32_t in input stack #171 2019-12-19 22:20:18 -05:00
nick black
6532ea858b start eagle demo #167 2019-12-19 22:20:18 -05:00
nick black
f3f43528f7 implement superplane (NCSCALE_NONE) #168 2019-12-19 22:20:18 -05:00
nick black
3cfe88ee0c ncscale_e enumeration for ncvisuals #168 2019-12-19 22:20:18 -05:00
nick black
e2c58534ca work around -Wclobbered-noted problem 2019-12-19 22:20:18 -05:00
nick black
e871660eff dig_visible_cell: rewrite recursion as iteration #170 2019-12-19 22:20:18 -05:00
nick black
1a949a5a81
account for tabletmasks 2019-12-18 15:29:24 -05:00
nick black
a96e716663
panelreels: account for tablet masking 2019-12-18 15:05:05 -05:00
nick black
4a7409ebda
sprite-enhalfen tool 2019-12-18 08:16:36 -05:00
nick black
97ecbdb0e5
sigh, probably gotta kill DMCA lure 2019-12-18 05:31:29 -05:00
nick black
29eb696947
repair a dumbness 2019-12-18 04:55:12 -05:00
Marek Habersack
ff3ed881c0 Improve chances of DirectColor terminal detection
While ncurses 6.1 adds the `RGB` capability to terminfo, the flag is not
commonly used in terminfo entries as of now. The `COLORTERM` environment
variable is, otoh, commonly present and set to either `truecolor` or
`24bit` value by terminal emulators which support direct color.

Add a check for this if `RGB` is false (or absent)

With this check in I was able to properly appreciate the awesomeness of
notcurses demos :)
2019-12-18 04:46:49 -05:00
Nick Black
957549105b
Wide character rigor (#117) (#157)
* unidamage PoC
* add cell_load_simple()
* clear CELL_WIDEASIAN_MASK in cell_load()
* split out render code
* add CELL_SIMPLE_INITIALIZER
* widecolor: fix message plane
* widecolor: simplify color increments
* document wide character handling
* unit tests for wide obliteration #117
* widechar obliteration hardening #117
* widecolor -> widechomper, update man page
2019-12-18 04:38:43 -05:00
nick black
040607c6f9
fix up linear interpolations 2019-12-18 00:07:11 -05:00
Nick Black
dfc7623119
Implement notcurses_refresh() #150 (#156)
* boxdemo: clean up colors
* Fix crash on certain resizes due to corruption of damage map #152
* Rewrite ncplane_move_yx(), throwing out ~25 line of code
* implement notcurses_refresh() #150
2019-12-17 23:07:21 -05:00
nick black
0f175e58d3
unidamage PoC #117 2019-12-17 00:33:51 -05:00
nick black
c30bd1b531 pass up damage when changing z-axis #146 2019-12-16 23:20:13 -05:00
nick black
91a7427689 render: use unlocked stdio in render path 2019-12-16 21:31:18 -05:00
nick black
c5acdaaef0 don't allow moving a plane above/below itself #71 2019-12-16 21:31:18 -05:00
nick black
dac4f78ee6 basic unit tests for z-axis #71 2019-12-16 21:31:18 -05:00
nick black
58cc6927ac 256-color cube is not ansi, don't muddy the waters 2019-12-16 21:31:18 -05:00
nick black
65858b4495 unit test 256-index quantizing #4 2019-12-16 21:31:18 -05:00
nick black
a916d929db
RGBtoANSI: fixup lower grey onversions, looks reasonable now #4 2019-12-15 23:13:13 -05:00
nick black
cfccd0c39c
RGBtoANSI unit test, fix up bases 2019-12-15 21:33:26 -05:00
nick black
8b664a14ef
move RGBtoANSI into internal header 2019-12-15 21:13:56 -05:00
nick black
041e6438e3
quantize to ansi256, atrociously #4 2019-12-15 20:53:10 -05:00
nick black
f9ac7a7737
image in README 2019-12-15 17:17:20 -05:00
Nick Black
2de07f8a48
Per-line damage map, ~50% increase in FPS on notcurses-demo (#144)
Implement a fairly conservative, line-granularity, two-level damage map. One on the overall notcurses object is dirtied by planar moves, creations, deletions, and resizes. One on each ncplane is dirtied by glyph output, media rendering, fades, and erasure. #83 This has some definite false positives: a hidden plane which moves will damage a bunch of lines unnecessarily. For now, don't do things like that :D.

Extra byte per line per plane, shouldn't be a problem.

Two new stats for cell elisions and emissions

Allow keypress to interrupt view-demo

ncvisual_stream() now allows a callback per frame

Allow ncvisual_open() to create its own, perfectly-sized, ncplane #128

Typical performance prior to this PR:

4655 renders, 18.3s total (0.000305s min, 0.196s max, 0.0039s avg 253.9 fps)
401046.505KB total (9.688KB min, 139.697KB max, 86.15KB avg)
Emits/elides: def 1082115/116196 fg 10547624/7236460 bg 10602717/6208644
 Elide rates: 9.70% 40.69% 36.93%
4680 renders, 18.4s total (0.000285s min, 0.15s max, 0.0039s avg 255.0 fps)
403078.188KB total (9.688KB min, 139.697KB max, 86.13KB avg)
Emits/elides: def 1088994/116196 fg 10604983/7267750 bg 10655426/6237472
 Elide rates: 9.64% 40.66% 36.92%
4699 renders, 17.8s total (0.000227s min, 0.192s max, 0.0038s avg 263.8 fps)
403266.907KB total (9.688KB min, 139.697KB max, 85.82KB avg)
Emits/elides: def 1086511/116196 fg 10601709/7359116 bg 10661910/6326744
 Elide rates: 9.66% 40.97% 37.24%

After this PR:

5625 renders, 15s total (9.36e-05s min, 0.187s max, 0.0027s avg 375.2 fps)
168365.640KB total (0.930KB min, 139.600KB max, 29.93KB avg)
Emits/elides: def 310575/116196 fg 4486002/4473416 bg 4116835/4630666
 Elide rates: 27.23% 49.93% 52.94%
Cells emitted; 9928000 elided: 12572000 (55.88%)
5642 renders, 14.2s total (9.17e-05s min, 0.154s max, 0.0025s avg 397.0 fps)
168669.009KB total (0.605KB min, 139.600KB max, 29.90KB avg)
Emits/elides: def 310819/116196 fg 4499833/4482134 bg 4118562/4652470
 Elide rates: 27.21% 49.90% 53.04%
Cells emitted; 9962160 elided: 12605840 (55.86%)
5650 renders, 14.3s total (0.000118s min, 0.143s max, 0.0025s avg 395.7 fps)
169461.884KB total (0.860KB min, 139.600KB max, 29.99KB avg)
Emits/elides: def 305431/116196 fg 4515396/4456376 bg 4149967/4613668
 Elide rates: 27.56% 49.67% 52.65%
Cells emitted; 9945200 elided: 12654800 (55.99%)

on netcurses-demo, we're eliding about half of the total cells via this damage map. that's pretty fucking sweet! FPS increase of about 50% -- I'll take that any day of the fuckin' week, boyo. w00t!

https://www.youtube.com/watch?v=XbGs_qK2PQA
2019-12-15 13:46:47 -05:00
nick black
ce9eeecc3b
render: eliminate grotesque stupidity
We were doing an entire copy of the framebuffer every fucking
render for no good reason whatsoever. Found this while working
on #83, but let's get it in master immediately. JFC. I suck.

Before (delay factor of 0.5):

[schwarzgerat](0) $ time ./notcurses-demo -d.5
Term: xterm with direct-color indexing
1737 renders, 24.8s total (0.00131s min, 0.362s max, 0.014s avg 70.1 fps)
230217.182KB total (12.696KB min, 223.310KB max, 132.54KB avg)
Emits/elides: def 1074878/126257 fg 6615070/3023957 bg 5519815/3130192
 Elide rates: 10.51% 31.37% 36.19%

real	0m47.653s
user	0m8.977s
sys	0m1.414s
[schwarzgerat](0) $

After (same delay factor of 0.5)

[schwarzgerat](0) $ time ./notcurses-demo -d.5
Term: xterm with direct-color indexing
1741 renders, 23.2s total (0.00125s min, 0.351s max, 0.013s avg 75.0 fps)
231551.089KB total (12.696KB min, 223.310KB max, 133.00KB avg)
Emits/elides: def 1065445/126257 fg 6655295/3006679 bg 5566155/3115184
 Elide rates: 10.59% 31.12% 35.88%

real	0m46.140s
user	0m8.932s
sys	0m1.350s
[schwarzgerat](0) $

Now *there's* the loss we saw during #139 work, thinking we'd get it
back in #143. Good. Huzzah! But also fuck!
2019-12-15 12:23:38 -05:00
nick black
8bd4607e9b
Merge branch 'master' of github.com:dankamongmen/notcurses 2019-12-15 05:22:19 -05:00
nick black
f374682134
panelreel: add tablet curry accessors 2019-12-15 05:22:12 -05:00
nick black
4ea62e3c67
input: handle function keys through f30 2019-12-15 02:18:54 -05:00
nick black
364db519bb
stop shifting style bits stupidly 2019-12-15 02:06:18 -05:00
nick black
5deb896696
panelreel-demo: two tablets to start with 2019-12-14 20:21:26 -05:00
nick black
3b2f72538e
decode more special keys in notcurses-input #134 2019-12-14 18:37:09 -05:00
nick black
c9b6f84dec
fix up default elision in alpha channels #143 2019-12-14 17:59:39 -05:00
Nick Black
8bd8055f72
Distinct fg/bg alpha channels #139 (#141)
* improved alpha macros
* demo: use new alpha macros
* add ncplane_set_*_alpha()
* explicitly set fg for uniblock
* outro: background is a space #139
* distinct alpha channels for fg/bg #139
* rename 'background' cell to 'default' #142
* doc palette fades
2019-12-14 17:34:10 -05:00
Nick Black
ff463d464e
Channels API sanity #119 (#138)
* orthogonalize channel/channels/cells APIs #119
* sync README.md with new ncplane channels api #119
2019-12-14 05:33:34 -05:00
nick black
54eb41cf3a
panelreel-demo: done after demodelay * 5 #135 2019-12-13 20:25:48 -05:00
nick black
88163325fa
widecolor: proceed without keypress #135 2019-12-13 20:10:39 -05:00
nick black
d500bf166e
block_on_input(): allow a NULL sigmask 2019-12-13 20:09:16 -05:00
nick black
f407d7b114
ncplane_box: control corner drawing, stop emitting extra vlines #133 2019-12-13 19:45:34 -05:00
nick black
71a2660b57
fatal_handler: grab ABRT as well 2019-12-13 19:18:24 -05:00