Commit Graph

127 Commits

Author SHA1 Message Date
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
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
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
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
26c575a262
spelling 2019-12-14 18:39:56 -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
4ad1321dce
remove double-define from README 2019-12-14 07:11:26 -05:00
nick black
89b6af2166
docs docs docs, all day long 2019-12-14 07:04:43 -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
88163325fa
widecolor: proceed without keypress #135 2019-12-13 20:10:39 -05:00
nick black
a1c90a347a
add ncplane_box() corner masking 2019-12-13 19:40:22 -05:00
nick black
71a2660b57
fatal_handler: grab ABRT as well 2019-12-13 19:18:24 -05:00
nick black
e6d35978d4
add notcurses_refresh() declaration 2019-12-13 18:02:35 -05:00
nick black
18a33a0328
handle still more key sequences #134 2019-12-13 17:18:54 -05:00
nick black
e1fb283018
input: handle more sequences #134 2019-12-13 16:54:09 -05:00
nick black
c2c017831f
add ncplane_get_channels() 2019-12-12 16:23:05 -05:00
nick black
1821867e35
move outfp out of notcurses_options #130 2019-12-12 07:59:48 -05:00
nick black
8de3696268
add ncplane_putwstr_aligned(), update docs #102 2019-12-12 07:07:04 -05:00
nick black
de595380b6
ncplane_putstr_aligned(), use it in intro #102 2019-12-12 07:01:05 -05:00
nick black
5735e5966a
add _yx-suffixed output forms #102 2019-12-12 06:38:16 -05:00
nick black
c0b10a8f32
enable sgr/sgr0 #73 2019-12-12 06:21:16 -05:00
nick black
194b76a9d3
input: update comment, no longer driven through cell 2019-12-11 00:47:46 -05:00
nick black
208077b95c
enmetric unit tests 2019-12-10 16:21:18 -05:00
nick black
8672ae3caa
update docs regarding input 2019-12-10 06:10:01 -05:00
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
2019-12-10 06:02:49 -05:00
nick black
93231c26eb input: use SPUA-B for special keys #118 2019-12-08 15:32:57 -05:00
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
2019-12-08 13:00:19 -05:00
nick black
08859aeb29
use CELL_STYLE_SHIFT rather than bare 16u 2019-12-08 12:59:41 -05:00
nick black
756eebc060
add ncplane_putwegc() and unit test #120 2019-12-07 23:00:18 -05:00
nick black
1b1729133c
add ncplane_putwstr(), add unit test #120 2019-12-07 20:37:25 -05:00
nick black
7566af57e3
introduce ncplane_set_[fb]g 2019-12-07 17:55:23 -05:00
nick black
222889c7c6
add ncplane_*_rgb() 2019-12-07 15:13:08 -05:00
nick black
8afcd04446
sync cell/ncplane fg/bg API naming 2019-12-06 22:45:08 -05:00
nick black
bacc69380a
uniblock: restore backgrounds 2019-12-05 04:18:43 -05:00
nick black
3c93030177
notcurses_*_default_prep() 2019-12-05 03:54:41 -05:00
nick black
774f8e5a23
summary: fix minima trackers 2019-12-05 02:01:49 -05:00
nick black
ac845b28a4
handle function keys, insert, end/home, etc #78 2019-12-05 00:24:08 -05:00
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.
2019-12-04 23:46:24 -05:00
nick black
37b0e416c0 get everything prepped for reliable keyboard escapes #78 2019-12-04 23:46:24 -05:00
Nick Black
c0a1ee0f31
Spruce up slider demo, fix up uniblock demo #66 #72 (#112)
Slider demo: paint chunks in a pattern, then shuffle them up #72
Right-to-left unit tests #66
Fix up damage to uniblock demo using cup explicit cursor move #66
2019-12-04 10:00:23 -05:00
nick black
ae711b7e75 h/vline gradient unit tests #42 2019-12-04 04:50:26 -05:00
nick black
a55e02836b ncplane_box: accept ctlword (#42) 2019-12-04 04:50:26 -05:00
Nick Black
6f9b1e0379
Locking #82 (#106)
* remove unused simple_gcluster_p()
* detail statistics
* add byte statistics on rendering
* lock around notcurses_render() #82
* lock nc in notcurses_putc() #82
* lock ncplane_styles() and friends #82
2019-12-03 23:34:08 -05:00