Commit Graph

759 Commits (ce3e5d112eab920f14c719ceb5d2862b65d69786)

Author SHA1 Message Date
nick black bdcea181a2
don't sleep without defined interval #224 5 years ago
nick black e03653b964
fix libav when DISABLE_FFMPEG is used 5 years ago
nick black 99541cc036
pull out terminfo's cub1 5 years ago
nick black 32ff214be2
update demos for ncplane_aligned #237 5 years ago
nick black 2ea4f77875
introduce ncplane_aligned() #237 5 years ago
nick black 8926fc5879
cursor: always get cnorm/civis defs #240 5 years ago
nick black 7d4f9b5231 witherworm: message 5 years ago
nick black bcd12279c0 ncvisual: handle plane resize #169 5 years ago
nick black ed980f1059 pull _get from all accessors 5 years ago
nick black 014afa348b rename ncplane default -> base #236 5 years ago
nick black d5748c634d ncvisual: keep duration sum for better sync #113 5 years ago
nick black 707862507d use video pts when available #113 5 years ago
nick black c21a04137c curry a void* through ncvisual_stream #113 5 years ago
nick black 41153e3c7e notcurses-view: rewrite using ncvisual_stream #113 5 years ago
nick black db8b99d594
notcurses_render: simplify using new alpha rules 5 years ago
nick black c0126b3389
maxcolor: add a legend for transparencies 5 years ago
nick black 924d80f0d5
don't blend default colors #235 5 years ago
nick black 46b1b8e622
notcurses_stats man page #213 5 years ago
nick black 21c3861804
s/bannner/banner/g, heh 5 years ago
nick black e9890eefc0 general foreground elision #131 5 years ago
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!
5 years ago
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
5 years ago
nick black d4caefc55d
fade: throw a 10ms cap in, improves visual and lessens load 5 years ago
nick black 148114c6ca
rewrite term_esc_rgb for ~8% more FPS 5 years ago
nick black 38ace7677f
build man pages properly #213 5 years ago
nick black 132793211c
capabilities testing for fade/ffmpeg 5 years ago
nick black 3544bd86e2
witherworm: don't hide chars below message 5 years ago
nick black fe0c18d5e4
disable eventfd in panelreel demo for now #196 5 years ago
nick black bf49db1ae4
FreeBSD: guard all uses of _unlocked #196 5 years ago
nick black 90f750dec8
eagle: remove direct libav calls 5 years ago
nick black af7cf118a9 HUD: properly initialize backchannel 5 years ago
nick black 09aa606281 FreeBSD: no CLOCK_MONOTONIC_RAW #196 5 years ago
nick black caf7e41737 need struct AVFrame for sans-libav build 5 years ago
nick black 430a321557 don't import av headers in non-ffmpeg build 5 years ago
nick black bd034c983a input: handle modifiers+mouse (alt, shift, ctrl) #226 5 years ago
nick black 1cc100cd2d UMOK: get endgame working once more 5 years ago
nick black fb0e03fe89 UMOK: fadecb for faders #162 5 years ago
nick black a218851acb sweet-ass stats in HUD #162 5 years ago
nick black 91a00b3400 ULTRAMEGAOK: feed the HUD #162 5 years ago
nick black 9402d7e927 HUD: click on X to close HUD 5 years ago
nick black ee99eb53c3 HUD: throw a close-X on the hud 5 years ago
nick black b13da606f6 whiten and shrink HUD 5 years ago
nick black 7f82ac6f16 ULTRAMEGAOK: mouse-moveable HUD #162 5 years ago
nick black 13b376f94f
panelreels: fix logic error at bottom #222 5 years ago
nick black 7906989582
kill obsolete FIXME 5 years ago
nick black 4e841865b3
panelreel-tester: accept offset arguments #180 5 years ago
nick black 770cdf4773
panelreel: plug up hole at the bottom #220 5 years ago
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
5 years ago
nick black 4d877603c3
maxcolor: fix direction switch 5 years ago
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
5 years ago
nick black 4b6063e1ce sliders: fix timing 5 years ago
nick black cb2bf16a73 support building sans ffmpeg #153 5 years ago
nick black 99fb662f59
eagle: speed up eagles on small screens 5 years ago
nick black 8d26803ed8
fix linear interpolation on large geometries #216 5 years ago
nick black 7424b3b78c
grid: fix boundary conditions on large displays 5 years ago
nick black 4ba9845143 grid: better background on last scene 5 years ago
nick black 1554685165
boxdemo: default background cell explicitly #211 5 years ago
nick black 4b953e33f2
render: carry state across renders #203 5 years ago
nick black e8064f717b
xray: kill subplane when done 5 years ago
nick black 43e0cb3d30
xray: prep for CELL_ALPHA_BLEND #191 5 years ago
nick black ca5e14cdad
xraydemo: isolate avi/text 5 years ago
nick black 53efe2bd1f
demo-view: don't exit on spurious wakeup 5 years ago
nick black 2601fe9191
demo-input: pass 'q' through in addition to interrupt 5 years ago
nick black a14ec34d78
intro: blink warning if screen is small 5 years ago
nick black 4e0ebde876
intro: advertise 'q' demo: print full matrix 5 years ago
nick black 9e9e5ef648
demoinput: process 'q' at all times 5 years ago
nick black 1017bf42e0
panelreeldemo: stop advertising 'q' 5 years ago
nick black 17a55261dc
witherworms: allow them more space 5 years ago
nick black 86efad6f67
griddemo: clip rgb values, kill white line on side 5 years ago
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.
5 years ago
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.
5 years ago
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.
5 years ago
nick black aceda89261 input: add NCKEY_MOUSEEVENT, match against CSI prefix #165 5 years ago
nick black b4b4b3684a yaml 5 years ago
nick black 1555edfa6c
notcurses: disable mouse events on startup/shutdown 5 years ago
nick black 78633de427
mouse: use SGR extended coordinates 5 years ago
nick black ae52d04435
notcurses-input: dim previous lines 5 years ago
nick black ab47ab8976
notcurses_mouse_on()/_off() #165 5 years ago
nick black 046d0314b9
add links to useful man pages 5 years ago
nick black fe7b6bbf89
Samoa, tula'i ma sisi ia lau fu'a, lou pale lea! 5 years ago
nick black f9e18fa1ee
witherworms breed, paint xray banner 5 years ago
nick black 2a256192ad
input: allow duplications of escapes #199 5 years ago
nick black 6b6a00c013
luigi: jump off the right side of the screen 5 years ago
nick black 605293c103
deretardize the witherworms 5 years ago
nick black 708159c686
x-ray demo 5 years ago
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
5 years ago
Nick Black 9b81de3789
O(1) passive damage detection #189 (#197)
* notcurses: set up lastframe #189
* render: o(1) take no prisoners damage detection #189
5 years ago
nick black 8b1b2ebdf0
term_esc_rgb: add note about ITU T.416 syntax 5 years ago
nick black d50ee9ec50
ncplane_erase() at the beginning of viewdemo #194 5 years ago
nick black c3fa7ea664
bleachworm replaces widechomper #177 5 years ago
nick black a710222df1
enmetric(): support localized decimal separator #192 5 years ago
Nick Black 3ad2124246
Partial visual renders #170 (#193)
* ncvisual_render() accept four bounding dims #175
* ncvisual_render(): partial renders #175
5 years ago
nick black 7f01dfc241
planereel-tester: delete support 5 years ago
nick black eaf510676d
planereel-tester: randomly-sized tablets #180 5 years ago
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
5 years ago
nick black b0b1679de6
ncvisual_render(): use true transparency #186 5 years ago
nick black 5403642764
notcurses-input: throw up a banner 5 years ago
nick black 1ebe02cf93
libav: disable stderr logging #174 5 years ago
nick black 0e6c921b28
we break 1k fps in kitty :) 5 years ago
nick black 898806fec1
demo: minimum field width on FPS 5 years ago
nick black 3f326ee0a8 fix up ncplane_set_{bf}g 5 years ago
nick black 21a8e661be
convert all demos to find_data() 5 years ago
nick black 660949a461
griddemo: fix wonky right line 5 years ago
nick black 4950a5ac1a
print enmetricized byte totals 5 years ago
nick black 792b1f2cfb
notcurses-demo: accept -p to find data files #160 5 years ago
nick black db89e71595
track each part of demo #164 5 years ago
nick black 5bec85746d
allow banners to be suppressed 5 years ago
nick black 32e9fd0a1d
notcurses_reset_stats() added + test #164 5 years ago
nick black 15ac1d0411
outro: balance up messages for centering 5 years ago
nick black 11d6f60ed4
clean up eagle poop 5 years ago
nick black 6be6ae2393 eagles: zoom to lower left 5 years ago
nick black 1dde53d0e2 holy fucking shit it works 5 years ago
nick black d6bcb3211f eagles level starts at lower-right 5 years ago
nick black 712c7a16eb fuck yeah 5 years ago
nick black 7ab6febbf9 viewdemo: add a legend. baller as fuck 5 years ago
nick black b257f40a35 sync input documentation for char32_t #172 5 years ago
nick black 0861b96bde wchar_t -> char32_t in input stack #171 5 years ago
nick black 6532ea858b start eagle demo #167 5 years ago
nick black f3f43528f7 implement superplane (NCSCALE_NONE) #168 5 years ago
nick black 3cfe88ee0c ncscale_e enumeration for ncvisuals #168 5 years ago
nick black e2c58534ca work around -Wclobbered-noted problem 5 years ago
nick black e871660eff dig_visible_cell: rewrite recursion as iteration #170 5 years ago
nick black 1a949a5a81
account for tabletmasks 5 years ago
nick black a96e716663
panelreels: account for tablet masking 5 years ago
nick black 4a7409ebda
sprite-enhalfen tool 5 years ago
nick black 97ecbdb0e5
sigh, probably gotta kill DMCA lure 5 years ago
nick black 29eb696947
repair a dumbness 5 years ago
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 :)
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 0f175e58d3
unidamage PoC #117 5 years ago
nick black c30bd1b531 pass up damage when changing z-axis #146 5 years ago
nick black 91a7427689 render: use unlocked stdio in render path 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 58cc6927ac 256-color cube is not ansi, don't muddy the waters 5 years ago
nick black 65858b4495 unit test 256-index quantizing #4 5 years ago
nick black a916d929db
RGBtoANSI: fixup lower grey onversions, looks reasonable now #4 5 years ago
nick black cfccd0c39c
RGBtoANSI unit test, fix up bases 5 years ago
nick black 8b664a14ef
move RGBtoANSI into internal header 5 years ago
nick black 041e6438e3
quantize to ansi256, atrociously #4 5 years ago
nick black f9ac7a7737
image in README 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 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!
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 5deb896696
panelreel-demo: two tablets to start with 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 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 54eb41cf3a
panelreel-demo: done after demodelay * 5 #135 5 years ago
nick black 88163325fa
widecolor: proceed without keypress #135 5 years ago
nick black d500bf166e
block_on_input(): allow a NULL sigmask 5 years ago
nick black f407d7b114
ncplane_box: control corner drawing, stop emitting extra vlines #133 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 0e3b2d7516
print framebuffer size using metric info units 5 years ago
nick black e1fb283018
input: handle more sequences #134 5 years ago
nick black 6e49bbce45
panelreel: don't treat putc() return as bool #132 5 years ago
nick black a9c21526a7
add history 5 years ago
nick black 489ca06fe6
Merge branch 'master' of github.com:dankamongmen/notcurses 5 years ago
nick black c2c017831f
add ncplane_get_channels() 5 years ago
nick black 7c72b0ce83
emoji unit test 5 years ago
nick black e71fa57e54
add 'rgb' PoC, fix setlocale() mention 5 years ago
nick black a55d877281
add FIXME regarding sgr and ncv 5 years ago
nick black 1821867e35
move outfp out of notcurses_options #130 5 years ago
nick black 21c4a9a2eb
demos: use ncalign_center throughout 5 years ago
nick black 7d2b0938e5
uniblock-demo: vastly improved via hook->fade 5 years ago
nick black d20da07fe0
widecolor: maintain a single background in message 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 c0b10a8f32
enable sgr/sgr0 #73 5 years ago
nick black 1ccb747e72
sgr: support disabling ALTCHARSET 5 years ago
nick black 3a79cbf469
proof of concept support. sgr binary 5 years ago
nick black 64462a11ac
for real tho 5 years ago
nick black 208077b95c
enmetric unit tests 5 years ago
nick black c7c52f21d5
luigi: just use the three frames in a loop 5 years ago
nick black 206db6dedd
sgr unit tests 5 years ago
nick black 624ab35b8f
close bracket in output #121 5 years ago
nick black e45df10dca
input: handle unicode #121 5 years ago
nick black 6c14a47368
input: pass through decoded utf8 #121 5 years ago
nick black ad4c8ac58a
luigi: set sprite background so we can elide more 5 years ago
nick black 7eafdd6772
fix up unit testing sanity 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 fdc4325929 widecolor: make message its own plane #110 5 years ago
nick black 66fa8854f3 outro effects 5 years ago
nick black 5e5abd7cbd extract outro 5 years ago
nick black 3a6551ab4d
uniblock-demo: scroll the blocks right-to-left #104 5 years ago
nick black 93231c26eb input: use SPUA-B for special keys #118 5 years ago
nick black 949e531038
notcurses-input: colorize output 5 years ago
nick black e77c584815
fadeout: handle background #111 5 years ago
nick black 065d44001c
change demo order 5 years ago
nick black ea10d80eec
remove duplicate macro define 5 years ago
nick black 0c5c696084
boxdemo: center target grid 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 15c13898ea
don't require civis if retaining cursor 5 years ago
nick black 7566af57e3
introduce ncplane_set_[fb]g 5 years ago
nick black 79253caf31
render: reorder assignment to work around -Wclobbered 5 years ago
nick black 98b323e9a0
demo: only print 'unknown demo' msg when appropriate 5 years ago
nick black 8afcd04446
sync cell/ncplane fg/bg API naming 5 years ago
nick black 78ec605cc6
render: revert cleartoeol, as it leads to flicker 5 years ago
nick black 3d2c2265e0
render: work around wide chars at the far boundary 5 years ago
nick black 3bd43c871d
widecolor: maintain color across resizes 5 years ago
nick black 0392aa34ea
notcurses: get el terminfo capability 5 years ago
nick black ee4c3d217b
widecolor: detect and inhibit wide spaces 5 years ago
nick black df93b67b4e
fix up subject of libav test 5 years ago
nick black 6248714cd0
widecolor: oh what fun 5 years ago
nick black 065f8170ef
Merge branch 'master' of github.com:dankamongmen/notcurses 5 years ago
nick black cb5b0e2968
א guy #110 5 years ago
nick black bf12ea3c59
panelreel-demo: no general border 5 years ago
nick black 52f5bd1612
widecolors: allow all characters 5 years ago
nick black 638cc5903b
fix up usage message 5 years ago
nick black 541f9304df
widecolor-demo: move snake more quickly #110 5 years ago
nick black 6c5bd5d263
outro: fade background, but not foreground 5 years ago
nick black 3cda04e6ab
panelreel-demo: black background on border 5 years ago
nick black bacc69380a
uniblock: restore backgrounds 5 years ago
nick black 3c93030177
notcurses_*_default_prep() 5 years ago
nick black 56cad83a4b
widecolor-demo: improve background colors 5 years ago
nick black 64543919ef
preserve default background color during interpolation #115 5 years ago
nick black 774f8e5a23
summary: fix minima trackers 5 years ago
nick black 6e73e3b72f
widecolor-demo: friendly snake 🐍 #110 5 years ago
nick black be6aa8a3fc
notcurses_render(): guard critical section with pthread_cancel_push() 5 years ago
nick black 7e5e6bc545
slider-demo: force more squarish appearance 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 cbbc18c3a3 build and destroy input sequence trie #78 5 years ago
nick black 37b0e416c0 get everything prepped for reliable keyboard escapes #78 5 years ago
nick black 04e067c202 Add all handled signals to ppoll() set
This addresses an issue where callers of notcurses_getc_blocking()
wouldn't exit on SIGINT etc. until another keystroke was received.
The exit is now immediate, and the proper exit code is propagated.
5 years ago
nick black 6f2c45a0ef extract input layer into its own file 5 years ago
nick black 29f55049f4 input buffer 5 years ago
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
5 years ago
nick black f6b422f668
widecolor demo: bottom handle with stats 5 years ago
nick black c5db91e247
widecolor-demo: fix up summary box 5 years ago
nick black 01a03424f9 box gradients #42 5 years ago
nick black ae711b7e75 h/vline gradient unit tests #42 5 years ago
nick black bdc841e46e ncplane_box: support box mask ctlword #42 5 years ago
nick black a55e02836b ncplane_box: accept ctlword (#42) 5 years ago
nick black eb53f420b1 handle resizes gracefully when rendering/fading #105 5 years ago
nick black c5ecc28ca1 remove resize check from demo core #105 5 years ago
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
5 years ago
nick black 82c5b96f92
remove obsolete assert from panelreels #91 5 years ago
nick black d8e3cc9675
lol, whoops, don't render twice each call :D 5 years ago
nick black 08d4765dc4
enforce utf-8 encoding via nl_langinfo check #89 5 years ago
nick black f0e81ea814
widecolors: make everything a bit more visible on small screens 5 years ago
Nick Black 8e8cb92c54
Improved cell API #97 (#103)
* cell/ncplane: simplify box API (#97)
* widecolor: use new box api (#97)
* uniblock: use new box API #97
* intro: use new box api #97
* panelreel: use new box api
* boxdemo: use new box API #97
* sliding: use new box API #97
* maxcolor: use new box api #97
* factor out notcurses_channel_prep() #97
* maxcolor: use new channel API #97
* sliding: use new channel API #97
* intro: use new channel API #97
* new output functions with no need for a cell
* add ncplane_putegc() and ncplane_putsimple(). the former takes an EGC, the latter a simple char less than 0x80. (#97)
* cell_prime: directly load all parts of a cell with immediates
* widecolor: use new output API #97
* boxdemo: properly initialize cells
* slider: total time cap of 5 * delaydemo
* maxcolor: use new output API #97
5 years ago
nick black e21594b4e9
ncplane_*_box_cells() -> cells_*_box() #97 5 years ago
nick black ccbdfcd499
summarize emission/elision rates on exit 5 years ago
nick black 5554b3fccb
persist elision/emission stats, expose them in API 5 years ago
nick black d09029f7f4
use -std=c11 not -std=gnu11 5 years ago
nick black f83987711c
silence -Wmaybe-uninitialized through ...whitespace? :/ 5 years ago
nick black 35badf8ae7
panelreel: fix some NULL dereferences
ncurses getbegy() and friends, as it turns out, check for
a NULL input and return -1. we've been blindly passing
NULL in a few places on the ncurses side--with its own
problems--but that rapidly led to crashes here.
5 years ago
nick black c70bc7b2a4
slider-demo: work atop a background 5 years ago
nick black 415e238b3d transparent planes #10 5 years ago
nick black 2aadd096c0 lookin' good atl 5 years ago
nick black 738c590bfd
fix up outro 5 years ago
nick black be5ce9051d
outro 5 years ago
nick black 957af8151e view-demo: add video element 5 years ago
nick black 94e52d4acc respect default mode in fadein #40 5 years ago
nick black 0e4080456c fade unit tests #40 5 years ago
nick black 966239747c add ncplane_fadein() #40 5 years ago
nick black 4426ef0574 first go at ncplane_fadeout() #40 5 years ago
nick black 055f49b5fd sliding-demo: animate moves #72 5 years ago
nick black 570b42b78b sliders-demo: factor out move_square() #72 5 years ago
Nick Black 9f4fa94209
Use halfblocks to double vertical resolution of media (#98)
halfblocks vertical, w00t #88
5 years ago
nick black 383895e404
notcurses-view: much more accurate timing 5 years ago
nick black b882fe4e40
poll() on write() EAGAIN 5 years ago
nick black 1dc254396b
comment back out debugging cruft 5 years ago
nick black 296663717c
uniblock: erase screen each time 5 years ago
nick black b59d9c633f video works all the way now :D #94 5 years ago
nick black 56e637d006 motherfucking video #94 5 years ago
nick black 19e1b3ac94
widecolor-demo: fix up right bar of handle 5 years ago
nick black 78e1a06661
view-demo: do both a jpeg and png test 5 years ago
Nick Black 8b0634527d
Correctly copy in shrink + SIGWINCH (#80) (#93)
* notcurses_resize(): properly set new lenx/leny #80
* ppoll() for SIGWINCH #80
* widecolor-demo: keystroke-driven
5 years ago
Nick Black 0b967ae528
More panelreels work #52 (#92)
* setup_signals: handle SIGSEGV with restore

* wresize(): fix keep parameter to ncplane_resize() #52

* ncplane_resize: set new lenx/leny on keep #80

* hrmrmm

* ncplane_resize(): fix numerous confusions

* panelreel-demo: don't allow us to go off the left edge

* panelreel: place tablets correctly #52

* panelreel: set background on focused element
5 years ago
Nick Black 426f632300
Panelreels port #52 (#90)
Port of panelreels, unit tests, and panelreel-demo from outcurses #52.
Doesn't completely work yet, but is surprisingly close!
5 years ago
nick black a9f54ed483 add viewdemo #86 5 years ago
nick black 860fb43e3f ncvisual_render(): respect alpha channel 5 years ago
nick black 3ede80f47f libav: keep the alpha channel, AV_PIX_FMT_RGBA 5 years ago
nick black 7600b9ed54 libav: come correct #86 5 years ago
nick black 634c54776f libav: set up oframe beyond scale #86 5 years ago
nick black 3906357e4e that's an image! #86 5 years ago
nick black 28fac736bb notcurses-view: stop() before printing error
implement ncvisual_render()
5 years ago
nick black d106ebf0d3 libav: check for AVERROR_EOF #86 5 years ago
nick black 531340a145 libav: return averr to caller #86 5 years ago
nick black fd79c86880 av: get height/width #86 5 years ago
nick black 40ed1f1896 print_frame_summary(), let's figure out what the fuck we're doing #86 5 years ago
nick black 684d9f66fe egcpool: fix corruption #59 5 years ago
nick black 3b5aee09a9 widechar-demo: spacing 5 years ago
nick black 8e96c2d78e ncplane backgrounds: render and use i nsliding-demo #69 5 years ago
nick black c2f377d599 ncplane_background()/ncplane_set_background() #69 5 years ago
Nick Black a7d50b557d
ncplane_at_cursor (#76), CCCflag, nonblocking stdin (#78) (#84)
* put stdin into nonblocking mode, retry on short write to stdout #78
* wrap getc_blocking() around a poll #78
* get CCCflag from terminfo. stop clearing the screen in render/startup
* implement ncplane_at_cursor() #76
* ncplane_at_cursor() unit test for simples #76
* PlaneAtCursorComplex unit test #76
* PlaneAtCursorInsane() unit test #76
* nplane_at_cursor: return number of bytes, not just 0/-1
* uniblock-demo: add a bunch of pages from Unicode 12
* demo: make -d delay multiplier a float
* egcpool: check offset against poolsize in check_validity()
* notcurses_init(): set smkx/rmkx to NULL with pass_through_esc
* PlaneAtCursorAttrs unit test #76
* add ncplane_styles() accessor
5 years ago
nick black 020f712e40
ncplane_create: NULL out userptr on creation 5 years ago
nick black 9fe6c152a9 enhance SetStyles unit test 5 years ago
nick black 5e35e05151 render: don't send unnecessary color change sequences #47 5 years ago
nick black 4cc0ce037d read terminfo entries for keypad #78 5 years ago
nick black 6a5c21cacd demo: accept -f, open argument for renderfp 5 years ago
nick black b3c6f9232a add renderfp option to render to a file 5 years ago
nick black 8c6d0495ee
input: decode special keys, call notcurses_resize() #79 5 years ago
nick black e391bfbb81
input: add pass_through_esc option, otherwise run smkx #78 5 years ago
nick black cb60c11f09
input: factor out handle_getc(), export cell_simple_p() #8 5 years ago
nick black 51a86ece7b
input: print keypresses #8 5 years ago
nick black c76735cb2a
notcurses_getc(): read from stdin 5 years ago
nick black a037cdfe5a
add new notcurses-input binary #8 5 years ago
nick black ad7a517ec8
notcurses_render(): propagate result of write(2) 5 years ago
Nick Black 7f9ac490b0
ncplane_resize(), slider demo (#64) (#74)
* sliding: bounding box around puzzle
* slider: make moves, deleting planes #61
* implement z-index move functions
* demo: allow demos to be chosen via command-line option
* allow default bg/fg to be explicitly chosen
* ncplane_resize() unit test #64
* useful links
* slider: use random colors
* use find_above() in ncplace_destroy()
* ncplane_resize() work #64
5 years ago
nick black 374403fdeb
sliding: color up pieces 5 years ago
nick black fe14403f9e
ncplane_double_box_cells(), used in sliding-demo #67 5 years ago
nick black ad183a6322
shuffle: color and label pieces #67 5 years ago
nick black e81377cf05 render: slow but simple z-depth algorithm #1 5 years ago
nick black a1c7bef894 sliding: draw into ncplanes #67 5 years ago
nick black 222c532c77 demo: introduce -d delay param, use everywhere 5 years ago
nick black c7cf4b1c9b sliding puzzle demo for planes #26 5 years ago
nick black 0b25c49f9c render: set styles #11 5 years ago
nick black f65d168d83 notcurses_render(): call term_setstyles() for sgr stuff #11 5 years ago
nick black bc662e92bb notcurses_render(): add term_setstyle() #11 5 years ago
nick black 2dde60c27a
ncplane_destroy(): pull it out of the zbuffer #26 5 years ago
nick black 38ef2148bb widecolor: throw a box around summary 5 years ago
nick black d5cc65715e ncplane userptr routines + unit tests #26 5 years ago
nick black bd5596cc15 kill obsolete FIXME 5 years ago
nick black 71a127463a
ncplane_create() 5 years ago
nick black 9a41257669 libavutil/libswscale versions in intro 5 years ago
nick black b1029fc191 av: pass down through libswscale #61 5 years ago
nick black 8dfd050ab7 add ncplane_destroy() #26 5 years ago
nick black 5dfb07183c libav: throw an swscaler in the mix #61 5 years ago
nick black f948904f7b libavutil linkage #61 5 years ago
nick black 45697d54f9 libav: pass AVFrame back through #61 5 years ago
nick black 9ed5a8b6c7 decode AVPacket into AVFrame #61 5 years ago
nick black cf557ff500 ncurses-view #61 5 years ago
nick black 4b2bf26ee2 ncvisual_destroy() implemented 5 years ago
nick black dc6ce9ba90 shrink leading box 5 years ago
nick black 7bc58fe603 consistency check assert in egcpool #59 5 years ago
nick black 2080e0bff3 unit tests for exercised egcpool #59 5 years ago
Nick Black ba648dbd74
What a miserable evening tracking #57 (#60)
* widecolor-demo: don't emit spaces
* notcurses_init: newline before splash
* boxdemo: ncplane_erase() on entry #58
* uniblock-demo: print even wide chars #49
5 years ago
nick black ed6ec5e854
unicodeblocks: disable RtL blocks for now 5 years ago
nick black 164d2e1cc0
notcurses_render(): count multicols against running total #57 5 years ago
nick black ee2e16736c
signal handlers for INT, QUIT, WINCH #27 5 years ago
nick black f14ee490f2
CMake: visibility=hidden by default #56 5 years ago
nick black 360a3f8600
print versions in startup 5 years ago
nick black c4fb15524d
ncurses_render(): fflush stdout following writes #46 5 years ago
nick black a0bb876549 render: if either fg or bg are default, send 'op' first #48 5 years ago
nick black 3bd67740cc ncplane_putstr(): copy attrword and channels directly #48 5 years ago
nick black f514fe234c switch demos to ncplane_rounded_box_cells() 5 years ago
nick black ccb3c137b3 add ncplane_box_sized() and ncplane_rounded_box_cells() 5 years ago
nick black 98d6f12002 visual_open: round out libav loading #35 5 years ago
nick black 3dee9bba7c need avframe 5 years ago