Back to index

tetex-bin  3.0
Functions
lib_wacs.c File Reference
#include <curses.priv.h>
#include <term.h>

Go to the source code of this file.

Functions

 NCURSES_EXPORT_VAR (cchar_t)

Function Documentation

NCURSES_EXPORT_VAR ( cchar_t  )

Definition at line 38 of file lib_wacs.c.

{
    /* *INDENT-OFF* */
    static const struct {
       int    map;
       int    value[2];
    } table[] = {
       /* VT100 symbols */
       { 'l', { '+', 0x250c }},    /* upper left corner */
       { 'm', { '+', 0x2514 }},    /* lower left corner */
       { 'k', { '+', 0x2510 }},    /* upper right corner */
       { 'j', { '+', 0x2518 }},    /* lower right corner */
       { 't', { '+', 0x251c }},    /* tee pointing left */
       { 'u', { '+', 0x2524 }},    /* tee pointing right */
       { 'v', { '+', 0x2534 }},    /* tee pointing up */
       { 'w', { '+', 0x252c }},    /* tee pointing down */
       { 'q', { '-', 0x2500 }},    /* horizontal line */
       { 'x', { '|', 0x2502 }},    /* vertical line */
       { 'n', { '+', 0x253c }},    /* large plus or crossover */
       { 'o', { '~', 0x23ba }},    /* scan line 1 */
       { 's', { '_', 0x23bd }},    /* scan line 9 */
       { '`', { '+', 0x25c6 }},    /* diamond */
       { 'a', { ':', 0x2592 }},    /* checker board (stipple) */
       { 'f', { '\'',       0x00b0 }},    /* degree symbol */
       { 'g', { '#', 0x00b1 }},    /* plus/minus */
       { '~', { 'o', 0x00b7 }},    /* bullet */
       /* Teletype 5410v1 symbols */
       { ',', { '<', 0x2190 }},    /* arrow pointing left */
       { '+', { '>', 0x2192 }},    /* arrow pointing right */
       { '.', { 'v', 0x2193 }},    /* arrow pointing down */
       { '-', { '^', 0x2191 }},    /* arrow pointing up */
       { 'h', { '#', 0x2592 }},    /* board of squares */
       { 'i', { '#', 0x2603 }},    /* lantern symbol */
       { '0', { '#', 0x25ae }},    /* solid square block */
       /* these defaults were invented for ncurses */
       { 'p', { '-', 0x23bb }},    /* scan line 3 */
       { 'r', { '-', 0x23bc }},    /* scan line 7 */
       { 'y', { '<', 0x2264 }},    /* less-than-or-equal-to */
       { 'z', { '>', 0x2265 }},    /* greater-than-or-equal-to */
       { '{', { '*', 0x03c0 }},    /* greek pi */
       { '|', { '!', 0x2260 }},    /* not-equal */
       { '}', { 'f', 0x00a3 }},    /* pound-sterling symbol */
    };
    /* *INDENT-ON* */

    unsigned n, m;
    int active = _nc_unicode_locale();

    /*
     * If we're running in a UTF-8 locale, will use the Unicode equivalents
     * rather than the terminfo information.  Actually the terminfo should
     * be the rule, but there are people who are offended by the notion that
     * a Unicode-capable terminal would have something resembling a mode.
     * So the smacs/rmacs may be disabled -- sometime.
     */
    T(("initializing WIDE-ACS map (Unicode is%s active)",
       active ? "" : " not"));

    _nc_wacs = typeCalloc(cchar_t, ACS_LEN);
    for (n = 0; n < SIZEOF(table); ++n) {
       m = table[n].map;
       if (active) {
           SetChar(_nc_wacs[m], table[n].value[active], A_NORMAL);
       } else if (acs_map[m] & A_ALTCHARSET) {
           SetChar(_nc_wacs[m], m, A_ALTCHARSET);
       } else {
           SetChar(_nc_wacs[m], table[n].value[0], A_NORMAL);
       }
       T(("#%d, SetChar(%c, %#04x) = %s",
          n, m,
          table[n].value[active],
          _tracecchar_t(&_nc_wacs[m])));
    }
}

Here is the call graph for this function: