xref: /plan9/sys/src/libdraw/subfontcache.c (revision b8661318e8f82fa2a6c406ca28596a6aef982bd2)
1 #include <u.h>
2 #include <libc.h>
3 #include <draw.h>
4 
5 /*
6  * Easy versions of the cache routines; may be substituted by fancier ones for other purposes
7  */
8 
9 static char	*lastname;
10 Subfont	*lastsubfont;
11 
12 Subfont*
lookupsubfont(Display * d,char * name)13 lookupsubfont(Display *d, char *name)
14 {
15 	if(d && strcmp(name, "*default*") == 0)
16 		return d->defaultsubfont;
17 	if(lastname && strcmp(name, lastname)==0)
18 	if(d==lastsubfont->bits->display){
19 		lastsubfont->ref++;
20 		return lastsubfont;
21 	}
22 	return 0;
23 }
24 
25 void
installsubfont(char * name,Subfont * subfont)26 installsubfont(char *name, Subfont *subfont)
27 {
28 	free(lastname);
29 	lastname = strdup(name);
30 	lastsubfont = subfont;	/* notice we don't free the old one; that's your business */
31 }
32 
33 void
uninstallsubfont(Subfont * subfont)34 uninstallsubfont(Subfont *subfont)
35 {
36 	if(subfont == lastsubfont){
37 		lastname = 0;
38 		lastsubfont = 0;
39 	}
40 }
41