Files
libsst/Include/ZRendererUtil/ZSolidFontFace.hpp
2026-04-03 00:22:39 -05:00

85 lines
1.8 KiB
C++

/*
ZSolidFontFace.hpp
Author: Patrick Baggett <ptbaggett@762studios.com>
Purpose: TODO
Changelog
2011/09/18 - creation (ptbaggett)
*/
#pragma once
#ifndef _ZSOLIDFONTFACE_HPP
#define _ZSOLIDFONTFACE_HPP
#include <SST/SST_Vec2.h>
#include <ZRendererUtil/ZFontRenderer.hpp> //Need ZFontBounds structure
//#include <vector>
#include <ft2build.h>
#include FT_FREETYPE_H
#include FT_GLYPH_H
//Needed for friend class definition
class ZSolidFontRenderer;
// Structure representing glyph information for use in solid font rendering
struct ZSolidGlyphInfo
{
FT_UInt glyphId; // Glyph ID, as read from the font
ZArray<SST_Vec2f> verts; // Vertex data, every 3 vertices makes a triangle
int advancex; // Amount along X axis to advance pen by, in pixels
int advancey; // Amount along Y axis to advance pen by, in pixels
ZFontBounds bbox; // Bounding box of this glyph, in pixels
};
//Class representing a font face created by a SolidFontRenderer
class ZSolidFontFace
{
friend class ZSolidFontRenderer;
private:
FT_Face face;
char* fontData;
int hasKerning;
ZHashMap<unsigned int, ZSolidGlyphInfo> glyphCache;
public:
/*
Default Constructor.
*/
ZSolidFontFace();
/*
Destructor.
*/
~ZSolidFontFace();
/*
public ZSolidFontFace::cacheGlyph
Caches a glyph, given a UTF-32 character code. The glyph must not already be loaded.
@param charCode - The UTF-32 character code for this glyph
@return (const ZSolidGlyphInfo&) - Reference to the glyph information.
@context (all)
*/
const ZSolidGlyphInfo& CacheGlyph(unsigned int charCode);
/*
public ZSolidFontFace::getGlyph
Gets a glyph from the cache, or loads it if necessary.
@param charCode -
@return (const ZSolidGlyphInfo*)
@context (all)
*/
const ZSolidGlyphInfo* GetGlyph(unsigned int charCode);
};
#endif