| #include <u.h> |
| #include <libc.h> |
| #include <draw.h> |
| |
| Subfont* |
| allocsubfont(char *name, int n, int height, int ascent, Fontchar *info, Image *i) |
| { |
| Subfont *f, *cf; |
| |
| assert(height != 0 /* allocsubfont */); |
| |
| f = malloc(sizeof(Subfont)); |
| if(f == 0) |
| return 0; |
| f->n = n; |
| f->height = height; |
| f->ascent = ascent; |
| f->info = info; |
| f->bits = i; |
| f->ref = 1; |
| if(name){ |
| /* |
| * if already caching this subfont, leave older |
| * (and hopefully more widely used) copy in cache. |
| * this case should not happen -- we got called |
| * because cachechars needed this subfont and it |
| * wasn't in the cache. |
| */ |
| f->name = strdup(name); |
| if((cf=lookupsubfont(i->display, name)) == 0) |
| installsubfont(name, f); |
| else |
| freesubfont(cf); /* drop ref we just picked up */ |
| }else |
| f->name = 0; |
| return f; |
| } |