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