| 1124 | } |
| 1125 | |
| 1126 | EM_JS(void, LoadElementImage, (Element *elem), { |
| 1127 | var input = document.createElement("input"); |
| 1128 | input.type = "file"; |
| 1129 | input.id = "file-selector"; |
| 1130 | input.accept = ".jpg,.jpeg,.png"; |
| 1131 | input.addEventListener("change", (event) => { |
| 1132 | var file = event.target.files[0]; |
| 1133 | var reader = new FileReader(); |
| 1134 | reader.addEventListener("load", () => { |
| 1135 | var file_data = new Uint8Array(reader.result); |
| 1136 | var file_ptr = Module._malloc(file_data.length); |
| 1137 | Module.HEAPU8.set(file_data, file_ptr); |
| 1138 | Module.ccall("cpp_LoadElementImage", null, ["number", "number", "number"], [elem, file_ptr, file_data.length]); |
| 1139 | }, false); |
| 1140 | reader.readAsArrayBuffer(file); |
| 1141 | }); |
| 1142 | |
| 1143 | if(document.createEvent) { |
| 1144 | var event = document.createEvent("MouseEvents"); |
| 1145 | event.initEvent("click", true, true); |
| 1146 | input.dispatchEvent(event); |
| 1147 | } |
| 1148 | else { |
| 1149 | input.click(); |
| 1150 | } |
| 1151 | }); |
| 1152 | |
| 1153 | constexpr ImWchar StandardGlyphRanges[] = { |
| 1154 | 0x0020, 0x00FF, // Basic Latin + Latin Supplement |
| 1155 | 0x0000 |
| 1156 | }; |
| 1157 | |
| 1158 | constexpr ImWchar ExtendedGlyphRanges[] = { |
| 1159 | 0x25A0, 0xE200, // Special Nintendo buttons |
| 1160 | 0x0000 |
| 1161 | }; |
| 1162 | |
| 1163 | void ReloadFonts() { |
| 1164 | auto &io = ImGui::GetIO(); |
| 1165 | |
| 1166 | #define _LOAD_ASSET_FONT_FOR_SIZE(name, size) { \ |
| 1167 | ImFontConfig config; \ |
| 1168 | config.MergeMode = true; \ |
| 1169 | g_FontStandard_##name = io.Fonts->AddFontFromMemoryTTF(g_FontData, g_FontDataSize, size * g_Scale, nullptr, StandardGlyphRanges); \ |
| 1170 | g_FontExtended_##name = io.Fonts->AddFontFromFileTTF("assets/FontExtended.ttf", size * g_Scale, &config, ExtendedGlyphRanges); \ |
| 1171 | } |
| 1172 | |
| 1173 | if(g_FontData != nullptr) { |
| 1174 | _LOAD_ASSET_FONT_FOR_SIZE(Small, 27.0f) |
| 1175 | _LOAD_ASSET_FONT_FOR_SIZE(Medium, 30.0f) |
| 1176 | _LOAD_ASSET_FONT_FOR_SIZE(MediumLarge, 37.0f) |
| 1177 | _LOAD_ASSET_FONT_FOR_SIZE(Large, 45.0f) |
| 1178 | |
| 1179 | io.Fonts->Build(); |
| 1180 | } |
| 1181 | } |
| 1182 | |
| 1183 | extern "C" EMSCRIPTEN_KEEPALIVE void cpp_LoadFont(void *font_data, const size_t font_data_size) { |
nothing calls this directly
no test coverage detected