1
0
Fork 0
mirror of https://github.com/bjornbytes/lovr.git synced 2024-07-05 05:53:33 +00:00
lovr/src/api/l_data_rasterizer.c
bjorn c9b1f257bf api: try new file naming convention; Tupfile: cleanup;
I assume full responsibility for any catastrophes this causes.
2019-12-31 19:31:44 -08:00

64 lines
1.9 KiB
C

#include "api.h"
#include "data/rasterizer.h"
static int l_lovrRasterizerGetHeight(lua_State* L) {
Rasterizer* rasterizer = luax_checktype(L, 1, Rasterizer);
lua_pushinteger(L, rasterizer->height);
return 1;
}
static int l_lovrRasterizerGetAdvance(lua_State* L) {
Rasterizer* rasterizer = luax_checktype(L, 1, Rasterizer);
lua_pushinteger(L, rasterizer->advance);
return 1;
}
static int l_lovrRasterizerGetAscent(lua_State* L) {
Rasterizer* rasterizer = luax_checktype(L, 1, Rasterizer);
lua_pushinteger(L, rasterizer->ascent);
return 1;
}
static int l_lovrRasterizerGetDescent(lua_State* L) {
Rasterizer* rasterizer = luax_checktype(L, 1, Rasterizer);
lua_pushinteger(L, rasterizer->descent);
return 1;
}
static int l_lovrRasterizerGetLineHeight(lua_State* L) {
Rasterizer* rasterizer = luax_checktype(L, 1, Rasterizer);
lua_pushinteger(L, rasterizer->height * 1.25f);
return 1;
}
static int l_lovrRasterizerGetGlyphCount(lua_State* L) {
Rasterizer* rasterizer = luax_checktype(L, 1, Rasterizer);
lua_pushinteger(L, rasterizer->glyphCount);
return 1;
}
static int l_lovrRasterizerHasGlyphs(lua_State* L) {
Rasterizer* rasterizer = luax_checktype(L, 1, Rasterizer);
bool hasGlyphs = true;
for (int i = 2; i <= lua_gettop(L); i++) {
if (lua_type(L, i) == LUA_TSTRING) {
hasGlyphs &= lovrRasterizerHasGlyphs(rasterizer, lua_tostring(L, i));
} else {
hasGlyphs &= lovrRasterizerHasGlyph(rasterizer, luaL_checkinteger(L, i));
}
}
lua_pushboolean(L, hasGlyphs);
return 1;
}
const luaL_Reg lovrRasterizer[] = {
{ "getHeight", l_lovrRasterizerGetHeight },
{ "getAdvance", l_lovrRasterizerGetAdvance },
{ "getAscent", l_lovrRasterizerGetAscent },
{ "getDescent", l_lovrRasterizerGetDescent },
{ "getLineHeight", l_lovrRasterizerGetLineHeight },
{ "getGlyphCount", l_lovrRasterizerGetGlyphCount },
{ "hasGlyphs", l_lovrRasterizerHasGlyphs },
{ NULL, NULL }
};