mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-03-23 03:12:38 +00:00
Disable colour profile influence on screenshots and gifs if you want.
This commit is contained in:
parent
9d46ba281f
commit
8b46ee76ff
5 changed files with 75 additions and 34 deletions
|
@ -612,6 +612,7 @@ void D_RegisterClientCommands(void)
|
|||
|
||||
CV_RegisterVar(&cv_screenshot_option);
|
||||
CV_RegisterVar(&cv_screenshot_folder);
|
||||
CV_RegisterVar(&cv_screenshot_colorprofile);
|
||||
CV_RegisterVar(&cv_moviemode);
|
||||
// PNG variables
|
||||
CV_RegisterVar(&cv_zlib_level);
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "z_zone.h"
|
||||
#include "v_video.h"
|
||||
#include "i_video.h"
|
||||
#include "m_misc.h"
|
||||
|
||||
// GIFs are always little-endian
|
||||
#include "byteptr.h"
|
||||
|
@ -396,7 +397,6 @@ static void GIF_headwrite(void)
|
|||
{
|
||||
UINT8 *gifhead = Z_Malloc(800, PU_STATIC, NULL);
|
||||
UINT8 *p = gifhead;
|
||||
RGBA_t *c;
|
||||
INT32 i;
|
||||
UINT16 rwidth, rheight;
|
||||
|
||||
|
@ -427,12 +427,24 @@ static void GIF_headwrite(void)
|
|||
WRITEUINT8(p, 0x00);
|
||||
|
||||
// write color table
|
||||
for (i = 0; i < 256; ++i)
|
||||
if (cv_screenshot_colorprofile.value)
|
||||
{
|
||||
c = &pLocalPalette[i];
|
||||
WRITEUINT8(p, c->s.red);
|
||||
WRITEUINT8(p, c->s.green);
|
||||
WRITEUINT8(p, c->s.blue);
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
WRITEUINT8(p, pLocalPalette[i].s.red);
|
||||
WRITEUINT8(p, pLocalPalette[i].s.green);
|
||||
WRITEUINT8(p, pLocalPalette[i].s.blue);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
const UINT8 *pal = (UINT8 *)W_CacheLumpName(GetPalette(), PU_CACHE);
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
WRITEUINT8(p, *pal); pal++;
|
||||
WRITEUINT8(p, *pal); pal++;
|
||||
WRITEUINT8(p, *pal); pal++;
|
||||
}
|
||||
}
|
||||
|
||||
// write extension block
|
||||
|
|
59
src/m_menu.c
59
src/m_menu.c
|
@ -1314,35 +1314,36 @@ static menuitem_t OP_DataOptionsMenu[] =
|
|||
|
||||
static menuitem_t OP_ScreenshotOptionsMenu[] =
|
||||
{
|
||||
{IT_STRING|IT_CVAR, NULL, "Storage Location", &cv_screenshot_option, 10},
|
||||
{IT_STRING|IT_CVAR|IT_CV_STRING, NULL, "Custom Folder", &cv_screenshot_folder, 20},
|
||||
{IT_STRING|IT_CVAR, NULL, "Use color profile", &cv_screenshot_colorprofile, 0},
|
||||
{IT_STRING|IT_CVAR, NULL, "Storage Location", &cv_screenshot_option, 5},
|
||||
{IT_STRING|IT_CVAR|IT_CV_STRING, NULL, "Custom Folder", &cv_screenshot_folder, 10},
|
||||
|
||||
{IT_HEADER, NULL, "Screenshots (F8)", NULL, 48},
|
||||
{IT_STRING|IT_CVAR, NULL, "Memory Level", &cv_zlib_memory, 60},
|
||||
{IT_STRING|IT_CVAR, NULL, "Compression Level", &cv_zlib_level, 70},
|
||||
{IT_STRING|IT_CVAR, NULL, "Strategy", &cv_zlib_strategy, 80},
|
||||
{IT_STRING|IT_CVAR, NULL, "Window Size", &cv_zlib_window_bits, 90},
|
||||
{IT_HEADER, NULL, "Screenshots (F8)", NULL, 24},
|
||||
{IT_STRING|IT_CVAR, NULL, "Memory Level", &cv_zlib_memory, 30},
|
||||
{IT_STRING|IT_CVAR, NULL, "Compression Level", &cv_zlib_level, 35},
|
||||
{IT_STRING|IT_CVAR, NULL, "Strategy", &cv_zlib_strategy, 40},
|
||||
{IT_STRING|IT_CVAR, NULL, "Window Size", &cv_zlib_window_bits, 45},
|
||||
|
||||
{IT_HEADER, NULL, "Movie Mode (F9)", NULL, 103},
|
||||
{IT_STRING|IT_CVAR, NULL, "Capture Mode", &cv_moviemode, 115},
|
||||
{IT_HEADER, NULL, "Movie Mode (F9)", NULL, 54},
|
||||
{IT_STRING|IT_CVAR, NULL, "Capture Mode", &cv_moviemode, 60},
|
||||
|
||||
{IT_STRING|IT_CVAR, NULL, "Region Optimizing", &cv_gif_optimize, 125},
|
||||
{IT_STRING|IT_CVAR, NULL, "Downscaling", &cv_gif_downscale, 135},
|
||||
{IT_STRING|IT_CVAR, NULL, "Region Optimizing", &cv_gif_optimize, 65},
|
||||
{IT_STRING|IT_CVAR, NULL, "Downscaling", &cv_gif_downscale, 70},
|
||||
|
||||
{IT_STRING|IT_CVAR, NULL, "Memory Level", &cv_zlib_memorya, 125},
|
||||
{IT_STRING|IT_CVAR, NULL, "Compression Level", &cv_zlib_levela, 135},
|
||||
{IT_STRING|IT_CVAR, NULL, "Strategy", &cv_zlib_strategya, 145},
|
||||
{IT_STRING|IT_CVAR, NULL, "Window Size", &cv_zlib_window_bitsa, 155},
|
||||
{IT_STRING|IT_CVAR, NULL, "Memory Level", &cv_zlib_memorya, 65},
|
||||
{IT_STRING|IT_CVAR, NULL, "Compression Level", &cv_zlib_levela, 70},
|
||||
{IT_STRING|IT_CVAR, NULL, "Strategy", &cv_zlib_strategya, 75},
|
||||
{IT_STRING|IT_CVAR, NULL, "Window Size", &cv_zlib_window_bitsa, 80},
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
op_screenshot_folder = 1,
|
||||
op_screenshot_capture = 8,
|
||||
op_screenshot_gif_start = 9,
|
||||
op_screenshot_gif_end = 10,
|
||||
op_screenshot_apng_start = 11,
|
||||
op_screenshot_apng_end = 14,
|
||||
op_screenshot_folder = 2,
|
||||
op_screenshot_capture = 9,
|
||||
op_screenshot_gif_start = 10,
|
||||
op_screenshot_gif_end = 11,
|
||||
op_screenshot_apng_start = 12,
|
||||
op_screenshot_apng_end = 15,
|
||||
};
|
||||
|
||||
static menuitem_t OP_EraseDataMenu[] =
|
||||
|
@ -1841,7 +1842,19 @@ menu_t OP_OpenGLColorDef =
|
|||
};
|
||||
#endif
|
||||
menu_t OP_DataOptionsDef = DEFAULTMENUSTYLE("M_DATA", OP_DataOptionsMenu, &OP_MainDef, 30, 30);
|
||||
menu_t OP_ScreenshotOptionsDef = DEFAULTMENUSTYLE("M_DATA", OP_ScreenshotOptionsMenu, &OP_DataOptionsDef, 30, 30);
|
||||
|
||||
menu_t OP_ScreenshotOptionsDef =
|
||||
{
|
||||
"M_DATA",
|
||||
sizeof (OP_ScreenshotOptionsMenu)/sizeof (menuitem_t),
|
||||
&OP_DataOptionsDef,
|
||||
OP_ScreenshotOptionsMenu,
|
||||
M_DrawGenericScrollMenu,
|
||||
30, 30,
|
||||
0,
|
||||
NULL
|
||||
};
|
||||
|
||||
menu_t OP_EraseDataDef = DEFAULTMENUSTYLE("M_DATA", OP_EraseDataMenu, &OP_DataOptionsDef, 60, 30);
|
||||
|
||||
// ==========================================================================
|
||||
|
@ -3279,7 +3292,7 @@ static void M_DrawGenericScrollMenu(void)
|
|||
|
||||
for (max = currentMenu->numitems; max > 0; max--)
|
||||
{
|
||||
if (currentMenu->menuitems[max-1].status != IT_DISABLED && currentMenu->menuitems[max-1].alphaKey*2 + tempcentery <= (currentMenu->y + 2*scrollareaheight))
|
||||
if (currentMenu->menuitems[max-1].alphaKey*2 + tempcentery <= (currentMenu->y + 2*scrollareaheight))
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
23
src/m_misc.c
23
src/m_misc.c
|
@ -100,6 +100,8 @@ static CV_PossibleValue_t screenshot_cons_t[] = {{0, "Default"}, {1, "HOME"}, {2
|
|||
consvar_t cv_screenshot_option = {"screenshot_option", "Default", CV_SAVE|CV_CALL, screenshot_cons_t, Screenshot_option_Onchange, 0, NULL, NULL, 0, 0, NULL};
|
||||
consvar_t cv_screenshot_folder = {"screenshot_folder", "", CV_SAVE, NULL, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
|
||||
consvar_t cv_screenshot_colorprofile = {"screenshot_colorprofile", "Yes", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
|
||||
static CV_PossibleValue_t moviemode_cons_t[] = {{MM_GIF, "GIF"}, {MM_APNG, "aPNG"}, {MM_SCREENSHOT, "Screenshots"}, {0, NULL}};
|
||||
consvar_t cv_moviemode = {"moviemode_mode", "GIF", CV_SAVE|CV_CALL, moviemode_cons_t, Moviemode_mode_Onchange, 0, NULL, NULL, 0, 0, NULL};
|
||||
|
||||
|
@ -617,11 +619,24 @@ static void M_PNGhdr(png_structp png_ptr, png_infop png_info_ptr, PNG_CONST png_
|
|||
{
|
||||
png_colorp png_PLTE = png_malloc(png_ptr, sizeof(png_color)*256); //palette
|
||||
png_uint_16 i;
|
||||
for (i = 0; i < 256; i++)
|
||||
if (cv_screenshot_colorprofile.value)
|
||||
{
|
||||
png_PLTE[i].red = pLocalPalette[i].s.red;
|
||||
png_PLTE[i].green = pLocalPalette[i].s.green;
|
||||
png_PLTE[i].blue = pLocalPalette[i].s.blue;
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
png_PLTE[i].red = pLocalPalette[i].s.red;
|
||||
png_PLTE[i].green = pLocalPalette[i].s.green;
|
||||
png_PLTE[i].blue = pLocalPalette[i].s.blue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
const png_byte *pal = (png_byte *)W_CacheLumpName(GetPalette(), PU_CACHE);
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
png_PLTE[i].red = *pal++;
|
||||
png_PLTE[i].green = *pal++;
|
||||
png_PLTE[i].blue = *pal++;
|
||||
}
|
||||
}
|
||||
png_set_IHDR(png_ptr, png_info_ptr, width, height, 8, PNG_COLOR_TYPE_PALETTE,
|
||||
png_interlace, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
|
||||
|
|
|
@ -29,7 +29,7 @@ typedef enum {
|
|||
} moviemode_t;
|
||||
extern moviemode_t moviemode;
|
||||
|
||||
extern consvar_t cv_screenshot_option, cv_screenshot_folder;
|
||||
extern consvar_t cv_screenshot_option, cv_screenshot_folder, cv_screenshot_colorprofile;
|
||||
extern consvar_t cv_moviemode;
|
||||
extern consvar_t cv_zlib_memory, cv_zlib_level, cv_zlib_strategy, cv_zlib_window_bits;
|
||||
extern consvar_t cv_zlib_memorya, cv_zlib_levela, cv_zlib_strategya, cv_zlib_window_bitsa;
|
||||
|
|
Loading…
Reference in a new issue