internal FontSelectorCache(FontSet defaultFontSet) { System.Diagnostics.Debug.Assert(defaultFontSet != null); this.defaultSelectors = new FontSelectorCache.FontSetSelectors(); this.defaultSelectors.Update(defaultFontSet); this.defaultFontSet = defaultFontSet; }
private bool Update(FontSelectorCache.FontSetSelectors selectors, FontSet fontSet) { bool updated = false; if (defaultSelectors.Update(defaultFontSet)) { updated = true; } if (selectors != null && selectors.Update(fontSet)) { updated = true; } return(updated); }
internal virtual void Put(FontSelectorKey key, FontSelector fontSelector, FontSet fontSet) { if (fontSet == null) { Put(key, fontSelector); } else { FontSelectorCache.FontSetSelectors selectors = caches.Get(fontSet.GetId()); if (selectors == null) { caches.Put(fontSet.GetId(), selectors = new FontSelectorCache.FontSetSelectors()); } //update selectors and defaultSelectors to reset counter before pushing if needed. Update(selectors, fontSet); selectors.map.Put(key, fontSelector); } }
internal virtual FontSelector Get(FontSelectorKey key, FontSet fontSet) { if (fontSet == null) { return(Get(key)); } else { FontSelectorCache.FontSetSelectors selectors = caches.Get(fontSet.GetId()); if (selectors == null) { caches.Put(fontSet.GetId(), selectors = new FontSelectorCache.FontSetSelectors()); } if (Update(selectors, fontSet)) { return(null); } else { return(selectors.map.Get(key)); } } }