MCPcopy Create free account
hub / github.com/FloatTech/NanoBot-Plugin / drawstatus

Function drawstatus

plugin/status/main.go:83–462  ·  view source on GitHub ↗
(m *ctrl.Control[*nano.Ctx], botavartarurl, botname string)

Source from the content-addressed store, hash-verified

81}
82
83func drawstatus(m *ctrl.Control[*nano.Ctx], botavartarurl, botname string) (sendimg image.Image, err error) {
84 diskstate, err := diskstate()
85 if err != nil {
86 return
87 }
88 diskcardh := 40 + (20+50)*len(diskstate) + 40 - 20
89
90 moreinfo, err := moreinfo(m)
91 if err != nil {
92 return
93 }
94 moreinfocardh := 30 + (20+32*72/96)*len(moreinfo) + 30 - 20
95
96 basicstate, err := basicstate()
97 if err != nil {
98 return
99 }
100
101 dldata := (*[]byte)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&bgdata))))
102 if dldata == (*[]byte)(nil) || uintptr(time.Since(boottime).Hours()/24) >= atomic.LoadUintptr(&bgcount) {
103 pic, err1 := setu.DefaultPool.Roll("")
104 if err1 != nil {
105 return nil, err1
106 }
107 data, err1 := os.ReadFile(pic)
108 if err1 != nil {
109 return nil, err1
110 }
111 atomic.AddUintptr(&bgcount, 1)
112 atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&bgdata)), unsafe.Pointer(&data))
113 dldata = &data
114 }
115 data := *dldata
116
117 back, _, err := image.Decode(bytes.NewReader(data))
118 if err != nil {
119 return
120 }
121
122 data, err = web.GetData(botavartarurl)
123 if err != nil {
124 return
125 }
126 avatar, _, err := image.Decode(bytes.NewReader(data))
127 if err != nil {
128 return
129 }
130 avatarf := imgfactory.Size(avatar, 200, 200)
131
132 fontbyte, err := file.GetLazyData(text.GlowSansFontFile, nano.Md5File, true)
133 if err != nil {
134 return
135 }
136
137 canvas := gg.NewContext(1280, 70+250+40+380+diskcardh+40+moreinfocardh+40+70)
138
139 bh, bw, ch, cw := float64(back.Bounds().Dy()), float64(back.Bounds().Dx()), float64(canvas.H()), float64(canvas.W())
140

Callers 1

initFunction · 0.85

Calls 8

diskstateFunction · 0.85
moreinfoFunction · 0.85
basicstateFunction · 0.85
colorswitchFunction · 0.85
fontcolorswitchFunction · 0.85
botruntimeFunction · 0.85
botstatusFunction · 0.85
slice2colorFunction · 0.85

Tested by

no test coverage detected