ladybird/Libraries/LibHTML/FontCache.h
Andreas Kling 60be51f908 LibHTML: Add a simple font cache
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.
2019-10-18 23:06:03 +02:00

35 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;
};