(a *scoredata)
| 21 | ) |
| 22 | |
| 23 | func floatstyle(a *scoredata) (img image.Image, err error) { |
| 24 | fontdata, err := file.GetLazyData(text.GlowSansFontFile, nano.Md5File, false) |
| 25 | if err != nil { |
| 26 | return |
| 27 | } |
| 28 | |
| 29 | picFile, getAvatar, err := initPic(a.avatarurl) |
| 30 | if err != nil { |
| 31 | return |
| 32 | } |
| 33 | a.picfile = picFile |
| 34 | |
| 35 | back, err := gg.LoadImage(a.picfile) |
| 36 | if err != nil { |
| 37 | return |
| 38 | } |
| 39 | |
| 40 | bx, by := float64(back.Bounds().Dx()), float64(back.Bounds().Dy()) |
| 41 | |
| 42 | sc := 1280 / bx |
| 43 | |
| 44 | colors := gg.TakeColor(back, 3) |
| 45 | |
| 46 | canvas := gg.NewContext(1280, 1280*int(by)/int(bx)) |
| 47 | |
| 48 | cw, ch := float64(canvas.W()), float64(canvas.H()) |
| 49 | |
| 50 | sch := ch * 6 / 10 |
| 51 | |
| 52 | var blurback, scbackimg, backshadowimg, avatarimg, avatarbackimg, avatarshadowimg, whitetext, blacktext image.Image |
| 53 | var wg sync.WaitGroup |
| 54 | |
| 55 | wg.Add(2) |
| 56 | go func() { |
| 57 | defer wg.Done() |
| 58 | scback := gg.NewContext(canvas.W(), canvas.H()) |
| 59 | scback.ScaleAbout(sc, sc, cw/2, ch/2) |
| 60 | scback.DrawImageAnchored(back, canvas.W()/2, canvas.H()/2, 0.5, 0.5) |
| 61 | scback.Identity() |
| 62 | |
| 63 | go func() { |
| 64 | defer wg.Done() |
| 65 | blurback = imaging.Blur(scback.Image(), 20) |
| 66 | }() |
| 67 | |
| 68 | scbackimg = rendercard.Fillet(scback.Image(), 12) |
| 69 | }() |
| 70 | |
| 71 | wg.Add(1) |
| 72 | go func() { |
| 73 | defer wg.Done() |
| 74 | pureblack := gg.NewContext(canvas.W(), canvas.H()) |
| 75 | pureblack.SetRGBA255(0, 0, 0, 255) |
| 76 | pureblack.Clear() |
| 77 | |
| 78 | shadow := gg.NewContext(canvas.W(), canvas.H()) |
| 79 | shadow.ScaleAbout(0.6, 0.6, cw-cw/3, ch/2) |
| 80 | shadow.DrawImageAnchored(pureblack.Image(), canvas.W()-canvas.W()/3, canvas.H()/2, 0.5, 0.5) |
no test coverage detected