lovr/src/modules/data/rasterizer.h

44 lines
1011 B
C
Raw Normal View History

2018-07-05 08:55:09 +00:00
#include "lib/stb/stb_truetype.h"
2017-02-03 23:16:30 +00:00
#include <stdint.h>
2018-01-23 02:49:45 +00:00
#include <stdbool.h>
2017-01-30 02:37:56 +00:00
2017-02-19 09:54:58 +00:00
#pragma once
2017-07-14 16:53:05 +00:00
#define GLYPH_PADDING 1
2019-04-05 11:27:48 +00:00
struct Blob;
struct TextureData;
2019-04-05 11:58:29 +00:00
typedef struct Rasterizer {
2018-07-05 08:55:09 +00:00
stbtt_fontinfo font;
2019-04-05 11:27:48 +00:00
struct Blob* blob;
float size;
2018-07-05 08:55:09 +00:00
float scale;
2018-01-23 02:49:45 +00:00
int glyphCount;
2017-02-19 09:54:58 +00:00
int height;
2018-01-23 02:49:45 +00:00
int advance;
2017-03-16 08:12:32 +00:00
int ascent;
int descent;
2018-01-22 16:28:33 +00:00
} Rasterizer;
2017-02-19 09:54:58 +00:00
typedef struct {
int x;
int y;
int w;
int h;
2017-07-14 16:53:05 +00:00
int tw;
int th;
2017-02-19 09:54:58 +00:00
int dx;
int dy;
int advance;
2019-04-05 11:27:48 +00:00
struct TextureData* data;
2017-02-19 09:54:58 +00:00
} Glyph;
2019-04-05 11:27:48 +00:00
Rasterizer* lovrRasterizerInit(Rasterizer* rasterizer, struct Blob* blob, float size);
2018-12-19 08:25:20 +00:00
#define lovrRasterizerCreate(...) lovrRasterizerInit(lovrAlloc(Rasterizer), __VA_ARGS__)
2018-02-26 08:59:03 +00:00
void lovrRasterizerDestroy(void* ref);
2018-01-23 02:49:45 +00:00
bool lovrRasterizerHasGlyph(Rasterizer* fontData, uint32_t character);
bool lovrRasterizerHasGlyphs(Rasterizer* fontData, const char* str);
2018-01-22 16:28:33 +00:00
void lovrRasterizerLoadGlyph(Rasterizer* fontData, uint32_t character, Glyph* glyph);
int lovrRasterizerGetKerning(Rasterizer* fontData, uint32_t left, uint32_t right);