lovr/src/modules/data/rasterizer.h

37 lines
1.3 KiB
C
Raw Normal View History

2018-01-23 02:49:45 +00:00
#include <stdbool.h>
2021-02-08 17:58:39 +00:00
#include <stdint.h>
2021-10-11 22:31:43 +00:00
#include <stddef.h>
2017-01-30 02:37:56 +00:00
2017-02-19 09:54:58 +00:00
#pragma once
2019-04-05 11:27:48 +00:00
struct Blob;
struct Image;
2019-04-05 11:27:48 +00:00
2017-02-19 09:54:58 +00:00
typedef struct {
uint32_t x;
uint32_t y;
2019-05-21 03:35:07 +00:00
uint32_t w;
uint32_t h;
uint32_t tw;
uint32_t th;
int32_t dx;
int32_t dy;
int32_t advance;
struct Image* data;
2017-02-19 09:54:58 +00:00
} Glyph;
2021-02-08 17:58:39 +00:00
typedef struct Rasterizer Rasterizer;
Rasterizer* lovrRasterizerCreate(struct Blob* blob, float size);
2018-02-26 08:59:03 +00:00
void lovrRasterizerDestroy(void* ref);
2021-02-08 17:58:39 +00:00
float lovrRasterizerGetSize(Rasterizer* rasterizer);
int lovrRasterizerGetGlyphCount(Rasterizer* rasterizer);
int lovrRasterizerGetHeight(Rasterizer* rasterizer);
int lovrRasterizerGetAdvance(Rasterizer* rasterizer);
int lovrRasterizerGetAscent(Rasterizer* rasterizer);
int lovrRasterizerGetDescent(Rasterizer* rasterizer);
2018-01-23 02:49:45 +00:00
bool lovrRasterizerHasGlyph(Rasterizer* fontData, uint32_t character);
bool lovrRasterizerHasGlyphs(Rasterizer* fontData, const char* str);
void lovrRasterizerLoadGlyph(Rasterizer* fontData, uint32_t character, uint32_t padding, double spread, Glyph* glyph);
2019-05-21 03:35:07 +00:00
int32_t lovrRasterizerGetKerning(Rasterizer* fontData, uint32_t left, uint32_t right);
2021-12-20 15:12:39 +00:00
void lovrRasterizerMeasure(Rasterizer* rasterizer, const char* str, size_t length, float wrap, float* width, float* lastLineWidth, float* height, uint32_t* lineCount, uint32_t* glyphCount);