Disable by default, add menu option

This commit is contained in:
Jaime Ita Passos 2020-12-19 14:25:03 -03:00
parent 7ca444cfd1
commit 928b236af3
4 changed files with 40 additions and 13 deletions

View file

@ -51,15 +51,15 @@ consvar_t cv_gif_optimize = CVAR_INIT ("gif_optimize", "On", CV_SAVE, CV_OnOff,
consvar_t cv_gif_downscale = CVAR_INIT ("gif_downscale", "On", CV_SAVE, CV_OnOff, NULL); consvar_t cv_gif_downscale = CVAR_INIT ("gif_downscale", "On", CV_SAVE, CV_OnOff, NULL);
consvar_t cv_gif_dynamicdelay = CVAR_INIT ("gif_dynamicdelay", "On", CV_SAVE, gif_dynamicdelay_cons_t, NULL); consvar_t cv_gif_dynamicdelay = CVAR_INIT ("gif_dynamicdelay", "On", CV_SAVE, gif_dynamicdelay_cons_t, NULL);
consvar_t cv_gif_localcolortable = CVAR_INIT ("gif_localcolortable", "On", CV_SAVE, CV_OnOff, NULL); consvar_t cv_gif_localcolortable = CVAR_INIT ("gif_localcolortable", "On", CV_SAVE, CV_OnOff, NULL);
consvar_t cv_gif_split = CVAR_INIT ("gif_split", "Use last filename", CV_SAVE, gif_split_cons_t, NULL); consvar_t cv_gif_split = CVAR_INIT ("gif_split", "Off", CV_SAVE, gif_split_cons_t, NULL);
consvar_t cv_gif_sizelimit = CVAR_INIT ("gif_sizelimit", "8192", (CV_SAVE | CV_CALL), CV_Unsigned, CV_gifsizelimit_OnChange); consvar_t cv_gif_sizelimit = CVAR_INIT ("gif_sizelimit", "0", (CV_SAVE | CV_CALL), CV_Unsigned, CV_gifsizelimit_OnChange);
consvar_t cv_gif_showfilesize = CVAR_INIT ("gif_showfilesize", "On", CV_SAVE, CV_OnOff, NULL); consvar_t cv_gif_showfilesize = CVAR_INIT ("gif_showfilesize", "Off", CV_SAVE, CV_OnOff, NULL);
consvar_t cv_gif_showsplitcount = CVAR_INIT ("gif_showsplitcount", "On", CV_SAVE, CV_OnOff, NULL); consvar_t cv_gif_showsplitcount = CVAR_INIT ("gif_showsplitcount", "Off", CV_SAVE, CV_OnOff, NULL);
#ifdef HAVE_ANIGIF #ifdef HAVE_ANIGIF
static boolean gif_optimize = false; // So nobody can do something dumb static boolean gif_optimize = false; // So nobody can do something dumb
static boolean gif_downscale = false; // like changing cvars mid output static boolean gif_downscale = false; // like changing cvars mid output
static UINT8 gif_dynamicdelay = (UINT8)0; // and messing something up static UINT8 gif_dynamicdelay = 0; // and messing something up
// Palette handling // Palette handling
static boolean gif_localcolortable = false; static boolean gif_localcolortable = false;
@ -984,17 +984,22 @@ void GIF_displayinfo(void)
y += ((vid.dupx > 1) ? 5 : 10); \ y += ((vid.dupx > 1) ? 5 : 10); \
} }
if (!gif_sizelimit) if (!gif_out)
return; return;
if (cv_gif_showfilesize.value) if (cv_gif_showfilesize.value)
{ {
GIF_getinfosize(gif_totalsize, &filesize[0], &unit[0][0]); GIF_getinfosize(gif_totalsize, &filesize[0], &unit[0][0]);
if (gif_sizelimit)
{
GIF_getinfosize(gif_sizelimit, &filesize[1], &unit[1][0]); GIF_getinfosize(gif_sizelimit, &filesize[1], &unit[1][0]);
string = va(M_GetText("GIF size: %.2f%s/%.2f%s"), filesize[0], unit[0], filesize[1], unit[1]);
}
else
string = va(M_GetText("GIF size: %.2f%s"), filesize[0], unit[0]);
string = va("%.2f%s/%.2f%s", filesize[0], unit[0], filesize[1], unit[1]); if (gif_sizelimit && (!cv_gif_split.value)
if ((!cv_gif_split.value)
&& (gif_totalsize > (gif_sizelimit - (gif_sizelimit / 4))) && (gif_totalsize > (gif_sizelimit - (gif_sizelimit / 4)))
&& (gif_frames/5 & 1)) // flashing && (gif_frames/5 & 1)) // flashing
stringflags |= V_REDMAP; stringflags |= V_REDMAP;
@ -1008,6 +1013,22 @@ void GIF_displayinfo(void)
string = va("GIF count: %d\n", (gif_splitcount + 1)); string = va("GIF count: %d\n", (gif_splitcount + 1));
infoline(string); infoline(string);
} }
#undef infoline
}
boolean GIF_candisplayinfo(void)
{
if (!gif_out)
return false;
if (cv_gif_showfilesize.value)
return true;
if (cv_gif_split.value && gif_splitcount && cv_gif_showsplitcount.value)
return true;
return false;
} }
// //

View file

@ -26,6 +26,7 @@ INT32 GIF_open(const char *filename);
void GIF_frame(void); void GIF_frame(void);
INT32 GIF_close(void); INT32 GIF_close(void);
void GIF_displayinfo(void); void GIF_displayinfo(void);
boolean GIF_candisplayinfo(void);
#endif #endif
extern consvar_t cv_gif_optimize, cv_gif_downscale, cv_gif_dynamicdelay, cv_gif_localcolortable; extern consvar_t cv_gif_optimize, cv_gif_downscale, cv_gif_dynamicdelay, cv_gif_localcolortable;

View file

@ -1557,6 +1557,7 @@ static menuitem_t OP_ScreenshotOptionsMenu[] =
{IT_STRING|IT_CVAR, NULL, "Region Optimizing", &cv_gif_optimize, 100}, {IT_STRING|IT_CVAR, NULL, "Region Optimizing", &cv_gif_optimize, 100},
{IT_STRING|IT_CVAR, NULL, "Local Color Table", &cv_gif_localcolortable, 105}, {IT_STRING|IT_CVAR, NULL, "Local Color Table", &cv_gif_localcolortable, 105},
{IT_STRING|IT_CVAR, NULL, "Dynamic Delay", &cv_gif_dynamicdelay, 110}, {IT_STRING|IT_CVAR, NULL, "Dynamic Delay", &cv_gif_dynamicdelay, 110},
{IT_STRING|IT_CVAR, NULL, "Show File Size", &cv_gif_showfilesize, 115},
{IT_STRING|IT_CVAR, NULL, "Downscaling", &cv_apng_downscale, 95}, {IT_STRING|IT_CVAR, NULL, "Downscaling", &cv_apng_downscale, 95},
{IT_STRING|IT_CVAR, NULL, "Memory Level", &cv_zlib_memorya, 100}, {IT_STRING|IT_CVAR, NULL, "Memory Level", &cv_zlib_memorya, 100},
@ -1573,9 +1574,9 @@ enum
op_movie_folder = 11, op_movie_folder = 11,
op_screenshot_capture = 12, op_screenshot_capture = 12,
op_screenshot_gif_start = 13, op_screenshot_gif_start = 13,
op_screenshot_gif_end = 16, op_screenshot_gif_end = 17,
op_screenshot_apng_start = 17, op_screenshot_apng_start = 18,
op_screenshot_apng_end = 21, op_screenshot_apng_end = 22,
}; };
static menuitem_t OP_EraseDataMenu[] = static menuitem_t OP_EraseDataMenu[] =

View file

@ -518,7 +518,11 @@ boolean SCR_UseDelayedOverlay(void)
boolean SCR_NeedsDelayedOverlay(void) boolean SCR_NeedsDelayedOverlay(void)
{ {
return (moviemode == MM_GIF); #ifdef HAVE_ANIGIF
return (moviemode == MM_GIF && GIF_candisplayinfo());
#else
return false;
#endif
} }
// XMOD FPS display // XMOD FPS display