Slide 16
Slide 16 text
EM_ASM_JS / C → JS
static int DrawStringWidth(lua_State *L) {
int n = lua_gettop(L);
assert(n >= 3);
assert(lua_isnumber(L, 1));
assert(lua_isstring(L, 2));
assert(lua_isstring(L, 3));
int height = lua_tointeger(L, 1);
int font = luaL_checkoption(L, 2, "FIXED", fontMap);
const char *text = lua_tostring(L, 3);
int width = EM_ASM_INT({
return Module.getStringWidth($0, $1, UTF8ToString($2));
}, height, font, text);
lua_pushinteger(L, width);
return 1;
}
EM_ASM_JSマクロでインラインで
JSが書ける