refrain from using undefined terminfo capabilities #252

pull/261/head
nick black 5 years ago
parent fabbb96cb5
commit 07c175b320
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

@ -265,72 +265,87 @@ gridinv_demo(struct notcurses* nc, struct ncplane *n){
// red across, blue down, green from UL to LR
int grid_demo(struct notcurses* nc){
int maxx, maxy;
notcurses_term_dim_yx(nc, &maxy, &maxx);
int rs = 255 / maxx;
int gs = 255 / (maxx + maxy);
int bs = 255 / maxy;
int y, x;
struct ncplane* n = notcurses_stdplane(nc);
ncplane_erase(n);
cell ul, ll, cl, cr, lc, lr, ur, uc, cc;
cell ul, uc, ur;
cell ll, lc, lr;
cell cl, cc, cr;
prep_cells(n, &ul, &uc, &ur, &cl, &cc, &cr, &ll, &lc, &lr);
ncplane_cursor_move_yx(n, 0, 0);
y = 0;
// top line
x = 0;
ccell_set_bg_rgb(&ul, y, y, y);
ccell_set_bg_rgb(&uc, y, y, y);
ccell_set_bg_rgb(&ur, y, y, y);
ccell_set_fg_rgb(&ul, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
ncplane_putc(n, &ul);
for(x = 1 ; x < maxx - 1 ; ++x){
ccell_set_fg_rgb(&uc, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
ncplane_putc(n, &uc);
}
ccell_set_fg_rgb(&ur, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
ncplane_putc(n, &ur);
// center
for(y = 1 ; y < maxy - 1 ; ++y){
int ret = 0;
for(int i = 0 ; i < 256 ; ++i){
int maxx, maxy;
notcurses_term_dim_yx(nc, &maxy, &maxx);
int rs = 255 / maxx;
int gs = 255 / (maxx + maxy);
int bs = 255 / maxy;
// top line
x = 0;
if(ncplane_cursor_move_yx(n, y, x)){
y = 0;
ret |= ccell_set_bg_rgb(&ul, i / 2, x, y);
ret |= ccell_set_fg_rgb(&ul, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
if(ncplane_putc_yx(n, 0, 0, &ul) <= 0){
return -1;
}
ccell_set_bg_rgb(&cl, y, y, y);
ccell_set_bg_rgb(&cc, y, y, y);
ccell_set_bg_rgb(&cr, y, y, y);
ccell_set_fg_rgb(&cl, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
ncplane_putc(n, &cl);
for(x = 1 ; x < maxx - 1 ; ++x){
ccell_set_fg_rgb(&cc, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
ncplane_putc(n, &cc);
ret |= ccell_set_bg_rgb(&uc, i / 2, x, y);
ret |= ccell_set_fg_rgb(&uc, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
if(ncplane_putc(n, &uc) <= 0){
return -1;
}
}
ret |= ccell_set_bg_rgb(&ur, i / 2, x, y);
ret |= ccell_set_fg_rgb(&ur, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
if(ncplane_putc(n, &ur) <= 0){
return -1;
}
ccell_set_fg_rgb(&cr, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
ncplane_putc(n, &cr);
}
// bottom line
x = 0;
if(ncplane_cursor_move_yx(n, y, x)){
return -1;
}
ccell_set_bg_rgb(&ll, y, y, y);
ccell_set_bg_rgb(&lc, y, y, y);
ccell_set_bg_rgb(&lr, y, y, y);
ccell_set_fg_rgb(&ll, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
ncplane_putc(n, &ll);
for(x = 1 ; x < maxx - 1 ; ++x){
ccell_set_fg_rgb(&lc, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
ncplane_putc(n, &lc);
}
ccell_set_fg_rgb(&lr, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
ncplane_putc(n, &lr);
// center
for(y = 1 ; y < maxy - 1 ; ++y){
x = 0;
ret |= ccell_set_bg_rgb(&cl, i / 2, x, y);
ret |= ccell_set_fg_rgb(&cl, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
if(ncplane_putc_yx(n, y, x, &cl) <= 0){
return -1;
}
for(x = 1 ; x < maxx - 1 ; ++x){
ret |= ccell_set_bg_rgb(&cc, i / 2, x, y);
ret |= ccell_set_fg_rgb(&cc, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
if(ncplane_putc(n, &cc) <= 0){
return -1;
}
}
ret |= ccell_set_bg_rgb(&cr, i / 2, x, y);
ret |= ccell_set_fg_rgb(&cr, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
if(ncplane_putc(n, &cr) <= 0){
return -1;
}
}
// render!
demo_render(nc);
// bottom line
x = 0;
ret |= ccell_set_bg_rgb(&ll, i / 2, x, y);
ret |= ccell_set_fg_rgb(&ll, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
if(ncplane_putc_yx(n, y, x, &ll) <= 0){
return -1;
}
for(x = 1 ; x < maxx - 1 ; ++x){
ret |= ccell_set_bg_rgb(&lc, i / 2, x, y);
ret |= ccell_set_fg_rgb(&lc, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
if(ncplane_putc(n, &lc) <= 0){
return -1;
}
}
ret |= ccell_set_bg_rgb(&lr, i / 2, x, y);
ret |= ccell_set_fg_rgb(&lr, 255 - rs * x, 255 - gs * (x + y), 255 - bs * y);
if(ncplane_putc(n, &lr) <= 0){
return -1;
}
if(ret || demo_render(nc)){
return -1;
}
}
release_cells(n, &ul, &uc, &ur, &cl, &cc, &cr, &ll, &lc, &lr);
nanosleep(&demodelay, NULL);
return gridinv_demo(nc, n);
}

@ -264,6 +264,9 @@ rgb_quantize_256(unsigned r, unsigned g, unsigned b){
static inline int
term_emit(const char* name __attribute__ ((unused)), const char* seq,
FILE* out, bool flush){
if(!seq){
return -1;
}
int ret = fprintf(out, "%s", seq);
if(ret < 0){
// fprintf(stderr, "Error emitting %zub %s escape (%s)\n", strlen(seq), name, strerror(errno));

@ -556,12 +556,10 @@ notcurses_render_internal(notcurses* nc){
}
}
++nc->stats.cellemissions;
if(needmove > 8){ // FIXME cuf and cuf1 aren't guaranteed!
term_emit("cup", tiparm(nc->cup, y, x), out, false);
}else if(needmove > 1){
term_emit("cuf", tiparm(nc->cuf, needmove), out, false);
if(needmove == 1 && nc->cuf1){
ret |= term_emit("cuf1", tiparm(nc->cuf1), out, false);
}else if(needmove){
term_emit("cuf1", tiparm(nc->cuf1), out, false);
ret |= term_emit("cup", tiparm(nc->cup, y, x), out, false);
}
needmove = 0;
// set the style. this can change the color back to the default; if it
@ -640,7 +638,7 @@ notcurses_render_internal(notcurses* nc){
}
}
ret |= fflush(out);
fflush(nc->ttyfp);
//fflush(nc->ttyfp);
if(blocking_write(nc->ttyfd, nc->rstate.mstream, nc->rstate.mstrsize)){
ret = -1;
}
@ -649,6 +647,9 @@ notcurses_render_internal(notcurses* nc){
if(nc->renderfp){
fprintf(nc->renderfp, "%s\n", nc->rstate.mstream);
}
if(ret){
return ret;
}
return nc->rstate.mstrsize;
}

Loading…
Cancel
Save