Skip to content

Commit

Permalink
JS: Support all builtin icons in new gui/icon module
Browse files Browse the repository at this point in the history
  • Loading branch information
Willy-JL committed Feb 20, 2025
1 parent 72281d9 commit 1a4a940
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 19 deletions.
24 changes: 6 additions & 18 deletions applications/system/js_app/modules/js_gui/icon.c
Original file line number Diff line number Diff line change
@@ -1,28 +1,16 @@
#include "../../js_modules.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) {
const char* 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++) {
if(strcmp(icon_name, builtin_icons[i].name) == 0) {
mjs_return(mjs, mjs_mk_foreign(mjs, (void*)builtin_icons[i].data));
for(size_t i = 0; i < ICON_PATHS_COUNT; i++) {
if(ICON_PATHS[i].path == NULL) continue;
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;
}
}
Expand Down
2 changes: 1 addition & 1 deletion applications/system/js_app/packages/fz-sdk/gui/icon.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export type BuiltinIcon = "DolphinWait_59x54" | "js_script_10px";
export type BuiltinIcon = string;

export type IconData = symbol & { "__tag__": "icon" };
// introducing a nominal type in a hacky way; the `__tag__` property doesn't really exist.
Expand Down

0 comments on commit 1a4a940

Please sign in to comment.