Files
barnsley-fern-go/image.go

50 lines
899 B
Go
Raw Normal View History

2025-03-25 23:55:13 +03:00
package main
import (
"errors"
"image"
"image/color"
"image/png"
"io"
)
2025-03-26 00:51:46 +03:00
var errEncodePng = errors.New("не удалось создать png изображение")
2025-03-25 23:55:13 +03:00
func createBarnsleyFernPng(s *settings, w io.Writer) error {
img := newImageWithBackGround(s.X, s.Y, s.BG)
drawBarnsleyFern(img, newColorFunc(s.CM), s.Dots)
if err := png.Encode(w, img); err != nil {
2025-03-26 00:51:46 +03:00
return errors.Join(errEncodePng, err)
2025-03-25 23:55:13 +03:00
}
return nil
}
func newImageWithBackGround(x, y int, background color.Color) *image.RGBA {
img := createImage(x, y)
fillBackground(img, background)
return img
}
func createImage(x, y int) *image.RGBA {
rect := image.Rectangle{
image.Point{0, 0},
image.Point{x, y},
}
return image.NewRGBA(rect)
}
func fillBackground(img *image.RGBA, c color.Color) {
rect := img.Bounds()
for x := range rect.Max.X {
for y := range rect.Max.Y {
img.Set(x, y, c)
}
}
}