2018-01-22 16:40:47 +00:00
|
|
|
#include "api.h"
|
2018-01-23 02:49:45 +00:00
|
|
|
#include "data/rasterizer.h"
|
2020-12-25 19:50:26 +00:00
|
|
|
#include "core/util.h"
|
2018-01-23 02:49:45 +00:00
|
|
|
|
2019-02-17 22:52:22 +00:00
|
|
|
static int l_lovrRasterizerGetHeight(lua_State* L) {
|
2018-01-23 02:49:45 +00:00
|
|
|
Rasterizer* rasterizer = luax_checktype(L, 1, Rasterizer);
|
2021-02-08 17:58:39 +00:00
|
|
|
lua_pushinteger(L, lovrRasterizerGetHeight(rasterizer));
|
2018-01-23 02:49:45 +00:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2019-02-17 22:52:22 +00:00
|
|
|
static int l_lovrRasterizerGetAdvance(lua_State* L) {
|
2018-01-23 02:49:45 +00:00
|
|
|
Rasterizer* rasterizer = luax_checktype(L, 1, Rasterizer);
|
2021-02-08 17:58:39 +00:00
|
|
|
lua_pushinteger(L, lovrRasterizerGetAdvance(rasterizer));
|
2018-01-23 02:49:45 +00:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2019-02-17 22:52:22 +00:00
|
|
|
static int l_lovrRasterizerGetAscent(lua_State* L) {
|
2018-01-23 02:49:45 +00:00
|
|
|
Rasterizer* rasterizer = luax_checktype(L, 1, Rasterizer);
|
2021-02-08 17:58:39 +00:00
|
|
|
lua_pushinteger(L, lovrRasterizerGetAscent(rasterizer));
|
2018-01-23 02:49:45 +00:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2019-02-17 22:52:22 +00:00
|
|
|
static int l_lovrRasterizerGetDescent(lua_State* L) {
|
2018-01-23 02:49:45 +00:00
|
|
|
Rasterizer* rasterizer = luax_checktype(L, 1, Rasterizer);
|
2021-02-08 17:58:39 +00:00
|
|
|
lua_pushinteger(L, lovrRasterizerGetDescent(rasterizer));
|
2018-01-23 02:49:45 +00:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2019-02-17 22:52:22 +00:00
|
|
|
static int l_lovrRasterizerGetLineHeight(lua_State* L) {
|
2018-01-23 02:49:45 +00:00
|
|
|
Rasterizer* rasterizer = luax_checktype(L, 1, Rasterizer);
|
2021-02-08 17:58:39 +00:00
|
|
|
lua_pushinteger(L, lovrRasterizerGetHeight(rasterizer) * 1.25f);
|
2018-01-23 02:49:45 +00:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2019-02-17 22:52:22 +00:00
|
|
|
static int l_lovrRasterizerGetGlyphCount(lua_State* L) {
|
2018-01-23 02:49:45 +00:00
|
|
|
Rasterizer* rasterizer = luax_checktype(L, 1, Rasterizer);
|
2021-02-08 17:58:39 +00:00
|
|
|
lua_pushinteger(L, lovrRasterizerGetGlyphCount(rasterizer));
|
2018-01-23 02:49:45 +00:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2019-02-17 22:52:22 +00:00
|
|
|
static int l_lovrRasterizerHasGlyphs(lua_State* L) {
|
2018-01-23 02:49:45 +00:00
|
|
|
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;
|
|
|
|
}
|
2018-01-22 16:40:47 +00:00
|
|
|
|
|
|
|
const luaL_Reg lovrRasterizer[] = {
|
2018-01-23 02:49:45 +00:00
|
|
|
{ "getHeight", l_lovrRasterizerGetHeight },
|
|
|
|
{ "getAdvance", l_lovrRasterizerGetAdvance },
|
|
|
|
{ "getAscent", l_lovrRasterizerGetAscent },
|
|
|
|
{ "getDescent", l_lovrRasterizerGetDescent },
|
|
|
|
{ "getLineHeight", l_lovrRasterizerGetLineHeight },
|
|
|
|
{ "getGlyphCount", l_lovrRasterizerGetGlyphCount },
|
|
|
|
{ "hasGlyphs", l_lovrRasterizerHasGlyphs },
|
2018-01-22 16:40:47 +00:00
|
|
|
{ NULL, NULL }
|
|
|
|
};
|