This commit is contained in:
bjorn 2022-07-04 15:22:54 -07:00
parent b7e5bd1d67
commit dd8d8fe67e
7 changed files with 16 additions and 16 deletions

View File

@ -99,9 +99,9 @@ static int l_lovrRasterizerGetBearing(lua_State* L) {
static int l_lovrRasterizerGetKerning(lua_State* L) {
Rasterizer* rasterizer = luax_checktype(L, 1, Rasterizer);
uint32_t prev = luax_checkcodepoint(L, 2);
uint32_t next = luax_checkcodepoint(L, 3);
float kerning = lovrRasterizerGetKerning(rasterizer, prev, next);
uint32_t first = luax_checkcodepoint(L, 2);
uint32_t second = luax_checkcodepoint(L, 3);
float kerning = lovrRasterizerGetKerning(rasterizer, first, second);
lua_pushnumber(L, kerning);
return 1;
}

View File

@ -497,7 +497,7 @@ static Canvas luax_checkcanvas(lua_State* L, int index) {
canvas.samples = lua_isnil(L, -1) ? canvas.samples : lua_tointeger(L, -1);
lua_pop(L, 1);
lua_getfield(L, index, "mipmaps");
lua_getfield(L, index, "mipmap");
canvas.mipmap = lua_toboolean(L, -1);
lua_pop(L, 1);
}
@ -1258,11 +1258,11 @@ static int l_lovrGraphicsNewFont(lua_State* L) {
float size;
if (lua_type(L, 1) == LUA_TNUMBER || lua_isnoneornil(L, 1)) {
size = luax_optfloat(L, 1, 32.f);
size = luax_optfloat(L, 1, 32.);
info.spread = luaL_optnumber(L, 2, info.spread);
} else {
blob = luax_readblob(L, 1, "Font");
size = luax_optfloat(L, 2, 32.f);
size = luax_optfloat(L, 2, 32.);
info.spread = luaL_optnumber(L, 3, info.spread);
}

View File

@ -91,9 +91,9 @@ static int l_lovrFontGetHeight(lua_State* L) {
static int l_lovrFontGetKerning(lua_State* L) {
Font* font = luax_checktype(L, 1, Font);
uint32_t left = luax_checkcodepoint(L, 2);
uint32_t right = luax_checkcodepoint(L, 3);
float kerning = lovrFontGetKerning(font, left, right);
uint32_t first = luax_checkcodepoint(L, 2);
uint32_t second = luax_checkcodepoint(L, 3);
float kerning = lovrFontGetKerning(font, first, second);
float density = lovrFontGetPixelDensity(font);
lua_pushnumber(L, kerning / density);
return 1;

View File

@ -103,8 +103,8 @@ float lovrRasterizerGetBearing(Rasterizer* rasterizer, uint32_t codepoint) {
return bearing * rasterizer->scale;
}
float lovrRasterizerGetKerning(Rasterizer* rasterizer, uint32_t left, uint32_t right) {
return stbtt_GetCodepointKernAdvance(&rasterizer->font, left, right) * rasterizer->scale;
float lovrRasterizerGetKerning(Rasterizer* rasterizer, uint32_t first, uint32_t second) {
return stbtt_GetCodepointKernAdvance(&rasterizer->font, first, second) * rasterizer->scale;
}
void lovrRasterizerGetBoundingBox(Rasterizer* rasterizer, float box[4]) {

View File

@ -20,7 +20,7 @@ float lovrRasterizerGetDescent(Rasterizer* rasterizer);
float lovrRasterizerGetLeading(Rasterizer* rasterizer);
float lovrRasterizerGetAdvance(Rasterizer* rasterizer, uint32_t codepoint);
float lovrRasterizerGetBearing(Rasterizer* rasterizer, uint32_t codepoint);
float lovrRasterizerGetKerning(Rasterizer* rasterizer, uint32_t left, uint32_t right);
float lovrRasterizerGetKerning(Rasterizer* rasterizer, uint32_t first, uint32_t second);
void lovrRasterizerGetBoundingBox(Rasterizer* rasterizer, float box[4]);
void lovrRasterizerGetGlyphBoundingBox(Rasterizer* rasterizer, uint32_t codepoint, float box[4]);
bool lovrRasterizerGetCurves(Rasterizer* rasterizer, uint32_t codepoint, void (*fn)(void* context, uint32_t degree, float* points), void* context);

View File

@ -2086,13 +2086,13 @@ static Glyph* lovrFontGetGlyph(Font* font, uint32_t codepoint, bool* resized) {
return glyph;
}
float lovrFontGetKerning(Font* font, uint32_t left, uint32_t right) {
uint32_t codepoints[] = { left, right };
float lovrFontGetKerning(Font* font, uint32_t first, uint32_t second) {
uint32_t codepoints[] = { first, second };
uint64_t hash = hash64(codepoints, sizeof(codepoints));
union { float f32; uint64_t u64; } kerning = { .u64 = map_get(&font->kerning, hash) };
if (kerning.u64 == MAP_NIL) {
kerning.f32 = lovrRasterizerGetKerning(font->info.rasterizer, left, right);
kerning.f32 = lovrRasterizerGetKerning(font->info.rasterizer, first, second);
map_set(&font->kerning, hash, kerning.u64);
}

View File

@ -360,7 +360,7 @@ float lovrFontGetPixelDensity(Font* font);
void lovrFontSetPixelDensity(Font* font, float pixelDensity);
float lovrFontGetLineSpacing(Font* font);
void lovrFontSetLineSpacing(Font* font, float spacing);
float lovrFontGetKerning(Font* font, uint32_t left, uint32_t right);
float lovrFontGetKerning(Font* font, uint32_t first, uint32_t second);
float lovrFontGetWidth(Font* font, ColoredString* strings, uint32_t count);
void lovrFontGetLines(Font* font, ColoredString* strings, uint32_t count, float wrap, void (*callback)(void* context, const char* string, size_t length), void* context);