forked from mbk-lab/rui_orig
2
0
Fork 0

Bug fixing

This commit is contained in:
Alexei Anoshenko 2022-07-10 12:58:10 +03:00
parent 21ee77eb26
commit d3c36e38bd
1 changed files with 25 additions and 17 deletions

View File

@ -645,26 +645,34 @@ func (canvas *canvasData) SetFontWithParams(name string, size SizeUnit, params F
} }
func (canvas *canvasData) TextWidth(text string, fontName string, fontSize SizeUnit) float64 { func (canvas *canvasData) TextWidth(text string, fontName string, fontSize SizeUnit) float64 {
script := allocStringBuilder() buffer := allocStringBuilder()
defer freeStringBuilder(script) defer freeStringBuilder(buffer)
script.WriteString(`const canvas = document.getElementById('`) canvas.setFontWithParams(fontName, fontSize, FontParams{}, buffer)
script.WriteString(canvas.View().htmlID()) fontParams := buffer.String()
script.WriteString(`');
const ctx = canvas.getContext('2d');
const dpr = window.devicePixelRatio || 1;
var gradient;
var path;
ctx.save()
ctx.scale(dpr, dpr);`)
canvas.setFontWithParams(fontName, fontSize, FontParams{}, script) buffer.Reset()
script.WriteString("\nvar w = ctx.measureText('") canvas.writeStringArgs(text, buffer)
canvas.writeStringArgs(text, script) str := buffer.String()
script.WriteString(`').width;
sendMessage('answer{width=' + w + ', answerID=' + answerID + '}')`)
result := canvas.View().Session().runGetterScript(script.String()) script := fmt.Sprintf(`
var w = 0;
const canvas = document.getElementById('%s');
if (canvas) {
const ctx = canvas.getContext('2d');
if (ctx) {
ctx.save()
const dpr = window.devicePixelRatio || 1;
ctx.scale(dpr, dpr);
%s;
w = ctx.measureText('%s').width;
ctx.restore();
}
}
sendMessage('answer{width=' + w + ', answerID=' + answerID + '}');
`, canvas.View().htmlID(), fontParams, str)
result := canvas.View().Session().runGetterScript(script)
switch result.Tag() { switch result.Tag() {
case "answer": case "answer":
if value, ok := result.PropertyValue("width"); ok { if value, ok := result.PropertyValue("width"); ok {