mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 05:12:44 +00:00 
			
		
		
		
	 60be51f908
			
		
	
	
		60be51f908
		
	
	
	
	
		
			
			The FontCache caches the result of font lookups. The cache key is a simple object called FontSelector which consists of the font family and font weight (both strings.) This drastically reduces time spent in font lookup.
		
			
				
	
	
		
			34 lines
		
	
	
	
		
			739 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
	
		
			739 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include <AK/HashMap.h>
 | |
| #include <AK/String.h>
 | |
| 
 | |
| class Font;
 | |
| 
 | |
| struct FontSelector {
 | |
|     String family;
 | |
|     String weight;
 | |
| 
 | |
|     bool operator==(const FontSelector& other) const
 | |
|     {
 | |
|         return family == other.family && weight == other.weight;
 | |
|     }
 | |
| };
 | |
| 
 | |
| namespace AK {
 | |
| template<>
 | |
| struct Traits<FontSelector> : public GenericTraits<FontSelector> {
 | |
|     static unsigned hash(const FontSelector& key) { return pair_int_hash(key.family.hash(), key.weight.hash()); }
 | |
| };
 | |
| }
 | |
| 
 | |
| class FontCache {
 | |
| public:
 | |
|     static FontCache& the();
 | |
|     RefPtr<Font> get(const FontSelector&) const;
 | |
|     void set(const FontSelector&, NonnullRefPtr<Font>);
 | |
| 
 | |
| private:
 | |
|     FontCache() {}
 | |
|     mutable HashMap<FontSelector, NonnullRefPtr<Font>> m_fonts;
 | |
| };
 |