]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - ncurses/tinfo/lib_acs.c
ncurses 6.3
[ncurses.git] / ncurses / tinfo / lib_acs.c
index c552f253fa61cb50776405e399cdeb930c2fc3a4..4ede53f6b995b96426bb77985cdb569c39361fbd 100644 (file)
@@ -1,5 +1,6 @@
 /****************************************************************************
- * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc.              *
+ * Copyright 2018-2019,2020 Thomas E. Dickey                                *
+ * Copyright 1998-2014,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -39,7 +40,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_acs.c,v 1.47 2018/05/05 17:35:53 tom Exp $")
+MODULE_ID("$Id: lib_acs.c,v 1.50 2020/02/02 23:34:34 tom Exp $")
 
 #if BROKEN_LINKER || USE_REENTRANT
 #define MyBuffer _nc_prescreen.real_acs_map
@@ -254,3 +255,72 @@ _nc_init_acs(void)
     NCURSES_SP_NAME(_nc_init_acs) (CURRENT_SCREEN);
 }
 #endif
+
+#if !NCURSES_WCWIDTH_GRAPHICS
+NCURSES_EXPORT(int)
+_nc_wacs_width(unsigned ch)
+{
+    int result;
+    switch (ch) {
+    case 0x00a3:               /* FALLTHRU - ncurses pound-sterling symbol */
+    case 0x00b0:               /* FALLTHRU - VT100 degree symbol */
+    case 0x00b1:               /* FALLTHRU - VT100 plus/minus */
+    case 0x00b7:               /* FALLTHRU - VT100 bullet */
+    case 0x03c0:               /* FALLTHRU - ncurses greek pi */
+    case 0x2190:               /* FALLTHRU - Teletype arrow pointing left */
+    case 0x2191:               /* FALLTHRU - Teletype arrow pointing up */
+    case 0x2192:               /* FALLTHRU - Teletype arrow pointing right */
+    case 0x2193:               /* FALLTHRU - Teletype arrow pointing down */
+    case 0x2260:               /* FALLTHRU - ncurses not-equal */
+    case 0x2264:               /* FALLTHRU - ncurses less-than-or-equal-to */
+    case 0x2265:               /* FALLTHRU - ncurses greater-than-or-equal-to */
+    case 0x23ba:               /* FALLTHRU - VT100 scan line 1 */
+    case 0x23bb:               /* FALLTHRU - ncurses scan line 3 */
+    case 0x23bc:               /* FALLTHRU - ncurses scan line 7 */
+    case 0x23bd:               /* FALLTHRU - VT100 scan line 9 */
+    case 0x2500:               /* FALLTHRU - VT100 horizontal line */
+    case 0x2501:               /* FALLTHRU - thick horizontal line */
+    case 0x2502:               /* FALLTHRU - VT100 vertical line */
+    case 0x2503:               /* FALLTHRU - thick vertical line */
+    case 0x250c:               /* FALLTHRU - VT100 upper left corner */
+    case 0x250f:               /* FALLTHRU - thick upper left corner */
+    case 0x2510:               /* FALLTHRU - VT100 upper right corner */
+    case 0x2513:               /* FALLTHRU - thick upper right corner */
+    case 0x2514:               /* FALLTHRU - VT100 lower left corner */
+    case 0x2517:               /* FALLTHRU - thick lower left corner */
+    case 0x2518:               /* FALLTHRU - VT100 lower right corner */
+    case 0x251b:               /* FALLTHRU - thick lower right corner */
+    case 0x251c:               /* FALLTHRU - VT100 tee pointing left */
+    case 0x2523:               /* FALLTHRU - thick tee pointing left */
+    case 0x2524:               /* FALLTHRU - VT100 tee pointing right */
+    case 0x252b:               /* FALLTHRU - thick tee pointing right */
+    case 0x252c:               /* FALLTHRU - VT100 tee pointing down */
+    case 0x2533:               /* FALLTHRU - thick tee pointing down */
+    case 0x2534:               /* FALLTHRU - VT100 tee pointing up */
+    case 0x253b:               /* FALLTHRU - thick tee pointing up */
+    case 0x253c:               /* FALLTHRU - VT100 large plus or crossover */
+    case 0x254b:               /* FALLTHRU - thick large plus or crossover */
+    case 0x2550:               /* FALLTHRU - double horizontal line */
+    case 0x2551:               /* FALLTHRU - double vertical line */
+    case 0x2554:               /* FALLTHRU - double upper left corner */
+    case 0x2557:               /* FALLTHRU - double upper right corner */
+    case 0x255a:               /* FALLTHRU - double lower left corner */
+    case 0x255d:               /* FALLTHRU - double lower right corner */
+    case 0x2560:               /* FALLTHRU - double tee pointing right */
+    case 0x2563:               /* FALLTHRU - double tee pointing left */
+    case 0x2566:               /* FALLTHRU - double tee pointing down */
+    case 0x2569:               /* FALLTHRU - double tee pointing up */
+    case 0x256c:               /* FALLTHRU - double large plus or crossover */
+    case 0x2592:               /* FALLTHRU - VT100 checker board (stipple) */
+    case 0x25ae:               /* FALLTHRU - Teletype solid square block */
+    case 0x25c6:               /* FALLTHRU - VT100 diamond */
+    case 0x2603:               /* FALLTHRU - Teletype lantern symbol */
+       result = 1;
+       break;
+    default:
+       result = wcwidth(ch);
+       break;
+    }
+    return result;
+}
+#endif /* !NCURSES_WCWIDTH_GRAPHICS */