text_wasm.mx raw
1 //go:build wasm
2
3 package text
4
5 import "unsafe"
6
7 //go:wasmimport bridge text_Measure
8 func wasmMeasure(fontPtr *byte, fontLen int32, size float32,
9 textPtr *byte, textLen int32, wPtr *int32, hPtr *int32)
10
11 //go:wasmimport bridge text_Render
12 func wasmRender(fontPtr *byte, fontLen int32, size float32,
13 textPtr *byte, textLen int32, maxW int32,
14 dataPtr *byte, dataCap int32) int32
15
16 func Measure(font string, size float32, txt string, wPtr, hPtr *int32) {
17 wasmMeasure(
18 unsafe.StringData(font), int32(len(font)),
19 size,
20 unsafe.StringData(txt), int32(len(txt)),
21 wPtr, hPtr,
22 )
23 }
24
25 func Render(font string, size float32, txt string, maxW int32, data []byte) int32 {
26 if len(data) == 0 {
27 return 0
28 }
29 return wasmRender(
30 unsafe.StringData(font), int32(len(font)),
31 size,
32 unsafe.StringData(txt), int32(len(txt)),
33 maxW,
34 &data[0], int32(len(data)),
35 )
36 }
37