Commit Graph

131 Commits (6532ea858b96979cf1e7f5c924f89b2d1e92cac5)

Author SHA1 Message Date
nick black 3cfe88ee0c ncscale_e enumeration for ncvisuals #168 5 years ago
nick black 94722c0f28
Merge branch 'master' of github.com:dankamongmen/notcurses 5 years ago
nick black ddfd5219ed
notcurses_getc() needs return wchar_t #161 5 years ago
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
5 years ago
nick black 040607c6f9
fix up linear interpolations 5 years ago
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
5 years ago
nick black c5acdaaef0 don't allow moving a plane above/below itself #71 5 years ago
nick black dac4f78ee6 basic unit tests for z-axis #71 5 years ago
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
5 years ago
nick black 8bd4607e9b
Merge branch 'master' of github.com:dankamongmen/notcurses 5 years ago
nick black f374682134
panelreel: add tablet curry accessors 5 years ago
nick black 4ea62e3c67
input: handle function keys through f30 5 years ago
nick black 364db519bb
stop shifting style bits stupidly 5 years ago
nick black 26c575a262
spelling 5 years ago
nick black 3b2f72538e
decode more special keys in notcurses-input #134 5 years ago
nick black c9b6f84dec
fix up default elision in alpha channels #143 5 years ago
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
5 years ago
nick black 4ad1321dce
remove double-define from README 5 years ago
nick black 89b6af2166
docs docs docs, all day long 5 years ago
Nick Black ff463d464e
Channels API sanity #119 (#138)
* orthogonalize channel/channels/cells APIs #119
* sync README.md with new ncplane channels api #119
5 years ago
nick black 88163325fa
widecolor: proceed without keypress #135 5 years ago
nick black a1c90a347a
add ncplane_box() corner masking 5 years ago
nick black 71a2660b57
fatal_handler: grab ABRT as well 5 years ago
nick black e6d35978d4
add notcurses_refresh() declaration 5 years ago
nick black 18a33a0328
handle still more key sequences #134 5 years ago
nick black e1fb283018
input: handle more sequences #134 5 years ago
nick black c2c017831f
add ncplane_get_channels() 5 years ago
nick black 1821867e35
move outfp out of notcurses_options #130 5 years ago
nick black 8de3696268
add ncplane_putwstr_aligned(), update docs #102 5 years ago
nick black de595380b6
ncplane_putstr_aligned(), use it in intro #102 5 years ago
nick black 5735e5966a
add _yx-suffixed output forms #102 5 years ago
nick black c0b10a8f32
enable sgr/sgr0 #73 5 years ago
nick black 194b76a9d3
input: update comment, no longer driven through cell 5 years ago
nick black 208077b95c
enmetric unit tests 5 years ago
nick black 8672ae3caa
update docs regarding input 5 years ago
Nick Black 0d2c43603b
Luigi in Mega Man world (#127)
* uniblock-demo: reset background to black
* warning about quantization
* some luigi love
* update cell documentation
* add unit test for move of stdplane
* MoveToLowerRight unit test
* ncplane_move_yx(): error to move stdscr
* better box permutations test
* luigi in megaman2 world
* stats: don't print 'em if we haven't got 'em
5 years ago
nick black 93231c26eb input: use SPUA-B for special keys #118 5 years ago
Nick Black 38a10d9065
Transparency via alpha channels (#122)
* outro: bevel message window's corners
* egcspool: use full 25 bits available for 32MB pools
* render: remove unused inheritance mask
* interfaces + unit tests for 2-bit alpha
* notcurses_*g_alpha() acccessors
* cell alpha + unit tests
* panelreel: support a background channel
* notcurses: transparency via alpha channel
* remove unused CELL_ALPHA_MASK
5 years ago
nick black 08859aeb29
use CELL_STYLE_SHIFT rather than bare 16u 5 years ago
nick black 756eebc060
add ncplane_putwegc() and unit test #120 5 years ago
nick black 1b1729133c
add ncplane_putwstr(), add unit test #120 5 years ago
nick black 7566af57e3
introduce ncplane_set_[fb]g 5 years ago
nick black 222889c7c6
add ncplane_*_rgb() 5 years ago
nick black 8afcd04446
sync cell/ncplane fg/bg API naming 5 years ago
nick black bacc69380a
uniblock: restore backgrounds 5 years ago
nick black 3c93030177
notcurses_*_default_prep() 5 years ago
nick black 774f8e5a23
summary: fix minima trackers 5 years ago
nick black ac845b28a4
handle function keys, insert, end/home, etc #78 5 years ago
nick black af7ca02f36 Decode input escape sequences to special keys #78
Add the necessary input buffer, non-blocking reads, escape trie,
and unit tests to support extended keys, including arrow keys.
Update notcurses-input to print Unicode Control Glyphs instead of
a blank space for control chars.
5 years ago
nick black 37b0e416c0 get everything prepped for reliable keyboard escapes #78 5 years ago