place/storage/tile.go

41 lines
675 B
Go
Raw Normal View History

2024-06-13 11:25:18 +00:00
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()
}