OpenTTD Source: Win32FontCache Class Reference

OpenTTD Source 15.3

Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
Win32FontCache Class Reference

Font cache for fonts that are based on a Win32 font. More...

`#include <font_win32.h>`

Inheritance diagram for Win32FontCache:

## Public Member Functions
| Win32FontCache (FontSize fs, const LOGFONT &logfont, int pixels)
| Create a new Win32FontCache.
void | ClearFontCache () override
| Reset cached glyphs.
GlyphID | MapCharToGlyph (char32_t key, bool allow_fallback=true) override
| Map a character into a glyph.
std::string | GetFontName () override
| Get the name of this font.
const void * | GetOSHandle () override
| Get the native OS font handle, if there is one.
Public Member Functions inherited from TrueTypeFontCache
| TrueTypeFontCache (FontSize fs, int pixels)
| Create a new TrueTypeFontCache.
virtual | ~TrueTypeFontCache ()
| Free everything that was allocated for this font cache.
int | GetFontSize () const override
| Get the nominal font size of the font.
const Sprite * | GetGlyph (GlyphID key) override
| Get the glyph (sprite) of the given key.
uint | GetGlyphWidth (GlyphID key) override
| Get the width of the glyph with the given key.
bool | GetDrawGlyphShadow () override
| Do we need to draw a glyph shadow?
bool | IsBuiltInFont () override
| Is this a built-in sprite font?
Public Member Functions inherited from FontCache
FontSize | GetSize () const
| Get the FontSize of the font.
int | GetHeight () const
| Get the height of the font.
int | GetAscender () const
| Get the ascender value of the font.
int | GetDescender () const
| Get the descender value of the font.
bool | HasParent ()
| Check whether the font cache has a parent.

## Protected Member Functions
const Sprite * | InternalGetGlyph (GlyphID key, bool aa) override
Protected Member Functions inherited from TrueTypeFontCache
GlyphEntry * | GetGlyphPtr (GlyphID key)
GlyphEntry & | SetGlyphPtr (GlyphID key, GlyphEntry &&glyph)
Protected Member Functions inherited from FontCache
| FontCache (FontSize fs)

## Private Member Functions
void | SetFontSize (int pixels)

## Private Attributes
LOGFONT | logfont
| Logical font information for selecting the font face.
HFONT | font = nullptr
| The font face associated with this font.
HDC | dc = nullptr
| Cached GDI device context.
HGDIOBJ | old_font
| Old font selected into the GDI context.
SIZE | glyph_size
| Maximum size of regular glyphs.
std::string | fontname
| Cached copy of loaded font facename.
ReusableBuffer< uint8_t > | render_buffer
| Temporary buffer for rendering glyphs.

## Additional Inherited Members
Static Public Member Functions inherited from FontCache
static void | InitializeFontCaches ()
| Initialise font caches with the base sprite font cache for all sizes.
static void | UninitializeFontCaches ()
| Free everything allocated w.r.t.
static void | LoadFontCaches (FontSizes fontsizes)
| (Re)initialize the font cache related things, i.e.
static void | ClearFontCaches (FontSizes fontsizes)
| Clear cached information for the specified font caches.
static int | GetDefaultFontHeight (FontSize fs)
static FontCache * | Get (FontSize fs)
| Get the font cache of a given font size.
static std::string | GetName (FontSize fs)
| Get the font name of a given font size.
Static Public Attributes inherited from FontCache
static const int | DEFAULT_FONT_HEIGHT [FS_END] = {10, 6, 18, 10}
| Default unscaled font heights.
static const int | DEFAULT_FONT_ASCENDER [FS_END] = {8, 5, 15, 8}
| Default unscaled font ascenders.
Static Protected Member Functions inherited from FontCache
static void | Register (std::unique_ptr< FontCache > &&fc)
| Register a FontCache for its font size.
Protected Attributes inherited from TrueTypeFontCache
int | req_size = 0
| Requested font size.
int | used_size = 0
| Used font size.
std::unordered_map< GlyphID, GlyphEntry > | glyph_to_sprite_map {}
Protected Attributes inherited from FontCache
std::unique_ptr< FontCache > | parent
| The parent of this font cache.
const FontSize | fs
| The size of the font.
int | height = 0
| The height of the font.
int | ascender = 0
| The ascender value of the font.
int | descender = 0
| The descender value of the font.
Static Protected Attributes inherited from TrueTypeFontCache
static constexpr int | MAX_GLYPH_DIM = 256
| Maximum glyph dimensions.
static constexpr uint | MAX_FONT_MIN_REC_SIZE = 20u
| Upper limit for the recommended font size in case a font file contains nonsensical values.
Static Protected Attributes inherited from FontCache
static std::array< std::unique_ptr< FontCache >, FS_END > | caches {}
| All the font caches.

## Detailed Description

Font cache for fonts that are based on a Win32 font.

Definition at line 20 of file font_win32.h.

## Constructor & Destructor Documentation

## ◆ Win32FontCache()

Win32FontCache::Win32FontCache | ( | FontSize | fs,
|  | const LOGFONT & | logfont,
|  | int | pixels
| ) |  |

Create a new Win32FontCache.

Parameters

  fs | The font size that is going to be cached.
  logfont | The font that has to be loaded.
  pixels | The number of pixels this font should be high.

Definition at line 92 of file font_win32.cpp.

References dc.

## ◆ ~Win32FontCache()

Win32FontCache::~Win32FontCache | ( |  | ) |

Definition at line 98 of file font_win32.cpp.

## Member Function Documentation

## ◆ ClearFontCache()

void Win32FontCache::ClearFontCache | ( |  | ) |
| overridevirtual

Reset cached glyphs.

Reimplemented from TrueTypeFontCache.

Definition at line 168 of file font_win32.cpp.

References TrueTypeFontCache::ClearFontCache(), font, and TrueTypeFontCache::req_size.

## ◆ GetFontName()

std::string Win32FontCache::GetFontName | ( |  | ) |
| inlineoverridevirtual

Get the name of this font.

Returns
  The name of the font.

Implements FontCache.

Definition at line 41 of file font_win32.h.

References fontname.

## ◆ GetOSHandle()

const void * Win32FontCache::GetOSHandle | ( |  | ) |
| inlineoverridevirtual

Get the native OS font handle, if there is one.

Returns
  Opaque OS font handle.

Reimplemented from FontCache.

Definition at line 42 of file font_win32.h.

References logfont.

## ◆ InternalGetGlyph()

const Sprite * Win32FontCache::InternalGetGlyph | ( | GlyphID | key,
|  | bool | aa
| ) |  |
| overrideprotectedvirtual

Implements TrueTypeFontCache.

Definition at line 176 of file font_win32.cpp.

## ◆ MapCharToGlyph()

GlyphID Win32FontCache::MapCharToGlyph | ( | char32_t | key,
|  | bool | fallback = `true`
| ) |  |
| overridevirtual

Map a character into a glyph.

Parameters

  key | The character.
  fallback | Allow fallback to the parent font.

Returns
  The glyph ID used to draw the character.

Implements FontCache.

Definition at line 248 of file font_win32.cpp.

References dc, and FontCache::parent.

## ◆ SetFontSize()

void Win32FontCache::SetFontSize | ( | int | pixels | ) |
| private

Definition at line 105 of file font_win32.cpp.

## Field Documentation

## ◆ dc

HDC Win32FontCache::dc = nullptr
| private

Cached GDI device context.

Definition at line 24 of file font_win32.h.

Referenced by MapCharToGlyph(), and Win32FontCache().

## ◆ font

HFONT Win32FontCache::font = nullptr
| private

The font face associated with this font.

Definition at line 23 of file font_win32.h.

Referenced by ClearFontCache().

## ◆ fontname

std::string Win32FontCache::fontname
| private

Cached copy of loaded font facename.

Definition at line 27 of file font_win32.h.

Referenced by GetFontName().

## ◆ glyph_size

SIZE Win32FontCache::glyph_size
| private

Maximum size of regular glyphs.

Definition at line 26 of file font_win32.h.

## ◆ logfont

LOGFONT Win32FontCache::logfont
| private

Logical font information for selecting the font face.

Definition at line 22 of file font_win32.h.

Referenced by GetOSHandle().

## ◆ old_font

HGDIOBJ Win32FontCache::old_font
| private

Old font selected into the GDI context.

Definition at line 25 of file font_win32.h.

## ◆ render_buffer

ReusableBuffer<uint8_t> Win32FontCache::render_buffer
| private

Temporary buffer for rendering glyphs.

Definition at line 29 of file font_win32.h.

The documentation for this class was generated from the following files:

- src/os/windows/font_win32.h
- src/os/windows/font_win32.cpp