plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

writesubfont.c (689B)


      1 #include <u.h>
      2 #include <libc.h>
      3 #include <draw.h>
      4 
      5 static
      6 void
      7 packinfo(Fontchar *fc, uchar *p, int n)
      8 {
      9 	int j;
     10 
     11 	for(j=0;  j<=n;  j++){
     12 		p[0] = fc->x;
     13 		p[1] = fc->x>>8;
     14 		p[2] = fc->top;
     15 		p[3] = fc->bottom;
     16 		p[4] = fc->left;
     17 		p[5] = fc->width;
     18 		fc++;
     19 		p += 6;
     20 	}
     21 }
     22 
     23 int
     24 writesubfont(int fd, Subfont *f)
     25 {
     26 	char hdr[3*12+1];
     27 	uchar *data;
     28 	int nb;
     29 
     30 	sprint(hdr, "%11d %11d %11d ", f->n, f->height, f->ascent);
     31 	if(write(fd, hdr, 3*12) != 3*12){
     32    Err:
     33 		werrstr("writesubfont: bad write: %r");
     34 		return -1;
     35 	}
     36 	nb = 6*(f->n+1);
     37 	data = malloc(nb);
     38 	if(data == nil)
     39 		return -1;
     40 	packinfo(f->info, data, f->n);
     41 	if(write(fd, data, nb) != nb)
     42 		goto Err;
     43 	free(data);
     44 	return 0;
     45 }