@ -115,9 +115,9 @@ namespace ncpp
return plane ;
}
bool resize ( int keepy , int keepx , int keepleny , int keeplenx , int yoff , int xoff , int ylen , int xlen ) const noexcept
bool resize ( int keepy , int keepx , int keepleny , int keeplenx , int yoff , int xoff , int ylen , int xlen ) const NOEXCEPT_MAYBE
{
return ncplane_resize (
int ret = ncplane_resize (
plane ,
keepy ,
keepx ,
@ -127,40 +127,34 @@ namespace ncpp
xoff ,
ylen ,
xlen
) ! = - 1 ;
}
bool pulse ( const timespec * ts , fadecb fader , void * curry ) const noexcept
{
return ncplane_pulse ( plane , ts , fader , curry ) ! = - 1 ;
}
) ;
bool mergedown ( Plane * dst = nullptr ) {
return ncplane_mergedown ( * this , dst ? dst - > plane : nullptr ) ;
return error_guard ( ret , - 1 ) ;
}
bool mergedown ( Plane & dst ) {
return mergedown ( & dst ) ;
bool pulse ( const timespec * ts , fadecb fader , void * curry ) const NOEXCEPT_MAYBE
{
return error_guard ( ncplane_pulse ( plane , ts , fader , curry ) , - 1 ) ;
}
int gradient ( const char * egc , uint32_t attrword , uint64_t ul , uint64_t ur , uint64_t ll , uint64_t lr , int ystop , int xstop ) const noexcept
int gradient ( const char * egc , uint32_t attrword , uint64_t ul , uint64_t ur , uint64_t ll , uint64_t lr , int ystop , int xstop ) const NOEXCEPT_MAYBE
{
return ncplane_gradient ( plane , egc , attrword , ul , ur , ll , lr , ystop , xstop ) ;
return error_guard < int > ( ncplane_gradient ( plane , egc , attrword , ul , ur , ll , lr , ystop , xstop ) , - 1 ) ;
}
int gradient_sized ( const char * egc , uint32_t attrword , uint64_t ul , uint64_t ur , uint64_t ll , uint64_t lr , int ylen , int xlen ) const noexcept
int gradient_sized ( const char * egc , uint32_t attrword , uint64_t ul , uint64_t ur , uint64_t ll , uint64_t lr , int ylen , int xlen ) const NOEXCEPT_MAYBE
{
return ncplane_gradient_sized ( plane , egc , attrword , ul , ur , ll , lr , ylen , xlen ) ;
return error_guard < int > ( ncplane_gradient_sized ( plane , egc , attrword , ul , ur , ll , lr , ylen , xlen ) , - 1 ) ;
}
int high_gradient ( uint64_t ul , uint64_t ur , uint64_t ll , uint64_t lr , int ylen , int xlen ) const noexcept
int high_gradient ( uint64_t ul , uint64_t ur , uint64_t ll , uint64_t lr , int ylen , int xlen ) const NOEXCEPT_MAYBE
{
return ncplane_highgradient ( plane , ul , ur , ll , lr , ylen , xlen ) ;
return error_guard < int > ( ncplane_highgradient ( plane , ul , ur , ll , lr , ylen , xlen ) , - 1 ) ;
}
int high_gradient_sized ( uint64_t ul , uint64_t ur , uint64_t ll , uint64_t lr , int ylen , int xlen ) const noexcept
int high_gradient_sized ( uint64_t ul , uint64_t ur , uint64_t ll , uint64_t lr , int ylen , int xlen ) const NOEXCEPT_MAYBE
{
return ncplane_highgradient_sized ( plane , ul , ur , ll , lr , ylen , xlen ) ;
return error_guard < int > ( ncplane_highgradient_sized ( plane , ul , ur , ll , lr , ylen , xlen ) , - 1 ) ;
}
void greyscale ( ) const noexcept
@ -168,49 +162,49 @@ namespace ncpp
ncplane_greyscale ( plane ) ;
}
bool resize ( int ylen , int xlen ) const noexcept
bool resize ( int ylen , int xlen ) const NOEXCEPT_MAYBE
{
return ncplane_resize_simple ( plane , ylen , xlen ) ! = - 1 ;
return error_guard ( ncplane_resize_simple ( plane , ylen , xlen ) , - 1 ) ;
}
bool fadeout ( timespec * ts , fadecb fader = nullptr , void * curry = nullptr ) const noexcept
bool fadeout ( timespec * ts , fadecb fader = nullptr , void * curry = nullptr ) const NOEXCEPT_MAYBE
{
return fadeout ( static_cast < const timespec * > ( ts ) , fader , curry ) ;
}
bool fadeout ( timespec & ts , fadecb fader = nullptr , void * curry = nullptr ) const noexcept
bool fadeout ( timespec & ts , fadecb fader = nullptr , void * curry = nullptr ) const NOEXCEPT_MAYBE
{
return fadeout ( & ts , fader , curry ) ;
}
bool fadeout ( timespec const & ts , fadecb fader = nullptr , void * curry = nullptr ) const noexcept
bool fadeout ( timespec const & ts , fadecb fader = nullptr , void * curry = nullptr ) const NOEXCEPT_MAYBE
{
return fadeout ( & ts , fader , curry ) ;
}
bool fadeout ( const timespec * ts , fadecb fader = nullptr , void * curry = nullptr ) const noexcept
bool fadeout ( const timespec * ts , fadecb fader = nullptr , void * curry = nullptr ) const NOEXCEPT_MAYBE
{
return ncplane_fadeout ( plane , ts , fader , curry ) ! = - 1 ;
return error_guard ( ncplane_fadeout ( plane , ts , fader , curry ) , - 1 ) ;
}
bool fadein ( timespec * ts , fadecb fader = nullptr ) const noexcept
bool fadein ( timespec * ts , fadecb fader = nullptr ) const NOEXCEPT_MAYBE
{
return fadein ( static_cast < const timespec * > ( ts ) , fader ) ;
}
bool fadein ( timespec & ts , fadecb fader = nullptr ) const noexcept
bool fadein ( timespec & ts , fadecb fader = nullptr ) const NOEXCEPT_MAYBE
{
return fadein ( & ts , fader ) ;
}
bool fadein ( timespec const & ts , fadecb fader = nullptr ) const noexcept
bool fadein ( timespec const & ts , fadecb fader = nullptr ) const NOEXCEPT_MAYBE
{
return fadein ( & ts , fader ) ;
}
bool fadein ( const timespec * ts , fadecb fader = nullptr , void * curry = nullptr ) const noexcept
bool fadein ( const timespec * ts , fadecb fader = nullptr , void * curry = nullptr ) const NOEXCEPT_MAYBE
{
return ncplane_fadein ( plane , ts , fader , curry ) ! = - 1 ;
return error_guard ( ncplane_fadein ( plane , ts , fader , curry ) , - 1 ) ;
}
void erase ( ) const noexcept
@ -218,9 +212,9 @@ namespace ncpp
ncplane_erase ( plane ) ;
}
int get_align ( NCAlign align , int c ) const noexcept
int get_align ( NCAlign align , int c ) const NOEXCEPT_MAYBE
{
return ncplane_align ( plane , static_cast < ncalign_e > ( align ) , c ) ;
return error_guard < int > ( ncplane_align ( plane , static_cast < ncalign_e > ( align ) , c ) , INT_MAX ) ;
}
void get_dim ( int * rows , int * cols ) const noexcept
@ -272,24 +266,24 @@ namespace ncpp
return reparent ( const_cast < Plane * > ( & newparent ) ) ;
}
bool move ( int y , int x ) const noexcept
bool move ( int y , int x ) const NOEXCEPT_MAYBE
{
return ncplane_move_yx ( plane , y , x ) ! = - 1 ;
return error_guard ( ncplane_move_yx ( plane , y , x ) , - 1 ) ;
}
bool move_top ( ) const noexcept
bool move_top ( ) const NOEXCEPT_MAYBE
{
return ncplane_move_top ( plane ) ! = - 1 ;
return error_guard ( ncplane_move_top ( plane ) , - 1 ) ;
}
bool move_bottom ( ) const noexcept
bool move_bottom ( ) const NOEXCEPT_MAYBE
{
return ncplane_move_bottom ( plane ) ! = - 1 ;
return error_guard ( ncplane_move_bottom ( plane ) , - 1 ) ;
}
bool move_below ( Plane & below ) const noexcept
bool move_below ( Plane & below ) const NOEXCEPT_MAYBE
{
return ncplane_move_below ( plane , below . plane ) ! = - 1 ;
return error_guard ( ncplane_move_below ( plane , below . plane ) , - 1 ) ;
}
bool move_below ( Plane * below ) const
@ -300,9 +294,9 @@ namespace ncpp
return move_below ( * below ) ;
}
bool move_below_unsafe ( Plane & below ) const noexcept
bool move_below_unsafe ( Plane & below ) const NOEXCEPT_MAYBE
{
return ncplane_move_below_unsafe ( plane , below . plane ) ! = - 1 ;
return error_guard ( ncplane_move_below_unsafe ( plane , below . plane ) , - 1 ) ;
}
bool move_below_unsafe ( Plane * below ) const
@ -313,9 +307,9 @@ namespace ncpp
return move_below_unsafe ( * below ) ;
}
bool move_above ( Plane & above ) const noexcept
bool move_above ( Plane & above ) const NOEXCEPT_MAYBE
{
return ncplane_move_above ( plane , above . plane ) ! = - 1 ;
return error_guard ( ncplane_move_above ( plane , above . plane ) , - 1 ) ;
}
bool move_above ( Plane * above ) const
@ -326,9 +320,9 @@ namespace ncpp
return move_above ( * above ) ;
}
bool move_above_unsafe ( Plane & above ) const noexcept
bool move_above_unsafe ( Plane & above ) const NOEXCEPT_MAYBE
{
return ncplane_move_above_unsafe ( plane , above . plane ) ! = - 1 ;
return error_guard ( ncplane_move_above_unsafe ( plane , above . plane ) , - 1 ) ;
}
bool move_above_unsafe ( Plane * above ) const
@ -341,21 +335,20 @@ namespace ncpp
bool mergedown ( Plane & dst ) const
{
if ( plane = = dst . plane )
throw invalid_argument ( " 'dst' must refer to a differnt plane than the one this method is called on " ) ;
return ncplane_mergedown ( plane , dst . plane ) ! = - 1 ;
return mergedown ( & dst ) ;
}
bool mergedown ( Plane * dst ) const
{
if ( dst = = nullptr )
throw invalid_argument ( " 'dst' must be a valid pointer " ) ;
return mergedown ( * dst ) ;
if ( dst ! = nullptr & & plane = = dst - > plane )
throw invalid_argument ( " 'dst' must refer to a differnt plane than the one this method is called on " ) ;
return error_guard ( ncplane_mergedown ( plane , dst ! = nullptr ? dst - > plane : nullptr ) , - 1 ) ;
}
bool cursor_move ( int y , int x ) const noexcept
bool cursor_move ( int y , int x ) const NOEXCEPT_MAYBE
{
return ncplane_cursor_move_yx ( plane , y , x ) ! = - 1 ;
return error_guard ( ncplane_cursor_move_yx ( plane , y , x ) , - 1 ) ;
}
void get_cursor_yx ( int * y , int * x ) const noexcept
@ -368,9 +361,9 @@ namespace ncpp
get_cursor_yx ( & y , & x ) ;
}
int putc ( const Cell & c ) const noexcept
int putc ( const Cell & c ) const NOEXCEPT_MAYBE
{
return ncplane_putc ( plane , c ) ;
return error_guard < int > ( ncplane_putc ( plane , c ) , - 1 ) ;
}
int putc ( const Cell * c ) const
@ -381,12 +374,12 @@ namespace ncpp
return putc ( * c ) ;
}
int putc ( int y , int x , Cell const & c ) const noexcept
int putc ( int y , int x , Cell const & c ) const NOEXCEPT_MAYBE
{
return ncplane_putc_yx ( plane , y , x , c ) ;
return error_guard < int > ( ncplane_putc_yx ( plane , y , x , c ) , - 1 ) ;
}
int putc ( int y , int x , Cell const * c ) const noexcept
int putc ( int y , int x , Cell const * c ) const NOEXCEPT_MAYBE
{
if ( c = = nullptr )
return - 1 ;
@ -394,86 +387,103 @@ namespace ncpp
return putc ( y , x , * c ) ;
}
int putc ( char c , bool retain_styling = false ) const noexcept
int putc ( char c , bool retain_styling = false ) const NOEXCEPT_MAYBE
{
if ( retain_styling )
return ncplane_putsimple_stainable ( plane , c ) ;
return ncplane_putsimple ( plane , c ) ;
int ret ;
if ( retain_styling ) {
ret = ncplane_putsimple_stainable ( plane , c ) ;
} else {
ret = ncplane_putsimple ( plane , c ) ;
}
return error_guard < int > ( ret , - 1 ) ;
}
int putc ( int y , int x , char c ) const noexcept
int putc ( int y , int x , char c ) const NOEXCEPT_MAYBE
{
return ncplane_putsimple_yx ( plane , y , x , c ) ;
return error_guard < int > ( ncplane_putsimple_yx ( plane , y , x , c ) , - 1 ) ;
}
int putc ( const char * gclust , int * sbytes = nullptr , bool retain_styling = false ) const noexcept
int putc ( const char * gclust , int * sbytes = nullptr , bool retain_styling = false ) const NOEXCEPT_MAYBE
{
if ( retain_styling )
return ncplane_putegc_stainable ( plane , gclust , sbytes ) ;
return ncplane_putegc ( plane , gclust , sbytes ) ;
int ret ;
if ( retain_styling ) {
ret = ncplane_putegc_stainable ( plane , gclust , sbytes ) ;
} else {
ret = ncplane_putegc ( plane , gclust , sbytes ) ;
}
return error_guard < int > ( ret , - 1 ) ;
}
int putc ( int y , int x , const char * gclust , int * sbytes = nullptr ) const noexcept
int putc ( int y , int x , const char * gclust , int * sbytes = nullptr ) const NOEXCEPT_MAYBE
{
return ncplane_putegc_yx ( plane , y , x , gclust , sbytes ) ;
return error_guard < int > ( ncplane_putegc_yx ( plane , y , x , gclust , sbytes ) , - 1 ) ;
}
int putc ( const wchar_t * gclust , int * sbytes = nullptr , bool retain_styling = false ) const noexcept
int putc ( const wchar_t * gclust , int * sbytes = nullptr , bool retain_styling = false ) const NOEXCEPT_MAYBE
{
if ( retain_styling )
return ncplane_putwegc_stainable ( plane , gclust , sbytes ) ;
return ncplane_putwegc ( plane , gclust , sbytes ) ;
int ret ;
if ( retain_styling ) {
ret = ncplane_putwegc_stainable ( plane , gclust , sbytes ) ;
} else {
ret = ncplane_putwegc ( plane , gclust , sbytes ) ;
}
return error_guard < int > ( ret , - 1 ) ;
}
int putc ( int y , int x , const wchar_t * gclust , int * sbytes = nullptr ) const noexcept
int putc ( int y , int x , const wchar_t * gclust , int * sbytes = nullptr ) const NOEXCEPT_MAYBE
{
return ncplane_putwegc_yx ( plane , y , x , gclust , sbytes ) ;
return error_guard < int > ( ncplane_putwegc_yx ( plane , y , x , gclust , sbytes ) , - 1 ) ;
}
// OK, this is ugly, but we need to rename this overload or calls similar to n->putc (0, 0, '0') will be
// considered ambiguous with the above `putc (int, int, char)` overload.
int putcw ( int y , int x , wchar_t w ) const noexcept
int putcw ( int y , int x , wchar_t w ) const NOEXCEPT_MAYBE
{
return ncplane_putwc_yx ( plane , y , x , w ) ;
return error_guard < int > ( ncplane_putwc_yx ( plane , y , x , w ) , - 1 ) ;
}
// Ditto
int putcw ( wchar_t w ) const noexcept
int putcw ( wchar_t w ) const NOEXCEPT_MAYBE
{
return ncplane_putwc ( plane , w ) ;
return error_guard < int > ( ncplane_putwc ( plane , w ) , - 1 ) ;
}
int putstr ( const char * gclustarr ) const noexcept
int putstr ( const char * gclustarr ) const NOEXCEPT_MAYBE
{
return ncplane_putstr ( plane , gclustarr ) ;
int ret = ncplane_putstr ( plane , gclustarr ) ;
return error_guard_cond < int > ( ret , ret < 0 ) ;
}
int putstr ( int y , int x , const char * gclustarr ) const noexcept
int putstr ( int y , int x , const char * gclustarr ) const NOEXCEPT_MAYBE
{
return ncplane_putstr_yx ( plane , y , x , gclustarr ) ;
int ret = ncplane_putstr_yx ( plane , y , x , gclustarr ) ;
return error_guard_cond < int > ( ret , ret < 0 ) ;
}
int putstr ( int y , NCAlign atype , const char * s ) const noexcept
int putstr ( int y , NCAlign atype , const char * s ) const NOEXCEPT_MAYBE
{
return ncplane_putstr_aligned ( plane , y , static_cast < ncalign_e > ( atype ) , s ) ;
return error_guard < int > ( ncplane_putstr_aligned ( plane , y , static_cast < ncalign_e > ( atype ) , s ) , - 1 ) ;
}
int putstr ( const wchar_t * gclustarr ) const noexcept
int putstr ( const wchar_t * gclustarr ) const NOEXCEPT_MAYBE
{
return ncplane_putwstr ( plane , gclustarr ) ;
return error_guard < int > ( ncplane_putwstr ( plane , gclustarr ) , - 1 ) ;
}
int putstr ( int y , int x , const wchar_t * gclustarr ) const noexcept
int putstr ( int y , int x , const wchar_t * gclustarr ) const NOEXCEPT_MAYBE
{
return ncplane_putwstr_yx ( plane , y , x , gclustarr ) ;
return error_guard < int > ( ncplane_putwstr_yx ( plane , y , x , gclustarr ) , - 1 ) ;
}
int putstr ( int y , NCAlign atype , const wchar_t * gclustattr ) const noexcept
int putstr ( int y , NCAlign atype , const wchar_t * gclustattr ) const NOEXCEPT_MAYBE
{
return ncplane_putwstr_aligned ( plane , y , static_cast < ncalign_e > ( atype ) , gclustattr ) ;
return error_guard < int > ( ncplane_putwstr_aligned ( plane , y , static_cast < ncalign_e > ( atype ) , gclustattr ) , - 1 ) ;
}
int printf ( const char * format , . . . ) const noexcept
int printf ( const char * format , . . . ) const NOEXCEPT_MAYBE
__attribute__ ( ( format ( printf , 2 , 3 ) ) )
{
va_list va ;
@ -482,10 +492,10 @@ namespace ncpp
int ret = ncplane_vprintf ( plane , format , va ) ;
va_end ( va ) ;
return ret;
return error_guard< int > ( ret, - 1 ) ;
}
int printf ( int y , int x , const char * format , . . . ) const noexcept
int printf ( int y , int x , const char * format , . . . ) const NOEXCEPT_MAYBE
__attribute__ ( ( format ( printf , 4 , 5 ) ) )
{
va_list va ;
@ -494,10 +504,10 @@ namespace ncpp
int ret = ncplane_vprintf_yx ( plane , y , x , format , va ) ;
va_end ( va ) ;
return ret;
return error_guard< int > ( ret, - 1 ) ;
}
int printf ( int y , NCAlign align , const char * format , . . . ) const noexcept
int printf ( int y , NCAlign align , const char * format , . . . ) const NOEXCEPT_MAYBE
__attribute__ ( ( format ( printf , 4 , 5 ) ) )
{
va_list va ;
@ -506,116 +516,116 @@ namespace ncpp
int ret = vprintf ( y , align , format , va ) ;
va_end ( va ) ;
return ret;
return error_guard< int > ( ret, - 1 ) ;
}
int vprintf ( const char * format , va_list ap ) const noexcept
int vprintf ( const char * format , va_list ap ) const NOEXCEPT_MAYBE
{
return ncplane_vprintf ( plane , format , ap ) ;
return error_guard < int > ( ncplane_vprintf ( plane , format , ap ) , - 1 ) ;
}
int vprintf ( int y , int x , const char * format , va_list ap ) const noexcept
int vprintf ( int y , int x , const char * format , va_list ap ) const NOEXCEPT_MAYBE
{
return ncplane_vprintf_yx ( plane , y , x , format , ap ) ;
return error_guard < int > ( ncplane_vprintf_yx ( plane , y , x , format , ap ) , - 1 ) ;
}
int vprintf ( int y , NCAlign align , const char * format , va_list ap ) const noexcept
int vprintf ( int y , NCAlign align , const char * format , va_list ap ) const NOEXCEPT_MAYBE
{
return ncplane_vprintf_aligned ( plane , y , static_cast < ncalign_e > ( align ) , format , ap ) ;
return error_guard < int > ( ncplane_vprintf_aligned ( plane , y , static_cast < ncalign_e > ( align ) , format , ap ) , - 1 ) ;
}
int hline ( const Cell & c , int len ) const noexcept
int hline ( const Cell & c , int len ) const NOEXCEPT_MAYBE
{
return ncplane_hline ( plane , c , len ) ;
return error_guard < int > ( ncplane_hline ( plane , c , len ) , - 1 ) ;
}
int hline ( const Cell & c , int len , uint64_t c1 , uint64_t c2 ) const noexcept
int hline ( const Cell & c , int len , uint64_t c1 , uint64_t c2 ) const NOEXCEPT_MAYBE
{
return ncplane_hline_interp ( plane , c , len , c1 , c2 ) ;
return error_guard < int > ( ncplane_hline_interp ( plane , c , len , c1 , c2 ) , - 1 ) ;
}
int vline ( const Cell & c , int len ) const noexcept
int vline ( const Cell & c , int len ) const NOEXCEPT_MAYBE
{
return ncplane_vline ( plane , c , len ) ;
return error_guard < int > ( ncplane_vline ( plane , c , len ) , - 1 ) ;
}
int vline ( const Cell & c , int len , uint64_t c1 , uint64_t c2 ) const noexcept
int vline ( const Cell & c , int len , uint64_t c1 , uint64_t c2 ) const NOEXCEPT_MAYBE
{
return ncplane_vline_interp ( plane , c , len , c1 , c2 ) ;
return error_guard < int > ( ncplane_vline_interp ( plane , c , len , c1 , c2 ) , - 1 ) ;
}
bool load_box ( uint32_t attrs , uint64_t channels , Cell & ul , Cell & ur , Cell & ll , Cell & lr , Cell & hl , Cell & vl , const char * gclusters ) const noexcept
bool load_box ( uint32_t attrs , uint64_t channels , Cell & ul , Cell & ur , Cell & ll , Cell & lr , Cell & hl , Cell & vl , const char * gclusters ) const NOEXCEPT_MAYBE
{
return cells_load_box ( plane , attrs , channels , ul , ur , ll , lr , hl , vl , gclusters ) ! = - 1 ;
return error_guard ( cells_load_box ( plane , attrs , channels , ul , ur , ll , lr , hl , vl , gclusters ) , - 1 ) ;
}
bool load_box ( CellStyle style , uint64_t channels , Cell & ul , Cell & ur , Cell & ll , Cell & lr , Cell & hl , Cell & vl , const char * gclusters ) const noexcept
bool load_box ( CellStyle style , uint64_t channels , Cell & ul , Cell & ur , Cell & ll , Cell & lr , Cell & hl , Cell & vl , const char * gclusters ) const NOEXCEPT_MAYBE
{
return load_box ( static_cast < uint32_t > ( style ) , channels , ul , ur , ll , lr , hl , vl , gclusters ) ;
}
bool load_rounded_box ( uint32_t attr , uint64_t channels , Cell & ul , Cell & ur , Cell & ll , Cell & lr , Cell & hl , Cell & vl ) const noexcept
bool load_rounded_box ( uint32_t attr , uint64_t channels , Cell & ul , Cell & ur , Cell & ll , Cell & lr , Cell & hl , Cell & vl ) const NOEXCEPT_MAYBE
{
return cells_rounded_box ( plane , attr , channels , ul , ur , ll , lr , hl , vl ) ! = - 1 ;
return error_guard ( cells_rounded_box ( plane , attr , channels , ul , ur , ll , lr , hl , vl ) , - 1 ) ;
}
bool load_rounded_box ( CellStyle style , uint64_t channels , Cell & ul , Cell & ur , Cell & ll , Cell & lr , Cell & hl , Cell & vl ) const noexcept
bool load_rounded_box ( CellStyle style , uint64_t channels , Cell & ul , Cell & ur , Cell & ll , Cell & lr , Cell & hl , Cell & vl ) const NOEXCEPT_MAYBE
{
return load_rounded_box ( static_cast < uint32_t > ( style ) , channels , ul , ur , ll , lr , hl , vl ) ;
}
bool load_double_box ( uint32_t attr , uint64_t channels , Cell & ul , Cell & ur , Cell & ll , Cell & lr , Cell & hl , Cell & vl ) const noexcept
bool load_double_box ( uint32_t attr , uint64_t channels , Cell & ul , Cell & ur , Cell & ll , Cell & lr , Cell & hl , Cell & vl ) const NOEXCEPT_MAYBE
{
return cells_double_box ( plane , attr , channels , ul , ur , ll , lr , hl , vl ) ! = - 1 ;
return error_guard ( cells_double_box ( plane , attr , channels , ul , ur , ll , lr , hl , vl ) , - 1 ) ;
}
bool load_double_box ( CellStyle style , uint64_t channels , Cell & ul , Cell & ur , Cell & ll , Cell & lr , Cell & hl , Cell & vl ) const noexcept
bool load_double_box ( CellStyle style , uint64_t channels , Cell & ul , Cell & ur , Cell & ll , Cell & lr , Cell & hl , Cell & vl ) const NOEXCEPT_MAYBE
{
return load_double_box ( static_cast < uint32_t > ( style ) , channels , ul , ur , ll , lr , hl , vl ) ;
}
bool box ( const Cell & ul , const Cell & ur , const Cell & ll , const Cell & lr ,
const Cell & hline , const Cell & vline , int ystop , int xstop ,
unsigned ctlword ) const noexcept
const Cell & hline , const Cell & vline , int ystop , int xstop ,
unsigned ctlword ) const NOEXCEPT_MAYBE
{
return ncplane_box ( plane , ul , ur , ll , lr , hline , vline , ystop , xstop , ctlword ) ! = - 1 ;
return error_guard ( ncplane_box ( plane , ul , ur , ll , lr , hline , vline , ystop , xstop , ctlword ) , - 1 ) ;
}
bool box_sized ( const Cell & ul , const Cell & ur , const Cell & ll , const Cell & lr ,
const Cell & hline , const Cell & vline , int ylen , int xlen ,
unsigned ctlword ) const noexcept
unsigned ctlword ) const NOEXCEPT_MAYBE
{
return ncplane_box_sized ( plane , ul , ur , ll , lr , hline , vline , ylen , xlen , ctlword ) ! = - 1 ;
return error_guard ( ncplane_box_sized ( plane , ul , ur , ll , lr , hline , vline , ylen , xlen , ctlword ) , - 1 ) ;
}
bool rounded_box ( uint32_t attr , uint64_t channels , int ystop , int xstop , unsigned ctlword ) const noexcept
bool rounded_box ( uint32_t attr , uint64_t channels , int ystop , int xstop , unsigned ctlword ) const NOEXCEPT_MAYBE
{
return ncplane_rounded_box ( plane , attr , channels , ystop , xstop , ctlword ) ! = - 1 ;
return error_guard ( ncplane_rounded_box ( plane , attr , channels , ystop , xstop , ctlword ) , - 1 ) ;
}
bool rounded_box_sized ( uint32_t attr , uint64_t channels , int ylen , int xlen , unsigned ctlword ) const noexcept
bool rounded_box_sized ( uint32_t attr , uint64_t channels , int ylen , int xlen , unsigned ctlword ) const NOEXCEPT_MAYBE
{
return ncplane_rounded_box_sized ( plane , attr , channels , ylen , xlen , ctlword ) ! = - 1 ;
return error_guard ( ncplane_rounded_box_sized ( plane , attr , channels , ylen , xlen , ctlword ) , - 1 ) ;
}
bool double_box ( uint32_t attr , uint64_t channels , int ystop , int xstop , unsigned ctlword ) const noexcept
bool double_box ( uint32_t attr , uint64_t channels , int ystop , int xstop , unsigned ctlword ) const NOEXCEPT_MAYBE
{
return ncplane_double_box ( plane , attr , channels , ystop , xstop , ctlword ) ! = - 1 ;
return error_guard ( ncplane_double_box ( plane , attr , channels , ystop , xstop , ctlword ) , - 1 ) ;
}
bool double_box_sized ( uint32_t attr , uint64_t channels , int ylen , int xlen , unsigned ctlword ) const noexcept
bool double_box_sized ( uint32_t attr , uint64_t channels , int ylen , int xlen , unsigned ctlword ) const NOEXCEPT_MAYBE
{
return ncplane_double_box_sized ( plane , attr , channels , ylen , xlen , ctlword ) ! = - 1 ;
return error_guard ( ncplane_double_box_sized ( plane , attr , channels , ylen , xlen , ctlword ) , - 1 ) ;
}
bool perimeter ( const Cell & ul , const Cell & ur , const Cell & ll , const Cell & lr , const Cell & hline , const Cell & vline , unsigned ctlword ) const noexcept
bool perimeter ( const Cell & ul , const Cell & ur , const Cell & ll , const Cell & lr , const Cell & hline , const Cell & vline , unsigned ctlword ) const NOEXCEPT_MAYBE
{
return ncplane_perimeter ( plane , ul , ur , ll , lr , hline , vline , ctlword ) ! = - 1 ;
return error_guard ( ncplane_perimeter ( plane , ul , ur , ll , lr , hline , vline , ctlword ) , - 1 ) ;
}
int polyfill ( int y , int x , const Cell & c ) const noexcept
int polyfill ( int y , int x , const Cell & c ) const NOEXCEPT_MAYBE
{
return ncplane_polyfill_yx ( plane , y , x , c ) ;
return error_guard < int > ( ncplane_polyfill_yx ( plane , y , x , c ) , - 1 ) ;
}
uint64_t get_channels ( ) const noexcept
@ -653,9 +663,9 @@ namespace ncpp
return ncplane_fg_alpha ( plane ) ;
}
bool set_fg_alpha ( int alpha ) const noexcept
bool set_fg_alpha ( int alpha ) const NOEXCEPT_MAYBE
{
return ncplane_set_fg_alpha ( plane , alpha ) ! = - 1 ;
return error_guard ( ncplane_set_fg_alpha ( plane , alpha ) , - 1 ) ;
}
unsigned get_bg_alpha ( ) const noexcept
@ -663,9 +673,9 @@ namespace ncpp
return ncplane_bg_alpha ( plane ) ;
}
bool set_bg_alpha ( int alpha ) const noexcept
bool set_bg_alpha ( int alpha ) const NOEXCEPT_MAYBE
{
return ncplane_set_bg_alpha ( plane , alpha ) ! = - 1 ;
return error_guard ( ncplane_set_bg_alpha ( plane , alpha ) , - 1 ) ;
}
unsigned get_fg_rgb ( unsigned * r , unsigned * g , unsigned * b ) const noexcept
@ -673,24 +683,24 @@ namespace ncpp
return ncplane_fg_rgb ( plane , r , g , b ) ;
}
bool set_fg_rgb ( int r , int g , int b , bool clipped = false ) const noexcept
bool set_fg_rgb ( int r , int g , int b , bool clipped = false ) const NOEXCEPT_MAYBE
{
if ( clipped ) {
ncplane_set_fg_rgb_clipped ( plane , r , g , b ) ;
return true ;
}
return ncplane_set_fg_rgb ( plane , r , g , b ) ! = - 1 ;
return error_guard ( ncplane_set_fg_rgb ( plane , r , g , b ) , - 1 ) ;
}
bool set_fg_palindex ( int idx ) const noexcept
bool set_fg_palindex ( int idx ) const NOEXCEPT_MAYBE
{
return ncplane_set_fg_palindex ( plane , idx ) ! = - 1 ;
return error_guard ( ncplane_set_fg_palindex ( plane , idx ) , - 1 ) ;
}
bool set_fg ( uint32_t channel ) const noexcept
bool set_fg ( uint32_t channel ) const NOEXCEPT_MAYBE
{
return ncplane_set_fg ( plane , channel ) ! = - 1 ;
return error_guard ( ncplane_set_fg ( plane , channel ) , - 1 ) ;
}
void set_fg_default ( ) const noexcept
@ -703,24 +713,24 @@ namespace ncpp
return ncplane_bg_rgb ( plane , r , g , b ) ;
}
bool set_bg_rgb ( int r , int g , int b , bool clipped = false ) const noexcept
bool set_bg_rgb ( int r , int g , int b , bool clipped = false ) const NOEXCEPT_MAYBE
{
if ( clipped ) {
ncplane_set_fg_rgb_clipped ( plane , r , g , b ) ;
return true ;
}
return ncplane_set_bg_rgb ( plane , r , g , b ) ! = - 1 ;
return error_guard ( ncplane_set_bg_rgb ( plane , r , g , b ) , - 1 ) ;
}
bool set_bg_palindex ( int idx ) const noexcept
bool set_bg_palindex ( int idx ) const NOEXCEPT_MAYBE
{
return ncplane_set_bg_alpha ( plane , idx ) ! = - 1 ;
return error_guard ( ncplane_set_bg_alpha ( plane , idx ) , - 1 ) ;
}
bool set_bg ( uint32_t channel ) const noexcept
bool set_bg ( uint32_t channel ) const NOEXCEPT_MAYBE
{
return ncplane_set_bg ( plane , channel ) ! = - 1 ;
return error_guard ( ncplane_set_bg ( plane , channel ) , - 1 ) ;
}
void set_bg_default ( ) const noexcept
@ -728,7 +738,7 @@ namespace ncpp
ncplane_set_bg_default ( plane ) ;
}
bool set_scrolling ( bool scrollp ) noexcept
bool set_scrolling ( bool scrollp ) const noexcept
{
return ncplane_set_scrolling ( plane , scrollp ) ;
}
@ -748,14 +758,14 @@ namespace ncpp
ncplane_styles_off ( plane , static_cast < unsigned > ( styles ) ) ;
}
int format ( int ystop , int xstop , uint32_t attrword ) const noexcept
int format ( int ystop , int xstop , uint32_t attrword ) const NOEXCEPT_MAYBE
{
return ncplane_format ( plane , ystop , xstop , attrword ) ;
return error_guard < int > ( ncplane_format ( plane , ystop , xstop , attrword ) , - 1 ) ;
}
int stain ( int ystop , int xstop , uint64_t ul , uint64_t ur , uint64_t ll , uint64_t lr )
int stain ( int ystop , int xstop , uint64_t ul , uint64_t ur , uint64_t ll , uint64_t lr ) const NOEXCEPT_MAYBE
{
return ncplane_stain ( plane , ystop , xstop , ul , ur , ll , lr ) ;
return error_guard < int > ( ncplane_stain ( plane , ystop , xstop , ul , ur , ll , lr ) , - 1 ) ;
}
Plane * get_below ( ) const noexcept
@ -763,27 +773,31 @@ namespace ncpp
return map_plane ( ncplane_below ( plane ) ) ;
}
bool set_base_cell ( Cell & c ) const noexcept
bool set_base_cell ( Cell & c ) const NOEXCEPT_MAYBE
{
return ncplane_set_base_cell ( plane , c ) > = 0 ;
bool ret = ncplane_set_base_cell ( plane , c ) < 0 ;
return error_guard_cond < bool , bool > ( ret , ret ) ;
}
bool set_base ( uint64_t channels , uint32_t attrword , const char * egc ) const noexcept
bool set_base ( uint64_t channels , uint32_t attrword , const char * egc ) const NOEXCEPT_MAYBE
{
return ncplane_set_base ( plane , channels , attrword , egc ) > = 0 ;
bool ret = ncplane_set_base ( plane , channels , attrword , egc ) < 0 ;
return error_guard_cond < bool , bool > ( ret , ret ) ;
}
bool get_base ( Cell & c ) const noexcept
bool get_base ( Cell & c ) const NOEXCEPT_MAYBE
{
return ncplane_base ( plane , c ) > = 0 ;
bool ret = ncplane_base ( plane , c ) < 0 ;
return error_guard_cond < bool , bool > ( ret , ret ) ;
}
bool at_cursor ( Cell & c ) const noexcept
bool at_cursor ( Cell & c ) const NOEXCEPT_MAYBE
{
return ncplane_at_cursor ( plane , c ) > = 0 ;
bool ret = ncplane_at_cursor ( plane , c ) < 0 ;
return error_guard_cond < bool , bool > ( ret , ret ) ;
}
bool at_cursor ( Cell * c ) const
bool at_cursor ( Cell * c ) const noexcept
{
if ( c = = nullptr )
return false ;
@ -791,9 +805,9 @@ namespace ncpp
return at_cursor ( * c ) ;
}
int get_at ( int y , int x , Cell & c ) const noexcept
int get_at ( int y , int x , Cell & c ) const NOEXCEPT_MAYBE
{
return ncplane_at_yx ( plane , y , x , c ) ;
return error_guard ( ncplane_at_yx ( plane , y , x , c ) , - 1 ) ;
}
int get_at ( int y , int x , Cell * c ) const
@ -839,19 +853,19 @@ namespace ncpp
// Some Cell APIs go here since they act on individual panels even though it may seem weird at points (e.g.
// release)
int load ( Cell & cell , const char * gcluster ) const noexcept
int load ( Cell & cell , const char * gcluster ) const NOEXCEPT_MAYBE
{
return cell_load ( plane , cell , gcluster ) ;
return error_guard < int > ( cell_load ( plane , cell , gcluster ) , - 1 ) ;
}
bool load ( Cell & cell , char ch ) const noexcept
bool load ( Cell & cell , char ch ) const NOEXCEPT_MAYBE
{
return cell_load_simple ( plane , cell , ch ) ! = - 1 ;
return error_guard ( cell_load_simple ( plane , cell , ch ) , - 1 ) ;
}
int prime ( Cell & cell , const char * gcluster , uint32_t attr , uint64_t channels ) const noexcept
int prime ( Cell & cell , const char * gcluster , uint32_t attr , uint64_t channels ) const NOEXCEPT_MAYBE
{
return cell_prime ( plane , cell , gcluster , attr , channels ) ;
return error_guard < int > ( cell_prime ( plane , cell , gcluster , attr , channels ) , - 1 ) ;
}
void release ( Cell & cell ) const noexcept
@ -859,14 +873,14 @@ namespace ncpp
cell_release ( plane , cell ) ;
}
int duplicate ( Cell & target , Cell & source ) const noexcept
int duplicate ( Cell & target , Cell & source ) const NOEXCEPT_MAYBE
{
return cell_duplicate ( plane , target , source ) ;
return error_guard < int > ( cell_duplicate ( plane , target , source ) , - 1 ) ;
}
int duplicate ( Cell & target , Cell const & source ) const noexcept
int duplicate ( Cell & target , Cell const & source ) const NOEXCEPT_MAYBE
{
return cell_duplicate ( plane , target , source ) ;
return error_guard < int > ( cell_duplicate ( plane , target , source ) , - 1 ) ;
}
int duplicate ( Cell & target , Cell * source ) const
@ -921,12 +935,12 @@ namespace ncpp
return duplicate ( * target , source ) ;
}
void translate ( const Plane * dst , int * y = nullptr , int * x = nullptr ) const
void translate ( const Plane * dst , int * y = nullptr , int * x = nullptr ) const noexcept
{
ncplane_translate ( * this , dst ? dst - > plane : nullptr , y , x ) ;
ncplane_translate ( * this , dst ? dst - > plane : nullptr , y , x ) ;
}
void translate ( const Plane & dst , int * y = nullptr , int * x = nullptr ) noexcept
void translate ( const Plane & dst , int * y = nullptr , int * x = nullptr ) const noexcept
{
translate ( * this , dst , y , x ) ;
}
@ -936,7 +950,7 @@ namespace ncpp
if ( src = = nullptr )
throw invalid_argument ( " 'src' must be a valid pointer " ) ;
ncplane_translate ( * src , dst ? dst - > plane : nullptr , y , x ) ;
ncplane_translate ( * src , dst ? dst - > plane : nullptr , y , x ) ;
}
static void translate ( const Plane & src , const Plane & dst , int * y = nullptr , int * x = nullptr ) noexcept
@ -944,19 +958,19 @@ namespace ncpp
ncplane_translate ( src . plane , dst . plane , y , x ) ;
}
bool translate_abs ( int * y = nullptr , int * x = nullptr ) noexcept
bool translate_abs ( int * y = nullptr , int * x = nullptr ) const noexcept
{
return ncplane_translate_abs ( * this , y , x ) ;
return error_guard < bool , bool > ( ncplane_translate_abs ( plane , y , x ) , false ) ;
}
bool rotate_cw ( ) const noexcept
bool rotate_cw ( ) const NOEXCEPT_MAYBE
{
return ncplane_rotate_cw ( plane ) ! = - 1 ;
return error_guard ( ncplane_rotate_cw ( plane ) , - 1 ) ;
}
bool rotate_ccw ( ) const noexcept
{
return ncplane_rotate_ccw ( plane ) ! = - 1 ;
return error_guard ( ncplane_rotate_ccw ( plane ) , - 1 ) ;
}
// Upstream call doesn't take ncplane* but we put it here for parity with has_no_background below
@ -978,14 +992,16 @@ namespace ncpp
static Plane * map_plane ( ncplane * ncp , Plane * associated_plane = nullptr ) noexcept ;
# ifdef USE_FFMPEG
bool blit_bgrx ( int placey , int placex , int linesize , const void * data , int begy , int begx , int leny , int lenx ) const noexcept
bool blit_bgrx ( int placey , int placex , int linesize , const void * data , int begy , int begx , int leny , int lenx ) const NOEXCEPT_MAYBE
{
return ncblit_bgrx ( plane , placey , placex , linesize , data , begy , begx , leny , lenx ) > = 0 ;
bool ret = ncblit_bgrx ( plane , placey , placex , linesize , data , begy , begx , leny , lenx ) < 0 ;
return error_guard_cond < bool , bool > ( ret , ret ) ;
}
bool blit_rgba ( int placey , int placex , int linesize , const void * data , int begy , int begx , int leny , int lenx ) const noexcept
bool blit_rgba ( int placey , int placex , int linesize , const void * data , int begy , int begx , int leny , int lenx ) const NOEXCEPT_MAYBE
{
return ncblit_rgba ( plane , placey , placex , linesize , data , begy , begx , leny , lenx ) > = 0 ;
bool ret = ncblit_rgba ( plane , placey , placex , linesize , data , begy , begx , leny , lenx ) < 0 ;
return error_guard_cond < bool , bool > ( ret , ret ) ;
}
# endif