Ticket #8335: hebrew2.diff

File hebrew2.diff, 3.7 KB (added by salty-horse, 17 years ago)
  • queen/talk.cpp

    RCS file: /cvsroot/scummvm/scummvm/queen/talk.cpp,v
    retrieving revision 1.92
    diff -u -r1.92 talk.cpp
     
    12331233        uint16 optionLines = 0;
    12341234        uint16 maxTextLen = MAX_TEXT_WIDTH;
    12351235        const char *p = str;
    1236         while (p) {
    1237                 p = strchr(str, ' ');
    1238                 if (p) {
    1239                         uint16 len = p - str;
    1240                         uint16 wordWidth = _vm->display()->textWidth(str, len);
    1241                         width += wordWidth;
    1242                         if (width> maxTextLen) {
    1243                                 ++optionLines;
    1244                                 strncpy(optionText[optionLines], str, len + 1);
    1245                                 width = wordWidth;
    1246                                 maxTextLen = MAX_TEXT_WIDTH - OPTION_TEXT_MARGIN;
     1236        char tmpString[MAX_STRING_SIZE] = "";
     1237
     1238        // Split up hebrew lines in reverse
     1239        if (_vm->resource()->getLanguage() == HEBREW) {
     1240                uint16 len = 0;
     1241
     1242                p = strchr(str, '\0');
     1243
     1244                while (p != str - 1) {
     1245                        while (*p != ' ' && p != str - 1) {
     1246                                --p;
     1247                                ++len;
     1248                        }
     1249                        if (p != str - 1) {
     1250                                uint16 wordWidth = _vm->display()->textWidth(p, len);
     1251                                width += wordWidth;
     1252                                if (width > maxTextLen) {
     1253                                        ++optionLines;
     1254                                        strncpy(optionText[optionLines], p, len);
     1255                                        optionText[optionLines][len] = '\0';
     1256                                        width = wordWidth;
     1257                                        maxTextLen = MAX_TEXT_WIDTH - OPTION_TEXT_MARGIN;
     1258                                } else {
     1259                                        strcpy(tmpString, optionText[optionLines]);
     1260                                        strncpy(optionText[optionLines], p, len);
     1261                                        optionText[optionLines][len] = '\0';
     1262                                        strcat(optionText[optionLines], tmpString);
     1263                                }
     1264                                --p;
     1265                                len = 1;
     1266                                width += spaceCharWidth;
    12471267                        } else {
    1248                                 strncat(optionText[optionLines], str, len + 1);
     1268                                if (len > 1) {
     1269                                        if (width + _vm->display()->textWidth(p + 1, len) > maxTextLen) {
     1270                                                ++optionLines;
     1271                                        }
     1272                                       
     1273                                        strcpy(tmpString, optionText[optionLines]);
     1274                                        strncpy(optionText[optionLines], p + 1, len);
     1275                                        optionText[optionLines][len] = '\0';
     1276                                        strcat(optionText[optionLines], tmpString);                             
     1277                                }
     1278                                ++optionLines;
    12491279                        }
    1250                         width += spaceCharWidth;
    1251                         str = p + 1;
    1252                 } else {
    1253                         if (str[0]) {
    1254                                 if (width + _vm->display()->textWidth(str) > maxTextLen) {
     1280                }
     1281        } else {
     1282                while (p) {
     1283                        p = strchr(str, ' ');
     1284                        if (p) {
     1285                                uint16 len = p - str;
     1286                                uint16 wordWidth = _vm->display()->textWidth(str, len);
     1287                                width += wordWidth;
     1288                                if (width> maxTextLen) {
    12551289                                        ++optionLines;
     1290                                        strncpy(optionText[optionLines], str, len + 1);
     1291                                        width = wordWidth;
     1292                                        maxTextLen = MAX_TEXT_WIDTH - OPTION_TEXT_MARGIN;
     1293                                } else {
     1294                                        strncat(optionText[optionLines], str, len + 1);
    12561295                                }
    1257                                 strcat(optionText[optionLines], str);
     1296                                width += spaceCharWidth;
     1297                                str = p + 1;
     1298                        } else {
     1299                                if (str[0]) {
     1300                                        if (width + _vm->display()->textWidth(str) > maxTextLen) {
     1301                                                ++optionLines;
     1302                                        }
     1303                                        strcat(optionText[optionLines], str);
     1304                                }
     1305                                ++optionLines;
    12581306                        }
    1259                         ++optionLines;
    12601307                }
     1308
    12611309        }
    12621310        return optionLines;
    12631311}
  • queen/journal.cpp

    RCS file: /cvsroot/scummvm/scummvm/queen/journal.cpp,v
    retrieving revision 1.32
    diff -u -r1.32 journal.cpp
     
    368368        char s[80];
    369369        strcpy(s, text);
    370370        char *p = strchr(s, ' ');
     371       
    371372        if (p == NULL) {
    372373                int x = (128 - _vm->display()->textWidth(s)) / 2;
    373374                _vm->display()->setText(x, y, s, false);
    374375                _panelTextY[_panelTextCount++] = y;
    375376        } else {
    376377                *p++ = '\0';
    377                 drawPanelText(y - 5, s);
    378                 drawPanelText(y + 5, p);
     378                if (_vm->resource()->getLanguage() == HEBREW) {
     379                        drawPanelText(y - 5, p);
     380                        drawPanelText(y + 5, s);
     381                } else {
     382                        drawPanelText(y - 5, s);
     383                        drawPanelText(y + 5, p);
     384                }
    379385        }
    380386}
    381387