/* cgCharBits[][] holds LCD character generator patterns for
 * user-defined characters (UDCs).  Module initialization writes these
 * to LCD CGRAM Characters are defined using 8x8 glyph-building
 * macros.
 *
 * This glyph building method is from the book "Expert C Programming"
 * by Peter van der Linden, of Sun Microsystems' compiler and OS
 * kernel group, who says that Sun got the tip from the Usenet's
 * comp.lang.c newsgroup many years ago.
 *
 * Template for 8-bit glyphs:
 *  {
 *      s _ _ _ _ _ _ _ _,
 *      s _ _ _ _ _ _ _ _,
 *      s _ _ _ _ _ _ _ _,
 *      s _ _ _ _ _ _ _ _,
 *      s _ _ _ _ _ _ _ _,
 *      s _ _ _ _ _ _ _ _,
 *      s _ _ _ _ _ _ _ _,
 *      s _ _ _ _ _ _ _ _
 *  },
 *
 * For 16x16, use:
 *
 *  #define s ((((((((((((((((0
 *
 * For example:
 *
 *  U16 stopwatch[] =
 *  {
 *      s _ _ _ _ _ X X X X X _ _ _ X X _,
 *      s _ _ _ X X X X X X X X X _ X X X,
 *      s _ _ X X X _ _ _ _ _ X X X _ X X,
 *      s _ X X _ _ _ _ _ _ _ _ _ X X _ _,
 *      s _ X X _ _ _ _ _ _ _ _ _ X X _ _,
 *      s X X _ _ _ _ _ _ _ _ _ _ _ X X _,
 *      s X X _ _ _ _ _ _ _ _ _ _ _ X X _,
 *      s X X _ X X X X X _ _ _ _ _ X X _,
 *      s X X _ _ _ _ _ X _ _ _ _ _ X X _,
 *      s X X _ _ _ _ _ X _ _ _ _ _ X X _,
 *      s _ X X _ _ _ _ X _ _ _ _ X X _ _,
 *      s _ X X _ _ _ _ X _ _ _ _ X X _ _,
 *      s _ _ X X X _ _ _ _ _ X X X _ _ _,
 *      s _ _ _ X X X X X X X X X _ _ _ _,
 *      s _ _ _ _ _ X X X X X _ _ _ _ _ _,
 *      s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
 *  };
 */
#define X   )*2+1
#define _   )*2
#define s   ((((((((0

static const U8 cgCharBits[][8] =   /* Up to 8 UDC's for HD44780 */
{
    /* UDC# 0x00 is not used because 0x00 == ' ' == NUL-terminator. */
    {   /* UDC# 0x01 = Backslash */
        s _ _ _ _ _ _ _ _,
        s _ _ _ X _ _ _ _,
        s _ _ _ _ X _ _ _,
        s _ _ _ _ _ X _ _,
        s _ _ _ _ _ _ X _,
        s _ _ _ _ _ _ _ X,
        s _ _ _ _ _ _ _ _,
        s _ _ _ _ _ _ _ _
    },
    {   /* UDC# 0x02 = Degree symbol */
        s _ _ _ _ X X X _,
        s _ _ _ _ X _ X _,
        s _ _ _ _ X X X _,
        s _ _ _ _ _ _ _ _,
        s _ _ _ _ _ _ _ _,
        s _ _ _ _ _ _ _ _,
        s _ _ _ _ _ _ _ _,
        s _ _ _ _ _ _ _ _
    },
#if 0
    {   /* TBD */
        s _ _ _ _ _ _ _ _,
        s _ _ _ _ _ _ _ _,
        s _ _ _ _ _ _ _ _,
        s _ _ _ _ _ _ _ _,
        s _ _ _ _ _ _ _ _,
        s _ _ _ _ _ _ _ _,
        s _ _ _ _ _ _ _ _,
        s _ _ _ _ _ _ _ _
    },
#endif
};

/* Undefine glyph-building macros. */

#undef X
#undef _
#undef s
#endif  /* DISP_GLYPHS */