Commit Graph

334 Commits (b56f5989bdc9167606706e21166b77e0e9d6fae5)

Author SHA1 Message Date
nick black 5dd90f3735 add ncplane_dim_[yx] quick accessors 5 years ago
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
5 years ago
nick black 03636b14d3
maxcolor -> trans, document loglevels 5 years ago
nick black 94f597a9bb ronn -> pandoc #245 5 years ago
nick black 390ca477bd
CMake: NAME_WLE requires CMake 3.14 5 years ago
nick black e81e58035e
notcurses_at_yx() added 5 years ago
nick black 41ff6fa5bd
update man pages for ncplane_new() 5 years ago
nick black 2ea4f77875
introduce ncplane_aligned() #237 5 years ago
nick black ed980f1059 pull _get from all accessors 5 years ago
nick black c21a04137c curry a void* through ncvisual_stream #113 5 years ago
nick black 46b1b8e622
notcurses_stats man page #213 5 years ago
nick black 8b4c64f9cc
link to HTML documentation 5 years ago
nick black 21c3861804
s/bannner/banner/g, heh 5 years ago
nick black b7f54e6e5f remove now-obsolete performance note :) #131 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 cad8471d76
build man pages using ronn 5 years ago
nick black 132793211c
capabilities testing for fade/ffmpeg 5 years ago
nick black b9a10cad9f README: make it clear that libav is optional 5 years ago
nick black 7889ffc0a8
kill duplicate documentation 5 years ago
nick black 4e0ebde876
intro: advertise 'q' demo: print full matrix 5 years ago
nick black 368da5bd81
update output API documentation #210 #209 5 years ago
nick black 6156fa72b0
build/run documentation 5 years ago
nick black 7dd875a230 sync documentation to new input code #165 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 fc17a104b4
notcurses_options: clear screen on start 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 dbb74ea8c4
add wiki link 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 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 3f326ee0a8 fix up ncplane_set_{bf}g 5 years ago
nick black 6a9d6fa122
add ncplane_printf_yx() 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 d6bcb3211f eagles level starts at lower-right 5 years ago
nick black b257f40a35 sync input documentation for char32_t #172 5 years ago
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 97ecbdb0e5
sigh, probably gotta kill DMCA lure 5 years ago
nick black fea5ada5f5
add FINAL CUT shout-out, use ≤ in markdown 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 01ac18fb35
s/Open Source/free software/g 5 years ago
nick black 165170dd51 if the man prefers 'free software', use that term 5 years ago
nick black dac4f78ee6 basic unit tests for z-axis #71 5 years ago
nick black 8c40f6076b
link to other tui libraries worth their druthers 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 364db519bb
stop shifting style bits stupidly 5 years ago
nick black bfda5a53d6
add CELL_SIMPLE_INITIALIZER to docs 5 years ago
nick black 4118500897
we lost mssr valéry 5 years ago
nick black 2dd2d84401
copy over panelreel documentation 5 years ago
nick black 26c575a262
spelling 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 582017a16a
more docing 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 46544bec0c
merge paras 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 e3dd36a1a4
link to release in history 5 years ago
nick black 3b987b4993
ncplane_box(): update documentation 5 years ago
nick black 12018f3096
document nl_langinfo() check 5 years ago
nick black 88163325fa
widecolor: proceed without keypress #135 5 years ago
nick black 7e24066816
note about bottommost, rightmost coordinate 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 c5acae4ef5
fbbytes stat 5 years ago
nick black a9c21526a7
add history 5 years ago
nick black 340ddf9f76
use cell terminology throughout 5 years ago
nick black b00099f1c6
README: remove API macro from documentation 5 years ago
nick black cc6179ccab
spelling 5 years ago
nick black e71fa57e54
add 'rgb' PoC, fix setlocale() mention 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 5735e5966a
add _yx-suffixed output forms #102 5 years ago
nick black 194b76a9d3
input: update comment, no longer driven through cell 5 years ago
nick black 7eafdd6772
fix up unit testing sanity 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 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 8afcd04446
sync cell/ncplane fg/bg API naming 5 years ago
nick black 80821ba0e5
readme: section on adapting NCURSES programs 5 years ago
nick black 0392aa34ea
notcurses: get el terminfo capability 5 years ago
nick black 774f8e5a23
summary: fix minima trackers 5 years ago
nick black 0d0eafa8cf
add multimedia/panelreels to README #21 5 years ago
nick black f1ab657c39
update ncpanel documentation 5 years ago
nick black 93e586c58b
update input documentation 5 years ago
nick black 37b0e416c0 get everything prepped for reliable keyboard escapes #78 5 years ago
nick black ae711b7e75 h/vline gradient unit tests #42 5 years ago
nick black 1b714e16d8 update docs for ncplane_box() #42 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 f7437d2e68
avast, scurvy dog 5 years ago
nick black 52c309093a update cell API 5 years ago
nick black c2f377d599 ncplane_background()/ncplane_set_background() #69 5 years ago
nick black b993360f53 add ncplane API 5 years ago
nick black 28ac1e7498 environment/emulator notes 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 e391bfbb81
input: add pass_through_esc option, otherwise run smkx #78 5 years ago
nick black 8fe19262f4
document notcurses_getc() #8 5 years ago
nick black b3a0b2ed6b
list ffmpeg deps 5 years ago
nick black 5f3a12bc63
pre-0.2.0 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 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 ee2e16736c
signal handlers for INT, QUIT, WINCH #27 5 years ago
nick black e9256b1397 add libavformat-dev to debian deps #35 5 years ago
nick black 66b06e9d91 add libav 0.29+ to deps 5 years ago
nick black e6a009ee3a
erase in griddemo #22 5 years ago
nick black 15b46fe1d3
add cell definition #21 5 years ago
nick black 08e9d86d07
ToC at top of README.md 5 years ago
nick black 0cf54ed100
document cell api #21 5 years ago
nick black ec987c9c49
sync README to include 5 years ago
nick black 51d56195ce
stop claiming support for wide chars, utf-8 baybee 5 years ago
nick black 9b104de1ec
commit to unicode 12.1 extended grapheme clusters #14 5 years ago
nick black 3587663d5f
README.md: link syntax 5 years ago
nick black 162d377386
sound less jacked 5 years ago
nick black 6f2d9b627e
deambiguize pronoun 5 years ago
Nick Black 7e92c8bb82
documentation and declarations (#13)
ncplane: flesh out API
ncplane: line and erase APIs
README.md: document differences from ncurses
notcurses_init(): print long term name
CMake: link librt into notcurses
cell: move functionality out to header
5 years ago
nick black 826ddbc7c7
hrmm 5 years ago
nick black c0444bfb3d
yes 5 years ago
nick black 42e386f1e7
readme: introduce planes 5 years ago
nick black 94c67af64d
notcurses_version: add to README 5 years ago
nick black 4fb5c9db71
readme touches 5 years ago
nick black 2dffc5ae1e
document basic use 5 years ago
nick black ba9a113de2
missing conjunction 5 years ago
nick black 908e9e120c
Don't require smcup/rmcup, and emit them only if supported #3 5 years ago
nick black f88a26f55f
introduce notcurses_render() 5 years ago
nick black 4e84859141
some README intro words 5 years ago
nick black 70df86ba17
version string, notcurses_version() 5 years ago
Nick Black 635d7039d7
Initial commit 5 years ago