package storage import ( "bytes" "image" "image/draw" "image/png" "os" ) type tile struct { dirty bool image *image.RGBA } func (t *tile) save(path string) error { file, err := os.OpenFile(path, os.O_WRONLY, 0644) if err != nil { return err } defer file.Close() err = png.Encode(file, t.image) t.dirty = false return err } func (t *tile) fill() { draw.Draw(t.image, t.image.Bounds(), &image.Uniform{C: image.White}, image.Point{}, draw.Src) } func (t *tile) toBytesPNG() (*bytes.Buffer, error) { buffer := &bytes.Buffer{} err := png.Encode(buffer, t.image) return buffer, err } func (t *tile) size() image.Point { return t.image.Bounds().Size() }