new modes for minimap: -black = black on transparent, -white = white on transparent, -gray = white on black
git-svn-id: svn://svn.icculus.org/netradiant/trunk@347 61c419a2-8eb2-4b30-bcec-8cead039b335
This commit is contained in:
parent
3963252e6d
commit
0b6479c18b
|
|
@ -1181,6 +1181,26 @@ void WriteTGA (const char *filename, byte *data, int width, int height) {
|
||||||
free (buffer);
|
free (buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WriteTGAGray (const char *filename, byte *data, int width, int height) {
|
||||||
|
byte buffer[18];
|
||||||
|
int i;
|
||||||
|
int c;
|
||||||
|
FILE *f;
|
||||||
|
|
||||||
|
memset (buffer, 0, 18);
|
||||||
|
buffer[2] = 3; // uncompressed type
|
||||||
|
buffer[12] = width&255;
|
||||||
|
buffer[13] = width>>8;
|
||||||
|
buffer[14] = height&255;
|
||||||
|
buffer[15] = height>>8;
|
||||||
|
buffer[16] = 8; // pixel size
|
||||||
|
|
||||||
|
f = fopen (filename, "wb");
|
||||||
|
fwrite (buffer, 1, 18, f);
|
||||||
|
fwrite (data, 1, width * height, f);
|
||||||
|
fclose (f);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
============================================================================
|
============================================================================
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ void Save256Image (const char *name, byte *pixels, byte *palette,
|
||||||
void LoadTGA (const char *filename, byte **pixels, int *width, int *height);
|
void LoadTGA (const char *filename, byte **pixels, int *width, int *height);
|
||||||
void LoadTGABuffer ( const byte *buffer, const byte* enddata, byte **pic, int *width, int *height);
|
void LoadTGABuffer ( const byte *buffer, const byte* enddata, byte **pic, int *width, int *height);
|
||||||
void WriteTGA (const char *filename, byte *data, int width, int height);
|
void WriteTGA (const char *filename, byte *data, int width, int height);
|
||||||
|
void WriteTGAGray (const char *filename, byte *data, int width, int height);
|
||||||
|
|
||||||
void Load32BitImage (const char *name, unsigned **pixels, int *width, int *height);
|
void Load32BitImage (const char *name, unsigned **pixels, int *width, int *height);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,7 @@ game_t struct
|
||||||
1.0f, /* minimap sharpener */
|
1.0f, /* minimap sharpener */
|
||||||
0.0f, /* minimap border */
|
0.0f, /* minimap border */
|
||||||
qtrue, /* minimap keep aspect */
|
qtrue, /* minimap keep aspect */
|
||||||
|
MINIMAP_MODE_GRAY, /* minimap mode */
|
||||||
"%s.tga", /* minimap name format */
|
"%s.tga", /* minimap name format */
|
||||||
"IBSP", /* bsp file prefix */
|
"IBSP", /* bsp file prefix */
|
||||||
46, /* bsp file version */
|
46, /* bsp file version */
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,7 @@ game_t struct
|
||||||
1.0f, /* minimap sharpener */
|
1.0f, /* minimap sharpener */
|
||||||
0.0f, /* minimap border */
|
0.0f, /* minimap border */
|
||||||
qtrue, /* minimap keep aspect */
|
qtrue, /* minimap keep aspect */
|
||||||
|
MINIMAP_MODE_GRAY, /* minimap mode */
|
||||||
"%s.tga", /* minimap name format */
|
"%s.tga", /* minimap name format */
|
||||||
"IBSP", /* bsp file prefix */
|
"IBSP", /* bsp file prefix */
|
||||||
46, /* bsp file version */
|
46, /* bsp file version */
|
||||||
|
|
|
||||||
|
|
@ -127,6 +127,7 @@ game_t struct
|
||||||
1.0f, /* minimap sharpener */
|
1.0f, /* minimap sharpener */
|
||||||
0.0f, /* minimap border */
|
0.0f, /* minimap border */
|
||||||
qtrue, /* minimap keep aspect */
|
qtrue, /* minimap keep aspect */
|
||||||
|
MINIMAP_MODE_GRAY, /* minimap mode */
|
||||||
"%s.tga", /* minimap name format */
|
"%s.tga", /* minimap name format */
|
||||||
"IBSP", /* bsp file prefix */
|
"IBSP", /* bsp file prefix */
|
||||||
46, /* bsp file version */
|
46, /* bsp file version */
|
||||||
|
|
|
||||||
|
|
@ -162,6 +162,7 @@ game_t struct
|
||||||
1.0f, /* minimap sharpener */
|
1.0f, /* minimap sharpener */
|
||||||
0.0f, /* minimap border */
|
0.0f, /* minimap border */
|
||||||
qtrue, /* minimap keep aspect */
|
qtrue, /* minimap keep aspect */
|
||||||
|
MINIMAP_MODE_GRAY, /* minimap mode */
|
||||||
"%s.tga", /* minimap name format */
|
"%s.tga", /* minimap name format */
|
||||||
"IBSP", /* bsp file prefix */
|
"IBSP", /* bsp file prefix */
|
||||||
46, /* bsp file version */
|
46, /* bsp file version */
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,7 @@ game_t struct
|
||||||
1.0f, /* minimap sharpener */
|
1.0f, /* minimap sharpener */
|
||||||
0.0f, /* minimap border */
|
0.0f, /* minimap border */
|
||||||
qtrue, /* minimap keep aspect */
|
qtrue, /* minimap keep aspect */
|
||||||
|
MINIMAP_MODE_GRAY, /* minimap mode */
|
||||||
"%s.tga", /* minimap name format */
|
"%s.tga", /* minimap name format */
|
||||||
"RBSP", /* bsp file prefix */
|
"RBSP", /* bsp file prefix */
|
||||||
1, /* bsp file version */
|
1, /* bsp file version */
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,7 @@ game_t struct
|
||||||
1.0f, /* minimap sharpener */
|
1.0f, /* minimap sharpener */
|
||||||
0.0f, /* minimap border */
|
0.0f, /* minimap border */
|
||||||
qtrue, /* minimap keep aspect */
|
qtrue, /* minimap keep aspect */
|
||||||
|
MINIMAP_MODE_GRAY, /* minimap mode */
|
||||||
"%s.tga", /* minimap name format */
|
"%s.tga", /* minimap name format */
|
||||||
"RBSP", /* bsp file prefix */
|
"RBSP", /* bsp file prefix */
|
||||||
1, /* bsp file version */
|
1, /* bsp file version */
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,7 @@ game_t struct
|
||||||
1.0f, /* minimap sharpener */
|
1.0f, /* minimap sharpener */
|
||||||
1.0f/66.0f, /* minimap border */
|
1.0f/66.0f, /* minimap border */
|
||||||
qtrue, /* minimap keep aspect */
|
qtrue, /* minimap keep aspect */
|
||||||
|
MINIMAP_MODE_GRAY, /* minimap mode */
|
||||||
"../gfx/%s_mini.tga", /* minimap name format */
|
"../gfx/%s_mini.tga", /* minimap name format */
|
||||||
"IBSP", /* bsp file prefix */
|
"IBSP", /* bsp file prefix */
|
||||||
46, /* bsp file version */
|
46, /* bsp file version */
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,7 @@ game_t struct
|
||||||
1.0f, /* minimap sharpener */
|
1.0f, /* minimap sharpener */
|
||||||
0.0f, /* minimap border */
|
0.0f, /* minimap border */
|
||||||
qtrue, /* minimap keep aspect */
|
qtrue, /* minimap keep aspect */
|
||||||
|
MINIMAP_MODE_GRAY, /* minimap mode */
|
||||||
"%s.tga", /* minimap name format */
|
"%s.tga", /* minimap name format */
|
||||||
"IBSP", /* bsp file prefix */
|
"IBSP", /* bsp file prefix */
|
||||||
46, /* bsp file version */
|
46, /* bsp file version */
|
||||||
|
|
|
||||||
|
|
@ -129,6 +129,7 @@ game_t struct
|
||||||
0.0f, /* minimap sharpener */
|
0.0f, /* minimap sharpener */
|
||||||
0.0f, /* minimap border */
|
0.0f, /* minimap border */
|
||||||
qfalse, /* minimap keep aspect */
|
qfalse, /* minimap keep aspect */
|
||||||
|
MINIMAP_MODE_WHITE, /* minimap mode */
|
||||||
"../minimaps/%s.tga", /* minimap name format */
|
"../minimaps/%s.tga", /* minimap name format */
|
||||||
"FBSP", /* bsp file prefix */
|
"FBSP", /* bsp file prefix */
|
||||||
1, /* bsp file version */
|
1, /* bsp file version */
|
||||||
|
|
|
||||||
|
|
@ -126,6 +126,7 @@ game_t struct
|
||||||
1.0f, /* minimap sharpener */
|
1.0f, /* minimap sharpener */
|
||||||
0.0f, /* minimap border */
|
0.0f, /* minimap border */
|
||||||
qtrue, /* minimap keep aspect */
|
qtrue, /* minimap keep aspect */
|
||||||
|
MINIMAP_MODE_GRAY, /* minimap mode */
|
||||||
"%s.tga", /* minimap name format */
|
"%s.tga", /* minimap name format */
|
||||||
"IBSP", /* bsp file prefix */
|
"IBSP", /* bsp file prefix */
|
||||||
46, /* bsp file version */
|
46, /* bsp file version */
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,7 @@ game_t struct
|
||||||
1.0f, /* minimap sharpener */
|
1.0f, /* minimap sharpener */
|
||||||
0.0f, /* minimap border */
|
0.0f, /* minimap border */
|
||||||
qtrue, /* minimap keep aspect */
|
qtrue, /* minimap keep aspect */
|
||||||
|
MINIMAP_MODE_GRAY, /* minimap mode */
|
||||||
"%s.tga", /* minimap name format */
|
"%s.tga", /* minimap name format */
|
||||||
"IBSP", /* bsp file prefix */
|
"IBSP", /* bsp file prefix */
|
||||||
47, /* bsp file version */
|
47, /* bsp file version */
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,7 @@ game_t struct
|
||||||
1.0f, /* minimap sharpener */
|
1.0f, /* minimap sharpener */
|
||||||
0.0f, /* minimap border */
|
0.0f, /* minimap border */
|
||||||
qtrue, /* minimap keep aspect */
|
qtrue, /* minimap keep aspect */
|
||||||
|
MINIMAP_MODE_GRAY, /* minimap mode */
|
||||||
"%s.tga", /* minimap name format */
|
"%s.tga", /* minimap name format */
|
||||||
"RBSP", /* bsp file prefix */
|
"RBSP", /* bsp file prefix */
|
||||||
1, /* bsp file version */
|
1, /* bsp file version */
|
||||||
|
|
|
||||||
|
|
@ -126,6 +126,7 @@ game_t struct
|
||||||
1.0f, /* minimap sharpener */
|
1.0f, /* minimap sharpener */
|
||||||
0.0f, /* minimap border */
|
0.0f, /* minimap border */
|
||||||
qtrue, /* minimap keep aspect */
|
qtrue, /* minimap keep aspect */
|
||||||
|
MINIMAP_MODE_GRAY, /* minimap mode */
|
||||||
"%s.tga", /* minimap name format */
|
"%s.tga", /* minimap name format */
|
||||||
"IBSP", /* bsp file prefix */
|
"IBSP", /* bsp file prefix */
|
||||||
46, /* bsp file version */
|
46, /* bsp file version */
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,7 @@ game_t struct
|
||||||
1.0f, /* minimap sharpener */
|
1.0f, /* minimap sharpener */
|
||||||
0.0f, /* minimap border */
|
0.0f, /* minimap border */
|
||||||
qtrue, /* minimap keep aspect */
|
qtrue, /* minimap keep aspect */
|
||||||
|
MINIMAP_MODE_GRAY, /* minimap mode */
|
||||||
"%s.tga", /* minimap name format */
|
"%s.tga", /* minimap name format */
|
||||||
"IBSP", /* bsp file prefix */
|
"IBSP", /* bsp file prefix */
|
||||||
46, /* bsp file version */
|
46, /* bsp file version */
|
||||||
|
|
|
||||||
|
|
@ -143,6 +143,7 @@ game_t struct
|
||||||
1.0f, /* minimap sharpener */
|
1.0f, /* minimap sharpener */
|
||||||
0.0f, /* minimap border */
|
0.0f, /* minimap border */
|
||||||
qtrue, /* minimap keep aspect */
|
qtrue, /* minimap keep aspect */
|
||||||
|
MINIMAP_MODE_GRAY, /* minimap mode */
|
||||||
"%s.tga", /* minimap name format */
|
"%s.tga", /* minimap name format */
|
||||||
"IBSP", /* bsp file prefix */
|
"IBSP", /* bsp file prefix */
|
||||||
46, /* bsp file version */
|
46, /* bsp file version */
|
||||||
|
|
|
||||||
|
|
@ -80,6 +80,7 @@ game_t struct
|
||||||
1.0f, /* minimap sharpener */
|
1.0f, /* minimap sharpener */
|
||||||
0.0f, /* minimap border */
|
0.0f, /* minimap border */
|
||||||
qtrue, /* minimap keep aspect */
|
qtrue, /* minimap keep aspect */
|
||||||
|
MINIMAP_MODE_GRAY, /* minimap mode */
|
||||||
"%s.tga", /* minimap name format */
|
"%s.tga", /* minimap name format */
|
||||||
"IBSP", /* bsp file prefix */
|
"IBSP", /* bsp file prefix */
|
||||||
46, /* bsp file version */
|
46, /* bsp file version */
|
||||||
|
|
|
||||||
|
|
@ -66,8 +66,6 @@ static void ExitQ3Map( void )
|
||||||
|
|
||||||
/* minimap stuff */
|
/* minimap stuff */
|
||||||
|
|
||||||
/* borrowed from light.c */
|
|
||||||
void WriteTGA24( char *filename, byte *data, int width, int height, qboolean flip );
|
|
||||||
typedef struct minimap_s
|
typedef struct minimap_s
|
||||||
{
|
{
|
||||||
bspModel_t *model;
|
bspModel_t *model;
|
||||||
|
|
@ -532,10 +530,11 @@ int MiniMapBSPMain( int argc, char **argv )
|
||||||
char relativeMinimapFilename[1024];
|
char relativeMinimapFilename[1024];
|
||||||
float minimapSharpen;
|
float minimapSharpen;
|
||||||
float border;
|
float border;
|
||||||
byte *data3b, *p;
|
byte *data4b, *p;
|
||||||
float *q;
|
float *q;
|
||||||
int x, y;
|
int x, y;
|
||||||
int i;
|
int i;
|
||||||
|
miniMapMode_t mode;
|
||||||
vec3_t mins, maxs;
|
vec3_t mins, maxs;
|
||||||
qboolean keepaspect;
|
qboolean keepaspect;
|
||||||
|
|
||||||
|
|
@ -564,6 +563,7 @@ int MiniMapBSPMain( int argc, char **argv )
|
||||||
minimap.width = minimap.height = game->miniMapSize;
|
minimap.width = minimap.height = game->miniMapSize;
|
||||||
border = game->miniMapBorder;
|
border = game->miniMapBorder;
|
||||||
keepaspect = game->miniMapKeepAspect;
|
keepaspect = game->miniMapKeepAspect;
|
||||||
|
mode = game->miniMapMode;
|
||||||
|
|
||||||
minimap.samples = 1;
|
minimap.samples = 1;
|
||||||
minimap.sample_offsets = NULL;
|
minimap.sample_offsets = NULL;
|
||||||
|
|
@ -635,6 +635,21 @@ int MiniMapBSPMain( int argc, char **argv )
|
||||||
i += 6;
|
i += 6;
|
||||||
Sys_Printf( "Map mins/maxs overridden\n" );
|
Sys_Printf( "Map mins/maxs overridden\n" );
|
||||||
}
|
}
|
||||||
|
else if( !strcmp( argv[ i ], "-gray" ) )
|
||||||
|
{
|
||||||
|
mode = MINIMAP_MODE_GRAY;
|
||||||
|
Sys_Printf( "Writing as white-on-black image\n" );
|
||||||
|
}
|
||||||
|
else if( !strcmp( argv[ i ], "-black" ) )
|
||||||
|
{
|
||||||
|
mode = MINIMAP_MODE_BLACK;
|
||||||
|
Sys_Printf( "Writing as black alpha image\n" );
|
||||||
|
}
|
||||||
|
else if( !strcmp( argv[ i ], "-white" ) )
|
||||||
|
{
|
||||||
|
mode = MINIMAP_MODE_WHITE;
|
||||||
|
Sys_Printf( "Writing as white alpha image\n" );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MiniMapMakeMinsMaxs(mins, maxs, border, keepaspect);
|
MiniMapMakeMinsMaxs(mins, maxs, border, keepaspect);
|
||||||
|
|
@ -647,6 +662,8 @@ int MiniMapBSPMain( int argc, char **argv )
|
||||||
MergeRelativePath(minimapFilename, path, relativeMinimapFilename);
|
MergeRelativePath(minimapFilename, path, relativeMinimapFilename);
|
||||||
Sys_Printf("Output file name automatically set to %s\n", minimapFilename);
|
Sys_Printf("Output file name automatically set to %s\n", minimapFilename);
|
||||||
}
|
}
|
||||||
|
ExtractFilePath(minimapFilename, path);
|
||||||
|
Q_mkdir(path);
|
||||||
|
|
||||||
if(minimapSharpen >= 0)
|
if(minimapSharpen >= 0)
|
||||||
{
|
{
|
||||||
|
|
@ -655,7 +672,7 @@ int MiniMapBSPMain( int argc, char **argv )
|
||||||
}
|
}
|
||||||
|
|
||||||
minimap.data1f = safe_malloc(minimap.width * minimap.height * sizeof(*minimap.data1f));
|
minimap.data1f = safe_malloc(minimap.width * minimap.height * sizeof(*minimap.data1f));
|
||||||
data3b = safe_malloc(minimap.width * minimap.height * 3);
|
data4b = safe_malloc(minimap.width * minimap.height * 4);
|
||||||
if(minimapSharpen >= 0)
|
if(minimapSharpen >= 0)
|
||||||
minimap.sharpendata1f = safe_malloc(minimap.width * minimap.height * sizeof(*minimap.data1f));
|
minimap.sharpendata1f = safe_malloc(minimap.width * minimap.height * sizeof(*minimap.data1f));
|
||||||
|
|
||||||
|
|
@ -692,24 +709,61 @@ int MiniMapBSPMain( int argc, char **argv )
|
||||||
}
|
}
|
||||||
|
|
||||||
Sys_Printf( "\nConverting...");
|
Sys_Printf( "\nConverting...");
|
||||||
p = data3b;
|
|
||||||
for(y = 0; y < minimap.height; ++y)
|
|
||||||
for(x = 0; x < minimap.width; ++x)
|
|
||||||
{
|
|
||||||
byte b;
|
|
||||||
float v = *q++;
|
|
||||||
if(v < 0) v = 0;
|
|
||||||
if(v > 255.0/256.0) v = 255.0/256.0;
|
|
||||||
b = v * 256;
|
|
||||||
*p++ = b;
|
|
||||||
*p++ = b;
|
|
||||||
*p++ = b;
|
|
||||||
}
|
|
||||||
|
|
||||||
Sys_Printf( " writing to %s...", minimapFilename );
|
switch(mode)
|
||||||
ExtractFilePath(minimapFilename, path);
|
{
|
||||||
Q_mkdir(path);
|
case MINIMAP_MODE_GRAY:
|
||||||
WriteTGA24(minimapFilename, data3b, minimap.width, minimap.height, qfalse);
|
p = data4b;
|
||||||
|
for(y = 0; y < minimap.height; ++y)
|
||||||
|
for(x = 0; x < minimap.width; ++x)
|
||||||
|
{
|
||||||
|
byte b;
|
||||||
|
float v = *q++;
|
||||||
|
if(v < 0) v = 0;
|
||||||
|
if(v > 255.0/256.0) v = 255.0/256.0;
|
||||||
|
b = v * 256;
|
||||||
|
*p++ = b;
|
||||||
|
}
|
||||||
|
Sys_Printf( " writing to %s...", minimapFilename );
|
||||||
|
WriteTGAGray(minimapFilename, data4b, minimap.width, minimap.height);
|
||||||
|
break;
|
||||||
|
case MINIMAP_MODE_BLACK:
|
||||||
|
p = data4b;
|
||||||
|
for(y = 0; y < minimap.height; ++y)
|
||||||
|
for(x = 0; x < minimap.width; ++x)
|
||||||
|
{
|
||||||
|
byte b;
|
||||||
|
float v = *q++;
|
||||||
|
if(v < 0) v = 0;
|
||||||
|
if(v > 255.0/256.0) v = 255.0/256.0;
|
||||||
|
b = v * 256;
|
||||||
|
*p++ = 0;
|
||||||
|
*p++ = 0;
|
||||||
|
*p++ = 0;
|
||||||
|
*p++ = b;
|
||||||
|
}
|
||||||
|
Sys_Printf( " writing to %s...", minimapFilename );
|
||||||
|
WriteTGA(minimapFilename, data4b, minimap.width, minimap.height);
|
||||||
|
break;
|
||||||
|
case MINIMAP_MODE_WHITE:
|
||||||
|
p = data4b;
|
||||||
|
for(y = 0; y < minimap.height; ++y)
|
||||||
|
for(x = 0; x < minimap.width; ++x)
|
||||||
|
{
|
||||||
|
byte b;
|
||||||
|
float v = *q++;
|
||||||
|
if(v < 0) v = 0;
|
||||||
|
if(v > 255.0/256.0) v = 255.0/256.0;
|
||||||
|
b = v * 256;
|
||||||
|
*p++ = 255;
|
||||||
|
*p++ = 255;
|
||||||
|
*p++ = 255;
|
||||||
|
*p++ = b;
|
||||||
|
}
|
||||||
|
Sys_Printf( " writing to %s...", minimapFilename );
|
||||||
|
WriteTGA(minimapFilename, data4b, minimap.width, minimap.height);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
Sys_Printf( " done.\n" );
|
Sys_Printf( " done.\n" );
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -535,6 +535,13 @@ typedef struct surfaceParm_s
|
||||||
}
|
}
|
||||||
surfaceParm_t;
|
surfaceParm_t;
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
MINIMAP_MODE_GRAY,
|
||||||
|
MINIMAP_MODE_BLACK,
|
||||||
|
MINIMAP_MODE_WHITE
|
||||||
|
}
|
||||||
|
miniMapMode_t;
|
||||||
|
|
||||||
typedef struct game_s
|
typedef struct game_s
|
||||||
{
|
{
|
||||||
|
|
@ -565,6 +572,7 @@ typedef struct game_s
|
||||||
float miniMapSharpen; /* minimap sharpening coefficient */
|
float miniMapSharpen; /* minimap sharpening coefficient */
|
||||||
float miniMapBorder; /* minimap border amount */
|
float miniMapBorder; /* minimap border amount */
|
||||||
qboolean miniMapKeepAspect; /* minimap keep aspect ratio by letterboxing */
|
qboolean miniMapKeepAspect; /* minimap keep aspect ratio by letterboxing */
|
||||||
|
miniMapMode_t miniMapMode; /* minimap mode */
|
||||||
char *miniMapNameFormat; /* minimap name format */
|
char *miniMapNameFormat; /* minimap name format */
|
||||||
char *bspIdent; /* 4-letter bsp file prefix */
|
char *bspIdent; /* 4-letter bsp file prefix */
|
||||||
int bspVersion; /* bsp version to use */
|
int bspVersion; /* bsp version to use */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user