light: experimental -parse_escape_sequences option to toggle \b escape sequence (toggles bold text)
This commit is contained in:
parent
fee62faa24
commit
50b556993a
|
|
@ -150,6 +150,7 @@ extern int oversample;
|
|||
extern qboolean write_litfile;
|
||||
extern qboolean write_luxfile;
|
||||
extern qboolean onlyents;
|
||||
extern qboolean parse_escape_sequences;
|
||||
|
||||
void SetupDirt();
|
||||
|
||||
|
|
|
|||
|
|
@ -940,6 +940,29 @@ Get_EntityStringSize(const entity_t *entities)
|
|||
return size;
|
||||
}
|
||||
|
||||
const char *
|
||||
CopyValueWithEscapeSequencesParsed(const char *value)
|
||||
{
|
||||
char *result = copystring(value);
|
||||
const char *inptr = value;
|
||||
char *outptr = result;
|
||||
qboolean bold = false;
|
||||
|
||||
for ( ; *inptr; inptr++) {
|
||||
if (inptr[0] == '\\' && inptr[1] == 'b') {
|
||||
bold = !bold; // Toggle bold
|
||||
inptr++;
|
||||
continue;
|
||||
} else {
|
||||
int mask = bold ? 128 : 0;
|
||||
*(outptr++) = *inptr | mask;
|
||||
}
|
||||
}
|
||||
*outptr = 0;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* ================
|
||||
* WriteEntitiesToString
|
||||
|
|
@ -979,8 +1002,20 @@ WriteEntitiesToString(bsp2_t *bsp)
|
|||
space -= length;
|
||||
|
||||
for (epair = entity->epairs; epair; epair = epair->next) {
|
||||
const char *value;
|
||||
if (parse_escape_sequences) {
|
||||
value = CopyValueWithEscapeSequencesParsed(epair->value);
|
||||
} else {
|
||||
value = epair->value;
|
||||
}
|
||||
|
||||
length = snprintf(pos, space, "\"%s\" \"%s\"\n",
|
||||
epair->key, epair->value);
|
||||
epair->key, value);
|
||||
|
||||
if (parse_escape_sequences) {
|
||||
free(value);
|
||||
}
|
||||
|
||||
pos += length;
|
||||
space -= length;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,6 +78,7 @@ int oversample = 1;
|
|||
qboolean write_litfile = false;
|
||||
qboolean write_luxfile = false;
|
||||
qboolean onlyents = false;
|
||||
qboolean parse_escape_sequences = false;
|
||||
|
||||
void
|
||||
GetFileSpace(byte **lightdata, byte **colordata, byte **deluxdata, int size)
|
||||
|
|
@ -376,6 +377,9 @@ main(int argc, const char **argv)
|
|||
} else if ( !strcmp( argv[ i ], "-onlyents" ) ) {
|
||||
onlyents = true;
|
||||
logprint( "Onlyents mode enabled\n" );
|
||||
} else if ( !strcmp( argv[ i ], "-parse_escape_sequences" ) ) {
|
||||
parse_escape_sequences = true;
|
||||
logprint( "Parsing escape sequences enabled\n" );
|
||||
} else if (argv[i][0] == '-')
|
||||
Error("Unknown option \"%s\"", argv[i]);
|
||||
else
|
||||
|
|
@ -387,7 +391,7 @@ main(int argc, const char **argv)
|
|||
" [-light num] [-addmin] [-anglescale|-anglesense]\n"
|
||||
" [-dist n] [-range n] [-gate n] [-lit] [-lux]\n"
|
||||
" [-dirt] [-dirtdebug] [-dirtmode n] [-dirtdepth n] [-dirtscale n] [-dirtgain n] [-dirtangle n]\n"
|
||||
" [-soft [n]] [-fence] [-gamma n] [-surflight_subdivide n] [-onlyents] [-sunsamples n] bspfile\n");
|
||||
" [-soft [n]] [-fence] [-gamma n] [-surflight_subdivide n] [-onlyents] [-sunsamples n] [-parse_escape_sequences] bspfile\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue