37 lines
808 B
C
37 lines
808 B
C
#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;
|
|
}
|