MCPcopy
hub / github.com/FloatTech/ZeroBot-Plugin / drawScore17

Function drawScore17

plugin/score/draw.go:186–278  ·  view source on GitHub ↗
(a *scdata)

Source from the content-addressed store, hash-verified

184}
185
186func drawScore17(a *scdata) (image.Image, error) {
187 getAvatar, err := initPic(a.picfile, a.uid)
188 if err != nil {
189 return nil, err
190 }
191 back, err := fio.LoadImage(a.picfile)
192 if err != nil {
193 return nil, err
194 }
195 // 避免图片过大,最大 1280*720
196 back = factory.Limit(back, 1280, 720)
197 imgDX := back.Bounds().Dx()
198 imgDY := back.Bounds().Dy()
199 canvas := gg.NewContext(imgDX, imgDY)
200
201 // draw background
202 canvas.DrawImage(back, 0, 0)
203
204 // Create smaller Aero Style boxes
205 createAeroBox := func(x, y, width, height float64) {
206 aeroStyle := gg.NewContext(int(width), int(height))
207 aeroStyle.DrawRoundedRectangle(0, 0, width, height, 8)
208 aeroStyle.SetLineWidth(2)
209 aeroStyle.SetRGBA255(255, 255, 255, 100)
210 aeroStyle.StrokePreserve()
211 aeroStyle.SetRGBA255(255, 255, 255, 140)
212 aeroStyle.Fill()
213 canvas.DrawImage(aeroStyle.Image(), int(x), int(y))
214 }
215
216 // draw aero boxes for text
217 createAeroBox(20, float64(imgDY-120), 280, 100) // left bottom
218 createAeroBox(float64(imgDX-272), float64(imgDY-60), 252, 40) // right bottom
219
220 // draw info(name, coin, etc)
221 hourWord := getHourWord(time.Now())
222 canvas.SetRGB255(0, 0, 0)
223 data, err := file.GetLazyData(text.MaokenFontFile, control.Md5File, true)
224 if err != nil {
225 return nil, err
226 }
227 if err = canvas.ParseFontFace(data, 24); err != nil {
228 return nil, err
229 }
230 getNameLengthWidth, _ := canvas.MeasureString(a.nickname)
231 // draw aero box
232 if getNameLengthWidth > 140 {
233 createAeroBox(20, 40, 140+getNameLengthWidth, 100) // left top
234 } else {
235 createAeroBox(20, 40, 280, 100) // left top
236 }
237
238 // draw avatar
239 avatar, _, err := image.Decode(bytes.NewReader(getAvatar))
240 if err != nil {
241 return nil, err
242 }
243 avatarf := factory.Size(avatar, 100, 100)

Callers

nothing calls this directly

Calls 4

initPicFunction · 0.85
getHourWordFunction · 0.85
getrankFunction · 0.85
FormatMethod · 0.80

Tested by

no test coverage detected