notcurses-view: select blitter with numbers #671

pull/677/head
nick black 4 years ago
parent 2b31d6ce4d
commit c0f820db94
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

@ -40,6 +40,10 @@ area exactly. **scale** resizes the object so that the longer edge of the
rendering area is matched exactly, and the other edge is changed to rendering area is matched exactly, and the other edge is changed to
maintain aspect ratio. **none** uses the original image size. maintain aspect ratio. **none** uses the original image size.
Blitters can be selected by pressing '0' through '8'. **NCBLIT_DEFAULT**
corresponds to '0'. The various blitters are described in
**notcurses_visual**.
# NOTES # NOTES
Optimal display requires a terminal advertising the **rgb** terminfo(5) Optimal display requires a terminal advertising the **rgb** terminfo(5)
@ -50,6 +54,6 @@ fixed-width font with good coverage of the Unicode Block Drawing Characters.
# SEE ALSO # SEE ALSO
**notcurses(3)**, **notcurses(3)**,
**notcurses_ncvisual(3)**, **notcurses_visual(3)**,
**terminfo(5)**, **terminfo(5)**,
**unicode(7)** **unicode(7)**

@ -1,9 +1,9 @@
% notcurses_ncvisual(3) % notcurses_visual(3)
% nick black <nickblack@linux.com> % nick black <nickblack@linux.com>
% v1.4.4.1 % v1.4.4.1
# NAME # NAME
notcurses_ncvisual - notcurses multimedia notcurses_visual - notcurses multimedia
# SYNOPSIS # SYNOPSIS

@ -15,11 +15,15 @@ lookup_blitset(const struct notcurses* nc, ncblitter_e setid, bool may_degrade)
} }
const struct blitset* bset = notcurses_blitters; const struct blitset* bset = notcurses_blitters;
while(bset->egcs){ while(bset->egcs){
if(bset->geom == setid){ if(bset->geom == setid && bset->blit){
return bset; return bset;
} }
++bset; ++bset;
} }
// handle other currently-invalid blitters via degrade
if(may_degrade){
return lookup_blitset(nc, NCBLIT_2x1, true);
}
return NULL; return NULL;
} }

@ -106,6 +106,9 @@ auto perframe(struct ncplane* n, struct ncvisual* ncv,
if(keyp == NCKEY_RESIZE){ if(keyp == NCKEY_RESIZE){
return 0; return 0;
} }
if(keyp >= '0' && keyp <= '8'){ // FIXME eliminate ctrl/alt
// FIXME change blitter -- how?
}
return 1; return 1;
} }
} }
@ -195,6 +198,7 @@ auto main(int argc, char** argv) -> int {
std::cerr << "Notcurses was compiled without multimedia support\n"; std::cerr << "Notcurses was compiled without multimedia support\n";
return EXIT_FAILURE; return EXIT_FAILURE;
} }
ncblitter_e blitter = NCBLIT_DEFAULT;
int dimy, dimx; int dimy, dimx;
bool failed = false; bool failed = false;
{ {
@ -214,6 +218,8 @@ auto main(int argc, char** argv) -> int {
struct ncvisual_options vopts{}; struct ncvisual_options vopts{};
vopts.n = *stdn; vopts.n = *stdn;
vopts.scaling = scalemode; vopts.scaling = scalemode;
vopts.blitter = blitter;
vopts.flags = NCVISUAL_OPTION_MAYDEGRADE;
int r = ncv->stream(&vopts, &err, timescale, perframe, &frames); int r = ncv->stream(&vopts, &err, timescale, perframe, &frames);
if(r < 0){ // positive is intentional abort if(r < 0){ // positive is intentional abort
std::cerr << "Error decoding " << argv[i] << ": " << nc_strerror(err) << std::endl; std::cerr << "Error decoding " << argv[i] << ": " << nc_strerror(err) << std::endl;
@ -228,6 +234,9 @@ auto main(int argc, char** argv) -> int {
break; break;
}else if(ie == 'q'){ }else if(ie == 'q'){
break; break;
}else if(ie >= '0' && ie <= '8'){
--i; // rerun same input with the new blitter
blitter = static_cast<ncblitter_e>(ie - '0');
}else if(ie == NCKey::Resize){ }else if(ie == NCKey::Resize){
--i; // rerun with the new size --i; // rerun with the new size
if(!nc.refresh(&dimy, &dimx)){ if(!nc.refresh(&dimy, &dimx)){

Loading…
Cancel
Save