Commit Graph

1646 Commits (4ce208931cb4d11781fc855aa7ad77c3ef46c4de)
 

Author SHA1 Message Date
Marek Habersack 64eeb95f1e [C++] Optionally enable throwing exceptions on errors
Nick prefers error handling based on exceptions in all cases, while I
prefer to save exception handling for truly exceptional situations -
function parameter validation and class constructor. However, there's no
need to not support both approaches, to be chosen at the discretion of
the developer.

NCPP follows RAII and all classes throw exceptions from their
constructors in case they cannot initialize properly. Likewise,
functions taking pointers that are required validate them and throw
exceptions whenever the requirement isn't met.

This commit goes one step further in that it enables optional validation
of notcurses function return values and throwing an
exception (`ncpp::call_error`) should the function signal an error. This
is disabled by default but it can be enabled by defining the
`NCPP_EXCEPTIONS_PLEASE` macro (preferably on the command line or
before *each* inclusion of any NCPP headers).

Out of necessity, this breaks the ABI (plus I found a handful of minor
issues in the code), but I think it's worth having this support in
place.
5 years ago
nick black a5a2b5646a add PoC scroller #443 5 years ago
nick black 327c9cba78 Scrolling! all unit tests work #443 5 years ago
nick black b385feef8f zero out newly-scrolled lines #443 5 years ago
nick black 646bcf3db2 finish out ScrollingOffBottom test #443 5 years ago
nick black 40067c0ccd interpret logical plane line via scrolled_row() #443 5 years ago
nick black 40fd887012 New unit test for scrolling ScrollingOffBottom #443 5 years ago
nick black ad9828e808 add ScrollingBoxen unit test 5 years ago
nick black 062caf0dfd Doxygen: use recommended logo size 5 years ago
nick black d6ba4b35a6
fedora: don't provoke 'installed but unpackaged' bah 5 years ago
nick black d1360e891b
fedora: don't install notcurses-view man page 5 years ago
nick black 43fafb1a61
fedora: don't install notcurses-tester man page 5 years ago
nick black d98f89c167
check channels in WidePlaneAtopNarrow test #475 5 years ago
nick black 87136c37d3
flesh out two more Wide+Narrow tests #475 5 years ago
nick black a7d9220f21 cell_load(): recycle when possible #473 5 years ago
nick black 45b821645a Only left sides of wide glyphs are 2 columns
At various places in rendering and rasterizing, we advance two
columns upon encountering a wide glyph. When dealing with a
single plane, this is always correct, because we're always
hitting the first column of the multicolumn glyph. Once multiple
planes are brought into play, though, we can very much hit the
second column of said glyph, in which case we mustn't advance
two columns, but only one. Resolves #474 by way of #475. w00t!
5 years ago
nick black 05cdd1514b pull in PlaneStompsWideGlyph from render.cc 5 years ago
nick black 1c41705d99 flesh out NarrowPlaneAtopWide unit test #475 5 years ago
nick black 295ae0a8d0
extract wide glyph unit tests into their own file #475 5 years ago
nick black c934c7be49
colons in output 5 years ago
nick black bd08712a0e
highcon: hoist out loop for great speedup #468 5 years ago
nick black 14184e8dbb
summary: use colons rather than slashes for emit:elide 5 years ago
nick black 6cbca20d0a
add 1.3.0 release to README 5 years ago
nick black b0fc654444 Check that cell is not wide right in render #362 5 years ago
nick black b0aa6b9a7f simplify wide handling in putc_yx #362 5 years ago
nick black e6a80ab98d Strip down OverWide unit test 5 years ago
nick black d26b111f35 new unit test Ncplane::OverWide #362 5 years ago
nick black b4cf4f3a0d
CMake: supply -fkeep-inline-functions for notcurses 5 years ago
nick black 86e225dc4c prep for 1.3.0 #460 5 years ago
Marek Habersack 28976dfef2 [C++] Sync API changes
Been a while, but here goes, sync to the latest API changes.

Added:

  * Direct:   cursor_{up,left,right,down} (`ncdirect_cursor_{up,left,right,down}`)
  * Plane: constructors to use `ncplane_bound`
  * Plane: reparent (`ncplane_reparent`)
  * Plot: definition of `default_options`

Changed:

  * Plane (breaking): the `*gradient*` functions now return `int`
  * Plane (breaking): `polyfill` returns `int`
  * Plane (breaking): `stain` returns `int`
  * Plane (breaking): `blit_bgrx` takes `const void*` for `data`
  * Plane (breaking): `blit_rgba` takes `const void*` for `data`
  * Plot: `plot_optons` -> `ncplot_options`
  * Plot (breaking): `{add,set}_sample` now return `bool`
5 years ago
nick black 55195b8ed0 fedora: use python_sitearch, install all python #462 5 years ago
nick black 9c9011c4cd fedora: really fix python #462 5 years ago
nick black e222f213af
fedora: see if we can't apply the arch fix 5 years ago
nick black 2c4f17bc65
keep a copy of our arch PKGBUILD 5 years ago
nick black 24a9343b0b
prep for 1.2.9 5 years ago
nick black bd226960d9
fedoraspec: just list header directories 5 years ago
nick black 4a56b7935f
rpmspec: s/srcname/name/g 5 years ago
nick black 5008f3513f
rpmspec: strip quotation marks 5 years ago
nick black c6494382d9
Fedora specfile: list directories, use wildcards 5 years ago
nick black 8fdf3d393a
Fedora specfile: Incorporate A Iwicki's feedback
Split out the python demo and wrappers into their own package,
python3-notcurses. Make an archful dependency for the devel
package to the main library. Comment up test disabling.
5 years ago
nick black 606cea4897
fedora: add egg-info to spec file #462 5 years ago
nick black edf1bddea3
fedora: move binaries and S1 man pages to main rpm #467 5 years ago
nick black 16fa94eb59
CMake: install python with USE_PYTHON #462 5 years ago
nick black 33e4341a67 tetris: use background from installed path #466 5 years ago
nick black 69b716f7f8 prep for 1.2.8 5 years ago
Nick Black 516b561d2a cmake: unify header installation #465 5 years ago
nick black 50b82648fc
CMakeLists.txt: note nckeys.h as PUBLIC_HEADER 5 years ago
nick black 9577c4afa0
fedora: add ncpp include files to package 5 years ago
nick black 0ecd69ce26
fedora: fix specfile notcurses-tetris.1.gz path 5 years ago
nick black 9a202b558e
remove colloquy from specfile, README 5 years ago