[openjk] 22/32: SP: Merge ui_screenshotType additions from MP

Simon McVittie smcv at debian.org
Sun Mar 12 18:03:04 UTC 2017


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch debian/master
in repository openjk.

commit 59548a41db45518b5f6cc95e5c6ed6bb66769e24
Author: Ensiform <ensiform at gmail.com>
Date:   Sat Mar 11 17:06:22 2017 -0600

    SP: Merge ui_screenshotType additions from MP
---
 code/ui/ui_main.cpp   | 130 +++++++++++++++++++++++++++++++++++++-------------
 code/ui/ui_shared.cpp |  18 ++++++-
 code/ui/ui_shared.h   |   8 ++++
 3 files changed, 122 insertions(+), 34 deletions(-)

diff --git a/code/ui/ui_main.cpp b/code/ui/ui_main.cpp
index 2fd0aae..d229261 100644
--- a/code/ui/ui_main.cpp
+++ b/code/ui/ui_main.cpp
@@ -354,15 +354,39 @@ uiInfo_t uiInfo;
 static void UI_RegisterCvars( void );
 void UI_Load(void);
 
+static int UI_GetScreenshotFormatForString( const char *str ) {
+	if ( !Q_stricmp(str, "jpg") || !Q_stricmp(str, "jpeg") )
+		return SSF_JPEG;
+	else if ( !Q_stricmp(str, "tga") )
+		return SSF_TGA;
+	else if ( !Q_stricmp(str, "png") )
+		return SSF_PNG;
+	else
+		return -1;
+}
 
-typedef struct {
+static const char *UI_GetScreenshotFormatString( int format )
+{
+	switch ( format )
+	{
+	default:
+	case SSF_JPEG:
+		return "jpg";
+	case SSF_TGA:
+		return "tga";
+	case SSF_PNG:
+		return "png";
+	}
+}
+
+typedef struct cvarTable_s {
 	vmCvar_t	*vmCvar;
 	const char		*cvarName;
 	const char		*defaultString;
-	int			cvarFlags;
+	void		(*update)( void );
+	uint32_t	cvarFlags;
 } cvarTable_t;
 
-
 vmCvar_t	ui_menuFiles;
 vmCvar_t	ui_hudFiles;
 
@@ -380,40 +404,76 @@ vmCvar_t	ui_char_color_red;
 vmCvar_t	ui_char_color_green;
 vmCvar_t	ui_char_color_blue;
 vmCvar_t	ui_PrecacheModels;
+vmCvar_t	ui_screenshotType;
+
+static void UI_UpdateScreenshot( void )
+{
+	qboolean changed = qfalse;
+	// check some things
+	if ( ui_screenshotType.string[0] && isalpha( ui_screenshotType.string[0] ) )
+	{
+		int ssf = UI_GetScreenshotFormatForString( ui_screenshotType.string );
+		if ( ssf == -1 )
+		{
+			ui.Printf( "UI Screenshot Format Type '%s' unrecognised, defaulting to JPEG\n", ui_screenshotType.string );
+			uiInfo.uiDC.screenshotFormat = SSF_JPEG;
+			changed = qtrue;
+		}
+		else
+			uiInfo.uiDC.screenshotFormat = ssf;
+	}
+	else if ( ui_screenshotType.integer < SSF_JPEG || ui_screenshotType.integer > SSF_PNG )
+	{
+		ui.Printf( "ui_screenshotType %i is out of range, defaulting to 0 (JPEG)\n", ui_screenshotType.integer );
+		uiInfo.uiDC.screenshotFormat = SSF_JPEG;
+		changed = qtrue;
+	}
+	else {
+		uiInfo.uiDC.screenshotFormat = atoi( ui_screenshotType.string );
+		changed = qtrue;
+	}
+
+	if ( changed ) {
+		Cvar_Set( "ui_screenshotType", UI_GetScreenshotFormatString( uiInfo.uiDC.screenshotFormat ) );
+		Cvar_Update( &ui_screenshotType );
+	}
+}
 
 static cvarTable_t cvarTable[] =
 {
-	{ &ui_menuFiles,			"ui_menuFiles",			"ui/menus.txt", CVAR_ARCHIVE },
+	{ &ui_menuFiles,			"ui_menuFiles",			"ui/menus.txt", NULL, CVAR_ARCHIVE },
 #ifdef JK2_MODE
-	{ &ui_hudFiles,				"cg_hudFiles",			"ui/jk2hud.txt",CVAR_ARCHIVE},
+	{ &ui_hudFiles,				"cg_hudFiles",			"ui/jk2hud.txt", NULL, CVAR_ARCHIVE},
 #else
-	{ &ui_hudFiles,				"cg_hudFiles",			"ui/jahud.txt",CVAR_ARCHIVE},
+	{ &ui_hudFiles,				"cg_hudFiles",			"ui/jahud.txt", NULL, CVAR_ARCHIVE},
 #endif
 
-	{ &ui_char_anim,			"ui_char_anim",			"BOTH_WALK1",0},
+	{ &ui_char_anim,			"ui_char_anim",			"BOTH_WALK1", NULL, 0},
 
-	{ &ui_char_model,			"ui_char_model",		"",0},	//these are filled in by the "g_*" versions on load
-	{ &ui_char_skin_head,		"ui_char_skin_head",	"",0},	//the "g_*" versions are initialized in UI_Init, ui_atoms.cpp
-	{ &ui_char_skin_torso,		"ui_char_skin_torso",	"",0},
-	{ &ui_char_skin_legs,		"ui_char_skin_legs",	"",0},
+	{ &ui_char_model,			"ui_char_model",		"", NULL, 0},	//these are filled in by the "g_*" versions on load
+	{ &ui_char_skin_head,		"ui_char_skin_head",	"", NULL, 0},	//the "g_*" versions are initialized in UI_Init, ui_atoms.cpp
+	{ &ui_char_skin_torso,		"ui_char_skin_torso",	"", NULL, 0},
+	{ &ui_char_skin_legs,		"ui_char_skin_legs",	"", NULL, 0},
 
-	{ &ui_saber_type,			"ui_saber_type",		"",0},
-	{ &ui_saber,				"ui_saber",				"",0},
-	{ &ui_saber2,				"ui_saber2",			"",0},
-	{ &ui_saber_color,			"ui_saber_color",		"",0},
-	{ &ui_saber2_color,			"ui_saber2_color",		"",0},
+	{ &ui_saber_type,			"ui_saber_type",		"", NULL, 0},
+	{ &ui_saber,				"ui_saber",				"", NULL, 0},
+	{ &ui_saber2,				"ui_saber2",			"", NULL, 0},
+	{ &ui_saber_color,			"ui_saber_color",		"", NULL, 0},
+	{ &ui_saber2_color,			"ui_saber2_color",		"", NULL, 0},
 
-	{ &ui_char_color_red,		"ui_char_color_red",	"", 0},
-	{ &ui_char_color_green,		"ui_char_color_green",	"", 0},
-	{ &ui_char_color_blue,		"ui_char_color_blue",	"", 0},
+	{ &ui_char_color_red,		"ui_char_color_red",	"", NULL, 0},
+	{ &ui_char_color_green,		"ui_char_color_green",	"", NULL, 0},
+	{ &ui_char_color_blue,		"ui_char_color_blue",	"", NULL, 0},
 
-	{ &ui_PrecacheModels,		"ui_PrecacheModels",	"1", CVAR_ARCHIVE},
+	{ &ui_PrecacheModels,		"ui_PrecacheModels",	"1", NULL, CVAR_ARCHIVE},
+
+	{ &ui_screenshotType,		"ui_screenshotType",	"jpg", UI_UpdateScreenshot, CVAR_ARCHIVE }
 };
 
 #define FP_UPDATED_NONE -1
 #define NOWEAPON -1
 
-static int cvarTableSize = sizeof(cvarTable) / sizeof(cvarTable[0]);
+static const size_t cvarTableSize = ARRAY_LEN( cvarTable );
 
 void Text_Paint(float x, float y, float scale, vec4_t color, const char *text, int iMaxPixelWidth, int style, int iFontIndex);
 int Key_GetCatcher( void );
@@ -461,8 +521,6 @@ void _UI_Refresh( int realtime )
 		uiInfo.uiDC.FPS = 1000 * UI_FPS_FRAMES / total;
 	}
 
-
-
 	UI_UpdateCvars();
 
 	if (Menu_Count() > 0)
@@ -2719,7 +2777,6 @@ void _UI_Init( qboolean inGameLoad )
 
 }
 
-
 /*
 =================
 UI_RegisterCvars
@@ -2727,12 +2784,13 @@ UI_RegisterCvars
 */
 static void UI_RegisterCvars( void )
 {
-	int			i;
-	cvarTable_t	*cv;
+	size_t i = 0;
+	const cvarTable_t *cv = NULL;
 
-	for ( i = 0, cv = cvarTable ; i < cvarTableSize ; i++, cv++ )
-	{
+	for ( i=0, cv=cvarTable; i<cvarTableSize; i++, cv++ ) {
 		Cvar_Register( cv->vmCvar, cv->cvarName, cv->defaultString, cv->cvarFlags );
+		if ( cv->update )
+			cv->update();
 	}
 }
 
@@ -3600,12 +3658,18 @@ UI_UpdateCvars
 */
 void UI_UpdateCvars( void )
 {
-	int			i;
-	cvarTable_t	*cv;
+	size_t i = 0;
+	const cvarTable_t *cv = NULL;
 
-	for ( i = 0, cv = cvarTable ; i < cvarTableSize ; i++, cv++ )
-	{
-		Cvar_Update( cv->vmCvar );
+	for ( i=0, cv=cvarTable; i<cvarTableSize; i++, cv++ ) {
+		if ( cv->vmCvar ) {
+			int modCount = cv->vmCvar->modificationCount;
+			Cvar_Update( cv->vmCvar );
+			if ( cv->vmCvar->modificationCount != modCount ) {
+				if ( cv->update )
+					cv->update();
+			}
+		}
 	}
 }
 
diff --git a/code/ui/ui_shared.cpp b/code/ui/ui_shared.cpp
index 2ab8b1a..379e677 100644
--- a/code/ui/ui_shared.cpp
+++ b/code/ui/ui_shared.cpp
@@ -11283,7 +11283,23 @@ void Menu_HandleKey(menuDef_t *menu, int key, qboolean down)
 		case A_F12:
 			if (DC->getCVarValue("developer"))
 			{
-				DC->executeText(EXEC_APPEND, "screenshot\n");
+				switch ( DC->screenshotFormat )
+				{
+					case SSF_JPEG:
+						DC->executeText(EXEC_APPEND, "screenshot\n");
+						break;
+					case SSF_TGA:
+						DC->executeText(EXEC_APPEND, "screenshot_tga\n");
+						break;
+					case SSF_PNG:
+						DC->executeText(EXEC_APPEND, "screenshot_png\n");
+						break;
+					default:
+						if (DC->Print) {
+							DC->Print(S_COLOR_YELLOW "Menu_HandleKey[F12]: Unknown screenshot format assigned! This should not happen.\n");
+						}
+						break;
+				}
 			}
 			break;
 		case A_KP_8:
diff --git a/code/ui/ui_shared.h b/code/ui/ui_shared.h
index a661370..1eb849e 100644
--- a/code/ui/ui_shared.h
+++ b/code/ui/ui_shared.h
@@ -24,6 +24,12 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
 #ifndef __UI_SHARED_H
 #define __UI_SHARED_H
 
+enum {
+	SSF_JPEG = 0,
+	SSF_TGA,
+	SSF_PNG
+};
+
 #define MAX_TOKENLENGTH		1024
 #define MAX_OPEN_MENUS 16
 #define	MAX_TEXTSCROLL_LINES		256
@@ -239,6 +245,8 @@ typedef struct {
 	qhandle_t	gradientImage;
 	float FPS;
 
+	int			screenshotFormat;
+
 } displayContextDef_t;
 
 void UI_InitMemory( void );

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/openjk.git



More information about the Pkg-games-commits mailing list