9fans.net/go@v0.0.5/draw/subfontcache.go (about)

     1  package draw
     2  
     3  import "sync"
     4  
     5  /*
     6   * Easy versions of the cache routines; may be substituted by fancier ones for other purposes
     7   */
     8  
     9  var lastfont struct {
    10  	sync.Mutex
    11  	name string
    12  	sub  *subfont
    13  }
    14  
    15  func lookupsubfont(d *Display, name string) *subfont {
    16  	if d != nil && name == "*default*" {
    17  		return d.defaultSubfont
    18  	}
    19  	lastfont.Lock()
    20  	defer lastfont.Unlock()
    21  	if lastfont.name == name && d == lastfont.sub.Bits.Display {
    22  		lastfont.sub.ref++
    23  		return lastfont.sub
    24  	}
    25  	return nil
    26  }
    27  
    28  func installsubfont(name string, subfont *subfont) {
    29  	lastfont.Lock()
    30  	defer lastfont.Unlock()
    31  	lastfont.name = name
    32  	lastfont.sub = subfont /* notice we don't free the old one; that's your business */
    33  }
    34  
    35  func uninstallsubfont(subfont *subfont) {
    36  	lastfont.Lock()
    37  	defer lastfont.Unlock()
    38  	if subfont == lastfont.sub {
    39  		lastfont.name = ""
    40  		lastfont.sub = nil
    41  	}
    42  }