Blame


1 76193d7c 2003-09-30 devnull #include <u.h>
2 76193d7c 2003-09-30 devnull #include <libc.h>
3 76193d7c 2003-09-30 devnull #include <draw.h>
4 76193d7c 2003-09-30 devnull
5 76193d7c 2003-09-30 devnull Subfont*
6 76193d7c 2003-09-30 devnull allocsubfont(char *name, int n, int height, int ascent, Fontchar *info, Image *i)
7 76193d7c 2003-09-30 devnull {
8 b2f9ee0d 2005-07-13 devnull Subfont *f, *cf;
9 76193d7c 2003-09-30 devnull
10 76193d7c 2003-09-30 devnull assert(height != 0 /* allocsubfont */);
11 76193d7c 2003-09-30 devnull
12 76193d7c 2003-09-30 devnull f = malloc(sizeof(Subfont));
13 76193d7c 2003-09-30 devnull if(f == 0)
14 76193d7c 2003-09-30 devnull return 0;
15 76193d7c 2003-09-30 devnull f->n = n;
16 76193d7c 2003-09-30 devnull f->height = height;
17 76193d7c 2003-09-30 devnull f->ascent = ascent;
18 76193d7c 2003-09-30 devnull f->info = info;
19 76193d7c 2003-09-30 devnull f->bits = i;
20 76193d7c 2003-09-30 devnull f->ref = 1;
21 76193d7c 2003-09-30 devnull if(name){
22 b2f9ee0d 2005-07-13 devnull /*
23 fa325e9b 2020-01-10 cross * if already caching this subfont, leave older
24 b2f9ee0d 2005-07-13 devnull * (and hopefully more widely used) copy in cache.
25 fa325e9b 2020-01-10 cross * this case should not happen -- we got called
26 b2f9ee0d 2005-07-13 devnull * because cachechars needed this subfont and it
27 b2f9ee0d 2005-07-13 devnull * wasn't in the cache.
28 b2f9ee0d 2005-07-13 devnull */
29 76193d7c 2003-09-30 devnull f->name = strdup(name);
30 b2f9ee0d 2005-07-13 devnull if((cf=lookupsubfont(i->display, name)) == 0)
31 76193d7c 2003-09-30 devnull installsubfont(name, f);
32 b2f9ee0d 2005-07-13 devnull else
33 b2f9ee0d 2005-07-13 devnull freesubfont(cf); /* drop ref we just picked up */
34 76193d7c 2003-09-30 devnull }else
35 76193d7c 2003-09-30 devnull f->name = 0;
36 76193d7c 2003-09-30 devnull return f;
37 76193d7c 2003-09-30 devnull }