#include #include #include #include namespace hershey { struct font_glyph_t { uint32_t width; // character width uint32_t vertex_count; // number of vertices const int8_t *vertices; // vertex data (indices: even = x, odd = y) }; struct font_t { font_glyph_t chars[95]; }; extern const int8_t futural_vertices[2442]; extern const font_t futural; extern const int8_t futuram_vertices[4802]; extern const font_t futuram; extern const int8_t gothgbt_vertices[9046]; extern const font_t gothgbt; extern const int8_t scriptc_vertices[5530]; extern const font_t scriptc; extern const int8_t scripts_vertices[4472]; extern const font_t scripts; extern const int8_t timesi_vertices[4848]; extern const font_t timesi; extern const int8_t timesr_vertices[4600]; extern const font_t timesr; extern const int8_t timesrb_vertices[7994]; extern const font_t timesrb; typedef std::function line_func; extern std::map fonts; inline float deg2rad(float degrees); const font_glyph_t* glyph_data(const font_t* font, unsigned char c); int32_t measure_glyph(const font_t* font, unsigned char c, float s); int32_t measure_text(const font_t* font, std::string_view message, float s); int32_t glyph(const font_t* font, line_func line, unsigned char c, int32_t x, int32_t y, float s, float a); void text(const font_t* font, line_func line, std::string_view message, int32_t x, int32_t y, float s, float a); bool has_font(std::string_view font); const font_t* font(std::string_view font); }