package imageutils

import (
	"image"
	"image/color"
)

// go.dev/blog/image-draw#drawing-through-a-mask
type Circle struct {
	image.Point
	R int
}

func (c Circle) ColorModel() color.Model { return color.Alpha16Model }
func (c Circle) Bounds() image.Rectangle {
	return image.Rect(c.Point.X-c.R, c.Point.Y-c.R, c.Point.X+c.R, c.Point.Y+c.R)
}
func (c Circle) At(x, y int) color.Color {
	xx, yy, rr := float64(x-c.Point.X)+0.5, float64(y-c.Point.Y)+0.5, float64(c.R)
	if xx*xx+yy*yy < rr*rr {
		return color.Opaque
	}
	return color.Transparent
}
