[ncplayer] flipmode

This commit is contained in:
nick black 2021-03-22 01:00:46 -04:00 committed by Nick Black
parent 115135098b
commit 086c151ac8

View File

@ -319,27 +319,10 @@ int direct_mode_player(int argc, char** argv, ncscale_e scalemode,
return failed ? -1 : 0; return failed ? -1 : 0;
} }
auto main(int argc, char** argv) -> int { int rendered_mode_player(int argc, char** argv, ncscale_e scalemode,
if(setlocale(LC_ALL, "") == nullptr){ ncblitter_e blitter, notcurses_options& ncopts,
std::cerr << "Couldn't set locale based off LANG\n"; bool quiet, bool loop,
return EXIT_FAILURE; double timescale, double displaytime){
}
float timescale, displaytime;
ncscale_e scalemode;
notcurses_options ncopts{};
ncblitter_e blitter = NCBLIT_DEFAULT;
bool quiet = false;
bool loop = false;
auto nonopt = handle_opts(argc, argv, ncopts, &quiet, &timescale, &scalemode,
&blitter, &displaytime, &loop);
// if -k was provided, we now use direct mode rather than simply not using the
// alternate screen, so that output is inline with the shell.
if(ncopts.flags & NCOPTION_NO_ALTERNATE_SCREEN){
if(direct_mode_player(argc - nonopt, argv + nonopt, scalemode, blitter, ncopts.margin_l, ncopts.margin_r)){
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
// no -k, we're using full rendered mode (and the alternate screen). // no -k, we're using full rendered mode (and the alternate screen).
ncopts.flags |= NCOPTION_INHIBIT_SETLOCALE; ncopts.flags |= NCOPTION_INHIBIT_SETLOCALE;
if(quiet){ if(quiet){
@ -355,7 +338,7 @@ auto main(int argc, char** argv) -> int {
bool failed = false; bool failed = false;
{ {
std::unique_ptr<Plane> stdn(nc.get_stdplane(&dimy, &dimx)); std::unique_ptr<Plane> stdn(nc.get_stdplane(&dimy, &dimx));
for(auto i = nonopt ; i < argc ; ++i){ for(auto i = 0 ; i < argc ; ++i){
std::unique_ptr<Visual> ncv; std::unique_ptr<Visual> ncv;
try{ try{
ncv = std::make_unique<Visual>(argv[i]); ncv = std::make_unique<Visual>(argv[i]);
@ -436,7 +419,35 @@ auto main(int argc, char** argv) -> int {
} }
done: done:
if(!nc.stop()){ if(!nc.stop()){
return -1;
}
return failed;
}
auto main(int argc, char** argv) -> int {
if(setlocale(LC_ALL, "") == nullptr){
std::cerr << "Couldn't set locale based off LANG\n";
return EXIT_FAILURE; return EXIT_FAILURE;
} }
return failed ? EXIT_FAILURE : EXIT_SUCCESS; float timescale, displaytime;
ncscale_e scalemode;
notcurses_options ncopts{};
ncblitter_e blitter = NCBLIT_DEFAULT;
bool quiet = false;
bool loop = false;
auto nonopt = handle_opts(argc, argv, ncopts, &quiet, &timescale, &scalemode,
&blitter, &displaytime, &loop);
int r;
// if -k was provided, we now use direct mode rather than simply not using the
// alternate screen, so that output is inline with the shell.
if(ncopts.flags & NCOPTION_NO_ALTERNATE_SCREEN){
r = direct_mode_player(argc - nonopt, argv + nonopt, scalemode, blitter, ncopts.margin_l, ncopts.margin_r);
}else{
r = rendered_mode_player(argc - nonopt, argv + nonopt, scalemode, blitter, ncopts,
quiet, loop, timescale, displaytime);
}
if(r){
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
} }