CREDITS: Fix display of credits with non ISO-8859-1 charsets

The credits.pl script now prints both the ASCII and ISO-8859-1 strings
in the credits.dat file when they are different. The About dialog then
chooses either one or the other depending on the current charset
used. This fixes bug #3539986
This commit is contained in:
Thierry Crozat 2013-02-04 13:16:38 +00:00
parent 091f2e9df8
commit a1c3a8c542
3 changed files with 86 additions and 18 deletions

View File

@ -267,14 +267,22 @@ sub begin_section {
print '\f1\b0\fs24 \cf0 \\' . "\n";
} elsif ($mode eq "CPP") {
if ($section_level eq 0) {
# TODO: Would be nice to have a 'fat' or 'large' mode for
# headlines...
$title = html_entities_to_cpp($title);
print '"C1""'.$title.'",' . "\n";
print '"",' . "\n";
# TODO: Would be nice to have a 'fat' or 'large' mode for
# headlines...
my $ascii_title = html_entities_to_ascii($title);
$title = html_entities_to_cpp($title);
if ($ascii_title ne $title) {
print '"A1""'.$ascii_title.'",' . "\n";
}
print '"C1""'.$title.'",' . "\n";
print '"",' . "\n";
} else {
$title = html_entities_to_cpp($title);
print '"C1""'.$title.'",' . "\n";
my $ascii_title = html_entities_to_ascii($title);
$title = html_entities_to_cpp($title);
if ($ascii_title ne $title) {
print '"A1""'.$ascii_title.'",' . "\n";
}
print '"C1""'.$title.'",' . "\n";
}
} elsif ($mode eq "XML-DOC") {
print " <row><entry namest='start' nameend='job'>";
@ -392,13 +400,21 @@ sub add_person {
}
} elsif ($mode eq "CPP") {
$name = $nick if $name eq "";
my $ascii_name = html_entities_to_ascii($name);
$name = html_entities_to_cpp($name);
if ($ascii_name ne $name) {
print '"A0""'.$ascii_name.'",' . "\n";
}
print '"C0""'.$name.'",' . "\n";
# Print desc wrapped
if (length $desc > 0) {
my $ascii_desc = html_entities_to_ascii($desc);
$desc = html_entities_to_cpp($desc);
if ($ascii_desc ne $desc) {
print '"A2""'.$ascii_desc.'",' . "\n";
}
print '"C2""'.$desc.'",' . "\n";
}
} elsif ($mode eq "XML-DOC") {

View File

@ -37,14 +37,16 @@ enum {
kScrollMillisPerPixel = 60
};
// The following commands can be put at the start of a line (all subject to change):
// \C, \L, \R -- set center/left/right alignment
// \c0 - \c4 -- set a custom color:
// 0 normal text (green)
// 1 highlighted text (light green)
// 2 light border (light gray)
// 3 dark border (dark gray)
// 4 background (black)
// Every Line should start with a letter followed by a digit. Currently those can be
// (all subject to change)
// Letter:
// C, L, R -- set center/left/right alignment
// A -- ASCII text to replace the next (latin1) line
// Digit:
// 0 - 2 -- set a custom color:
// 0 normal text
// 1 highlighted text
// 2 disabled text
// TODO: Maybe add a tab/indent feature; that is, make it possible to specify
// an amount by which that line shall be indented (the indent of course would have
// to be considered while performing any word wrapping, too).
@ -137,9 +139,26 @@ void AboutDialog::addLine(const char *str) {
} else {
Common::String format(str, 2);
str += 2;
static Common::String asciiStr;
if (format[0] == 'A') {
bool useAscii = false;
#ifdef USE_TRANSLATION
// We could use TransMan.getCurrentCharset() but rather than compare strings
// it is easier to use TransMan.getCharsetMapping() (non null in case of non
// ISO-8859-1 mapping)
useAscii = (TransMan.getCharsetMapping() != NULL);
#endif
if (useAscii)
asciiStr = str;
return;
}
StringArray wrappedLines;
g_gui.getFont().wordWrapText(str, _w - 2 * _xOff, wrappedLines);
if (!asciiStr.empty()) {
g_gui.getFont().wordWrapText(asciiStr, _w - 2 * _xOff, wrappedLines);
asciiStr.clear();
} else
g_gui.getFont().wordWrapText(str, _w - 2 * _xOff, wrappedLines);
for (StringArray::const_iterator i = wrappedLines.begin(); i != wrappedLines.end(); ++i) {
_lines.push_back(format + *i);
@ -285,7 +304,7 @@ void AboutDialog::reflowLayout() {
int maxW = _w - 2*_xOff;
_w = 0;
for (i = 0; i < ARRAYSIZE(credits); i++) {
int tmp = g_gui.getStringWidth(credits[i] + 5);
int tmp = g_gui.getStringWidth(credits[i]) + 5;
if (_w < tmp && tmp <= maxW) {
_w = tmp;
}

View File

@ -6,6 +6,7 @@ static const char *credits[] = {
"C0""Eugene Sandulenko",
"",
"C1""PR Office",
"A0""Arnaud Boutonne",
"C0""Arnaud Boutonn\351",
"C2""Public Relations Officer, Project Administrator",
"C0""Eugene Sandulenko",
@ -26,6 +27,7 @@ static const char *credits[] = {
"",
"C1""Engine Teams",
"C1""SCUMM",
"A0""Torbjorn Andersson",
"C0""Torbj\366rn Andersson",
"C0""James Brown",
"C2""(retired)",
@ -66,6 +68,7 @@ static const char *credits[] = {
"C2""(retired)",
"",
"C1""AGOS",
"A0""Torbjorn Andersson",
"C0""Torbj\366rn Andersson",
"C0""Paul Gilbert",
"C0""Travis Howell",
@ -75,6 +78,7 @@ static const char *credits[] = {
"C2""(retired)",
"",
"C1""CGE",
"A0""Arnaud Boutonne",
"C0""Arnaud Boutonn\351",
"C0""Paul Gilbert",
"",
@ -104,6 +108,7 @@ static const char *credits[] = {
"C0""Pawel Kolodziejski",
"",
"C1""DreamWeb",
"A0""Torbjorn Andersson",
"C0""Torbj\366rn Andersson",
"C0""Bertrand Augereau",
"C0""Filippos Karapetis",
@ -112,7 +117,9 @@ static const char *credits[] = {
"C0""Willem Jan Palenstijn",
"",
"C1""Gob",
"A0""Torbjorn Andersson",
"C0""Torbj\366rn Andersson",
"A0""Arnaud Boutonne",
"C0""Arnaud Boutonn\351",
"C0""Sven Hesse",
"C0""Eugene Sandulenko",
@ -123,11 +130,13 @@ static const char *credits[] = {
"C0""Jordi Vilalta Prat",
"",
"C1""Hugo",
"A0""Arnaud Boutonne",
"C0""Arnaud Boutonn\351",
"C0""Oystein Eftevaag",
"C0""Eugene Sandulenko",
"",
"C1""Kyra",
"A0""Torbjorn Andersson",
"C0""Torbj\366rn Andersson",
"C2""VQA Player",
"C0""Oystein Eftevaag",
@ -170,6 +179,7 @@ static const char *credits[] = {
"C0""Joost Peters",
"",
"C1""SAGA",
"A0""Torbjorn Andersson",
"C0""Torbj\366rn Andersson",
"C0""Daniel Balsom",
"C2""Original engine reimplementation author (retired)",
@ -191,6 +201,7 @@ static const char *credits[] = {
"C0""Lars Skovlund",
"",
"C1""Sky",
"A0""Robert Goeffringmann",
"C0""Robert G\366ffringmann",
"C2""(retired)",
"C0""Oliver Kiehl",
@ -202,10 +213,12 @@ static const char *credits[] = {
"C2""PSX version support",
"C0""Thierry Crozat",
"C2""Mac version support",
"A0""Robert Goeffringmann",
"C0""Robert G\366ffringmann",
"C2""(retired)",
"",
"C1""Sword2",
"A0""Torbjorn Andersson",
"C0""Torbj\366rn Andersson",
"C0""Fabio Battaglia",
"C2""PSX version support",
@ -213,6 +226,7 @@ static const char *credits[] = {
"C2""(retired)",
"",
"C1""Sword25",
"A0""Torbjorn Andersson",
"C0""Torbj\366rn Andersson",
"C0""Paul Gilbert",
"C0""Max Horn",
@ -227,6 +241,7 @@ static const char *credits[] = {
"C2""(retired)",
"",
"C1""Tinsel",
"A0""Torbjorn Andersson",
"C0""Torbj\366rn Andersson",
"C0""Fabio Battaglia",
"C2""PSX version support",
@ -242,6 +257,7 @@ static const char *credits[] = {
"C0""Filippos Karapetis",
"",
"C1""Tony",
"A0""Arnaud Boutonne",
"C0""Arnaud Boutonn\351",
"C0""Paul Gilbert",
"C0""Alyssa Milburn",
@ -249,11 +265,13 @@ static const char *credits[] = {
"C1""Toon",
"C0""Sylvain Dupont",
"",
"A1""Touche",
"C1""Touch\351",
"C0""Gregory Montoir",
"C2""(retired)",
"",
"C1""TsAGE",
"A0""Arnaud Boutonne",
"C0""Arnaud Boutonn\351",
"C0""Paul Gilbert",
"",
@ -262,6 +280,7 @@ static const char *credits[] = {
"C2""(retired)",
"",
"C1""Wintermute",
"A0""Einar Johan T. Somaaen",
"C0""Einar Johan T. S\370m\345en",
"",
"",
@ -309,6 +328,7 @@ static const char *credits[] = {
"C2""(retired)",
"",
"C1""PlayStation 2",
"A0""Robert Goeffringmann",
"C0""Robert G\366ffringmann",
"C2""(retired)",
"C0""Max Lingua",
@ -417,9 +437,11 @@ static const char *credits[] = {
"",
"C1""Packages",
"C1""AmigaOS 4",
"A0""Hans-Joerg Frieden",
"C0""Hans-J\366rg Frieden",
"C2""(retired)",
"C0""Hubert Maier",
"A0""Juha Niemimaki",
"C0""Juha Niemim\344ki",
"C2""(retired)",
"",
@ -449,6 +471,7 @@ static const char *credits[] = {
"",
"C1""MorphOS",
"C0""Fabien Coeurjoly",
"A0""Ruediger Hanke",
"C0""R\374diger Hanke",
"C2""(retired)",
"",
@ -486,6 +509,7 @@ static const char *credits[] = {
"C0""Jordi Vilalta Prat",
"",
"C1""Czech",
"A0""Zbynik Schwarz",
"C0""Zbyn\354k Schwarz",
"",
"C1""Danish",
@ -512,10 +536,13 @@ static const char *credits[] = {
"C1""Italian",
"C0""Matteo Angelino",
"",
"A1""Norwegian (Bokmaal)",
"C1""Norwegian (Bokm\345l)",
"A0""Einar Johan Somaaen",
"C0""Einar Johan S\370m\345en",
"",
"C1""Norwegian (Nynorsk)",
"A0""Einar Johan Somaaen",
"C0""Einar Johan S\370m\345en",
"",
"C1""Polish",
@ -528,6 +555,7 @@ static const char *credits[] = {
"C0""Eugene Sandulenko",
"",
"C1""Spanish",
"A0""Tomas Maidagan",
"C0""Tom\341s Maidagan",
"C0""Jordi Vilalta Prat",
"",
@ -539,6 +567,7 @@ static const char *credits[] = {
"",
"",
"C1""Websites (design)",
"A0""Dobo Balazs",
"C0""Dob\363 Bal\341zs",
"C2""Website design",
"C0""William Claydon",
@ -567,6 +596,7 @@ static const char *credits[] = {
"C2""Sound support for C64 version of MM/Zak, Loom PCE support",
"C0""Janne Huttunen",
"C2""V3 actor mask support, Dig/FT SMUSH audio",
"A0""Kovacs Endre Janos",
"C0""Kov\341cs Endre J\341nos",
"C2""Several fixes for Simon1",
"C0""Jeroen Janssen",
@ -591,12 +621,14 @@ static const char *credits[] = {
"C2""Sound support for Amiga SCUMM V2/V3 games, MM NES support",
"C0""Robert Crossfield",
"C2""Improved support for Apple II/C64 versions of MM",
"A0""Andreas Roever",
"C0""Andreas R\366ver",
"C2""Broken Sword I & II MPEG2 cutscene support",
"C0""Edward Rudd",
"C2""Fixes for playing MP3 versions of MI1/Loom audio",
"C0""Daniel Schepler",
"C2""Final MI1 CD music support, initial Ogg Vorbis support",
"A0""Andre Souza",
"C0""Andr\351 Souza",
"C2""SDL-based OpenGL renderer",
"C0""Tom Frost",
@ -713,6 +745,7 @@ static const char *credits[] = {
"C2""For deep tech details about C64 Zak & MM",
"C0""Sarien Team",
"C2""Original AGI engine code",
"A0""Jimmi Thogersen",
"C0""Jimmi Th\370gersen",
"C2""For ScummRev, and much obscure code/documentation",
"C0""Tristan",