mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-20 04:54:45 -07:00
JS: Support all builtin icons in new gui/icon module
This commit is contained in:
@@ -1,28 +1,16 @@
|
|||||||
#include "../../js_modules.h"
|
#include "../../js_modules.h"
|
||||||
#include <assets_icons.h>
|
#include <assets_icons.h>
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
const char* name;
|
|
||||||
const Icon* data;
|
|
||||||
} IconDefinition;
|
|
||||||
|
|
||||||
#define ICON_DEF(icon) \
|
|
||||||
(IconDefinition) { \
|
|
||||||
.name = #icon, .data = &I_##icon \
|
|
||||||
}
|
|
||||||
|
|
||||||
static const IconDefinition builtin_icons[] = {
|
|
||||||
ICON_DEF(DolphinWait_59x54),
|
|
||||||
ICON_DEF(js_script_10px),
|
|
||||||
};
|
|
||||||
|
|
||||||
static void js_gui_icon_get_builtin(struct mjs* mjs) {
|
static void js_gui_icon_get_builtin(struct mjs* mjs) {
|
||||||
const char* icon_name;
|
const char* icon_name;
|
||||||
JS_FETCH_ARGS_OR_RETURN(mjs, JS_EXACTLY, JS_ARG_STR(&icon_name));
|
JS_FETCH_ARGS_OR_RETURN(mjs, JS_EXACTLY, JS_ARG_STR(&icon_name));
|
||||||
|
|
||||||
for(size_t i = 0; i < COUNT_OF(builtin_icons); i++) {
|
for(size_t i = 0; i < ICON_PATHS_COUNT; i++) {
|
||||||
if(strcmp(icon_name, builtin_icons[i].name) == 0) {
|
if(ICON_PATHS[i].path == NULL) continue;
|
||||||
mjs_return(mjs, mjs_mk_foreign(mjs, (void*)builtin_icons[i].data));
|
const char* iter_name = strrchr(ICON_PATHS[i].path, '/');
|
||||||
|
if(iter_name++ == NULL) continue;
|
||||||
|
if(strcmp(icon_name, iter_name) == 0) {
|
||||||
|
mjs_return(mjs, mjs_mk_foreign(mjs, (void*)ICON_PATHS[i].icon));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
export type BuiltinIcon = "DolphinWait_59x54" | "js_script_10px";
|
export type BuiltinIcon = string;
|
||||||
|
|
||||||
export type IconData = symbol & { "__tag__": "icon" };
|
export type IconData = symbol & { "__tag__": "icon" };
|
||||||
// introducing a nominal type in a hacky way; the `__tag__` property doesn't really exist.
|
// introducing a nominal type in a hacky way; the `__tag__` property doesn't really exist.
|
||||||
|
|||||||
Reference in New Issue
Block a user