URI: 
       tmain.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tmain.c (1975B)
       ---
            1 #include        <u.h>
            2 #include        <libc.h>
            3 #include        <libg.h>
            4 #include        <bio.h>
            5 #include        "hdr.h"
            6 
            7 /*
            8         produces the bitmap for the designated han characters
            9 */
           10 
           11 static void usage(void);
           12 enum { Jis = 0, Big5, Gb_bdf, Gb_qw };
           13 enum { Size24 = 0, Size16 };
           14 struct {
           15         char *names[2];
           16         mapfn *mfn;
           17         readbitsfn *bfn;
           18 } source[] = {
           19         [Jis] { "../han/jis.bits", "../han/jis16.bits", kmap, kreadbits },
           20         [Big5] { "no 24 bit file", "../han/big5.16.bits", bmap, breadbits },
           21         [Gb_bdf] { "no 24 bit file", "../han/cclib16fs.bdf", gmap, greadbits },
           22         [Gb_qw] { "no 24 bit file", "no 16bit file", gmap, qreadbits }
           23 };
           24 
           25 void
           26 main(int argc, char **argv)
           27 {
           28         int from, to;
           29         int size = 24;
           30         int src = Jis;
           31         char *file = 0;
           32         long nc, nb;
           33         int x;
           34         uchar *bits;
           35         long *chars;
           36         int raw = 0;
           37         Bitmap *b, *b1;
           38         Subfont *f;
           39         int *found;
           40 
           41         ARGBEGIN{
           42         case 'f':        file = ARGF(); break;
           43         case 'r':        raw = 1; break;
           44         case '5':        src = Big5; break;
           45         case 's':        size = 16; break;
           46         case 'g':        src = Gb_bdf; break;
           47         case 'q':        src = Gb_qw; break;
           48         default:        usage();
           49         }ARGEND
           50         if(file == 0)
           51                 file = source[src].names[(size==24)? Size24:Size16];
           52         if(argc != 2)
           53                 usage();
           54         from = strtol(argv[0], (char **)0, 0);
           55         to = strtol(argv[1], (char **)0, 0);
           56         binit(0, 0, "fontgen");
           57         nc = to-from+1;
           58         nb = size*size/8;                /* bytes per char */
           59         nb *= nc;
           60         bits = (uchar *)malloc(nb);
           61         chars = (long *)malloc(sizeof(long)*nc);
           62         found = (int *)malloc(sizeof(found[0])*nc);
           63         if(bits == 0 || chars == 0){
           64                 fprint(2, "%s: couldn't malloc %d bytes for %d chars\n", argv0, nb, nc);
           65                 exits("out of memory");
           66         }
           67         if(raw){
           68                 for(x = from; x <= to; x++)
           69                         chars[x-from] = x;
           70         } else
           71                 source[src].mfn(from, to, chars);
           72         memset(bits, 0, nb);
           73         b = source[src].bfn(file, nc, chars, size, bits, &found);
           74         b1 = balloc(b->r, b->ldepth);
           75         bitblt(b1, b1->r.min, b, b->r, S);
           76         f = bf(nc, size, b1, found);
           77         wrbitmapfile(1, b);
           78         wrsubfontfile(1, f);/**/
           79         exits(0);
           80 }
           81 
           82 static void
           83 usage(void)
           84 {
           85         fprint(2, "Usage: %s [-s] from to\n", argv0);
           86         exits("usage");
           87 }