OSDN Git Service

二倍幅豆腐、内部コードに「Å」を使う方法で実装。
authormogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sat, 13 Apr 2002 00:29:37 +0000 (00:29 +0000)
committermogami <mogami@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sat, 13 Apr 2002 00:29:37 +0000 (00:29 +0000)
main-win.cでrectangleを進め方にバグがあり、rc.rightを3バイト進めていたので、
修正して、豆腐が右横に伸びなくした。

src/cave.c
src/main-win.c
src/z-term.c

index 66c5c99..deaab18 100644 (file)
@@ -1747,6 +1747,7 @@ void map_info(int y, int x, byte *ap, char *cp)
 #ifdef JP
 /*
  * Table of Ascii-to-Zenkaku
+ * ¡Ö¢ò¡×¤ÏÆóÇÜÉýƦÉå¤ÎÆâÉô¥³¡¼¥É¤Ë»ÈÍÑ¡£
  */
 static char ascii_to_zenkaku[2*128+1] =  "\
 ¡¡¡ª¡É¡ô¡ð¡ó¡õ¡Ç¡Ê¡Ë¡ö¡Ü¡¤¡Ý¡¥¡¿\
@@ -1754,7 +1755,7 @@ static char ascii_to_zenkaku[2*128+1] =  "\
 ¡÷£Á£Â£Ã£Ä£Å£Æ£Ç£È£É£Ê£Ë£Ì£Í£Î£Ï\
 £Ð£Ñ£Ò£Ó£Ô£Õ£Ö£×£Ø£Ù£Ú¡Î¡À¡Ï¡°¡²\
 ¡Æ£á£â£ã£ä£å£æ£ç£è£é£ê£ë£ì£í£î£ï\
-£ð£ñ£ò£ó£ô£õ£ö£÷£ø£ù£ú¡Ð¡Ã¡Ñ¡Á¡¡";
+£ð£ñ£ò£ó£ô£õ£ö£÷£ø£ù£ú¡Ð¡Ã¡Ñ¡Á¢ò";
 #endif
 
 /*
@@ -1770,16 +1771,7 @@ static void bigtile_attr(char *cp, byte *ap, char *cp2, byte *ap2)
        }
 
 #ifdef JP
-#ifdef WINDOWS
-       if (*cp == 127)
-       {
-               *ap2 = *ap;
-               *cp2 = *cp;
-               return;
-       }
-#endif
-
-       if (isprint(*cp))
+       if (isprint(*cp) || *cp == 127)
        {
                *ap2 = *ap;
                *cp2 = ascii_to_zenkaku[2*(*cp-' ') + 1];
@@ -2090,7 +2082,7 @@ void lite_spot(int y, int x)
                }
 
 #ifdef JP
-               if (use_bigtile && !(a & 0x80) && isprint(c))
+               if (use_bigtile && !(a & 0x80) && (isprint(c) || c == 127))
                {
                        Term_queue_chars(panel_col_of(x), y-panel_row_prt, 2, a, &ascii_to_zenkaku[2*(c-' ')]);
                        return;
index f45c3e6..068d886 100644 (file)
@@ -2221,7 +2221,7 @@ static errr Term_curs_win(int x, int y)
 
 #ifdef JP
        if (x + 1 < Term->wid && 
-           ((use_bigtile && ((Term->old->a[y][x+1] == 255) || (Term->old->c[y][x] == 127)))
+           ((use_bigtile && Term->old->a[y][x+1] == 255)
            || (iskanji(Term->old->c[y][x]) && !(Term->old->a[y][x] & 0x80))))
 #else
        if (use_bigtile && x + 1 < Term->wid && Term->old->a[y][x+1] == 255)
@@ -2357,12 +2357,32 @@ static errr Term_text_win(int x, int y, int n, byte a, const char *s)
                for (i = 0; i < n; i++)
                {
 #ifdef JP
-                       if ( iskanji(*(s+i)) )  /*  £²¥Ð¥¤¥Èʸ»ú  */
+                       if (use_bigtile && *(s+i)=="¢ò"[0] && *(s+i+1)=="¢ò"[1])
+                       {
+                               rc.right += td->font_wid;
+
+                               oldBrush = SelectObject(hdc, myBrush);
+                               oldPen = SelectObject(hdc, GetStockObject(NULL_PEN) );
+
+                               /* Dump the wall */
+                               Rectangle(hdc, rc.left, rc.top, rc.right+1, rc.bottom+1);
+
+                               SelectObject(hdc, oldBrush);
+                               SelectObject(hdc, oldPen);
+                               rc.right -= td->font_wid;
+
+                               /* Advance */
+                               i++;
+                               rc.left += 2 * td->tile_wid;
+                               rc.right += 2 * td->tile_wid;
+                       }
+                       else if ( iskanji(*(s+i)) )  /*  £²¥Ð¥¤¥Èʸ»ú  */
                        {
                                rc.right += td->font_wid;
                                /* Dump the text */
                                ExtTextOut(hdc, rc.left, rc.top, ETO_CLIPPED, &rc,
                                       s+i, 2, NULL);
+                               rc.right -= td->font_wid;
 
                                /* Advance */
                                i++;
index ce8562e..3dad942 100644 (file)
@@ -1703,9 +1703,6 @@ errr Term_fresh(void)
                        if (tx + 1 < Term->wid && !(old_aa[tx] & 0x80)
                            && iskanji(old_cc[tx]))
                                csize = 2;
-#ifdef WINDOWS
-                       if (old_cc[tx] == 127 && use_bigtile) csize = 2;
-#endif
 #endif
                        /* Hack -- use "Term_pict()" always */
                        if (Term->always_pict)