getting language stuff more self-contained

This commit is contained in:
Albert Cahalan 2004-12-28 04:16:52 +00:00
parent d6275ecb61
commit 9c320ca3a9

View file

@ -637,42 +637,21 @@ static int lang_use_right_to_left[] = {
}; };
static int need_own_font(int l) static int search_int_array(int l, int *array)
{ {
int i, need; int i;
need = 0; for (i = 0; array[i] != -1; i++)
for (i = 0; lang_use_own_font[i] != -1 && need == 0; i++)
{ {
if (lang_use_own_font[i] == l) if (array[i] == l)
{ return 1;
need = 1;
}
} }
return need; return 0;
} }
static int need_own_font;
static int need_right_to_left(int l) static int need_right_to_left;
{
int i, need;
need = 0;
for (i = 0; lang_use_right_to_left[i] != -1 && need == 0; i++)
{
if (lang_use_right_to_left[i] == l)
{
need = 1;
}
}
return need;
}
/* Determine the current language/locale, and set the language string: */ /* Determine the current language/locale, and set the language string: */
@ -736,7 +715,8 @@ static void set_current_language(void)
language_enum = lang; language_enum = lang;
lang_prefix = lang_prefixes[lang]; lang_prefix = lang_prefixes[lang];
need_own_font = search_int_array(lang,lang_use_own_font);
need_right_to_left = search_int_array(lang,lang_use_right_to_left);
#ifdef DEBUG #ifdef DEBUG
printf("DEBUG: Language is %s (%d)\n", lang_prefix, language_enum); printf("DEBUG: Language is %s (%d)\n", lang_prefix, language_enum);
@ -6543,7 +6523,7 @@ static void setup(int argc, char * argv[])
} }
if (need_own_font(language_enum)) if (need_own_font)
{ {
snprintf(str, sizeof(str), "%sfonts/locale/%s.ttf", snprintf(str, sizeof(str), "%sfonts/locale/%s.ttf",
DATA_PREFIX, lang_prefix); DATA_PREFIX, lang_prefix);
@ -6799,7 +6779,7 @@ static void setup(int argc, char * argv[])
{ {
if (strlen(title_names[i]) > 0) if (strlen(title_names[i]) > 0)
{ {
if (need_own_font(language_enum) && locale_font != NULL && if (need_own_font && locale_font != NULL &&
strcmp(gettext(title_names[i]), title_names[i]) != 0) strcmp(gettext(title_names[i]), title_names[i]) != 0)
{ {
tmp_surf = TTF_RenderUTF8_Blended(locale_font, tmp_surf = TTF_RenderUTF8_Blended(locale_font,
@ -6971,7 +6951,7 @@ static SDL_Surface * do_render_button_label(const char * const label)
SDL_Surface * tmp_surf, * surf; SDL_Surface * tmp_surf, * surf;
SDL_Color black = {0, 0, 0, 0}; SDL_Color black = {0, 0, 0, 0};
if (need_own_font(language_enum) && locale_font != NULL && if (need_own_font && locale_font != NULL &&
strcmp(gettext(label), label) != 0) strcmp(gettext(label), label) != 0)
{ {
tmp_surf = TTF_RenderUTF8_Blended(locale_font, textdir(gettext(label)), black); tmp_surf = TTF_RenderUTF8_Blended(locale_font, textdir(gettext(label)), black);
@ -9149,7 +9129,7 @@ static void wordwrap_text(const char * const str, SDL_Color color,
if (x > left) if (x > left)
{ {
if (need_right_to_left(language_enum) && want_right_to_left) if (need_right_to_left && want_right_to_left)
anti_carriage_return(left, right, top, top + text->h, y + text->h, anti_carriage_return(left, right, top, top + text->h, y + text->h,
x - left); x - left);
@ -9208,7 +9188,7 @@ static void wordwrap_text(const char * const str, SDL_Color color,
{ {
if (x + text->w > right) if (x + text->w > right)
{ {
if (need_right_to_left(language_enum) && want_right_to_left) if (need_right_to_left && want_right_to_left)
anti_carriage_return(left, right, top, top + text->h, anti_carriage_return(left, right, top, top + text->h,
y + text->h, x - left); y + text->h, x - left);
@ -9218,7 +9198,7 @@ static void wordwrap_text(const char * const str, SDL_Color color,
dest.x = x; dest.x = x;
if (need_right_to_left(language_enum) && want_right_to_left) if (need_right_to_left && want_right_to_left)
dest.y = top; dest.y = top;
else else
dest.y = y; dest.y = y;
@ -9242,7 +9222,7 @@ static void wordwrap_text(const char * const str, SDL_Color color,
{ {
/* This word needs to move down? */ /* This word needs to move down? */
if (need_right_to_left(language_enum) && want_right_to_left) if (need_right_to_left && want_right_to_left)
anti_carriage_return(left, right, top, top + text->h, y + text->h, anti_carriage_return(left, right, top, top + text->h, y + text->h,
x - left); x - left);
@ -9252,7 +9232,7 @@ static void wordwrap_text(const char * const str, SDL_Color color,
dest.x = x; dest.x = x;
if (need_right_to_left(language_enum) && want_right_to_left) if (need_right_to_left && want_right_to_left)
dest.y = top; dest.y = top;
else else
dest.y = y; dest.y = y;
@ -9338,7 +9318,7 @@ static void wordwrap_text(const char * const str, SDL_Color color,
if (x + text->w > right) /* Correct? */ if (x + text->w > right) /* Correct? */
{ {
if (need_right_to_left(language_enum) && want_right_to_left) if (need_right_to_left && want_right_to_left)
anti_carriage_return(left, right, top, top + text->h, y + text->h, anti_carriage_return(left, right, top, top + text->h, y + text->h,
x - left); x - left);
@ -9351,7 +9331,7 @@ static void wordwrap_text(const char * const str, SDL_Color color,
dest.x = x; dest.x = x;
if (need_right_to_left(language_enum) && want_right_to_left) if (need_right_to_left && want_right_to_left)
dest.y = top; dest.y = top;
else else
dest.y = y; dest.y = y;
@ -9381,7 +9361,7 @@ static void wordwrap_text(const char * const str, SDL_Color color,
/* Right-justify the final line of text, in right-to-left mode: */ /* Right-justify the final line of text, in right-to-left mode: */
if (need_right_to_left(language_enum) && want_right_to_left && last_text_height > 0) if (need_right_to_left && want_right_to_left && last_text_height > 0)
{ {
src.x = left; src.x = left;
src.y = top; src.y = top;
@ -13729,7 +13709,7 @@ static unsigned char * textdir(const unsigned char * const str)
dstr = (unsigned char *) malloc((strlen(str) + 5) * sizeof(unsigned char)); dstr = (unsigned char *) malloc((strlen(str) + 5) * sizeof(unsigned char));
if (need_right_to_left(language_enum)) if (need_right_to_left)
{ {
dstr[strlen(str)] = '\0'; dstr[strlen(str)] = '\0';