cchat-gtk/icons/icons.go

60 lines
1.2 KiB
Go

package icons
import (
"log"
_ "embed"
"github.com/gotk3/gotk3/cairo"
"github.com/gotk3/gotk3/gdk"
)
// static assets
// var assets = map[string]*gdk.Pixbuf{}
//go:embed cchat_256.png
var __cchat_256 []byte
//go:embed cchat-variant2_256.png
var __cchat_variant2_256 []byte
func Logo256Variant2(sz, scale int) *cairo.Surface {
return mustSurface(loadPixbuf(__cchat_variant2_256, sz, scale), scale)
}
func Logo256(sz, scale int) *cairo.Surface {
return mustSurface(loadPixbuf(__cchat_256, sz, scale), scale)
}
func Logo256Pixbuf() *gdk.Pixbuf {
return loadPixbuf(__cchat_256, 256, 1)
}
func mustSurface(p *gdk.Pixbuf, scale int) *cairo.Surface {
surface, err := gdk.CairoSurfaceCreateFromPixbuf(p, scale, nil)
if err != nil {
log.Fatalln("Failed to create surface from pixbuf:", err)
}
return surface
}
func loadPixbuf(data []byte, sz, scale int) *gdk.Pixbuf {
l, err := gdk.PixbufLoaderNew()
if err != nil {
log.Fatalln("Failed to create a pixbuf loader for icons:", err)
}
if sz > 0 {
l.Connect("size-prepared", func(l *gdk.PixbufLoader) {
l.SetSize(sz*scale, sz*scale)
})
}
p, err := l.WriteAndReturnPixbuf(data)
if err != nil {
log.Fatalln("Failed to write and return pixbuf:", err)
}
return p
}