Blame


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