diff --git a/example/app.ts b/example/app.ts index 7508e95a3..2380d198c 100644 --- a/example/app.ts +++ b/example/app.ts @@ -1,14 +1,18 @@ -import { ZigJS } from 'zig-js'; +import { ZigJS } from "zig-js"; const zjs = new ZigJS(); const importObject = { module: {}, env: { - memory: new WebAssembly.Memory({ initial: 25, maximum: 65536, shared: true }), + memory: new WebAssembly.Memory({ + initial: 25, + maximum: 65536, + shared: true, + }), log: (ptr: number, len: number) => { const arr = new Uint8ClampedArray(zjs.memory.buffer, ptr, len); const data = arr.slice(); - const str = new TextDecoder('utf-8').decode(data); + const str = new TextDecoder("utf-8").decode(data); console.log(str); }, }, @@ -16,158 +20,170 @@ const importObject = { ...zjs.importObject(), }; -const url = new URL('ghostty-wasm.wasm', import.meta.url); -fetch(url.href).then(response => - response.arrayBuffer() -).then(bytes => - WebAssembly.instantiate(bytes, importObject) -).then(results => { - const memory = importObject.env.memory; - const { - malloc, - free, - config_new, - config_free, - config_load_string, - config_finalize, - face_new, - face_free, - face_render_glyph, - face_debug_canvas, - deferred_face_new, - deferred_face_free, - deferred_face_load, - deferred_face_face, - group_new, - group_free, - group_add_face, - group_init_sprite_face, - group_index_for_codepoint, - group_render_glyph, - group_cache_new, - group_cache_free, - group_cache_index_for_codepoint, - group_cache_render_glyph, - group_cache_atlas_greyscale, - group_cache_atlas_color, - atlas_new, - atlas_free, - atlas_debug_canvas, - shaper_new, - shaper_free, - shaper_test, - } = results.instance.exports; - // Give us access to the zjs value for debugging. - globalThis.zjs = zjs; - console.log(zjs); +const url = new URL("ghostty-wasm.wasm", import.meta.url); +fetch(url.href) + .then((response) => response.arrayBuffer()) + .then((bytes) => WebAssembly.instantiate(bytes, importObject)) + .then((results) => { + const memory = importObject.env.memory; + const { + malloc, + free, + config_new, + config_free, + config_load_string, + config_finalize, + face_new, + face_free, + face_render_glyph, + face_debug_canvas, + deferred_face_new, + deferred_face_free, + deferred_face_load, + deferred_face_face, + group_new, + group_free, + group_add_face, + group_init_sprite_face, + group_index_for_codepoint, + group_render_glyph, + group_cache_new, + group_cache_free, + group_cache_index_for_codepoint, + group_cache_render_glyph, + group_cache_atlas_greyscale, + group_cache_atlas_color, + atlas_new, + atlas_free, + atlas_debug_canvas, + shaper_new, + shaper_free, + shaper_test, + } = results.instance.exports; + // Give us access to the zjs value for debugging. + globalThis.zjs = zjs; + console.log(zjs); - // Initialize our zig-js memory - zjs.memory = memory; + // Initialize our zig-js memory + zjs.memory = memory; - // Helpers - const makeStr = (str) => { - const utf8 = new TextEncoder().encode(str); - const ptr = malloc(utf8.byteLength); - new Uint8Array(memory.buffer, ptr).set(utf8); - return { ptr: ptr, len: utf8.byteLength }; - }; + // Helpers + const makeStr = (str) => { + const utf8 = new TextEncoder().encode(str); + const ptr = malloc(utf8.byteLength); + new Uint8Array(memory.buffer, ptr).set(utf8); + return { ptr: ptr, len: utf8.byteLength }; + }; - // Create our config - const config = config_new(); - const config_str = makeStr("font-family = monospace"); - config_load_string(config, config_str.ptr, config_str.len); - config_finalize(config); - free(config_str.ptr); + // Create our config + const config = config_new(); + const config_str = makeStr("font-family = monospace"); + config_load_string(config, config_str.ptr, config_str.len); + config_finalize(config); + free(config_str.ptr); - // Create our atlas - // const atlas = atlas_new(512, 0 /* greyscale */); + // Create our atlas + // const atlas = atlas_new(512, 0 /* greyscale */); - // Create some memory for our string - const font_name = makeStr("monospace"); + // Create some memory for our string + const font_name = makeStr("monospace"); - // Initialize our deferred face - // const df = deferred_face_new(font_ptr, font.byteLength, 0 /* text */); - //deferred_face_load(df, 72 /* size */); - //const face = deferred_face_face(df); + // Initialize our deferred face + // const df = deferred_face_new(font_ptr, font.byteLength, 0 /* text */); + //deferred_face_load(df, 72 /* size */); + //const face = deferred_face_face(df); - // Initialize our font face - //const face = face_new(font_ptr, font.byteLength, 72 /* size in px */); - //free(font_ptr); + // Initialize our font face + //const face = face_new(font_ptr, font.byteLength, 72 /* size in px */); + //free(font_ptr); - // Create our group - const group = group_new(32 /* size */); - group_add_face(group, 0 /* regular */, deferred_face_new(font_name.ptr, font_name.len, 0 /* text */)); - group_add_face(group, 0 /* regular */, deferred_face_new(font_name.ptr, font_name.len, 1 /* emoji */)); + // Create our group + const group = group_new(32 /* size */); + group_add_face( + group, + 0 /* regular */, + deferred_face_new(font_name.ptr, font_name.len, 0 /* text */), + ); + group_add_face( + group, + 0 /* regular */, + deferred_face_new(font_name.ptr, font_name.len, 1 /* emoji */), + ); - // Initialize our sprite font, without this we just use the browser. - group_init_sprite_face(group); + // Initialize our sprite font, without this we just use the browser. + group_init_sprite_face(group); - // Create our group cache - const group_cache = group_cache_new(group); + // Create our group cache + const group_cache = group_cache_new(group); - // Render a glyph - // for (let i = 33; i <= 126; i++) { - // const font_idx = group_cache_index_for_codepoint(group_cache, i, 0, -1); - // group_cache_render_glyph(group_cache, font_idx, i, 0); - // //face_render_glyph(face, atlas, i); - // } - // - // const emoji = ["🐏","🌞","🌚","🍱","πŸ’Ώ","🐈","πŸ“ƒ","πŸ“€","πŸ•‘","πŸ™ƒ"]; - // for (let i = 0; i < emoji.length; i++) { - // const cp = emoji[i].codePointAt(0); - // const font_idx = group_cache_index_for_codepoint(group_cache, cp, 0, -1 /* best choice */); - // group_cache_render_glyph(group_cache, font_idx, cp, 0); - // } + // Render a glyph + // for (let i = 33; i <= 126; i++) { + // const font_idx = group_cache_index_for_codepoint(group_cache, i, 0, -1); + // group_cache_render_glyph(group_cache, font_idx, i, 0); + // //face_render_glyph(face, atlas, i); + // } + // + // const emoji = ["🐏","🌞","🌚","🍱","πŸ’Ώ","🐈","πŸ“ƒ","πŸ“€","πŸ•‘","πŸ™ƒ"]; + // for (let i = 0; i < emoji.length; i++) { + // const cp = emoji[i].codePointAt(0); + // const font_idx = group_cache_index_for_codepoint(group_cache, cp, 0, -1 /* best choice */); + // group_cache_render_glyph(group_cache, font_idx, cp, 0); + // } - for (let i = 0x2500; i <= 0x257F; i++) { - const font_idx = group_cache_index_for_codepoint(group_cache, i, 0, -1); - group_cache_render_glyph(group_cache, font_idx, i, 0); - } - for (let i = 0x2580; i <= 0x259f; i++) { - const font_idx = group_cache_index_for_codepoint(group_cache, i, 0, -1); - group_cache_render_glyph(group_cache, font_idx, i, 0); - } - for (let i = 0x2800; i <= 0x28FF; i++) { - const font_idx = group_cache_index_for_codepoint(group_cache, i, 0, -1); - group_cache_render_glyph(group_cache, font_idx, i, 0); - } - for (let i = 0x1FB00; i <= 0x1FB3B; i++) { - const font_idx = group_cache_index_for_codepoint(group_cache, i, 0, -1); - group_cache_render_glyph(group_cache, font_idx, i, 0); - } - for (let i = 0x1FB3C; i <= 0x1FB6B; i++) { - const font_idx = group_cache_index_for_codepoint(group_cache, i, 0, -1); - group_cache_render_glyph(group_cache, font_idx, i, 0); - } + for (let i = 0x2500; i <= 0x257f; i++) { + const font_idx = group_cache_index_for_codepoint(group_cache, i, 0, -1); + group_cache_render_glyph(group_cache, font_idx, i, 0); + } + for (let i = 0x2580; i <= 0x259f; i++) { + const font_idx = group_cache_index_for_codepoint(group_cache, i, 0, -1); + group_cache_render_glyph(group_cache, font_idx, i, 0); + } + for (let i = 0x2800; i <= 0x28ff; i++) { + const font_idx = group_cache_index_for_codepoint(group_cache, i, 0, -1); + group_cache_render_glyph(group_cache, font_idx, i, 0); + } + for (let i = 0x1fb00; i <= 0x1fb3b; i++) { + const font_idx = group_cache_index_for_codepoint(group_cache, i, 0, -1); + group_cache_render_glyph(group_cache, font_idx, i, 0); + } + for (let i = 0x1fb3c; i <= 0x1fb6b; i++) { + const font_idx = group_cache_index_for_codepoint(group_cache, i, 0, -1); + group_cache_render_glyph(group_cache, font_idx, i, 0); + } - //face_render_glyph(face, atlas, "ζ©‹".codePointAt(0)); - //face_render_glyph(face, atlas, "p".codePointAt(0)); + //face_render_glyph(face, atlas, "ζ©‹".codePointAt(0)); + //face_render_glyph(face, atlas, "p".codePointAt(0)); - // Debug our canvas - //face_debug_canvas(face); + // Debug our canvas + //face_debug_canvas(face); - // Let's try shaping - const shaper = shaper_new(120); - //const input = makeStr("hello🐏"); - const input = makeStr("helloπŸπŸ‘πŸ½"); - shaper_test(shaper, group_cache, input.ptr, input.len); + // Let's try shaping + const shaper = shaper_new(120); + //const input = makeStr("hello🐏"); + const input = makeStr("helloπŸπŸ‘πŸ½"); + shaper_test(shaper, group_cache, input.ptr, input.len); - const cp = 1114112; - const font_idx = group_cache_index_for_codepoint(group_cache, cp, 0, -1 /* best choice */); - group_cache_render_glyph(group_cache, font_idx, cp, -1); + const cp = 1114112; + const font_idx = group_cache_index_for_codepoint( + group_cache, + cp, + 0, + -1 /* best choice */, + ); + group_cache_render_glyph(group_cache, font_idx, cp, -1); - // Debug our atlas canvas - { - const atlas = group_cache_atlas_greyscale(group_cache); - const id = atlas_debug_canvas(atlas); - document.getElementById("atlas-canvas").append(zjs.deleteValue(id)); - } + // Debug our atlas canvas + { + const atlas = group_cache_atlas_greyscale(group_cache); + const id = atlas_debug_canvas(atlas); + document.getElementById("atlas-canvas").append(zjs.deleteValue(id)); + } - { - const atlas = group_cache_atlas_color(group_cache); - const id = atlas_debug_canvas(atlas); - document.getElementById("atlas-color-canvas").append(zjs.deleteValue(id)); - } + { + const atlas = group_cache_atlas_color(group_cache); + const id = atlas_debug_canvas(atlas); + document.getElementById("atlas-color-canvas").append(zjs.deleteValue(id)); + } //face_free(face); -}); + }); diff --git a/macos/Assets.xcassets/AccentColor.colorset/Contents.json b/macos/Assets.xcassets/AccentColor.colorset/Contents.json index eb8789700..0afb3cf0e 100644 --- a/macos/Assets.xcassets/AccentColor.colorset/Contents.json +++ b/macos/Assets.xcassets/AccentColor.colorset/Contents.json @@ -1,11 +1,11 @@ { - "colors" : [ + "colors": [ { - "idiom" : "universal" + "idiom": "universal" } ], - "info" : { - "author" : "xcode", - "version" : 1 + "info": { + "author": "xcode", + "version": 1 } } diff --git a/macos/Assets.xcassets/AppIcon.appiconset/Contents.json b/macos/Assets.xcassets/AppIcon.appiconset/Contents.json index 0425f20d1..3bd7016fd 100644 --- a/macos/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/macos/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,68 +1,68 @@ { - "images" : [ + "images": [ { - "filename" : "Ghostty_256x256x32 6.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "16x16" + "filename": "Ghostty_256x256x32 6.png", + "idiom": "mac", + "scale": "1x", + "size": "16x16" }, { - "filename" : "Ghostty_256x256x32 5.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "16x16" + "filename": "Ghostty_256x256x32 5.png", + "idiom": "mac", + "scale": "2x", + "size": "16x16" }, { - "filename" : "Ghostty_256x256x32 4.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "32x32" + "filename": "Ghostty_256x256x32 4.png", + "idiom": "mac", + "scale": "1x", + "size": "32x32" }, { - "filename" : "Ghostty_256x256x32 3.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "32x32" + "filename": "Ghostty_256x256x32 3.png", + "idiom": "mac", + "scale": "2x", + "size": "32x32" }, { - "filename" : "Ghostty_256x256x32 2.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "128x128" + "filename": "Ghostty_256x256x32 2.png", + "idiom": "mac", + "scale": "1x", + "size": "128x128" }, { - "filename" : "Ghostty_256x256x32 1.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "128x128" + "filename": "Ghostty_256x256x32 1.png", + "idiom": "mac", + "scale": "2x", + "size": "128x128" }, { - "filename" : "Ghostty_256x256x32.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "256x256" + "filename": "Ghostty_256x256x32.png", + "idiom": "mac", + "scale": "1x", + "size": "256x256" }, { - "filename" : "Ghostty_512x512x32.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "256x256" + "filename": "Ghostty_512x512x32.png", + "idiom": "mac", + "scale": "2x", + "size": "256x256" }, { - "filename" : "Ghostty_512x512x32 1.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "512x512" + "filename": "Ghostty_512x512x32 1.png", + "idiom": "mac", + "scale": "1x", + "size": "512x512" }, { - "filename" : "Ghostty_512x512x32 2.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "512x512" + "filename": "Ghostty_512x512x32 2.png", + "idiom": "mac", + "scale": "2x", + "size": "512x512" } ], - "info" : { - "author" : "xcode", - "version" : 1 + "info": { + "author": "xcode", + "version": 1 } } diff --git a/macos/Assets.xcassets/AppIconImage.imageset/Contents.json b/macos/Assets.xcassets/AppIconImage.imageset/Contents.json index 8a7f27f4f..6891b1c3a 100644 --- a/macos/Assets.xcassets/AppIconImage.imageset/Contents.json +++ b/macos/Assets.xcassets/AppIconImage.imageset/Contents.json @@ -1,23 +1,23 @@ { - "images" : [ + "images": [ { - "filename" : "199110421-9ff5fc30-a244-441e-9882-26070662adf9.png", - "idiom" : "universal", - "scale" : "1x" + "filename": "199110421-9ff5fc30-a244-441e-9882-26070662adf9.png", + "idiom": "universal", + "scale": "1x" }, { - "filename" : "199110421-9ff5fc30-a244-441e-9882-26070662adf9 1.png", - "idiom" : "universal", - "scale" : "2x" + "filename": "199110421-9ff5fc30-a244-441e-9882-26070662adf9 1.png", + "idiom": "universal", + "scale": "2x" }, { - "filename" : "199110421-9ff5fc30-a244-441e-9882-26070662adf9 2.png", - "idiom" : "universal", - "scale" : "3x" + "filename": "199110421-9ff5fc30-a244-441e-9882-26070662adf9 2.png", + "idiom": "universal", + "scale": "3x" } ], - "info" : { - "author" : "xcode", - "version" : 1 + "info": { + "author": "xcode", + "version": 1 } } diff --git a/macos/Assets.xcassets/Contents.json b/macos/Assets.xcassets/Contents.json index 73c00596a..74d6a722c 100644 --- a/macos/Assets.xcassets/Contents.json +++ b/macos/Assets.xcassets/Contents.json @@ -1,6 +1,6 @@ { - "info" : { - "author" : "xcode", - "version" : 1 + "info": { + "author": "xcode", + "version": 1 } }