[Scummvm-cvs-logs] CVS: scummvm/scumm/smush smush_font.cpp,1.10,1.11
Max Horn
fingolfin at users.sourceforge.net
Sat Jun 7 16:13:02 CEST 2003
Update of /cvsroot/scummvm/scummvm/scumm/smush
In directory sc8-pr-cvs1:/tmp/cvs-serv1292
Modified Files:
smush_font.cpp
Log Message:
cleanup
Index: smush_font.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/smush_font.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- smush_font.cpp 7 Jun 2003 22:58:29 -0000 1.10
+++ smush_font.cpp 7 Jun 2003 23:12:46 -0000 1.11
@@ -192,33 +192,36 @@
char *z = strchr(str, '\n');
if (z != 0) {
+ // FIXME: this is actually evil, because it silently modifes the
+ // string 'str' passed to us, despite it being declared const.
+ warning("drawStringCentered: got input string containing \\n");
*z = 0;
}
char **words = split(str, ' ');
- int nb_sub = 0;
-
- while (words[nb_sub])
- nb_sub++;
+ int word_count = 0;
- int *sizes = new int[nb_sub];
- int i = 0, max_width = 0, height = 0, nb_subs = 0;
+ while (words[word_count])
+ word_count++;
- for (i = 0; i < nb_sub; i++)
- sizes[i] = getStringWidth(words[i]);
+ int i = 0, max_width = 0, height = 0, line_count = 0;
- char **substrings = new char *[nb_sub];
- int *substr_widths = new int[nb_sub];
+ char **substrings = new char *[word_count];
+ int *substr_widths = new int[word_count];
int space_width = getCharWidth(' ');
i = 0;
- while (i < nb_sub) {
- int substr_width = sizes[i];
+ while (i < word_count) {
+ int substr_width = getStringWidth(words[i]);
char *substr = new char[1000];
strcpy(substr, words[i]);
int j = i + 1;
- while (j < nb_sub && (substr_width + space_width + sizes[j]) < width) {
- substr_width += sizes[j++] + space_width;
+ while (j < word_count) {
+ int word_width = getStringWidth(words[j]);
+ if ((substr_width + space_width + word_width) >= width)
+ break;
+ substr_width += word_width + space_width;
+ j++;
}
for (int k = i + 1; k < j; k++) {
@@ -226,16 +229,15 @@
strcat(substr, words[k]);
}
- substrings[nb_subs] = substr;
- substr_widths[nb_subs++] = substr_width;
+ substrings[line_count] = substr;
+ substr_widths[line_count++] = substr_width;
if (substr_width > max_width)
max_width = substr_width;
i = j;
height += getStringHeight(substr);
}
- delete[] sizes;
- for (i = 0; i < nb_sub; i++) {
+ for (i = 0; i < word_count; i++) {
delete[] words[i];
}
delete[] words;
@@ -252,7 +254,7 @@
if (x > dst_width - max_width)
x = dst_width - max_width;
- for (i = 0; i < nb_subs; i++) {
+ for (i = 0; i < line_count; i++) {
drawSubstring(substrings[i], buffer, dst_width, x - substr_widths[i] / 2, y);
y += getStringHeight(substrings[i]);
delete[] substrings[i];
@@ -267,33 +269,36 @@
char *z = strchr(str, '\n');
if (z != 0) {
+ // FIXME: this is actually evil, because it silently modifes the
+ // string 'str' passed to us, despite it being declared const.
+ warning("drawStringWrap: got input string containing \\n");
*z = 0;
}
char **words = split(str, ' ');
- int nb_sub = 0;
-
- while (words[nb_sub])
- nb_sub++;
+ int word_count = 0;
- int *sizes = new int[nb_sub];
- int i = 0, max_width = 0, height = 0, nb_subs = 0;
+ while (words[word_count])
+ word_count++;
- for (i = 0; i < nb_sub; i++)
- sizes[i] = getStringWidth(words[i]);
+ int i = 0, max_width = 0, height = 0, line_count = 0;
- char **substrings = new char *[nb_sub];
- int *substr_widths = new int[nb_sub];
+ char **substrings = new char *[word_count];
+ int *substr_widths = new int[word_count];
int space_width = getCharWidth(' ');
i = 0;
- while (i < nb_sub) {
- int substr_width = sizes[i];
+ while (i < word_count) {
+ int substr_width = getStringWidth(words[i]);
char *substr = new char[1000];
strcpy(substr, words[i]);
int j = i + 1;
- while (j < nb_sub && (substr_width + space_width + sizes[j]) < width) {
- substr_width += sizes[j++] + space_width;
+ while (j < word_count) {
+ int word_width = getStringWidth(words[j]);
+ if ((substr_width + space_width + word_width) >= width)
+ break;
+ substr_width += word_width + space_width;
+ j++;
}
for (int k = i + 1; k < j; k++) {
@@ -301,16 +306,15 @@
strcat(substr, words[k]);
}
- substrings[nb_subs] = substr;
- substr_widths[nb_subs++] = substr_width;
+ substrings[line_count] = substr;
+ substr_widths[line_count++] = substr_width;
if (max_width < substr_width)
max_width = substr_width;
i = j;
height += getStringHeight(substr);
}
- delete[] sizes;
- for (i = 0; i < nb_sub; i++) {
+ for (i = 0; i < word_count; i++) {
delete[] words[i];
}
delete[] words;
@@ -322,7 +326,7 @@
if (x > dst_width - max_width)
x = dst_width - max_width;
- for (i = 0; i < nb_subs; i++) {
+ for (i = 0; i < line_count; i++) {
drawSubstring(substrings[i], buffer, dst_width, x, y);
y += getStringHeight(substrings[i]);
delete[] substrings[i];
@@ -337,34 +341,37 @@
char *z = strchr(str, '\n');
if (z != 0) {
+ // FIXME: this is actually evil, because it silently modifes the
+ // string 'str' passed to us, despite it being declared const.
+ warning("drawStringWrapCentered: got input string containing \\n");
*z = 0;
}
char **words = split(str, ' ');
- int nb_sub = 0;
-
- while (words[nb_sub])
- nb_sub++;
+ int word_count = 0;
- int *sizes = new int[nb_sub];
- int i = 0, max_width = 0, height = 0, nb_subs = 0;
+ while (words[word_count])
+ word_count++;
- for (i = 0; i < nb_sub; i++)
- sizes[i] = getStringWidth(words[i]);
+ int i = 0, max_width = 0, height = 0, line_count = 0;
- char **substrings = new char *[nb_sub];
- int *substr_widths = new int[nb_sub];
+ char **substrings = new char *[word_count];
+ int *substr_widths = new int[word_count];
int space_width = getCharWidth(' ');
i = 0;
width = MIN(width, dst_width);
- while (i < nb_sub) {
- int substr_width = sizes[i];
+ while (i < word_count) {
+ int substr_width = getStringWidth(words[i]);
char *substr = new char[1000];
strcpy(substr, words[i]);
int j = i + 1;
- while (j < nb_sub && (substr_width + space_width + sizes[j]) < width) {
- substr_width += sizes[j++] + space_width;
+ while (j < word_count) {
+ int word_width = getStringWidth(words[j]);
+ if ((substr_width + space_width + word_width) >= width)
+ break;
+ substr_width += word_width + space_width;
+ j++;
}
for (int k = i + 1; k < j; k++) {
@@ -372,16 +379,15 @@
strcat(substr, words[k]);
}
- substrings[nb_subs] = substr;
- substr_widths[nb_subs++] = substr_width;
+ substrings[line_count] = substr;
+ substr_widths[line_count++] = substr_width;
if (max_width < substr_width)
max_width = substr_width;
i = j;
height += getStringHeight(substr);
}
- delete[] sizes;
- for (i = 0; i < nb_sub; i++) {
+ for (i = 0; i < word_count; i++) {
delete[] words[i];
}
delete[] words;
@@ -397,7 +403,7 @@
if (x > dst_width - max_width)
x = dst_width - max_width;
- for (i = 0; i < nb_subs; i++) {
+ for (i = 0; i < line_count; i++) {
drawSubstring(substrings[i], buffer, dst_width, x - substr_widths[i] / 2, y);
y += getStringHeight(substrings[i]);
delete[] substrings[i];
More information about the Scummvm-git-logs
mailing list