Commit Graph

502 Commits (master)

Author SHA1 Message Date
nick black 0920675db1
there are now three ways to hide a plane, sigh 4 years ago
nick black 45a7458553
grotesque 4 years ago
nick black 520ce356b0
add 2.1.0 to history 4 years ago
nick black c8378e62ff
README: update video link 4 years ago
nick black b9ae0eee8c
readme: note that some terminals draw block chars directly 4 years ago
nick black f3688f44fb
CMake: add demo target 4 years ago
nick black f6a5aebf71
link to ncurses/libunistring in readme 4 years ago
nick black 93fef72da8 mention ncls in README.md 4 years ago
nick black 1f40b0728e link to 2.0 hype video 4 years ago
nick black 48efdeb84f tighten up link to minidebconf 4 years ago
nick black d5797d84d5 update data model diagram, link to debminiconf talk in history 4 years ago
Érico Nogueira Rolim 067b35fe9d README: fix dpkg command. 4 years ago
nick black 27c58a0284
add crates.io crate 4 years ago
nick black a5b6ce135d
README: list demo for example code 4 years ago
nick black 1a3bf4132e sexblitter: eliminate use of uninitialized lowestcur in collect_mindiffs() 4 years ago
nick black 40ca9d3230 add pypi badge 4 years ago
nick black 356aad8eff c and c++ badges 4 years ago
nick black 50a8981d0d readme: align build badge 4 years ago
nick black b56f5989bd some shields 4 years ago
nick black 6415775326
what's up with mosh? 4 years ago
nick black 22b1169f49
colors: s/always/usually/g 4 years ago
nick black 69a32c7643
notcurses-planereels is not installed, don't list it 4 years ago
nick black 3fe707d32f
document installation of python/rust wrappers 4 years ago
nick black 1df48e47fc
remove doubled colons 4 years ago
nick black c31a78a244
notcurses-view: move to a complex marshal 4 years ago
nick black c1c187f247
losing my goddamned mind 4 years ago
nick black a67819a4a2
README: add links to OTHERS.md and TERMS.md 4 years ago
nick black f880f8e3cf
'a point' idiot 4 years ago
nick black 7186c2590d
clarify LANG in FAQs 4 years ago
nick black 9d917d3243
faq faq faq 4 years ago
nick black 7aeb9cdf2d
use boldface in FAQs for delimiting 4 years ago
nick black 84b55bf61a
tighten up FAQs 4 years ago
nick black 80ca70159c
fuck java forever 4 years ago
nick black db0dc15088
mention that API is stable since 2.0 4 years ago
nick black ddb8198414
terminate sentence with period 4 years ago
nick black 33340434c0
readme stylings 4 years ago
nick black f3ddc48002
drop distro paragraph, add heads-up about src/poc 4 years ago
nick black a44090a7f7
s/notcurses/Notcurses/g 4 years ago
nick black f39de36b4c
two new FAQs 4 years ago
nick black 8cbc9e1b3b
add 1.7.0 to history section 4 years ago
nick black aa7acc0e7a
quick wording change to FAQs 4 years ago
nick black 4d7941f1b9
CMake: add USE_POC to control building poc binaries 4 years ago
nick black f8854f84e8
demo summary: scale TheoFPS div by 1000 #928 4 years ago
nick black 2add9bacd6 wisdom? 4 years ago
nick black 99d90a4ecf
charset vs charencoding terminology 4 years ago
nick black aebf2cdb9c
CMake: restore 3.14.0+ requirements 4 years ago
nick black 45e5d95774
ugh 4 years ago
Nick Black 11d6a4eb89
New reel layout algorithm #818 (#870)
New reel layout algorithm based on trimming and sifting. Fixes the original issue of #818, though I'm not marking that bug fixed until I've resolved the little issues remaining with this one.
Back off CMake version dependency, see if we can get by with 3.11.4 for EPEL8 #851
Simplify tablet drawing tremendously by separating tablet border and data planes. Callbacks no longer need worry about the borders; they can simply fill the plane they're handed. #833
Improve notcurses_debug() a bit
Add ncplane_new_named() and friends to expose plane naming to the user.
Add internal ncplane_genocide() to kill a plane and all its bound descendents
New industrial-strength ncreel unit testing
notcurses-ncreel now accepts -ln for log level n
Add ncplane_parent() and ncplane_parent_const()
4 years ago
nick black f5f9808d80 install notcurses-pydemo.1 as part of python #836 4 years ago
nick black 604747c8f2 notcurses_puttext: use libunistring for wordbreaking #772 4 years ago
nick black 42b0be7f3a
Run PoC tests even without doctest #811
Add back the USE_DOCTEST CMake option, but make it conditional
upon BUILD_TESTING. If BUILD_TESTING is provided without
USE_DOCTEST, we build and run the PoC tests, just not
notcurses-tester. If neither is defined, no tests are available
(the PoC binaries are still built). If both are defined, build
the PoCs plus notcurses-tester, and run them all in make test.
4 years ago
nick black 62f6896715
CMake: remove python stuff; it'll be built externally 4 years ago
nick black f5a84620d2
CMake: remove rust stuff; it's built externally 4 years ago
nick black 0ca1716cbd
README: purge alignment div, apache 2.0 badge 4 years ago
Nick Black 6685ff2767
right-align other badges alongside ToC 4 years ago
nick black 573a248da4
add Repology badge 4 years ago
nick black 8afd25fef6
FAQ entry about screen #757 4 years ago
nick black 8731b1191d
FAQ wording 4 years ago
nick black 3ebb5b0e4c
add 1.6.0 / Alpine to HISTORY 4 years ago
nick black ef9e50be33 beef up 'what it is' a little; get our swag on 4 years ago
nick black 27c150b855 reorder introduction 4 years ago
nick black 32b1f3937c
add FAQ entry about xterm's eightBitInput resource #735 4 years ago
nick black 6ad8ef1dd3
add FAQ about TERM defintions 4 years ago
nick black c5b517c448
note requirement of musl 1.20+ #733 4 years ago
nick black 3df44a05f7 Add link to 'glyph hell' 4 years ago
nick black ffab8b5294 lay groundwork for ncneofetch #550 4 years ago
nick black 463f5acd6a CMake: unset cached result of qrcodegen header check #711 4 years ago
nick black d3c3905996 FAQ entry about cmake+libqrcodegen-dev #711 4 years ago
nick black ba31c575ba
README: discuss LANG and TERM 4 years ago
nick black 633ef1f76c
add beginnings of yield demo 4 years ago
nick black 84ae45ef39
remove all libsixel crap #200 4 years ago
nick black 89ffb6658e
CMake: improvements to testing usability
Replace USE_TESTS with BUILD_TESTING variable already exported by CTest.
Use the CMake 3.17 CMAKE_CTEST_ARGUMENTS to pass "-V" to ctest. #651
4 years ago
Nick Black ebcba82d4b
Fully general ncvisual layer (#647)
This represents an essentially complete rewrite of ncvisual and associated code. It had two major goals:

Improve the ncvisual API based off lessons learned, pursuant to the upcoming API freeze. In particular, I wanted to:

decouple ncvisuals from ncplanes. It should be possible to render a ncvisual to multiple planes, with different scaling each time. It should be possible to create an ncvisual without a plane, etc.
normalize the various ways of constructing an ncvisual -- file, memory, plane, etc.
Support multiple blitters, from 7-bit ASCII to Sixel. This required writing the blitters in several cases, and they're not yet in their final implementations (but the API is fine)
I have not yet unified Plots and Visuals, and might not, given that the Plot code works fine. We could at this point implement Plots in terms of Visuals, though -- the blitter backend range has been unified. Sixel is not yet implemented, though it is listed.

There is a new POC tool, blitter. It renders its arguments using all possible blitter+scaling combinations. Another new POC, resize, displays its argument, then resizes it to the screen size and displays that, explicitly making use of ncvisual_resize() rather than a scaling parameter to ncvisual_render().

This also eliminates some memory leaks and bugs we were seeing in trunk, and brings in Sixel scaffolding.

The C++ wrapper will also need patching back up; I cut most of it down while wrestling with this crap, urk.

Closes #638, #562, and #622.
4 years ago
nick black f425944bba
FreeBSD: move back to getrandom(); read_random() is kernelspace 4 years ago
nick black fc998510a0
CMake: only install static libs if built #625 4 years ago
nick black a288c2e654
document all build options 4 years ago
nick black 9ccbc99e9e
now in fedora core! 4 years ago
nick black 4b642bc68d
require oiio 2.15.0+ to get infinite loop fix #547 4 years ago
nick black 5081ed048c
do an OIIO rotate() #559 4 years ago
nick black 084bb721fa
we're now part of freebsd! 4 years ago
nick black 759dfbf499
add 1.4.0 to README.md 4 years ago
nick black 98eddd86a9
README: link to hype videos 4 years ago
nick black a2888f2c75 FAQ entry about 10-bit color 4 years ago
nick black d54e2c3957
README: point to debian unstable package 4 years ago
nick black 018e88f53b
README: don't undersell it 4 years ago
nick black 7d1e3c77c8 oiio: image scaling #535, subimages for video #536 4 years ago
nick black 0a38cd6ff5
move usage ToC to USAGE.md 4 years ago
nick black d40c46a7aa
README: fix up syntax in header list 4 years ago
nick black 5f42e06383 oiio: open and close image #453 4 years ago
nick black 6045c54189 move usage stuff into USAGE.md 4 years ago
nick black 11c5aacb08
ncsubproc: move to big bad clone3() #310 4 years ago
nick black 04f90fa1ea
ncsubproc: launch processes, make pipes
link to LWN article in History section of README.md.
4 years ago
Nick Black fe8034b5e0
ncfdplane, fileroller PoC, ncfdplane unit tests, qrcodes #24 #514 (#524)
* first draft of ncsubproc spec
* qrcode first draft #24
* demo: add qrcode demo skeleton, entries #24
* qrcode demo #24
* fedora python build changes from @dcantrell
* ncplane_qrcode() works #24
* add some flash to the qrcode demo #24
* drone: use newest builders
* fix up rgb PoC
* drop jungle demo to 100Hz target
* add fd.c
* ncfd skeletons
* more ncfdplane #514
* ncfdp i/o loop
* ncfp: improve uinit test, write core
* firm up ncfdplane #514
* fileroller PoC #514
* ncplane: allow '\n' in stream when scrolling #523
4 years ago
nick black 790a953c82
list libqrcodegen in README 4 years ago
nick black 40f36a9fb4
accepted into Debian, like a boss 4 years ago
Nick Black 1c7796a2b0
ncdirect_cursor_yx, ncdirect_cursor_pop, ncdirect_cursor_push #401 (#492)
* ncdirect_cursor_{push, pop, yx} declarations #401
* direct PoC: invoke ncdirect_cursor_yx() #401
* direct PoC: move to top of screen #401
* OTHERS.md: mention blessings
* ncdirect_cursor_yx working #401
* CHANGELOG: mention ncdirect_cursor_*() #401
4 years ago
Nick Black c6a9997554
Normalize ncplane_at_* / ncplane_set_base() (#479)
* ncplane_at_* and ncplane_at_cursor_*

We had notcurses_at_yx() expanding into three distinct parts of
the cell structure, and ncplane_at_yx() / ncplane_at_cursor()
writing directly to a cell. It was annoying to remember which
was which. The latter two now have a signature matching
notcurses_at_yx(), while the old functionality has been moved
to ncplane_at_yx_cell() and ncplane_at_cursor_yx(). #476
4 years ago
nick black 957e09671e debian: repack DFSG tarball using uscan #496 4 years ago
nick black 6cbca20d0a
add 1.3.0 release to README 4 years ago
nick black 9a202b558e
remove colloquy from specfile, README 4 years ago
nick black 4c9a756630
drop notcurses-keyplot from README 4 years ago
nick black 2c2da61c72
ncdirect: add relative move functions #419 4 years ago
Nick Black c2a645e9af
Rust wrapper work (#454)
* packaging: s/libtinfo/Terminfo/g
* rust: add stddim_yx()
* rust: check for valid init in unit tests
* rust: serialize up tests
* constify notcurses_term_dim_yx()
* rust: add dim wrappers
* remove notcurses_resize() from public API #367
* call notcurses_resize() from notcurses_refresh() #367
4 years ago
nick black 5c44416426
export ncplane_putstr_yx() as static inline 4 years ago
nick black 4a6ab358ba inline ncplane_putsimple_yx() 4 years ago
nick black 32c590ea64 document details of scrolling #323 4 years ago
nick black fcd7e19e4c Add ncplane_set_scrolling() #323 4 years ago
nick black 7cf3bad556
note that ANSI_X3.4-1968 is also allowed 4 years ago
nick black 459b1029af README: add notcurses-keyplot to app list 4 years ago
nick black af478ccf95
README: book has been published, link it =] 4 years ago
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.
4 years ago
nick black 8651486ad7
Don't say DirectColor when TrueColor is meant 4 years ago
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.
4 years ago
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.
4 years ago
nick black ff71eda6a1
reels are a cylinder, not a torus 4 years ago
nick black ee754ed241
Tetris: simplify MoveDown(), don't be stupid 4 years ago
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
4 years ago
nick black 060c0c2a47 README: WINDOW->plane in reel docs 4 years ago
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.
4 years ago
nick black 6f9fdc115a published next month! :D 4 years ago
nick black ba90c70a47
ncplane_cursor_yx() takes const first argument 4 years ago
nick black db30bcf0d2
document new ncdirect functions for cursor #402 4 years ago
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
4 years ago
nick black 638be8feb7 multiselector options/items #322 4 years ago
nick black eead4c1414
notcurses_highgradient() added #398 4 years ago
nick black 333f7c1192
define ncplane_rotate_cw/ccw() 4 years ago
nick black afe724ee1d
docs: update for ncplane_translate_abs() 4 years ago
nick black bb579d0d05
notcurses_directmode()->ncdirect_init() 4 years ago
nick black c6f27f1bee
notcurses_resize() update docs #367 4 years ago
nick black a39efb1d6d
move selector, menu documentation to book 4 years ago
nick black fce0d9d88d
README: send multimedia to book 4 years ago
nick black 13beb9703f
move some README content to the book 4 years ago
nick black 4fb8500631
README: add link to mailing list 4 years ago
nick black a09bdc4ade
Add seqnum field to ncinput #374 4 years ago
nick black a626178b16
ncdirect: cursor movement / geom detection #382 4 years ago
nick black 9b0603bb32
Implement + test ncplane_mouseevent_p() #305 4 years ago
Nick Black 745e742a12
Fix gradient engine #368 (#372)
Simplify and correct the gradient engine, resolving all test breakage.
4 years ago
nick black 5e38da9ea3
implement ncplane_stain() #347 4 years ago
nick black 002e8be574
implement ncplane_format() #347 4 years ago
nick black 2780734efd
add ncplane_translate() 4 years ago
nick black f9d98dd05c
notcurses_stdplane_dimyx() #365 4 years ago
nick black 35d850f008
Implement + test ncplane_putegc_stainable() #352 4 years ago
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
4 years ago
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
4 years ago
Jakub Wilk f08d51c5e7 fix typos 4 years ago
nick black 3734262a52
README: link to Doxygen output 4 years ago
nick black d8fc0da91d
README: add link to guidebook 4 years ago
nick black 111a44fde5
update HISTORY with 1.2.0 release 4 years ago
nick black 438ee1257b
remove doctest, rely on system 4 years ago
nick black c6520ab84c add notcurses_drop_planes, use from demo #346 4 years ago
nick black ab9cbf82dc drop all images from README.md 4 years ago
nick black 6e97501ef7 add menu example to README 4 years ago
nick black 43bf0874d7 trim down NCKEY repetitions from README 4 years ago
nick black 643c1f4ed4 drop 0.4.0-sheet.png from README.md 4 years ago
nick black 8ecb4ba6a8 declare gradient functions #340 4 years ago
nick black 124004c87c add nplane_polyfill_yx() #340 4 years ago
nick black ce3e5d112e add ncdirect_clear() #343 4 years ago
nick black 6d629025e3 add ncdirect_fg_default() and ncdirect_bg_default() 4 years ago
nick black bfc28b0071 comment up ncdirect a bit better 4 years ago
nick black 9fc53e811f
ncplane_perimeter() plus unit test 4 years ago
nick black d8c42d4d1e
ncmenu_selected() fills in an ncinput #333 4 years ago
nick black 6b01d51cc1 add Robert Edmonds to THANKS 4 years ago
nick black b0c72607c4
ncmenu_offer_input(), use it in demo/pocmenu #333 4 years ago
nick black 7d1c977ba8
comment for nctablet_userptr() 4 years ago
nick black aacec297b2
ncmenu: declare ncmenu_offer_input() 4 years ago
nick black 74b9690cf3
ncmenu: remove dumb restrictions/special casing 4 years ago
nick black 1ed6000193 ncstats: add plane count, fix fbbytes accounting 4 years ago
nick black 62488eaf10
blit->ncblit #324 4 years ago
nick black 89f516dcaa
tablet->nctablet, add ncreel to python #324 4 years ago
nick black c519c95fff
panelreel -> ncreel #324 4 years ago
nick black b284901d18
prep for 1.1.6 4 years ago
nick black 00f7973aea
remove obsoleted README line #321 4 years ago
nick black bb7b92ea4a
ncdirect_styles_*() declarations #321 4 years ago
nick black 443deee7a3
README: update rendering algorithm description #289 4 years ago
nick black 5cd3a4c41d
ncdirect_dim_y()/x() 4 years ago
nick black 2a9f3c5ab3
ncmenu_selected(), update docs #179 4 years ago
nick black 4d613217b3
ncmenu: only allow one at a time 4 years ago
nick black 10a269c963
ncmenu: reject double menu 4 years ago
nick black 4c8adb0072
mention available in packages in README.md 4 years ago
nick black fdc541c6e5 copy over menu elements #179 4 years ago
nick black 54c57b3487 s/CELL_STYLE/NCSTYLE/ throughout 4 years ago
nick black 8984422f1e basics of menu #179 4 years ago
nick black 6fde6e66b7 markdown syntax fixen 4 years ago
nick black 6e642f1749 more menu work #179 4 years ago
nick black 25ce448889
rgba_blit()/bgrx_blit() #311 4 years ago
nick black c1664170fd
selector: bgchannels only inside the body #302 4 years ago
nick black 5982707f9e
add mbswidth() function, unit tests, docs 4 years ago
nick black 85f042c644
add selector to README #302 4 years ago
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.
4 years ago
nick black 25dde8c889
FAQ entry about hiding planes 4 years ago
nick black c04a68896c
README: add FAQ entry about c++ scopes 4 years ago
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.
4 years ago
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.
4 years ago
nick black 4f719b5405
top-level credit to @grendello for c++ wrappers #212 4 years ago
nick black 507c3e1d00
expunge wayward fragment of comment 4 years ago
nick black a977b0de30
add 1.1.0 to the books 4 years ago
nick black 6e92492117
docs, python: add notcurses_canchangecolor() 5 years ago
nick black b7bc693ef7
i'm WarMECH, bitch 5 years ago
nick black 004f5ca1ea
Note copyright of Mark Ferrari for jungle demo 5 years ago
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
5 years ago