package ui import ( "image" "opslag.de/schobers/zntg" ) type ImageSource interface { CreateImage() (image.Image, error) } type ImageSourceFile string var _ ImageSource = ImageSourceFile("") func (s ImageSourceFile) CreateImage() (image.Image, error) { return zntg.DecodeImage(string(s)) } type ImageSourceGo struct { image.Image } var _ ImageSource = ImageSourceGo{} func (s ImageSourceGo) CreateImage() (image.Image, error) { return s.Image, nil } type ImageSourceResource struct { Resources Resources Name string } func (s ImageSourceResource) CreateImage() (image.Image, error) { src, err := s.Resources.OpenResource(s.Name) if err != nil { return nil, err } defer src.Close() value, err := zntg.ImageDecoder(src) if err != nil { return nil, err } return value.(image.Image), nil }