MCPcopy Index your code
hub / github.com/FloatTech/ZeroBot-Plugin / drawArticleInfoBlock

Function drawArticleInfoBlock

plugin/mcfish/pack.go:417–542  ·  view source on GitHub ↗
(uid int64, articles []article, fontdata []byte)

Source from the content-addressed store, hash-verified

415 return canvas.Image(), nil
416}
417func drawArticleInfoBlock(uid int64, articles []article, fontdata []byte) (image.Image, error) {
418 canvas := gg.NewContext(1, 1)
419 err := canvas.ParseFontFace(fontdata, 100)
420 if err != nil {
421 return nil, err
422 }
423 titleW, titleH := canvas.MeasureString("背包信息")
424 front := 45.0
425 err = canvas.ParseFontFace(fontdata, front)
426 if err != nil {
427 return nil, err
428 }
429 _, textH := canvas.MeasureString("高度")
430
431 nameWOfFiest := 0.0
432 nameWOfSecond := 0.0
433 for i, info := range articles {
434 textW, _ := canvas.MeasureString(info.Name + "(" + info.Other + ")")
435 if i%2 == 0 && textW > nameWOfFiest {
436 nameWOfFiest = textW
437 } else if textW > nameWOfSecond {
438 nameWOfSecond = textW
439 }
440 }
441 valueW, _ := canvas.MeasureString("10000")
442
443 if (10+nameWOfFiest+10+valueW+10)+(10+nameWOfSecond+10+valueW+10) > 980 {
444 front = 32.0
445 err = canvas.ParseFontFace(fontdata, front)
446 if err != nil {
447 return nil, err
448 }
449 _, textH = canvas.MeasureString("高度")
450
451 nameWOfFiest = 0
452 nameWOfSecond = 0
453 for i, info := range articles {
454 textW, _ := canvas.MeasureString(info.Name + "(" + info.Other + ")")
455 if i%2 == 0 && textW > nameWOfFiest {
456 nameWOfFiest = textW
457 } else if textW > nameWOfSecond {
458 nameWOfSecond = textW
459 }
460 }
461 valueW, _ = canvas.MeasureString("10000")
462 }
463 wallW := (980 - (10 + nameWOfFiest + 10 + valueW + 10) - (10 + nameWOfSecond + 10 + valueW + 10)) / 2
464 backY := math.Max(10+int(titleH*1.6)+10+int(textH*2)*(math.Ceil(len(articles), 2)+1), 500)
465 canvas = gg.NewContext(1000, backY)
466 // 画底色
467 canvas.DrawRectangle(0, 0, 1000, float64(backY))
468 canvas.SetRGBA255(255, 255, 255, 150)
469 canvas.Fill()
470 // 边框框
471 canvas.DrawRectangle(0, 0, 1000, float64(backY))
472 canvas.SetLineWidth(3)
473 canvas.SetRGBA255(0, 0, 0, 255)
474 canvas.Stroke()

Callers 1

drawPackImageFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected