Commit Graph

252 Commits

Author SHA1 Message Date
nick black
9e28e14001
move enforce_utf8() into main 2020-04-18 03:00:25 -04:00
nick black
0a6f5d1a9f
enforce_utf8() for wide tests, duh 2020-04-18 01:59:21 -04:00
nick black
11600b6820
ensure UTF8 for metric tests 2020-04-18 01:39:34 -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
d274af34b9 ncplot: define 2x2 and 4x2 sets #461 2020-04-16 11:41:20 -04:00
nick black
355ea6d3d7
Allow EGCpools up to 1GB #425 2020-04-15 23:49:10 -04:00
nick black
a4e1d68786
Add ExhaustPool unit test #482 2020-04-15 16:36:17 -04:00
nick black
327c9cba78 Scrolling! all unit tests work #443 2020-04-15 11:37:57 -04:00
nick black
b385feef8f zero out newly-scrolled lines #443 2020-04-15 11:37:57 -04:00
nick black
646bcf3db2 finish out ScrollingOffBottom test #443 2020-04-15 11:37:57 -04:00
nick black
40fd887012 New unit test for scrolling ScrollingOffBottom #443 2020-04-15 11:37:57 -04:00
nick black
ad9828e808 add ScrollingBoxen unit test 2020-04-15 11:37:57 -04:00
nick black
d98f89c167
check channels in WidePlaneAtopNarrow test #475 2020-04-14 10:50:53 -04:00
nick black
87136c37d3
flesh out two more Wide+Narrow tests #475 2020-04-14 10:39:38 -04:00
nick black
05cdd1514b pull in PlaneStompsWideGlyph from render.cc 2020-04-14 05:17:16 -04:00
nick black
1c41705d99 flesh out NarrowPlaneAtopWide unit test #475 2020-04-14 05:17:16 -04:00
nick black
295ae0a8d0
extract wide glyph unit tests into their own file #475 2020-04-13 23:12:10 -04:00
nick black
b0fc654444 Check that cell is not wide right in render #362 2020-04-12 07:07:02 -04:00
nick black
b0aa6b9a7f simplify wide handling in putc_yx #362 2020-04-12 07:07:02 -04:00
nick black
e6a80ab98d Strip down OverWide unit test 2020-04-12 07:07:02 -04:00
nick black
d26b111f35 new unit test Ncplane::OverWide #362 2020-04-12 07:07:02 -04:00
nick black
e005940acf
ncplot: fix unit tests following #457 (#464) 2020-04-10 11:22:26 -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
a7f17040ce another scrolling unit test 2020-04-05 23:54:38 -04:00
nick black
601e84df83 another scrolling unit test #323 2020-04-05 23:54:38 -04:00
nick black
0f12bcdb4c add 2 scrolling unit tests, both currently fail #323 2020-04-05 23:54:38 -04:00
nick black
c0f8d9b444
eliminate detectdomain, infer it from maxy==miny #439 2020-04-04 08:56:31 -04:00
nick black
6b74ea7718 plot: fix off-by-one on wide window shift, asdd unit test 2020-04-03 08:27:08 -04:00
nick black
fc2dc68619 AugmentCycle2 Unit Test #430 2020-04-03 05:51:02 -04:00
nick black
a3f7dd486b plot: AugmentSample5 test case 2020-04-03 05:51:02 -04:00
nick black
5bccf6b446 ncplot: implement x windowing #430 2020-04-03 05:51:02 -04:00
nick black
b3cda0d09f notcurses-keyplot: throw a perimeter around base plane 2020-04-03 05:51:02 -04:00
nick black
d2fe768c30 plot unit tests #430 2020-04-03 05:51:02 -04:00
nick black
e87fbb3003 Throw up an ncplot unit test 2020-04-03 05:51:02 -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
a3323fb22c
Enforce UTF8 where necessary in unit tests #428
Certain unit tests required UTF8 encoding on the output
terminal to work (#428). This includes anything which does
any kind of fill. Add enforce_utf8() checks to all such
tests that were missing them. Unit tests once again pass in
a pure ASCII environment.
2020-03-29 04:46: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
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
2b7b384e91
Most of notcurses-tetris, mergedown fixes (#420)
* ncplane_mergedown() fix for small planes #417
* tetris game needed for the book
2020-03-23 01:12:09 -04:00
nick black
c3feca6ded ncplane_polyfill: reject null glyph + test #418 2020-03-22 23:10:13 -04:00
nick black
7e71ad8e11 implement ncplane_mergedown() #361 2020-03-21 05:09:31 -04:00
nick black
eead4c1414
notcurses_highgradient() added #398 2020-03-08 04:05:55 -04:00
Nick Black
4e58747709
ncplane_rotate_cw() and ncplane_rotate_ccw() (#396)
Introduce limited plane rotation capability. We currently support clockwise and counterclockwise rotation of planes. Square and rectangular geometries are both supported, but there must be an even number of columns. The atomic unit of rotation is a 2x1 "square" (this assumes .5 cell aspect ratio). We can only rotate those glyphs which have rotated equivalents, and not even all of those. We currently handle only:

* null glyph
* space
* upper half block
* lower half block
* full block

I've added unit tests as well. This functionality is used by our Tetris example in the book
2020-03-07 18:36:49 -05:00
nick black
3498956370
ncplane_mouseevent_p()->ncplane_translate_abs()
ncplane_mouseevent_p() is retired--it was poorly named, and
ncplane_translate_abs() does what it does, plus more, plus
more generally (it works on any y, x, not necessarily an
ncinput). update c++ wrappers #394.
2020-03-03 00:59:44 -05:00
nick black
bb579d0d05
notcurses_directmode()->ncdirect_init() 2020-03-02 20:19:16 -05:00
nick black
5b4c6c14e3
gradient: implement + test 1d fills 2020-02-24 22:54:21 -05:00
nick black
40428fd05e
Cell: non-OPAQUE always sets non-default bit 2020-02-23 12:11:28 -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