41 lines
675 B
Go
41 lines
675 B
Go
|
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()
|
||
|
}
|