Noah Petherbridge
d658359240
* New logger module supports js/wasm build by skipping the dependency on ssh/terminal (which detected interactive consoles, not applicable to JS). In WASM the logs go to the browser console and ANSI color codes not needed.
52 lines
1.6 KiB
Markdown
52 lines
1.6 KiB
Markdown
# WebAssembly Port
|
|
|
|
## Build and Test
|
|
|
|
Change to the wasm/ folder and type `make` to build `doodle.wasm`
|
|
|
|
To test it with a local Go server, cd to the wasm/ folder and run
|
|
`go run server.go` and visit http://localhost:8080/
|
|
|
|
Copy the `fonts` and `assets` folders from the project root to the
|
|
wasm/ directory so they're available over HTTP.
|
|
|
|
## wasm_exec.js
|
|
|
|
To update the wasm_exec.js to match your version of Go:
|
|
|
|
```bash
|
|
# Fedora: install golang-misc
|
|
sudo dnf install golang-misc
|
|
|
|
# Copy the wasm_exec.js
|
|
cp $(go env GOROOT)/misc/wasm/wasm_exec.js ./
|
|
```
|
|
|
|
## Font Support
|
|
|
|
Fonts are implemented as CSS embedded fonts configured in
|
|
`wasm/index.html`
|
|
|
|
The font family name should match the filename, sans .ttf extension,
|
|
for example "DejaVuSans-Bold". Doodle's internal logic converts a
|
|
FontFilename string like "./fonts/DejaVuSans.ttf" into the base name
|
|
to use as the font family. It also has fallbacks for sans-serif and
|
|
serif in case of any problems.
|
|
|
|
## Known Bugs and Limitations
|
|
|
|
* git.kirsle.net/go/log
|
|
* The detection of an interactive terminal is broken in WASM.
|
|
* `terminal.IsTerminal(int(os.Stdout.Fd()))`
|
|
* As a workaround, comment it out and hardcode to `false`
|
|
* Userdir
|
|
* For WASM we'll want to use localStorage to store user drawings
|
|
instead of the userdir.
|
|
* Wallpaper support
|
|
* WASM can't use os.Open to read the wallpaper image, so will need
|
|
another method to load the image.
|
|
* Texture caching support isn't implemented yet to hold the four
|
|
corner textures of a wallpaper.
|
|
* As a workaround, added a `wallpaper.ready` boolean and relevant
|
|
functions exit early for WASM so wallpapers don't render at all.
|