summaryrefslogtreecommitdiff
path: root/src/gl_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gl_main.c')
-rw-r--r--src/gl_main.c214
1 files changed, 3 insertions, 211 deletions
diff --git a/src/gl_main.c b/src/gl_main.c
index dd8cde8..fc5247d 100644
--- a/src/gl_main.c
+++ b/src/gl_main.c
@@ -33,15 +33,6 @@ statCounters_t c;
int registration_sequence;
cvar_t *gl_partscale;
-#if USE_JPG || USE_PNG
-cvar_t *gl_screenshot_format;
-#endif
-#if USE_JPG
-cvar_t *gl_screenshot_quality;
-#endif
-#if USE_PNG
-cvar_t *gl_screenshot_compression;
-#endif
#if USE_CELSHADING
cvar_t *gl_celshading;
#endif
@@ -633,176 +624,7 @@ void R_EndFrame( void ) {
// qglFinish();
}
-/*
-==============================================================================
-
- SCREEN SHOTS
-
-==============================================================================
-*/
-
-#if USE_TGA || USE_JPG || USE_PNG
-static void make_screenshot( const char *name, const char *ext,
- img_save_t func, GLenum format, int param )
-{
- char buffer[MAX_OSPATH];
- byte *pixels;
- qerror_t ret;
- qhandle_t f;
- int i;
-
- if( name && *name ) {
- // save to user supplied name
- f = FS_EasyOpenFile( buffer, sizeof( buffer ), FS_MODE_WRITE,
- SCREENSHOTS_DIRECTORY "/", name, ext );
- if( !f ) {
- return;
- }
- } else {
- // find a file name to save it to
- for( i = 0; i < 1000; i++ ) {
- Q_snprintf( buffer, sizeof( buffer ), SCREENSHOTS_DIRECTORY "/quake%03d%s", i, ext );
- ret = FS_FOpenFile( buffer, &f, FS_MODE_WRITE|FS_FLAG_EXCL );
- if( f ) {
- break;
- }
- if( ret != Q_ERR_EXIST ) {
- Com_EPrintf( "Couldn't exclusively open %s for writing: %s\n",
- buffer, Q_ErrorString( ret ) );
- return;
- }
- }
-
- if( i == 1000 ) {
- Com_EPrintf( "All screenshot slots are full.\n" );
- return;
- }
- }
-
- pixels = FS_AllocTempMem( gl_config.vidWidth * gl_config.vidHeight * 3 );
-
- qglReadPixels( 0, 0, gl_config.vidWidth, gl_config.vidHeight, format,
- GL_UNSIGNED_BYTE, pixels );
-
- ret = func( f, buffer, pixels, gl_config.vidWidth, gl_config.vidHeight, param );
-
- FS_FreeFile( pixels );
-
- FS_FCloseFile( f );
-
- if( ret < 0 ) {
- Com_EPrintf( "Couldn't write %s: %s\n", buffer, Q_ErrorString( ret ) );
- } else {
- Com_Printf( "Wrote %s\n", buffer );
- }
-}
-#endif
-
-/*
-==================
-GL_ScreenShot_f
-
-Standard function to take a screenshot. Saves in default format unless user
-overrides format with a second argument. Screenshot name can't be
-specified. This function is always compiled in to give a meaningful warning
-if no formats are available.
-==================
-*/
-static void GL_ScreenShot_f( void ) {
-#if USE_JPG || USE_PNG
- const char *s;
-
- if( Cmd_Argc() > 2 ) {
- Com_Printf( "Usage: %s [format]\n", Cmd_Argv( 0 ) );
- return;
- }
-
- if( Cmd_Argc() > 1 ) {
- s = Cmd_Argv( 1 );
- } else {
- s = gl_screenshot_format->string;
- }
-
-#if USE_JPG
- if( *s == 'j' ) {
- make_screenshot( NULL, ".jpg", IMG_SaveJPG, GL_RGB,
- gl_screenshot_quality->integer );
- return;
- }
-#endif
-
-#if USE_PNG
- if( *s == 'p' ) {
- make_screenshot( NULL, ".png", IMG_SavePNG, GL_RGB,
- gl_screenshot_compression->integer );
- return;
- }
-#endif
-#endif
-
-#if USE_TGA
- make_screenshot( NULL, ".tga", IMG_SaveTGA, GL_BGR, 0 );
-#else
- Com_Printf( "Can't take screenshot, TGA format not available.\n" );
-#endif
-}
-
-/*
-==================
-GL_ScreenShotXXX_f
-
-Specialized function to take a screenshot in specified format. Screenshot name
-can be also specified, as well as quality and compression options.
-==================
-*/
-#if USE_TGA
-static void GL_ScreenShotTGA_f( void ) {
- if( Cmd_Argc() > 2 ) {
- Com_Printf( "Usage: %s [name]\n", Cmd_Argv( 0 ) );
- return;
- }
-
- make_screenshot( Cmd_Argv( 1 ), ".tga", IMG_SaveTGA, GL_BGR, 0 );
-}
-#endif
-
-#if USE_JPG
-static void GL_ScreenShotJPG_f( void ) {
- int quality;
-
- if( Cmd_Argc() > 3 ) {
- Com_Printf( "Usage: %s [name] [quality]\n", Cmd_Argv( 0 ) );
- return;
- }
-
- if( Cmd_Argc() > 2 ) {
- quality = atoi( Cmd_Argv( 2 ) );
- } else {
- quality = gl_screenshot_quality->integer;
- }
-
- make_screenshot( Cmd_Argv( 1 ), ".jpg", IMG_SaveJPG, GL_RGB, quality );
-}
-#endif
-
-#if USE_PNG
-static void GL_ScreenShotPNG_f( void ) {
- int compression;
-
- if( Cmd_Argc() > 3 ) {
- Com_Printf( "Usage: %s [name] [compression]\n", Cmd_Argv( 0 ) );
- return;
- }
-
- if( Cmd_Argc() > 2 ) {
- compression = atoi( Cmd_Argv( 2 ) );
- } else {
- compression = gl_screenshot_compression->integer;
- }
-
- make_screenshot( Cmd_Argv( 1 ), ".png", IMG_SavePNG, GL_RGB, compression );
-}
-#endif
+// ==============================================================================
static void GL_Strings_f( void ) {
Com_Printf( "GL_VENDOR: %s\n", gl_config.vendorString );
@@ -818,41 +640,12 @@ static size_t GL_ViewCluster_m( char *buffer, size_t size ) {
return Q_scnprintf( buffer, size, "%d", glr.viewcluster1 );
}
-// ==============================================================================
-
-static const cmdreg_t gl_cmd[] = {
- { "screenshot", GL_ScreenShot_f },
-#if USE_TGA
- { "screenshottga", GL_ScreenShotTGA_f },
-#endif
-#if USE_JPG
- { "screenshotjpg", GL_ScreenShotJPG_f },
-#endif
-#if USE_PNG
- { "screenshotpng", GL_ScreenShotPNG_f },
-#endif
- { "strings", GL_Strings_f },
-
- { NULL }
-};
-
static void gl_novis_changed( cvar_t *self ) {
glr.viewcluster1 = glr.viewcluster2 = -2;
}
static void GL_Register( void ) {
gl_partscale = Cvar_Get( "gl_partscale", "2", 0 );
-#if USE_JPG
- gl_screenshot_format = Cvar_Get( "gl_screenshot_format", "jpg", 0 );
-#elif USE_PNG
- gl_screenshot_format = Cvar_Get( "gl_screenshot_format", "png", 0 );
-#endif
-#if USE_JPG
- gl_screenshot_quality = Cvar_Get( "gl_screenshot_quality", "100", 0 );
-#endif
-#if USE_PNG
- gl_screenshot_compression = Cvar_Get( "gl_screenshot_compression", "6", 0 );
-#endif
#if USE_CELSHADING
gl_celshading = Cvar_Get( "gl_celshading", "0", 0 );
#endif
@@ -892,14 +685,13 @@ static void GL_Register( void ) {
gl_showerrors = Cvar_Get( "gl_showerrors", "1", 0 );
gl_fragment_program = Cvar_Get( "gl_fragment_program", "1", 0 );
gl_vertex_buffer_object = Cvar_Get( "gl_vertex_buffer_object", "1", CVAR_FILES );
-
- Cmd_Register( gl_cmd );
+ Cmd_AddCommand( "strings", GL_Strings_f );
Cmd_AddMacro( "gl_viewcluster", GL_ViewCluster_m );
}
static void GL_Unregister( void ) {
- Cmd_Deregister( gl_cmd );
+ Cmd_RemoveCommand( "strings" );
}
static qboolean GL_SetupExtensions( void ) {