xref: /plan9-contrib/sys/src/libdraw/subfontcache.c (revision b8661318e8f82fa2a6c406ca28596a6aef982bd2)
17dd7cddfSDavid du Colombier #include <u.h>
27dd7cddfSDavid du Colombier #include <libc.h>
37dd7cddfSDavid du Colombier #include <draw.h>
47dd7cddfSDavid du Colombier 
57dd7cddfSDavid du Colombier /*
67dd7cddfSDavid du Colombier  * Easy versions of the cache routines; may be substituted by fancier ones for other purposes
77dd7cddfSDavid du Colombier  */
87dd7cddfSDavid du Colombier 
97dd7cddfSDavid du Colombier static char	*lastname;
107dd7cddfSDavid du Colombier Subfont	*lastsubfont;
117dd7cddfSDavid du Colombier 
127dd7cddfSDavid du Colombier Subfont*
lookupsubfont(Display * d,char * name)137dd7cddfSDavid du Colombier lookupsubfont(Display *d, char *name)
147dd7cddfSDavid du Colombier {
15*b8661318SDavid du Colombier 	if(d && strcmp(name, "*default*") == 0)
167dd7cddfSDavid du Colombier 		return d->defaultsubfont;
17*b8661318SDavid du Colombier 	if(lastname && strcmp(name, lastname)==0)
18*b8661318SDavid du Colombier 	if(d==lastsubfont->bits->display){
1980ee5cbfSDavid du Colombier 		lastsubfont->ref++;
207dd7cddfSDavid du Colombier 		return lastsubfont;
2180ee5cbfSDavid du Colombier 	}
227dd7cddfSDavid du Colombier 	return 0;
237dd7cddfSDavid du Colombier }
247dd7cddfSDavid du Colombier 
257dd7cddfSDavid du Colombier void
installsubfont(char * name,Subfont * subfont)267dd7cddfSDavid du Colombier installsubfont(char *name, Subfont *subfont)
277dd7cddfSDavid du Colombier {
287dd7cddfSDavid du Colombier 	free(lastname);
297dd7cddfSDavid du Colombier 	lastname = strdup(name);
307dd7cddfSDavid du Colombier 	lastsubfont = subfont;	/* notice we don't free the old one; that's your business */
317dd7cddfSDavid du Colombier }
327dd7cddfSDavid du Colombier 
337dd7cddfSDavid du Colombier void
uninstallsubfont(Subfont * subfont)347dd7cddfSDavid du Colombier uninstallsubfont(Subfont *subfont)
357dd7cddfSDavid du Colombier {
367dd7cddfSDavid du Colombier 	if(subfont == lastsubfont){
377dd7cddfSDavid du Colombier 		lastname = 0;
387dd7cddfSDavid du Colombier 		lastsubfont = 0;
397dd7cddfSDavid du Colombier 	}
407dd7cddfSDavid du Colombier }
41