mt_embed_file

This commit is contained in:
Krzosa Karol
2025-01-18 10:09:10 +01:00
parent 7e52440e18
commit 2e445d2592
12 changed files with 1761 additions and 63 deletions

View File

@@ -21,24 +21,20 @@
#define STBTT_memcpy memory_copy
#define STBTT_memset memory_set
#include "render/stb_truetype.h"
#include "render/backup_font.c"
// #include "render/backup_font.c"
#include "render/font.c"
#include "render/render_opengl.c"
#include "wasm_app.gen.c"
#include "ui_iter.c"
#include "ui.c"
typedef struct globals_t globals_t;
struct globals_t {
app_event_t event;
};
gb globals_t *globals;
#define mt_embed_file(variable, path)
fn void app_init(f32 dpr) {
ma_arena_t *perm = &tcx._perm;
globals = ma_push_type(perm, globals_t);
rn_init(perm, 50 * dpr);
mt_embed_file(font_liberation_mono, "package/liberation-mono.ttf");
rn_init(perm, s8_array(font_liberation_mono), 50 * dpr);
ui_demo_init(perm);
}

View File

@@ -1,27 +0,0 @@
void meta_ui(ma_arena_t *arena) {
#if 0
sb8_t *h = sb8_serial_begin(arena);
sb8_t *c = sb8_serial_begin(arena);
ast_t *decls = parse_decls(arena, __FILE__, S8_CODE(
typedef enum {
ui_box_flag_draw_border,
ui_box_flag_draw_text,
ui_box_flag_draw_rect,
ui_box_flag_scroll,
} ui_box_flag_t; @flags
typedef enum {
ui_id_strategy_use_hierarchy,
ui_id_strategy_use_code_loc,
ui_id_strategy_use_string,
} ui_id_strategy_t; @flags
));
sb8_serial_ast_to_code(h, decls);
sb8_serial_ast_to_type_info(c, decls);
os_write_file(gen_c(arena), sb8_merge(arena, c));
os_write_file(gen_h(arena), sb8_merge(arena, h));
#endif
}

1693
src/wasm_app/wasm_app.gen.c Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,26 @@
void mt_wasm_app(ma_arena_t *arena) {
sb8_t *include_paths = sb8(arena);
sb8_append(include_paths, OS_GetAbsolutePath(&Perm, s8_lit("../src")));
cg_files_t files = cg_lex_files(arena, s8_lit("../src/wasm_app/main.c"), include_paths);
sb8_t *sb_embeds = sb8_serial_begin(arena);
for (cg_file_t *it = files.first; it; it = it->next) {
parser_t *par = parser_make(arena, it->tokens.data);
for (;par->at->kind != lex_kind_eof;) {
if (par->at->inside_macro == false && parser_matchi(par, s8_lit("mt_embed_file"))) {
parser_expect(par, lex_kind_open_paren);
lex_t *var_name = parser_expect(par, lex_kind_ident);
parser_expect(par, lex_kind_comma);
lex_t *path = parser_expect(par, lex_kind_string);
parser_expect(par, lex_kind_close_paren);
s8_t relpath = s8_printf(arena, "../%S", path->string);
s8_t content = OS_ReadFile(&Perm, relpath);
cg_byte_array_from_data_ex(sb_embeds, content, var_name->string);
} else {
parser_next(par);
}
}
}
s8_t embeds = sb8_serial_end(arena, sb_embeds);
os_write_file(cg_cpath(arena), embeds);
}