[Scummvm-cvs-logs] scummvm master -> a1c3a8c542082ad67f07f226a5647d79c499f5a5

criezy criezy at scummvm.org
Mon Feb 4 14:18:45 CET 2013


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

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


Commit: a1c3a8c542082ad67f07f226a5647d79c499f5a5
    https://github.com/scummvm/scummvm/commit/a1c3a8c542082ad67f07f226a5647d79c499f5a5
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2013-02-04T05:17:18-08:00

Commit Message:
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

Changed paths:
    devtools/credits.pl
    gui/about.cpp
    gui/credits.h



diff --git a/devtools/credits.pl b/devtools/credits.pl
index ff3b37a..28c3139 100755
--- a/devtools/credits.pl
+++ b/devtools/credits.pl
@@ -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") {
diff --git a/gui/about.cpp b/gui/about.cpp
index e2b7064..088971f 100644
--- a/gui/about.cpp
+++ b/gui/about.cpp
@@ -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;
 		}
diff --git a/gui/credits.h b/gui/credits.h
index 237d97d..42e515d 100644
--- a/gui/credits.h
+++ b/gui/credits.h
@@ -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",






More information about the Scummvm-git-logs mailing list