Commit Graph

288 Commits

Author SHA1 Message Date
nick black
8312b88e3c NotCurses::stop(): match original semantics 2020-03-15 01:21:55 -04:00
nick black
66bb614ab3 NotCurses::stop(): propogate out notcurses_stop() return value 2020-03-15 01:19:04 -04:00
Marek Habersack
3e78dd7d1f [C++] API sync
New classes:

   * MultiSelector (`ncmultiselector_*`)

Added:

   * Direct: cursor_{enable,disable}
   * Plane: high_gradient (`ncplane_highgradient`)
   * Plane: high_gradient_sized (`ncplane_highgradient_sized`)
   * Plane: rotate_cw (`ncplane_rotate_cw`)
   * Plane: rotate_ccw (`ncplane_rotate_ccw`)

Updated:

   * NotCurses: added all the margin initializers to the default options
2020-03-14 21:49:32 -04:00
nick black
ba90c70a47
ncplane_cursor_yx() takes const first argument 2020-03-14 21:15:37 -04:00
nick black
1b4333861a
add ncdirect_{en,dis}able_cursor() #402 2020-03-13 09:52:00 -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
638be8feb7 multiselector options/items #322 2020-03-09 15:31:16 -04:00
nick black
a46393b035 ncmultiselect: get space rigged up #322 2020-03-09 15:31:16 -04:00
nick black
4abe078eae ncmultiselector #322 2020-03-09 15:31:16 -04:00
nick black
635d6e5751 ncmultiselect demo 2020-03-09 15:31:16 -04:00
nick black
6060248968 ncmultiselector_options structure #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
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
333f7c1192
define ncplane_rotate_cw/ccw() 2020-03-05 18:07:20 -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
c6f27f1bee
notcurses_resize() update docs #367 2020-02-29 23:05:51 -05:00
nick black
c87a9ed5dd
Gradients: set alpha, better prechecks #389
Gradients can't use palette-indexed color, so don't allow it
in either the foreground or background of any channels. All
channels must have the same alpha setting, which will be matched
in the gradient. #389
2020-02-29 16:35:57 -05:00
Marek Habersack
3467a0adef [C++] API sync
Added:

  * NCKey: `ScrollUp`, `ScrollDown` and `Return`
  * Plane: is_mouse_event (`ncplane_mouseevent_p`)
2020-02-27 11:48:36 -05:00
nick black
87cac84db2
remove obsolete FIXME 2020-02-25 02:36:51 -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
a626178b16
ncdirect: cursor movement / geom detection #382 2020-02-24 16:30:51 -05:00
nick black
40428fd05e
Cell: non-OPAQUE always sets non-default bit 2020-02-23 12:11:28 -05:00
nick black
bdd0917ea4
selector: transparent where we aren't 2020-02-23 09:38:58 -05:00
nick black
bf60c51b3d
nckey: aliases NCKEY_ENTER, SCROLL_* 2020-02-23 04:00:52 -05:00
Marek Habersack
945c3a5f4f [C++] API sync
Added:
 * Cell: get_addrword (`cell.attrword`)
 * Cell: get_channels (`cell.channels`)
 * NotCurses: get_stdplane overloads (`notcurses_stddim_yx`)
 * Plane: putc (support for `ncplane_putsimple_stainable`,
   `ncplane_putegc_stainable`, `ncplane_putwegc_stainable`)
 * Plane: format (`ncplane_format`)
 * Plane: stain (`ncplane_stain`)
 * Plane: translate (`ncplane_translate`)
2020-02-23 02:57:01 -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
Marek Habersack
e429724287 [C++] API sync + some (breaking) changes
Added:

 * Plane: gradient (`ncplane_gradient`)
 * Plane: gradient_sized (`ncplane_gradient_sized`)
 * NotCurses: drop_planes (`ncplane_drop_planes`)
 * NcReel: constructor which takes `Plane&`
 * Visual: constructors which take `Plane const*`, `Plane&` and `Plane const&`)
 * ncpp_build: a nonsensical "demo" which exists purely to test whether
   the C++ builds and does absolutely nothing interesting.

Broke:
 * All exceptions throw temporary objects instead of allocated
   instances. Less typing in `catch` :P (and more conventional)
2020-02-18 12:30:13 -05:00
Jakub Wilk
f08d51c5e7 fix typos 2020-02-18 08:03:59 -05:00
nick black
c6520ab84c add notcurses_drop_planes, use from demo #346 2020-02-16 11:21:21 -05:00
nick black
8ecb4ba6a8 declare gradient functions #340 2020-02-16 11:21:21 -05:00
Marek Habersack
fc264677f5 Sync C++ wrapper with the latest API changes
New classes:

 * Direct (`ncdirect_*`)
 * Menu (`ncmenu_*`)
 * Selector (`ncselector_*`)

Updates:

 * Plane: added copy constructors (mapped to `ncplane_dup`)
 * Plane: added `perimeter` (`ncplane_perimeter`)
 * Plane: added `polyfill` (`ncplane_polyfill`)
 * Plane: added `blit_bgrx` (`ncblit_bgrx`)
 * Plane: added `blit_rgba` (`ncblit_rgba`)
2020-02-16 06:01:02 -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
dc21f2cb09 introduce ncplot_options 2020-02-14 05:38:08 -05:00
nick black
52b4fb223a get down some thoughts on plots #136 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
b0c72607c4
ncmenu_offer_input(), use it in demo/pocmenu #333 2020-02-10 20:22:23 -05:00