Commit Graph

448 Commits

Author SHA1 Message Date
nick black
4a6ab358ba inline ncplane_putsimple_yx() 2020-04-05 23:54:38 -04:00
nick black
32c590ea64 document details of scrolling #323 2020-04-05 23:54:38 -04:00
nick black
fcd7e19e4c Add ncplane_set_scrolling() #323 2020-04-05 23:54:38 -04:00
nick black
7cf3bad556
note that ANSI_X3.4-1968 is also allowed 2020-04-04 00:03:51 -04:00
nick black
459b1029af README: add notcurses-keyplot to app list 2020-04-03 05:51:02 -04:00
nick black
af478ccf95
README: book has been published, link it =] 2020-04-02 14:01:57 -04:00
nick black
a45d888601
All fill-type functions return cells changed
Fill-type functions used to return 0 for success, and -1
on failure. They now return the number of cells written
on success, similarly to ncvisual_render(). Resolves #427.
2020-03-29 05:26:56 -04:00
nick black
8651486ad7
Don't say DirectColor when TrueColor is meant 2020-03-27 12:58:30 -04:00
nick black
a77774f4dc
notcurses_at_yx(): value-result u32+u64, not cell
Resolves #410. notcurses_at_yx() accepted a cell*, but the
gcluster of this cell was always set to 0. The EGC is instead
a heap-allocated copy, returned as the primary return value.
This is due to the absence of an egcpool to bind against.
Existing callers can be converted thus:

* instead of passing cell 'c', pass &(c)->attrword, &(c)->channels
* either initialize 'c' with CELL_TRIVIAL_INITIALIZER, or set its
   gcluster field to 0 following the call

I've updated all calls from tests/demos, updated the docs, and
updated the C++ and Python wrappers.
2020-03-27 03:49:13 -04:00
nick black
73b61f6a69 Add bound planes (#71) plus docs/tests
Add ncplane_bound(3). This allows a new plane N to be created in the
*bound* state relative to another ncplane B. If B moves, N moves the
same amount. If N is moved, the coordinates are taken relative to B
as opposed to the standard plane. If B is destroyed, N is destroyed.
Each plane can have many planes bound to it, but can only be bound to
a single plane. Add ncplane_reparent(3). This allows a plane to be
detached from any plane to which it is bound, and optionally rebound
to a new plane. The standard plane cannot be reparented.
Documentation and unit tests have been added for both.
2020-03-27 03:13:30 -04:00
nick black
ff71eda6a1
reels are a cylinder, not a torus 2020-03-26 23:31:28 -04:00
nick black
ee754ed241
Tetris: simplify MoveDown(), don't be stupid 2020-03-25 23:10:31 -04:00
Nick Black
de9158bd7b
More tetris work for book #421 (#423)
* tetris: use NES gravities
* tetris: use NES grav multiplier of 50ms
* tetris: implement move down #421
* README: mention notcurses-tetris #421
* tetris: use double box for boundary #421
* tetris: extract background.h
* tetris: break up into chunks suitable for book
* tetris: do the rotations
2020-03-25 04:06:38 -04:00
nick black
060c0c2a47 README: WINDOW->plane in reel docs 2020-03-21 11:58:50 -04:00
nick black
38f4255dc0 Define ncplane_mergedown() #361
ncplane_mergedown() is similar to the "Merge down" operation
in the GIMP. It writes to the destination plane the result
of rendering the source and destination frames per se.
2020-03-21 05:09:31 -04:00
nick black
6f9fdc115a published next month! :D 2020-03-17 10:56:01 -04:00
nick black
ba90c70a47
ncplane_cursor_yx() takes const first argument 2020-03-14 21:15:37 -04:00
nick black
db30bcf0d2
document new ncdirect functions for cursor #402 2020-03-13 09:56:46 -04:00
Nick Black
c056a0a026
Subregion renders #293 (#404)
Add four new fields to notcurses_options: margin_{tblr}, which requests margins to the top, right, bottom, and left. Render only within those margins, leaving the screen otherwise untouched (well, cleared if using the alternate screen). #293
2020-03-13 05:07:33 -04:00
nick black
638be8feb7 multiselector options/items #322 2020-03-09 15:31:16 -04:00
nick black
eead4c1414
notcurses_highgradient() added #398 2020-03-08 04:05:55 -04:00
nick black
333f7c1192
define ncplane_rotate_cw/ccw() 2020-03-05 18:07:20 -05:00
nick black
afe724ee1d
docs: update for ncplane_translate_abs() 2020-03-03 01:04:28 -05:00
nick black
bb579d0d05
notcurses_directmode()->ncdirect_init() 2020-03-02 20:19:16 -05:00
nick black
c6f27f1bee
notcurses_resize() update docs #367 2020-02-29 23:05:51 -05:00
nick black
a39efb1d6d
move selector, menu documentation to book 2020-02-28 03:24:09 -05:00
nick black
fce0d9d88d
README: send multimedia to book 2020-02-27 12:09:01 -05:00
nick black
13beb9703f
move some README content to the book 2020-02-27 11:56:14 -05:00
nick black
4fb8500631
README: add link to mailing list 2020-02-24 19:42:18 -05:00
nick black
a09bdc4ade
Add seqnum field to ncinput #374 2020-02-24 18:11:39 -05:00
nick black
a626178b16
ncdirect: cursor movement / geom detection #382 2020-02-24 16:30:51 -05:00
nick black
9b0603bb32
Implement + test ncplane_mouseevent_p() #305 2020-02-23 03:50:17 -05:00
Nick Black
745e742a12
Fix gradient engine #368 (#372)
Simplify and correct the gradient engine, resolving all test breakage.
2020-02-22 21:00:03 -05:00
nick black
5e38da9ea3
implement ncplane_stain() #347 2020-02-21 07:00:53 -05:00
nick black
002e8be574
implement ncplane_format() #347 2020-02-21 06:52:57 -05:00
nick black
2780734efd
add ncplane_translate() 2020-02-21 06:26:57 -05:00
nick black
f9d98dd05c
notcurses_stdplane_dimyx() #365 2020-02-20 23:40:13 -05:00
nick black
35d850f008
Implement + test ncplane_putegc_stainable() #352 2020-02-20 04:41:56 -05:00
Nick Black
e5d6685c92
No locks, more lox #290 (#358)
* README/CMake: only require doctest 2.3.5

* man pages: remove talk of locking #290

* Remove locking from notcurses core #290

* Purge locking from notcurses core #290
2020-02-18 20:03:20 -05:00
Nick Black
e6637e81cc
Prep for serious rusting #101 (#354)
* CMake: add USE_PANDOC, USE_DOXYGEN options #101
* README: mention rust
* start integrating rust into build #101
* CMake: add USE_NETWORK option for cargo
* Debian: build-dep on doxygen
* rust: colloquy checks in Cargo.lock
* extract NCKEY defines into their own include
* colloquy: use clap to parse CLI args
* CMake: unify option namespace
* Python: update include path
* Rust: fix up --frozen workings for -DUSE_NETWORK=off
* CMake: abstract out colloquy a little
* Sync direct.hh to the New Way
2020-02-18 12:36:16 -05:00
Jakub Wilk
f08d51c5e7 fix typos 2020-02-18 08:03:59 -05:00
nick black
3734262a52
README: link to Doxygen output 2020-02-18 01:26:37 -05:00
nick black
d8fc0da91d
README: add link to guidebook 2020-02-17 22:48:07 -05:00
nick black
111a44fde5
update HISTORY with 1.2.0 release 2020-02-17 22:45:04 -05:00
nick black
438ee1257b
remove doctest, rely on system 2020-02-17 17:36:27 -05:00
nick black
c6520ab84c add notcurses_drop_planes, use from demo #346 2020-02-16 11:21:21 -05:00
nick black
ab9cbf82dc drop all images from README.md 2020-02-16 11:21:21 -05:00
nick black
6e97501ef7 add menu example to README 2020-02-16 11:21:21 -05:00
nick black
43bf0874d7 trim down NCKEY repetitions from README 2020-02-16 11:21:21 -05:00
nick black
643c1f4ed4 drop 0.4.0-sheet.png from README.md 2020-02-16 11:21:21 -05:00
nick black
8ecb4ba6a8 declare gradient functions #340 2020-02-16 11:21:21 -05:00
nick black
124004c87c add nplane_polyfill_yx() #340 2020-02-14 05:38:08 -05:00
nick black
ce3e5d112e add ncdirect_clear() #343 2020-02-14 05:38:08 -05:00
nick black
6d629025e3 add ncdirect_fg_default() and ncdirect_bg_default() 2020-02-14 05:38:08 -05:00
nick black
bfc28b0071 comment up ncdirect a bit better 2020-02-14 05:38:08 -05:00
nick black
9fc53e811f
ncplane_perimeter() plus unit test 2020-02-12 12:29:28 -05:00
nick black
d8c42d4d1e
ncmenu_selected() fills in an ncinput #333 2020-02-12 09:11:28 -05:00
nick black
6b01d51cc1 add Robert Edmonds to THANKS 2020-02-11 19:04:08 -05:00
nick black
b0c72607c4
ncmenu_offer_input(), use it in demo/pocmenu #333 2020-02-10 20:22:23 -05:00
nick black
7d1c977ba8
comment for nctablet_userptr() 2020-02-10 16:54:12 -05:00
nick black
aacec297b2
ncmenu: declare ncmenu_offer_input() 2020-02-10 15:41:25 -05:00
nick black
74b9690cf3
ncmenu: remove dumb restrictions/special casing 2020-02-10 15:18:28 -05:00
nick black
1ed6000193 ncstats: add plane count, fix fbbytes accounting 2020-02-07 09:19:08 -05:00
nick black
62488eaf10
blit->ncblit #324 2020-02-05 20:40:36 -05:00
nick black
89f516dcaa
tablet->nctablet, add ncreel to python #324 2020-02-05 20:04:56 -05:00
nick black
c519c95fff
panelreel -> ncreel #324 2020-02-05 17:29:42 -05:00
nick black
b284901d18
prep for 1.1.6 2020-02-05 04:08:42 -05:00
nick black
00f7973aea
remove obsoleted README line #321 2020-02-05 02:53:19 -05:00
nick black
bb7b92ea4a
ncdirect_styles_*() declarations #321 2020-02-05 02:27:41 -05:00
nick black
443deee7a3
README: update rendering algorithm description #289 2020-02-04 21:49:29 -05:00
nick black
5cd3a4c41d
ncdirect_dim_y()/x() 2020-02-04 03:04:38 -05:00
nick black
2a9f3c5ab3
ncmenu_selected(), update docs #179 2020-02-04 01:05:51 -05:00
nick black
4d613217b3
ncmenu: only allow one at a time 2020-02-04 00:17:51 -05:00
nick black
10a269c963
ncmenu: reject double menu 2020-02-04 00:08:03 -05:00
nick black
4c8adb0072
mention available in packages in README.md 2020-02-03 15:26:29 -05:00
nick black
fdc541c6e5 copy over menu elements #179 2020-02-02 05:13:40 -05:00
nick black
54c57b3487 s/CELL_STYLE/NCSTYLE/ throughout 2020-02-02 05:13:40 -05:00
nick black
8984422f1e basics of menu #179 2020-02-02 05:13:40 -05:00
nick black
6fde6e66b7 markdown syntax fixen 2020-02-02 05:13:40 -05:00
nick black
6e642f1749 more menu work #179 2020-02-02 05:13:40 -05:00
nick black
25ce448889
rgba_blit()/bgrx_blit() #311 2020-02-02 02:20:01 -05:00
nick black
c1664170fd
selector: bgchannels only inside the body #302 2020-01-31 21:25:21 -05:00
nick black
5982707f9e
add mbswidth() function, unit tests, docs 2020-01-31 19:00:51 -05:00
nick black
85f042c644
add selector to README #302 2020-01-31 17:33:47 -05:00
Nick Black
da0283ac25
Selector widget #166, subtitles #95 (#301)
Get rid of annoying empty line in notcurses-view (and ncvisuals at offsets in general)
Implement most of the Selector widget. Need to add styling and scrolling still. #166
Reenable ubuntu focal build
Subtitles! We decode them, and display them in notcurses-view. If ncvisual_simple_streamer() is provided an extra ncplane, it will use it to display subtitles. #95
We now build Python by default, as things are working much better.
ncplane_set_base() now takes channel, attrword, and EGC, so you can usually avoid having to set up and release a cell. ncplane_set_base_cell() takes over duty from ncplane_set_base() for ease of conversion.
notcurses-demo and notcurses-view now both accept a 0 for delay multiplier, meaning 'go as fast as you possibly can'. Very small multipliers (e.g. 0.00001) no longer cause floating point exceptions.
fading routines no longer cause floating point exceptions on very small timescales.
2020-01-30 08:55:01 -05:00
nick black
25dde8c889
FAQ entry about hiding planes 2020-01-26 22:24:56 -05:00
nick black
c04a68896c
README: add FAQ entry about c++ scopes 2020-01-25 11:06:08 -05:00
nick black
1fd0563093
Direct mode with its own type #77
Introduce the new type 'ncdirect', a stripped-down 'notcurses'
suitable for inline modification of regular output. Used the new
type because otherwise there were going to be if(directmode) checks
everywhere. Direct mode encompasses only colorizing and styling.
Add new man page notcurses_directmode(3). Add new section to README.
Add new PoC using direct mode RGB. Update demo table summary to use
direct mode.
2020-01-25 01:13:04 -05:00
nick black
2ea10d4b28 Remove clear_screen_start option
As it turns out, we can't portably load the initial terminal contents
(there are some hacks of various EXTREME nature, but none of them are
worth it for the rather limited benefit). The O(1)-time damage
inference requires knowledge of what was previously present to
inibit unnecessary draws. We would then need some special cell value
indicating "not yet written to" to distinguish a purposeful null
cell from an initial cell. Again, we could do this, but for what value?

Finally, the idea of clearing new area on SIGWINCH was always flawed,
as we can't do that from a signal handler.

With the advent of direct mode #77, the reason for this largely goes
away in any case.
2020-01-24 04:06:41 -05:00
nick black
4f719b5405
top-level credit to @grendello for c++ wrappers #212 2020-01-22 06:51:25 -05:00
nick black
507c3e1d00
expunge wayward fragment of comment 2020-01-19 15:15:42 -05:00
nick black
a977b0de30
add 1.1.0 to the books 2020-01-19 15:04:42 -05:00
nick black
6e92492117
docs, python: add notcurses_canchangecolor() 2020-01-19 06:16:09 -05:00
nick black
b7bc693ef7
i'm WarMECH, bitch 2020-01-19 04:39:15 -05:00
nick black
004f5ca1ea
Note copyright of Mark Ferrari for jungle demo 2020-01-19 02:31:08 -05:00
Nick Black
3d612aebcb
ruins color cycling demo #253 (#287)
* palette_set: update pal256 damage map #230
* drone: use newest builders
* palette: send oc on exit for color reset #285
* palette_new: copy existing palette in #230
* Python: use checkRGB everywhere
* more palette unit testing
* add ncplane_set_*_palindex()
* render fg palindex #230
* palette index color is out of 1000
* jungle demo works #253
2020-01-18 20:42:29 -05:00
nick black
064759179c
add FAQ about render% > 100 2020-01-18 16:06:57 -05:00
nick black
b02acd8631
Curry a void* to fader callbacks #284 2020-01-17 09:30:53 -05:00
nick black
08f6fa0e79 implement ncplane_dup() 2020-01-17 08:35:28 -05:00
nick black
6365fc0917 encode palette index into channels/attr #230 2020-01-17 08:35:28 -05:00
nick black
67b5a20758 implement ncplane_putwc_yx() 2020-01-15 04:50:54 -05:00
nick black
c8f12b6412
uniblock: darken the area above the block 2020-01-14 16:38:43 -05:00
nick black
dd7f8eff4b
ncvisual_stream: add timescale param 2020-01-14 15:50:17 -05:00
nick black
23b5078ed1
pulsing text declarations 2020-01-14 01:09:26 -05:00
nick black
243ddf0702
add widechars.png image to readme 2020-01-12 07:51:35 -05:00
nick black
922c639355 cell: add clipped 2020-01-12 07:46:38 -05:00
nick black
0f60af347d add clipped set functions 2020-01-12 07:46:38 -05:00
nick black
16cd377cf7 shout out to rebecca bowen for the fix 2020-01-09 05:20:33 -05:00
nick black
306045116f API: always call complex from static simple 2020-01-07 16:15:27 -05:00
nick black
fac377b2bc CMake: require python3 2020-01-07 16:15:27 -05:00
nick black
523ba85815
update outcurses links 2020-01-06 17:31:34 -05:00
nick black
c00fc3c3f7
mask out SIGWINCH in demo #262 2020-01-06 00:00:49 -05:00
nick black
af1a5ea528
v1.0.0. Give. Sympathize. Control. 2020-01-04 08:39:20 -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
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
03636b14d3
maxcolor -> trans, document loglevels 2020-01-03 12:13:03 -05:00
nick black
94f597a9bb ronn -> pandoc #245 2020-01-01 21:26:21 -05:00
nick black
390ca477bd
CMake: NAME_WLE requires CMake 3.14 2020-01-01 19:06:57 -05:00
nick black
e81e58035e
notcurses_at_yx() added 2019-12-31 20:51:20 -05:00
nick black
41ff6fa5bd
update man pages for ncplane_new() 2019-12-30 07:49:06 -05:00
nick black
2ea4f77875
introduce ncplane_aligned() #237 2019-12-30 02:28:40 -05:00
nick black
ed980f1059 pull _get from all accessors 2019-12-30 01:10:10 -05:00
nick black
c21a04137c curry a void* through ncvisual_stream #113 2019-12-29 23:28:14 -05:00
nick black
46b1b8e622
notcurses_stats man page #213 2019-12-29 03:24:32 -05:00
nick black
8b4c64f9cc
link to HTML documentation 2019-12-28 20:16:37 -05:00
nick black
21c3861804
s/bannner/banner/g, heh 2019-12-28 18:37:44 -05:00
nick black
b7f54e6e5f remove now-obsolete performance note :) #131 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
cad8471d76
build man pages using ronn 2019-12-27 07:36:42 -05:00
nick black
132793211c
capabilities testing for fade/ffmpeg 2019-12-27 05:13:29 -05:00
nick black
b9a10cad9f README: make it clear that libav is optional 2019-12-27 02:48:13 -05:00
nick black
7889ffc0a8
kill duplicate documentation 2019-12-25 00:47:13 -05:00
nick black
4e0ebde876
intro: advertise 'q' demo: print full matrix 2019-12-24 00:47:31 -05:00
nick black
368da5bd81
update output API documentation #210 #209 2019-12-23 23:17:09 -05:00
nick black
6156fa72b0
build/run documentation 2019-12-23 19:16:57 -05:00
nick black
7dd875a230 sync documentation to new input code #165 2019-12-23 19:08:12 -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
fc17a104b4
notcurses_options: clear screen on start 2019-12-23 03:36:37 -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
dbb74ea8c4
add wiki link 2019-12-21 23:31:57 -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
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
3f326ee0a8 fix up ncplane_set_{bf}g 2019-12-20 09:42:41 -05:00
nick black
6a9d6fa122
add ncplane_printf_yx() 2019-12-20 04:12:30 -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
d6bcb3211f eagles level starts at lower-right 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
3cfe88ee0c ncscale_e enumeration for ncvisuals #168 2019-12-19 22:20:18 -05:00
nick black
94722c0f28
Merge branch 'master' of github.com:dankamongmen/notcurses 2019-12-18 11:06:21 -05:00
nick black
ddfd5219ed
notcurses_getc() needs return wchar_t #161 2019-12-18 11:06:16 -05:00
nick black
97ecbdb0e5
sigh, probably gotta kill DMCA lure 2019-12-18 05:31:29 -05:00
nick black
fea5ada5f5
add FINAL CUT shout-out, use ≤ in markdown 2019-12-18 05:02:02 -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
01ac18fb35
s/Open Source/free software/g 2019-12-16 21:41:07 -05:00
nick black
165170dd51 if the man prefers 'free software', use that term 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
8c40f6076b
link to other tui libraries worth their druthers 2019-12-16 02:00:33 -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
364db519bb
stop shifting style bits stupidly 2019-12-15 02:06:18 -05:00
nick black
bfda5a53d6
add CELL_SIMPLE_INITIALIZER to docs 2019-12-15 01:29:41 -05:00
nick black
4118500897
we lost mssr valéry 2019-12-14 18:44:04 -05:00
nick black
2dd2d84401
copy over panelreel documentation 2019-12-14 18:43:12 -05:00
nick black
26c575a262
spelling 2019-12-14 18:39:56 -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
582017a16a
more docing 2019-12-14 07:23:49 -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
46544bec0c
merge paras 2019-12-14 06:40:01 -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
e3dd36a1a4
link to release in history 2019-12-13 21:00:47 -05:00
nick black
3b987b4993
ncplane_box(): update documentation 2019-12-13 20:58:44 -05:00
nick black
12018f3096
document nl_langinfo() check 2019-12-13 20:53:18 -05:00
nick black
88163325fa
widecolor: proceed without keypress #135 2019-12-13 20:10:39 -05:00
nick black
7e24066816
note about bottommost, rightmost coordinate 2019-12-13 19:22:11 -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
c5acae4ef5
fbbytes stat 2019-12-13 17:14:15 -05:00
nick black
a9c21526a7
add history 2019-12-13 13:00:29 -05:00
nick black
340ddf9f76
use cell terminology throughout 2019-12-13 12:16:53 -05:00
nick black
b00099f1c6
README: remove API macro from documentation 2019-12-13 12:16:05 -05:00
nick black
cc6179ccab
spelling 2019-12-13 12:15:11 -05:00
nick black
e71fa57e54
add 'rgb' PoC, fix setlocale() mention 2019-12-12 08:13:14 -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
5735e5966a
add _yx-suffixed output forms #102 2019-12-12 06:38:16 -05:00
nick black
194b76a9d3
input: update comment, no longer driven through cell 2019-12-11 00:47:46 -05:00
nick black
7eafdd6772
fix up unit testing sanity 2019-12-10 06:59:35 -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
3a6551ab4d
uniblock-demo: scroll the blocks right-to-left #104 2019-12-08 16:48:58 -05:00
nick black
93231c26eb input: use SPUA-B for special keys #118 2019-12-08 15:32:57 -05:00
nick black
8afcd04446
sync cell/ncplane fg/bg API naming 2019-12-06 22:45:08 -05:00
nick black
80821ba0e5
readme: section on adapting NCURSES programs 2019-12-06 18:33:20 -05:00
nick black
0392aa34ea
notcurses: get el terminfo capability 2019-12-06 15:46:56 -05:00
nick black
774f8e5a23
summary: fix minima trackers 2019-12-05 02:01:49 -05:00
nick black
0d0eafa8cf
add multimedia/panelreels to README #21 2019-12-05 00:34:16 -05:00
nick black
f1ab657c39
update ncpanel documentation 2019-12-05 00:28:42 -05:00
nick black
93e586c58b
update input documentation 2019-12-05 00:26:33 -05:00
nick black
37b0e416c0 get everything prepped for reliable keyboard escapes #78 2019-12-04 23:46:24 -05:00
nick black
ae711b7e75 h/vline gradient unit tests #42 2019-12-04 04:50:26 -05:00
nick black
1b714e16d8 update docs for ncplane_box() #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
nick black
f7437d2e68
avast, scurvy dog 2019-12-02 10:39:48 -05:00
nick black
52c309093a update cell API 2019-12-01 15:29:59 -05:00
nick black
c2f377d599 ncplane_background()/ncplane_set_background() #69 2019-12-01 02:22:13 -05:00
nick black
b993360f53 add ncplane API 2019-12-01 02:22:13 -05:00
nick black
28ac1e7498 environment/emulator notes 2019-11-29 05:55:41 -05:00
nick black
4cc0ce037d read terminfo entries for keypad #78 2019-11-29 05:55:41 -05:00
nick black
6a5c21cacd demo: accept -f, open argument for renderfp 2019-11-29 05:55:41 -05:00
nick black
e391bfbb81
input: add pass_through_esc option, otherwise run smkx #78 2019-11-29 03:26:37 -05:00
nick black
8fe19262f4
document notcurses_getc() #8 2019-11-29 01:58:45 -05:00
nick black
b3a0b2ed6b
list ffmpeg deps 2019-11-28 22:34:55 -05:00
nick black
5f3a12bc63
pre-0.2.0 2019-11-28 22:32:49 -05:00
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
2019-11-28 22:08:26 -05:00
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
2019-11-27 10:43:03 -05:00
nick black
ee2e16736c
signal handlers for INT, QUIT, WINCH #27 2019-11-27 02:08:35 -05:00
nick black
e9256b1397 add libavformat-dev to debian deps #35 2019-11-26 20:23:40 -05:00
nick black
66b06e9d91 add libav 0.29+ to deps 2019-11-26 20:23:40 -05:00
nick black
e6a009ee3a
erase in griddemo #22 2019-11-25 02:22:15 -05:00
nick black
15b46fe1d3
add cell definition #21 2019-11-25 00:28:38 -05:00
nick black
08e9d86d07
ToC at top of README.md 2019-11-25 00:26:35 -05:00
nick black
0cf54ed100
document cell api #21 2019-11-25 00:24:55 -05:00
nick black
ec987c9c49
sync README to include 2019-11-24 21:43:44 -05:00
nick black
51d56195ce
stop claiming support for wide chars, utf-8 baybee 2019-11-23 16:09:37 -05:00
nick black
9b104de1ec
commit to unicode 12.1 extended grapheme clusters #14 2019-11-23 16:03:38 -05:00
nick black
3587663d5f
README.md: link syntax 2019-11-23 09:16:34 -05:00
nick black
162d377386
sound less jacked 2019-11-23 09:09:05 -05:00
nick black
6f2d9b627e
deambiguize pronoun 2019-11-23 09:06:54 -05:00
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
2019-11-23 09:05:32 -05:00
nick black
826ddbc7c7
hrmm 2019-11-22 02:30:59 -05:00
nick black
c0444bfb3d
yes 2019-11-22 02:15:09 -05:00
nick black
42e386f1e7
readme: introduce planes 2019-11-21 11:11:36 -05:00
nick black
94c67af64d
notcurses_version: add to README 2019-11-21 11:03:02 -05:00
nick black
4fb5c9db71
readme touches 2019-11-21 11:00:40 -05:00
nick black
2dffc5ae1e
document basic use 2019-11-21 10:56:08 -05:00
nick black
ba9a113de2
missing conjunction 2019-11-19 06:53:50 -05:00
nick black
908e9e120c
Don't require smcup/rmcup, and emit them only if supported #3 2019-11-18 12:16:26 -05:00
nick black
f88a26f55f
introduce notcurses_render() 2019-11-18 00:05:32 -05:00
nick black
4e84859141
some README intro words 2019-11-17 23:09:06 -05:00
nick black
70df86ba17
version string, notcurses_version() 2019-11-17 05:04:41 -05:00
Nick Black
635d7039d7
Initial commit 2019-11-16 21:38:25 -05:00