rodecomp/Source/Render/Text/FontCache.h
ragnarok-clanker a47d20f8be Reconstruct readable C++ and organize cohesive source subsystems
Administrative source import: native x86 compilation passed for 423 authored units. Source placement and submission states are migrated separately; this commit does not imply peer acceptance.

Previous head: 35d2a8cb36
Payload SHA256: 592f016d2730c5593bb653aa054c1e5f76a6df72c8f5a09e66f74876e2e33dee
2026-10-25 07:42:41 +00:00

42 lines
884 B
C++

#ifndef RAGNAROK_SOURCE_RENDER_TEXT_FONTCACHE_H
#define RAGNAROK_SOURCE_RENDER_TEXT_FONTCACHE_H
#include <algorithm>
#include <vector>
#include <windows.h>
namespace Gdiplus {
using std::max;
using std::min;
}
struct FontEntry {
int family;
int height;
unsigned charset;
unsigned char bold;
unsigned char italic;
HFONT font;
int privateResources;
};
class FontCache {
public:
FontCache();
~FontCache();
HFONT Get(int family, int height, unsigned charset, unsigned char bold, unsigned char italic);
private:
std::vector<FontEntry> m_fonts;
ULONG_PTR m_gdiplus;
static void CreateSystemFont(FontEntry& entry);
static bool CreatePrivateFont(FontEntry& entry);
FontCache(const FontCache&) = delete;
FontCache& operator=(const FontCache&) = delete;
};
#if defined(_WIN32) && !defined(_WIN64)
static_assert(sizeof(FontEntry) == 24);
#endif
#endif