44 lines
663 B
Go
44 lines
663 B
Go
package dithering
|
|
|
|
import (
|
|
"image"
|
|
"image/color"
|
|
)
|
|
|
|
type grid struct {
|
|
color.Gray
|
|
}
|
|
|
|
func (_ grid) ColorModel() color.Model {
|
|
return color.RGBAModel
|
|
}
|
|
|
|
func (_ grid) Bounds() image.Rectangle {
|
|
return image.Rect(0, 0, 8, 8)
|
|
}
|
|
|
|
func (g grid) At(x, y int) color.Color {
|
|
step := int(64 / (g.Gray.Y / 4))
|
|
if (y*8+x)%step == 0 {
|
|
return color.Black
|
|
}
|
|
return color.White
|
|
}
|
|
|
|
type uniformGrid struct {
|
|
image.Image
|
|
image.Rectangle
|
|
}
|
|
|
|
func (g uniformGrid) ColorModel() color.Model {
|
|
return g.Image.ColorModel()
|
|
}
|
|
|
|
func (g uniformGrid) Bounds() image.Rectangle {
|
|
return g.Rectangle
|
|
}
|
|
|
|
func (g uniformGrid) At(x, y int) color.Color {
|
|
return color.Color(nil)
|
|
}
|