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_litfile;
|
||||||
extern qboolean write_luxfile;
|
extern qboolean write_luxfile;
|
||||||
extern qboolean onlyents;
|
extern qboolean onlyents;
|
||||||
|
extern qboolean parse_escape_sequences;
|
||||||
|
|
||||||
void SetupDirt();
|
void SetupDirt();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -940,6 +940,29 @@ Get_EntityStringSize(const entity_t *entities)
|
||||||
return size;
|
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
|
* WriteEntitiesToString
|
||||||
|
|
@ -979,8 +1002,20 @@ WriteEntitiesToString(bsp2_t *bsp)
|
||||||
space -= length;
|
space -= length;
|
||||||
|
|
||||||
for (epair = entity->epairs; epair; epair = epair->next) {
|
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",
|
length = snprintf(pos, space, "\"%s\" \"%s\"\n",
|
||||||
epair->key, epair->value);
|
epair->key, value);
|
||||||
|
|
||||||
|
if (parse_escape_sequences) {
|
||||||
|
free(value);
|
||||||
|
}
|
||||||
|
|
||||||
pos += length;
|
pos += length;
|
||||||
space -= length;
|
space -= length;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,7 @@ int oversample = 1;
|
||||||
qboolean write_litfile = false;
|
qboolean write_litfile = false;
|
||||||
qboolean write_luxfile = false;
|
qboolean write_luxfile = false;
|
||||||
qboolean onlyents = false;
|
qboolean onlyents = false;
|
||||||
|
qboolean parse_escape_sequences = false;
|
||||||
|
|
||||||
void
|
void
|
||||||
GetFileSpace(byte **lightdata, byte **colordata, byte **deluxdata, int size)
|
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" ) ) {
|
} else if ( !strcmp( argv[ i ], "-onlyents" ) ) {
|
||||||
onlyents = true;
|
onlyents = true;
|
||||||
logprint( "Onlyents mode enabled\n" );
|
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] == '-')
|
} else if (argv[i][0] == '-')
|
||||||
Error("Unknown option \"%s\"", argv[i]);
|
Error("Unknown option \"%s\"", argv[i]);
|
||||||
else
|
else
|
||||||
|
|
@ -387,7 +391,7 @@ main(int argc, const char **argv)
|
||||||
" [-light num] [-addmin] [-anglescale|-anglesense]\n"
|
" [-light num] [-addmin] [-anglescale|-anglesense]\n"
|
||||||
" [-dist n] [-range n] [-gate n] [-lit] [-lux]\n"
|
" [-dist n] [-range n] [-gate n] [-lit] [-lux]\n"
|
||||||
" [-dirt] [-dirtdebug] [-dirtmode n] [-dirtdepth n] [-dirtscale n] [-dirtgain n] [-dirtangle n]\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);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue