Commit Graph

423 Commits

Author SHA1 Message Date
nick black
edcb2ef3b9
index.html: add link to wiki 2020-06-05 06:00:21 -04:00
nick black
deda0ff681
mention notcurses_reader.3 in notcurses.3 2020-06-05 05:56:29 -04:00
Nick Black
de23139111
Open some whoopass on ncvisual rotation (#677)
Whip the ol' llama's ass (fix ncvisual rotation)

* notcurses: flush cursor change requests #673
* rotator: verify ncplane_rgba and ncblit_rgba
* ncblit: rename, accept ncblitter_e #674
* rotator: render from rgba
* rotator: get to rotation
* rotator: add a pi/4 turn at the end
* normal: reuse incoming plane for rendering #672
* rotator poc: rotate a fullplane gradient #672
* normal demo: place visual correctly
* rotator: verify ncplane_rgba and ncblit_rgba
* ncblit: rename, accept ncblitter_e #674
* rotator: render from rgba
* rotator: add a pi/4 turn at the end
* normal: reuse incoming plane for rendering #672
* rotator poc: rotate a fullplane gradient #672
* normal demo: place visual correctly
* rotator poc: throw some red into gradient
* rotator poc: done #662
* oiio: ncvisual_resize() needs set ibuf pointer #662
* normal: only need erase at top of loop
* visual poc: shorter delay
* normal demo: center rendered visual
* comment ncvisual_resize() call
* ncvisual_rotate: call ncvisual_details_seed()
* ffmpeg ncvisual: fix rotation #662
2020-06-04 22:47:38 -04:00
nick black
c0f820db94
notcurses-view: select blitter with numbers #671 2020-06-03 16:32:27 -04:00
nick black
2b31d6ce4d
ncvisual/ncreel: update some documentation 2020-06-03 12:22:46 -04:00
nick black
d41c6d3627
notcurses-ncreel: add </>/* operators 2020-06-03 08:58:48 -04:00
nick black
5ff84cb9dd
add 'a'llglyphs demo #668 2020-06-02 21:42:52 -04:00
nick black
3a4dc02d0f
freebsd release notes 2020-06-01 17:26:56 -04:00
nick black
354ece5826
v1.4.4.1 2020-06-01 16:18:56 -04:00
nick black
c8e7ad641c
not to self regarding pbuilder 2020-06-01 16:07:00 -04:00
nick black
230f3af8e1
v1.4.4 2020-06-01 15:32:23 -04:00
nick black
2d3fef115e ncfadectx_setup(): remove timespec param #659 2020-06-01 04:44:02 -04:00
nick black
e879bf8f93
let outro demo run on no-multimedia builds 2020-05-31 23:15:43 -04:00
nick black
0331ae4c4c
introduce NCVISUAL_OPTION_BLEND #652 2020-05-29 14:53:53 -04:00
nick black
33318254b2
absorb first ncvisual_decode into ncvisual_from_file() #655 2020-05-29 08:39:11 -04:00
nick black
899adf873d
ncvisual.3: update man page 2020-05-29 01:47:53 -04:00
nick black
f47bde1c4e
Graceful fallback among blitters #637
If we're in ASCII mode, no blitter except for NCBLIT_1x1 is going to
work. Whenever NCBLIT_DEFAULT is provided, select NCBLIT_1x1 if we're
in ASCII mode. Add NCVISUAL_OPTIONS_MAYDEGRADE and
NCPLOT_OPTIONS_MAYDEGRADE. Both serve to allow smooth degradation when a
blitter other than NCBLIT_DEFAULT has been provided. Closes #637.

Make calc_gradient_cell() static inline so our templated ncppplot
implementation can use it (ugh). When using NCBLIT_1x1 for plots in
ASCII mode, use space rather than full block, and invert colors.

Use NCBLIT_DEFAULT in the demo for the FPS plot.
2020-05-29 01:24:34 -04:00
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.
2020-05-28 21:16:58 -04:00
nick black
dbc20bd5c0
add man page for ncmetric(3) #631 2020-05-24 04:48:17 -04:00
nick black
c08c9b7f7f
v1.4.3 2020-05-22 09:18:39 -04:00
nick black
07e894c40c
v1.4.2.4 2020-05-20 15:38:23 -04:00
nick black
37a4114f42
O(1) z-axis moves #623
Replace the singly-linked z-axis with a doubly-linked list,
and reimplement all z-axis moves as O(1) functions.
Eliminate ncplane_move_{above/below}_unsafe(), as there are no
longer unsafe moves.
2020-05-20 15:32:27 -04:00
nick black
08190060e8 notcurses.3: update link to unicode chart 2020-05-19 02:02:02 -04:00
nick black
32d3ae91c8
v1.4.2.3 2020-05-17 09:01:53 -04:00
nick black
e132c6bb24
v1.4.2.2 2020-05-17 08:11:48 -04:00
nick black
49fb03655e
v1.4.2.1 2020-05-17 07:59:04 -04:00
nick black
6edc6f098f
streamline unit test common initialization 2020-05-17 07:57:21 -04:00
nick black
38e67abd9d
v1.4.2 2020-05-17 07:29:10 -04:00
nick black
7d6434c63c
We're in FreeBSD! 2020-05-11 08:15:58 -04:00
nick black
7b4ebed07d cache utf8 encoding check #325 2020-05-11 05:59:55 -04:00
nick black
8b5b44cf36
v1.4.1 2020-05-10 22:21:48 -04:00
nick black
6a22040584
v1.4.0 2020-05-10 21:36:48 -04:00
nick black
a440382fb5 demo: use NCPLOT_OPTIONS_EXPOENTIALD #470 2020-05-09 13:35:20 -04:00
nick black
fbed12cd80
ncreel_options: add flag field #590 2020-05-09 09:19:34 -04:00
nick black
66bafd59b3
subproc, fdplane, plot, selector, mselector: flag words #590 2020-05-09 09:06:06 -04:00
nick black
9446840b97
ncmenu: move to flag field #590 2020-05-09 08:41:03 -04:00
nick black
fec423264f
selector: undo switch to notcurses from ncplane 2020-05-09 07:51:23 -04:00
nick black
d89d8c52e9
notcurses_options: add flags field 2020-05-09 04:45:51 -04:00
nick black
7cb1558d21 FreeBSD: add LIB_DEPENDS for graphics/qr-code-generator #572 2020-05-09 03:11:02 -04:00
nick black
95ba340fba
ncplane_erase: fix bug in basecell preservation 2020-05-09 01:25:00 -04:00
nick black
d2c968b948
notcurses_init(): interpret NULL as /dev/tty #571 2020-05-08 22:33:39 -04:00
nick black
a859a3d652 notcurses_multiselector(3): fix up _selected 2020-05-08 21:42:04 -04:00
nick black
16376f872c fix notcurses_ncplane(3) -> notcurses_plane(3) 2020-05-08 21:42:04 -04:00
nick black
26db8a66b7 ncplane_set_attr()/ncplane_set_channels() 2020-05-08 21:42:04 -04:00
nick black
f0357ef6cb ncplane_contents(): declarations #582 2020-05-08 21:42:04 -04:00
nick black
48de25821c ncreader man page #403 2020-05-08 21:42:04 -04:00
nick black
98b8e167cf ncreader man page #403 2020-05-08 21:42:04 -04:00
nick black
4819c0e1c3 selector/multiselect: accept notcurses 2020-05-08 21:42:04 -04:00
nick black
dbdaebb3a4
notcurses-view: verify Notcurses::can_open() 2020-05-07 09:04:50 -04:00
nick black
e2b610506f
v1.3.4 2020-05-07 01:38:35 -04:00
nick black
67048bf5fa
release-checklist: add scan-build invocation 2020-05-07 00:53:23 -04:00
nick black
7337280e17
ncplane_at_yx(): const ncplane argument 2020-05-06 22:21:22 -04:00
nick black
5bdfc0183f
ncvisual_from_plane() #559 2020-05-06 21:40:24 -04:00
nick black
90dacae213
python/docs: declare ncvisual_from_plane() 2020-05-06 20:10:01 -04:00
nick black
94fcada67c
ncvisual_rotate: unify _cw/_ccw, take radians 2020-05-06 05:49:22 -04:00
nick black
f63325db60 Lots of ncvisual work
Unify ffmpeg/oiio/null implementations, where possible. This effectively
required placing all three in the same file, which meant they're all now
C++. Update FFmpeg implemenation to be C++-usable. Implement
ncvisual_rotate_cw() and ncvisual_rotate_ccw() #515. Move most of tetris
over to Visual from Plane #558. Add bgra_to_rgba(), necessary for
creating ncvisual from BGRA memory. Implement ncvisual_from_rgba()
and ncvisual_from_bgra() #557. Add unit tests on ncvisual rotation.
2020-05-06 01:02:46 -04:00
nick black
39548acc3a rename ncvisual_open_plane->ncvisual_from_file() #560 2020-05-06 01:02:46 -04:00
nick black
2ec3a8a5ca visual.3: add ncvisual_subtitle() to man page 2020-05-06 01:02:46 -04:00
nick black
0135a6b54d rotation: ncvisual, not ncplane #515 2020-05-06 01:02:46 -04:00
nick black
c0b2a64102
implement+doc notcurses_inputready_fd() #513 2020-05-02 12:56:39 -04:00
nick black
c8322e6cb1
ncfdplane: on non-following planes, break out on 0 read 2020-05-02 11:57:38 -04:00
nick black
456c54e9bd
fds.3: detail usage of ncsubproc_destroy() #552 2020-05-02 03:47:18 -04:00
nick black
e156bd42be
plot: match delete, not free, with new 2020-04-29 05:32:08 -04:00
nick black
84107c547d
view: support -m argument for margins #551 2020-04-29 03:24:11 -04:00
nick black
6e8a0bebae
view: support -k to inhibit alternate screen #551 2020-04-29 03:08:21 -04:00
nick black
288b841021
notcurses_fds.3 man page #546 2020-04-27 19:11:11 -04:00
nick black
559a45326c
notcurses_fds.3 man page #546 2020-04-27 19:11:00 -04:00
nick black
dcf262207b
notcurses-tetris.1: write up keys 2020-04-27 00:36:54 -04:00
nick black
d4f71405d2
release-doc: remove unnecessary directive 2020-04-26 22:46:43 -04:00
nick black
bfc243304c
document GBP steps for release 2020-04-26 21:38:32 -04:00
nick black
05753bd91a
v1.3.3 2020-04-26 21:25:23 -04:00
nick black
7d1e3c77c8 oiio: image scaling #535, subimages for video #536 2020-04-26 18:33:52 -04:00
nick black
fdf8c4544e
fallin: move falling planes to top of z-axis 2020-04-26 08:29:22 -04:00
nick black
ffbcb069a6
man pages: s/FFmpeg/multimedia/g 2020-04-25 15:54:09 -04:00
Nick Black
9a075ae5d0
Support image decoding with OpenImageIO #453 (#534)
* fedora: dep on OpenImageIO, and use it
* fedora: dep on libqrcodegen-devel
* fedora: BuildRequires OpenEXR-devel
* tight check on USE_MULTIMEDIA
* CMake: enable notcurses-view for ffmpeg OR oiio
* notcurses-view: don't reach into libav
* oiio: ncvisual_render() #453
* oiio: need our own properly-offset ncvisual_plane()
* `visual` poc: accept optional command line argument
* oiio: work for 3-channel images #453
* oiio: destroy ncvisual's plane if we own it #453
* notcurses_visual.3: s/FFmpeg/multimedia/g
2020-04-25 15:52:23 -04:00
nick black
78da4e67ad man: notcurses_error fix up syntax 2020-04-24 04:17:56 -04:00
nick black
cc3debf259 man: separate out ncplot functions 2020-04-24 04:17:56 -04:00
nick black
86a95eb4ea man: update ncvisual_decode() 2020-04-24 04:17:56 -04:00
nick black
69ef83a777 man pages: update ncvisual_decode 2020-04-24 04:17:56 -04:00
nick black
a28a4f281e notcurses_error(3) man page #532 2020-04-24 04:17:56 -04:00
Nick Black
0e73b9d3d5
Floating-point ncplot, genericize ncplot (#531)
* compile ncplot as c++ generic #446
* add floating-point plots #446
2020-04-23 03:52:07 -04:00
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
2020-04-20 23:26:41 -04:00
nick black
accda3416e
notcurses.3: we also accept ASCII 2020-04-19 18:50:28 -04:00
nick black
7a0f4677c3
man pages: update notcurses.h to notcurses/notcurses.h 2020-04-19 18:50:28 -04:00
nick black
38cca493e7
man pages: terminals don't honor COLORTERM, they honor escapes 2020-04-19 17:12:13 -04:00
nick black
0aa5bd850a
update release process for gbp 2020-04-19 15:55:43 -04:00
nick black
1dad2c6b50
v1.3.2 2020-04-19 02:24:03 -04:00
nick black
305b517191
v1.3.1 2020-04-18 00:36:38 -04:00
nick black
e00ef4aca9
prep for 1.3.1 2020-04-18 00:35:15 -04:00
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
2020-04-18 00:09:14 -04:00
nick black
957e09671e debian: repack DFSG tarball using uscan #496 2020-04-17 21:14:12 -04:00
nick black
327c9cba78 Scrolling! all unit tests work #443 2020-04-15 11:37:57 -04:00
nick black
062caf0dfd Doxygen: use recommended logo size 2020-04-15 11:37:57 -04:00
nick black
86e225dc4c prep for 1.3.0 #460 2020-04-11 22:00:34 -04:00
nick black
24a9343b0b
prep for 1.2.9 2020-04-11 12:39:54 -04:00
nick black
69b716f7f8 prep for 1.2.8 2020-04-10 16:19:41 -04:00
nick black
3d9d8c0fe1
yank colloquy man page, since it's been extracted 2020-04-10 13:07:39 -04:00
nick black
89809d5b59 prep for 1.2.7 2020-04-09 20:21:33 -04:00
nick black
b04a37c433
plots: always start from the right #457 2020-04-08 21:26:15 -04:00
nick black
bdfcdf4086
get pydemo working again #459 2020-04-08 14:37:10 -04:00
nick black
6d366380ed prep for 1.2.6 2020-04-08 10:10:47 -04:00
nick black
c717673458 drop keyplot man page/cmake #455 2020-04-08 09:39:10 -04:00
nick black
2c2da61c72
ncdirect: add relative move functions #419 2020-04-08 09:07:49 -04:00
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
2020-04-08 05:39:41 -04:00
nick black
37b5564722
man page for colloquy 2020-04-06 05:19:22 -04:00
nick black
77dd998b05
ncplot uses exclusively non-negative samples #447 2020-04-06 02:39:56 -04:00
nick black
5c44416426
export ncplane_putstr_yx() as static inline 2020-04-06 01:15:20 -04:00
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
3d75f67465
changelog: fix up formatting 2020-04-05 20:13:37 -04:00
nick black
df3dc6b5bc
prep for 1.2.5 2020-04-04 18:49:16 -04:00
nick black
4917603478
ncplot: swap NCPLOT_2x1 and NCPLOT_1x1x4 2020-04-04 13:00:27 -04:00
nick black
2a7ccffec6 ncplot: add labelaxisd, use it in keyplot #438 2020-04-04 12:32:19 -04:00
nick black
c0f8d9b444
eliminate detectdomain, infer it from maxy==miny #439 2020-04-04 08:56:31 -04:00
nick black
68b4ba1706 plots: implement remaining vertical grid types #136 2020-04-03 08:27:08 -04:00
nick black
5bccf6b446 ncplot: implement x windowing #430 2020-04-03 05:51:02 -04:00
nick black
89a3c32615 add man page for notcurses-keyplot #430 2020-04-03 05:51:02 -04:00
nick black
4926186b5a ncplot: check input parameters for validity #430 2020-04-03 05:51:02 -04:00
nick black
a2170a4291 ncplot: add_sample(), set_sample() #430 2020-04-03 05:51:02 -04:00
nick black
5aedb3491d ncplot_plane(), ncplot_destroy() 2020-04-03 05:51:02 -04:00
nick black
69d6240741 ncplot_destroy, ncplot(3) man page 2020-04-03 05:51:02 -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
013e445209
add notcurses_multiselector(3) to notcurses(3) 2020-03-25 07:38:35 -04:00
Nick Black
f9c54761f5
Basic mandelbrot for normal demo #145 (#424)
normal: working mandelbrot, very basic #145
2020-03-25 07:19:56 -04:00
nick black
ae1421db15
ncvisual_render() API change/documentation #422
ncvisual_render() now returns the number of cells emitted
rather than just 0/-1. -1 is still returned on failure.
Rather than 0 for length meaning "all possible length", it
now means 0, and -1 means "all possible length". All demos,
tests, and PoCs have been updated. #422
2020-03-24 18:43:10 -04:00
nick black
7c6b655483 v1.2.4 2020-03-24 16:25:47 -04:00
nick black
3fff41ffa2 Doxygen: update INPUT for include hierarchy 2020-03-22 18:06:43 -04:00
Nick Black
52bdbc6724
ncplane_translate() accept NULL dest as standard plane #408 (#411)
* tetris man page
* tetris basic skeleton
* tetris: Ticker()
* README: fix up some obsolete terminology
* tetris: draw the game board
* tetris: add NewPiece()
* tetris: draw tetriminos
* tetris: check for stuck piece, move it down
* Accept NULL dst in ncplane_translate() #408
2020-03-22 17:33:08 -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
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
be089747a7 ncmultiselector_selected() #322 2020-03-09 15:31:16 -04:00
nick black
2dd97de4e4 multiselector man page 2020-03-09 15:31:16 -04:00
nick black
a9c64a8c8b yummy covid-19 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
ac683e21d2
v1.2.3 2020-03-07 18:53:36 -05: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
0dc5456035
Emit JSON on -J arg to demo #387
Accept -J as a parameter requiring an option to notcurses-demo(1).
Update the man page and usage message to reflect this. Open the
specified file for binary writing with truncation at option parsing
time; fail out if we can't open it. At the end of the demo, write
the results out as JSON, using full precision for all values #387.
2020-02-27 05:17:07 -05:00
nick black
a09bdc4ade
Add seqnum field to ncinput #374 2020-02-24 18:11:39 -05:00
nick black
ddd33fea31
ncdirect_move() doc, readme, python, c++ #382 2020-02-24 16:56:51 -05:00
nick black
e72111ac8b
v1.2.2 2020-02-24 00:03:00 -05:00
nick black
773b85e81e poc/menu: kill brown-bagger, add backgrounds #383 2020-02-23 23:57:27 -05:00
nick black
9b0603bb32
Implement + test ncplane_mouseevent_p() #305 2020-02-23 03:50:17 -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