package main import ( "fmt" "image/color" "math/rand" "sync" "time" "github.com/jdxyw/generativeart" "github.com/jdxyw/generativeart/arts" ) const CANVAS_WIDTH = 3840 const CANVAS_HEIGHT = 2160 var ROSE_PINE_BASE = color.RGBA{25, 23, 36, 255} var ROSE_PINE_COLORS = []color.RGBA{ {0xEB, 0x6F, 0x92, 0xFF}, {0xF6, 0xC1, 0x77, 0xFF}, {0xEB, 0xBC, 0xBA, 0xFF}, {0x31, 0x74, 0x8F, 0xFF}, {0x9C, 0xCF, 0xD8, 0xFF}, {0xC4, 0xA7, 0xE7, 0xFF}, } var ROSE_PINE_DAWN_BASE = color.RGBA{250, 244, 237, 255} var ROSE_PINE_DAWN_COLORS = []color.RGBA{ {0xB4, 0x63, 0x7a, 0xFF}, // love {0xEA, 0x9d, 0x34, 0xFF}, // gold {0xD7, 0x82, 0x7A, 0xFF}, // rose {0x28, 0x69, 0x83, 0xFF}, // pine {0x56, 0x94, 0x9F, 0xFF}, // foam {0x90, 0x7A, 0xA9, 0xFF}, // iris } func PrepareCanvas(c *generativeart.Canva) { c.SetBackground(ROSE_PINE_DAWN_BASE) c.FillBackground() c.SetColorSchema(ROSE_PINE_DAWN_COLORS) } func GenerateCircle(wg *sync.WaitGroup) { defer wg.Done() fmt.Println("Generating a circle png...") c := generativeart.NewCanva(CANVAS_WIDTH, CANVAS_HEIGHT) PrepareCanvas(c) c.Draw(arts.NewColorCircle(1234)) c.ToPNG("rose_pine_circle.png") } func GenerateCircle2(wg *sync.WaitGroup) { defer wg.Done() fmt.Println("Generating a circle2 png...") c := generativeart.NewCanva(CANVAS_WIDTH, CANVAS_HEIGHT) PrepareCanvas(c) c.Draw(arts.NewColorCircle2(333)) c.ToPNG("rose_pine_circle2.png") } func GenerateContourLine(wg *sync.WaitGroup) { defer wg.Done() fmt.Println("Generating a contourline png...") c := generativeart.NewCanva(CANVAS_WIDTH, CANVAS_HEIGHT) PrepareCanvas(c) c.Draw(arts.NewContourLine(600, 3)) c.ToPNG("rose_pine_contourline.png") } func GenerateMaze(wg *sync.WaitGroup) { defer wg.Done() fmt.Println("Generating a maze png...") c := generativeart.NewCanva(CANVAS_WIDTH, CANVAS_HEIGHT) PrepareCanvas(c) c.SetLineWidth(1) for i := range ROSE_PINE_COLORS { c.SetLineWidth(float64((i+1)/3 + 1)) c.Draw(arts.NewMaze(i*10 + 100)) c.SetLineColor(ROSE_PINE_COLORS[i]) } c.ToPNG("rose_pine_maze.png") } func GenerateNoiseLine(wg *sync.WaitGroup) { defer wg.Done() fmt.Println("Generating a noiseline png...") c := generativeart.NewCanva(CANVAS_WIDTH, CANVAS_HEIGHT) PrepareCanvas(c) c.Draw(arts.NewNoiseLine(3456)) c.ToPNG("rose_pine_noiseline.png") } func GenerateShape(wg *sync.WaitGroup) { defer wg.Done() fmt.Println("Generating a shape png...") c := generativeart.NewCanva(CANVAS_WIDTH, CANVAS_HEIGHT) PrepareCanvas(c) c.Draw(arts.NewRandomShape(111)) c.ToPNG("rose_pine_shape.png") } func main() { rand.Seed(time.Now().Unix()) var wg sync.WaitGroup wg.Add(1) go GenerateContourLine(&wg) // wg.Add(1) // go GenerateNoiseLine(&wg) wg.Wait() fmt.Println("main finished") }