plan9port/src/libdraw/subfont.c

38 lines
808 B
C
Raw Normal View History

2003-09-30 17:47:42 +00:00
#include <u.h>
#include <libc.h>
#include <draw.h>
Subfont*
allocsubfont(char *name, int n, int height, int ascent, Fontchar *info, Image *i)
{
2005-07-13 03:57:24 +00:00
Subfont *f, *cf;
2003-09-30 17:47:42 +00:00
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){
2005-07-13 03:57:24 +00:00
/*
* 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.
*/
2003-09-30 17:47:42 +00:00
f->name = strdup(name);
2005-07-13 03:57:24 +00:00
if((cf=lookupsubfont(i->display, name)) == 0)
2003-09-30 17:47:42 +00:00
installsubfont(name, f);
2005-07-13 03:57:24 +00:00
else
freesubfont(cf); /* drop ref we just picked up */
2003-09-30 17:47:42 +00:00
}else
f->name = 0;
return f;
}