home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume26 / banners-1.1 / part01 / banner-12 / banner.c next >
C/C++ Source or Header  |  1993-04-11  |  2KB  |  86 lines

  1. #include <stdio.h>
  2. #include "flags.h"
  3.  
  4. banflags banFlagDefault = {
  5.     0,    /* not italic */
  6.     0,    /* single width */
  7.     0,    /* no leading half space */
  8.     1,    /* single height */
  9.     '*'    /* use asterisk */
  10.     };
  11.  
  12. extern unsigned char charset[];    /* Zeichensatz */
  13.  
  14. #define ROWSPERCH (8)
  15. #define COLSPERCH (8)
  16.  
  17. /*
  18.  * b a n n e r   f u n c t i o n
  19.  */
  20.  
  21. banner(fp, str, flagsp)
  22. FILE        *fp;
  23. char        *str;
  24. banflags    *flagsp;
  25. {
  26.     int    linenum, chnum, j, k;
  27.     int    ch_off;
  28.     char    ch, *space;
  29.  
  30.     if (flagsp->dblwidth) {
  31.         space = "  ";
  32.     } else {
  33.         space = " ";
  34.     }
  35.  
  36.     for (linenum = 0; linenum < ROWSPERCH; linenum++) {
  37.         for (j = 0; j < flagsp->height; j++) {
  38.             if (flagsp->halfspace) {
  39.                 for (k = 0; k < COLSPERCH/2; k++)
  40.                     (void)fputs(space, fp);
  41.             }
  42.  
  43.             if (flagsp->italic) {
  44.                 /* shift for italics */
  45.                 for (k = flagsp->height * (ROWSPERCH - linenum) - (j + 1);
  46.                     k > 0; k--)
  47.                     (void)putc(' ', fp);
  48.             }
  49.  
  50.             for (chnum = 0; chnum < strlen(str); chnum++) {
  51.                 ch    = str[chnum];
  52.                 ch_off    = (int) ch * 8;
  53.                 outline(fp, (flagsp->bannerch == '\0') ? ch : flagsp->bannerch,
  54.                 charset[ch_off + linenum],
  55.                 (int)flagsp->dblwidth);
  56.             }
  57.  
  58.             (void)putc('\n', fp);
  59.         }
  60.     }
  61. }
  62.  
  63.  
  64. /*
  65.  * o u t l i n e
  66.  */
  67.  
  68. static outline(fp, outchar, outbyte, dblsize)
  69. FILE         *fp;
  70. char         outchar;
  71. unsigned char     outbyte;
  72. int        dblsize;
  73. {
  74.     int bc;
  75.     char ch;
  76.  
  77.     for (bc = ROWSPERCH-1; bc >= 0; bc--) {
  78.         ch = (outbyte & (0x01 << bc)) ? outchar : ' ';
  79.         (void)putc(ch, fp);
  80.         if (dblsize) {
  81.             /* if double size, repeat it */
  82.             (void)putc(ch, fp);
  83.         }
  84.     }
  85. }
  86.