From 818cd906ac41653952f4e696dc31ba9d4746955d Mon Sep 17 00:00:00 2001 From: Steven Polley Date: Tue, 24 Jul 2018 07:36:03 -0600 Subject: [PATCH] Updated for render --- images/renderVideo.sh | 3 + main.go | 55 +++---- palette/palette.go | 346 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 372 insertions(+), 32 deletions(-) create mode 100755 images/renderVideo.sh create mode 100644 palette/palette.go diff --git a/images/renderVideo.sh b/images/renderVideo.sh new file mode 100755 index 0000000..09fff50 --- /dev/null +++ b/images/renderVideo.sh @@ -0,0 +1,3 @@ +#!/bin/bash +ffmpeg -pattern_type glob -i "*.png" out.mp4 + diff --git a/main.go b/main.go index bd48664..2c0c371 100644 --- a/main.go +++ b/main.go @@ -10,50 +10,34 @@ import ( "os" "sync" "time" + + "deadbeef.codes/steven/mandelbrot/palette" ) var ( - colorPalette string - colorStep float64 - xpos, ypos float64 - width, height int - imageSmoothness int - maxIteration int - escapeRadius float64 - outputFile string + colorPalette string + colorStep float64 + xpos, ypos float64 ) var waitGroup sync.WaitGroup func init() { flag.Float64Var(&colorStep, "step", 12000, "Color smooth step. Value should be greater than iteration count, otherwise the value will be adjusted to the iteration count.") - flag.IntVar(&width, "width", 480, "Rendered image width") - flag.IntVar(&height, "height", 270, "Rendered image height") flag.Float64Var(&xpos, "xpos", -0.00275, "Point position on the real axis (defined on `x` axis)") flag.Float64Var(&ypos, "ypos", 0.78912, "Point position on the imaginary axis (defined on `y` axis)") - flag.Float64Var(&escapeRadius, "radius", .125689, "Escape Radius") - flag.IntVar(&maxIteration, "iteration", 2400, "Iteration count") - flag.IntVar(&imageSmoothness, "smoothness", 8, "The rendered mandelbrot set smoothness. For a more detailded and clear image use higher numbers. For 4xAA (AA = antialiasing) use -smoothness 4") flag.StringVar(&colorPalette, "palette", "Plan9", "Hippi | Plan9 | AfternoonBlue | SummerBeach | Biochimist | Fiesta") - flag.StringVar(&outputFile, "file", "mandelbrot.png", "The rendered mandelbrot image filname") flag.Parse() } func main() { - done := make(chan struct{}) - ticker := time.NewTicker(time.Millisecond * 100) - go func() { - for { - select { - case <-ticker.C: - fmt.Print(".") - case <-done: - ticker.Stop() - fmt.Printf("\n\nMandelbrot set rendered into `%s`\n", outputFile) - } - } - }() + //var escapeRadius float64 = 0.125689 + var escapeRadius float64 = -0.01 + maxIteration := 800 + imageSmoothness := 1 + width := 1920 + height := 1080 if colorStep < float64(maxIteration) { colorStep = float64(maxIteration) @@ -61,8 +45,14 @@ func main() { colors := interpolateColors(&colorPalette, colorStep) if len(colors) > 0 { - fmt.Print("Rendering image...") - render(maxIteration, colors, done) + fmt.Println("Rendering images...") + + for i := 1; i <= 15000; i++ { + render(maxIteration, colors, escapeRadius, imageSmoothness, width, height, fmt.Sprintf("images/%08d.png", i)) + escapeRadius += 0.001 + maxIteration += 1 + } + } time.Sleep(time.Second) } @@ -74,7 +64,7 @@ func interpolateColors(paletteCode *string, numberOfColors float64) []color.RGBA interpolated := []uint32{} interpolatedColors := []color.RGBA{} - for _, v := range ColorPalettes { + for _, v := range palette.ColorPalettes { factor = 1.0 / numberOfColors switch v.Keyword { case *paletteCode: @@ -127,7 +117,9 @@ func interpolateColors(paletteCode *string, numberOfColors float64) []color.RGBA return interpolatedColors } -func render(maxIteration int, colors []color.RGBA, done chan struct{}) { +func render(maxIteration int, colors []color.RGBA, escapeRadius float64, imageSmoothness, width, height int, outputFile string) { + fmt.Printf("rendering image %s\n", outputFile) + width = width * imageSmoothness height = height * imageSmoothness ratio := float64(height) / float64(width) @@ -163,7 +155,6 @@ func render(maxIteration int, colors []color.RGBA, done chan struct{}) { output, _ := os.Create(outputFile) png.Encode(output, image) - done <- struct{}{} } func cosineInterpolation(c1, c2, mu float64) float64 { diff --git a/palette/palette.go b/palette/palette.go new file mode 100644 index 0000000..52b931e --- /dev/null +++ b/palette/palette.go @@ -0,0 +1,346 @@ +package palette + +import ( + "image/color" +) + +type Color struct { + Step float64 + Color color.Color +} + +type ColorMap struct { + Keyword string + Colors []Color +} + +var ColorPalettes = []ColorMap{ + {"AfternoonBlue", []Color{ + {0.0, color.RGBA{0x93, 0xd2, 0xca, 0xff}}, + {0.2, color.RGBA{0x6c, 0x98, 0xb8, 0xff}}, + {0.5, color.RGBA{0x38, 0x68, 0x85, 0xff}}, + {0.8, color.RGBA{0x17, 0x4f, 0x72, 0xff}}, + {1.0, color.RGBA{0x08, 0x2a, 0x4f, 0xff}}, + }}, + {"SummerBeach", []Color{ + {0.0, color.RGBA{0xff, 0xf0, 0x94, 0xff}}, + {0.3, color.RGBA{0xff, 0xb7, 0x2d, 0xff}}, + {0.6, color.RGBA{0xff, 0x8d, 0x00, 0xff}}, + {0.8, color.RGBA{0x2d, 0x69, 0xae, 0xff}}, + {1.0, color.RGBA{0x1e, 0x2c, 0x60, 0xff}}, + }}, + {"Biochimist", []Color{ + Color{Color: color.RGBA{0x51, 0x99, 0x25, 0xff}}, + Color{Color: color.RGBA{0x50, 0xa6, 0x1c, 0xff}}, + Color{Color: color.RGBA{0x4b, 0xb8, 0x0b, 0xff}}, + Color{Color: color.RGBA{0x4d, 0xcd, 0x00, 0xff}}, + Color{Color: color.RGBA{0x53, 0xdf, 0x00, 0xff}}, + }}, + {"Fiesta", []Color{ + Color{Color: color.RGBA{0x03, 0x67, 0xa6, 0xff}}, + Color{Color: color.RGBA{0x04, 0xad, 0xbf, 0xff}}, + Color{Color: color.RGBA{0x93, 0xa6, 0x03, 0xff}}, + Color{Color: color.RGBA{0xe5, 0xce, 0x1b, 0xff}}, + Color{Color: color.RGBA{0xc8, 0x3f, 0x2a, 0xff}}, + }}, + {"Hippi", []Color{ + Color{Color: color.RGBA{0x00, 0x04, 0x0f, 0xff}}, + Color{Color: color.RGBA{0x03, 0x26, 0x28, 0xff}}, + Color{Color: color.RGBA{0x07, 0x3e, 0x1e, 0xff}}, + Color{Color: color.RGBA{0x18, 0x55, 0x08, 0xff}}, + Color{Color: color.RGBA{0x5f, 0x6e, 0x0f, 0xff}}, + Color{Color: color.RGBA{0x84, 0x50, 0x19, 0xff}}, + Color{Color: color.RGBA{0x9b, 0x30, 0x22, 0xff}}, + Color{Color: color.RGBA{0xb4, 0x92, 0x2f, 0xff}}, + Color{Color: color.RGBA{0x94, 0xca, 0x3d, 0xff}}, + Color{Color: color.RGBA{0x4f, 0xd5, 0x51, 0xff}}, + Color{Color: color.RGBA{0x66, 0xff, 0xb3, 0xff}}, + Color{Color: color.RGBA{0x82, 0xc9, 0xe5, 0xff}}, + Color{Color: color.RGBA{0x9d, 0xa3, 0xeb, 0xff}}, + Color{Color: color.RGBA{0xd7, 0xb5, 0xf3, 0xff}}, + Color{Color: color.RGBA{0xfd, 0xd6, 0xf6, 0xff}}, + Color{Color: color.RGBA{0xff, 0xf0, 0xf2, 0xff}}, + }}, + {"Vivid", []Color{ + Color{Color: color.RGBA{0x02, 0x3b, 0x2b, 0xff}}, + Color{Color: color.RGBA{0x36, 0x34, 0x48, 0xff}}, + Color{Color: color.RGBA{0x04, 0x8b, 0x64, 0xff}}, + Color{Color: color.RGBA{0x81, 0x6a, 0x6e, 0xff}}, + Color{Color: color.RGBA{0x8d, 0x5e, 0x67, 0xff}}, + Color{Color: color.RGBA{0x98, 0x52, 0x60, 0xff}}, + Color{Color: color.RGBA{0xa4, 0x46, 0x59, 0xff}}, + Color{Color: color.RGBA{0xd3, 0x17, 0x3d, 0xff}}, + Color{Color: color.RGBA{0xe1, 0x08, 0x34, 0xff}}, + Color{Color: color.RGBA{0xde, 0x17, 0x30, 0xff}}, + Color{Color: color.RGBA{0xdc, 0x26, 0x2d, 0xff}}, + Color{Color: color.RGBA{0xd9, 0x36, 0x2a, 0xff}}, + Color{Color: color.RGBA{0xd7, 0x45, 0x27, 0xff}}, + Color{Color: color.RGBA{0xd5, 0x55, 0x24, 0xff}}, + Color{Color: color.RGBA{0xd2, 0x64, 0x21, 0xff}}, + Color{Color: color.RGBA{0xd0, 0x74, 0x1e, 0xff}}, + Color{Color: color.RGBA{0xce, 0x83, 0x1b, 0xff}}, + Color{Color: color.RGBA{0xcb, 0x92, 0x18, 0xff}}, + Color{Color: color.RGBA{0xc9, 0xa2, 0x15, 0xff}}, + Color{Color: color.RGBA{0x11, 0x03, 0x12, 0xff}}, + Color{Color: color.RGBA{0x33, 0x08, 0x35, 0xff}}, + Color{Color: color.RGBA{0xf5, 0xca, 0xf7, 0xff}}, + }}, + {"Plan9", []Color{ + Color{Color: color.RGBA{0x00, 0x00, 0x00, 0xff}}, + Color{Color: color.RGBA{0x00, 0x00, 0x44, 0xff}}, + Color{Color: color.RGBA{0x00, 0x00, 0x88, 0xff}}, + Color{Color: color.RGBA{0x00, 0x00, 0xcc, 0xff}}, + Color{Color: color.RGBA{0x00, 0x44, 0x00, 0xff}}, + Color{Color: color.RGBA{0x00, 0x44, 0x44, 0xff}}, + Color{Color: color.RGBA{0x00, 0x44, 0x88, 0xff}}, + Color{Color: color.RGBA{0x00, 0x44, 0xcc, 0xff}}, + Color{Color: color.RGBA{0x00, 0x88, 0x00, 0xff}}, + Color{Color: color.RGBA{0x00, 0x88, 0x44, 0xff}}, + Color{Color: color.RGBA{0x00, 0x88, 0x88, 0xff}}, + Color{Color: color.RGBA{0x00, 0x88, 0xcc, 0xff}}, + Color{Color: color.RGBA{0x00, 0xcc, 0x00, 0xff}}, + Color{Color: color.RGBA{0x00, 0xcc, 0x44, 0xff}}, + Color{Color: color.RGBA{0x00, 0xcc, 0x88, 0xff}}, + Color{Color: color.RGBA{0x00, 0xcc, 0xcc, 0xff}}, + Color{Color: color.RGBA{0x00, 0xdd, 0xdd, 0xff}}, + Color{Color: color.RGBA{0x11, 0x11, 0x11, 0xff}}, + Color{Color: color.RGBA{0x00, 0x00, 0x55, 0xff}}, + Color{Color: color.RGBA{0x00, 0x00, 0x99, 0xff}}, + Color{Color: color.RGBA{0x00, 0x00, 0xdd, 0xff}}, + Color{Color: color.RGBA{0x00, 0x55, 0x00, 0xff}}, + Color{Color: color.RGBA{0x00, 0x55, 0x55, 0xff}}, + Color{Color: color.RGBA{0x00, 0x4c, 0x99, 0xff}}, + Color{Color: color.RGBA{0x00, 0x49, 0xdd, 0xff}}, + Color{Color: color.RGBA{0x00, 0x99, 0x00, 0xff}}, + Color{Color: color.RGBA{0x00, 0x99, 0x4c, 0xff}}, + Color{Color: color.RGBA{0x00, 0x99, 0x99, 0xff}}, + Color{Color: color.RGBA{0x00, 0x93, 0xdd, 0xff}}, + Color{Color: color.RGBA{0x00, 0xdd, 0x00, 0xff}}, + Color{Color: color.RGBA{0x00, 0xdd, 0x49, 0xff}}, + Color{Color: color.RGBA{0x00, 0xdd, 0x93, 0xff}}, + Color{Color: color.RGBA{0x00, 0xee, 0x9e, 0xff}}, + Color{Color: color.RGBA{0x00, 0xee, 0xee, 0xff}}, + Color{Color: color.RGBA{0x22, 0x22, 0x22, 0xff}}, + Color{Color: color.RGBA{0x00, 0x00, 0x66, 0xff}}, + Color{Color: color.RGBA{0x00, 0x00, 0xaa, 0xff}}, + Color{Color: color.RGBA{0x00, 0x00, 0xee, 0xff}}, + Color{Color: color.RGBA{0x00, 0x66, 0x00, 0xff}}, + Color{Color: color.RGBA{0x00, 0x66, 0x66, 0xff}}, + Color{Color: color.RGBA{0x00, 0x55, 0xaa, 0xff}}, + Color{Color: color.RGBA{0x00, 0x4f, 0xee, 0xff}}, + Color{Color: color.RGBA{0x00, 0xaa, 0x00, 0xff}}, + Color{Color: color.RGBA{0x00, 0xaa, 0x55, 0xff}}, + Color{Color: color.RGBA{0x00, 0xaa, 0xaa, 0xff}}, + Color{Color: color.RGBA{0x00, 0x9e, 0xee, 0xff}}, + Color{Color: color.RGBA{0x00, 0xee, 0x00, 0xff}}, + Color{Color: color.RGBA{0x00, 0xee, 0x4f, 0xff}}, + Color{Color: color.RGBA{0x00, 0xff, 0x55, 0xff}}, + Color{Color: color.RGBA{0x00, 0xff, 0xaa, 0xff}}, + Color{Color: color.RGBA{0x00, 0xff, 0xff, 0xff}}, + Color{Color: color.RGBA{0x33, 0x33, 0x33, 0xff}}, + Color{Color: color.RGBA{0x00, 0x00, 0x77, 0xff}}, + Color{Color: color.RGBA{0x00, 0x00, 0xbb, 0xff}}, + Color{Color: color.RGBA{0x00, 0x00, 0xff, 0xff}}, + Color{Color: color.RGBA{0x00, 0x77, 0x00, 0xff}}, + Color{Color: color.RGBA{0x00, 0x77, 0x77, 0xff}}, + Color{Color: color.RGBA{0x00, 0x5d, 0xbb, 0xff}}, + Color{Color: color.RGBA{0x00, 0x55, 0xff, 0xff}}, + Color{Color: color.RGBA{0x00, 0xbb, 0x00, 0xff}}, + Color{Color: color.RGBA{0x00, 0xbb, 0x5d, 0xff}}, + Color{Color: color.RGBA{0x00, 0xbb, 0xbb, 0xff}}, + Color{Color: color.RGBA{0x00, 0xaa, 0xff, 0xff}}, + Color{Color: color.RGBA{0x00, 0xff, 0x00, 0xff}}, + Color{Color: color.RGBA{0x44, 0x00, 0x44, 0xff}}, + Color{Color: color.RGBA{0x44, 0x00, 0x88, 0xff}}, + Color{Color: color.RGBA{0x44, 0x00, 0xcc, 0xff}}, + Color{Color: color.RGBA{0x44, 0x44, 0x00, 0xff}}, + Color{Color: color.RGBA{0x44, 0x44, 0x44, 0xff}}, + Color{Color: color.RGBA{0x44, 0x44, 0x88, 0xff}}, + Color{Color: color.RGBA{0x44, 0x44, 0xcc, 0xff}}, + Color{Color: color.RGBA{0x44, 0x88, 0x00, 0xff}}, + Color{Color: color.RGBA{0x44, 0x88, 0x44, 0xff}}, + Color{Color: color.RGBA{0x44, 0x88, 0x88, 0xff}}, + Color{Color: color.RGBA{0x44, 0x88, 0xcc, 0xff}}, + Color{Color: color.RGBA{0x44, 0xcc, 0x00, 0xff}}, + Color{Color: color.RGBA{0x44, 0xcc, 0x44, 0xff}}, + Color{Color: color.RGBA{0x44, 0xcc, 0x88, 0xff}}, + Color{Color: color.RGBA{0x44, 0xcc, 0xcc, 0xff}}, + Color{Color: color.RGBA{0x44, 0x00, 0x00, 0xff}}, + Color{Color: color.RGBA{0x55, 0x00, 0x00, 0xff}}, + Color{Color: color.RGBA{0x55, 0x00, 0x55, 0xff}}, + Color{Color: color.RGBA{0x4c, 0x00, 0x99, 0xff}}, + Color{Color: color.RGBA{0x49, 0x00, 0xdd, 0xff}}, + Color{Color: color.RGBA{0x55, 0x55, 0x00, 0xff}}, + Color{Color: color.RGBA{0x55, 0x55, 0x55, 0xff}}, + Color{Color: color.RGBA{0x4c, 0x4c, 0x99, 0xff}}, + Color{Color: color.RGBA{0x49, 0x49, 0xdd, 0xff}}, + Color{Color: color.RGBA{0x4c, 0x99, 0x00, 0xff}}, + Color{Color: color.RGBA{0x4c, 0x99, 0x4c, 0xff}}, + Color{Color: color.RGBA{0x4c, 0x99, 0x99, 0xff}}, + Color{Color: color.RGBA{0x49, 0x93, 0xdd, 0xff}}, + Color{Color: color.RGBA{0x49, 0xdd, 0x00, 0xff}}, + Color{Color: color.RGBA{0x49, 0xdd, 0x49, 0xff}}, + Color{Color: color.RGBA{0x49, 0xdd, 0x93, 0xff}}, + Color{Color: color.RGBA{0x49, 0xdd, 0xdd, 0xff}}, + Color{Color: color.RGBA{0x4f, 0xee, 0xee, 0xff}}, + Color{Color: color.RGBA{0x66, 0x00, 0x00, 0xff}}, + Color{Color: color.RGBA{0x66, 0x00, 0x66, 0xff}}, + Color{Color: color.RGBA{0x55, 0x00, 0xaa, 0xff}}, + Color{Color: color.RGBA{0x4f, 0x00, 0xee, 0xff}}, + Color{Color: color.RGBA{0x66, 0x66, 0x00, 0xff}}, + Color{Color: color.RGBA{0x66, 0x66, 0x66, 0xff}}, + Color{Color: color.RGBA{0x55, 0x55, 0xaa, 0xff}}, + Color{Color: color.RGBA{0x4f, 0x4f, 0xee, 0xff}}, + Color{Color: color.RGBA{0x55, 0xaa, 0x00, 0xff}}, + Color{Color: color.RGBA{0x55, 0xaa, 0x55, 0xff}}, + Color{Color: color.RGBA{0x55, 0xaa, 0xaa, 0xff}}, + Color{Color: color.RGBA{0x4f, 0x9e, 0xee, 0xff}}, + Color{Color: color.RGBA{0x4f, 0xee, 0x00, 0xff}}, + Color{Color: color.RGBA{0x4f, 0xee, 0x4f, 0xff}}, + Color{Color: color.RGBA{0x4f, 0xee, 0x9e, 0xff}}, + Color{Color: color.RGBA{0x55, 0xff, 0xaa, 0xff}}, + Color{Color: color.RGBA{0x55, 0xff, 0xff, 0xff}}, + Color{Color: color.RGBA{0x77, 0x00, 0x00, 0xff}}, + Color{Color: color.RGBA{0x77, 0x00, 0x77, 0xff}}, + Color{Color: color.RGBA{0x5d, 0x00, 0xbb, 0xff}}, + Color{Color: color.RGBA{0x55, 0x00, 0xff, 0xff}}, + Color{Color: color.RGBA{0x77, 0x77, 0x00, 0xff}}, + Color{Color: color.RGBA{0x77, 0x77, 0x77, 0xff}}, + Color{Color: color.RGBA{0x5d, 0x5d, 0xbb, 0xff}}, + Color{Color: color.RGBA{0x55, 0x55, 0xff, 0xff}}, + Color{Color: color.RGBA{0x5d, 0xbb, 0x00, 0xff}}, + Color{Color: color.RGBA{0x5d, 0xbb, 0x5d, 0xff}}, + Color{Color: color.RGBA{0x5d, 0xbb, 0xbb, 0xff}}, + Color{Color: color.RGBA{0x55, 0xaa, 0xff, 0xff}}, + Color{Color: color.RGBA{0x55, 0xff, 0x00, 0xff}}, + Color{Color: color.RGBA{0x55, 0xff, 0x55, 0xff}}, + Color{Color: color.RGBA{0x88, 0x00, 0x88, 0xff}}, + Color{Color: color.RGBA{0x88, 0x00, 0xcc, 0xff}}, + Color{Color: color.RGBA{0x88, 0x44, 0x00, 0xff}}, + Color{Color: color.RGBA{0x88, 0x44, 0x44, 0xff}}, + Color{Color: color.RGBA{0x88, 0x44, 0x88, 0xff}}, + Color{Color: color.RGBA{0x88, 0x44, 0xcc, 0xff}}, + Color{Color: color.RGBA{0x88, 0x88, 0x00, 0xff}}, + Color{Color: color.RGBA{0x88, 0x88, 0x44, 0xff}}, + Color{Color: color.RGBA{0x88, 0x88, 0x88, 0xff}}, + Color{Color: color.RGBA{0x88, 0x88, 0xcc, 0xff}}, + Color{Color: color.RGBA{0x88, 0xcc, 0x00, 0xff}}, + Color{Color: color.RGBA{0x88, 0xcc, 0x44, 0xff}}, + Color{Color: color.RGBA{0x88, 0xcc, 0x88, 0xff}}, + Color{Color: color.RGBA{0x88, 0xcc, 0xcc, 0xff}}, + Color{Color: color.RGBA{0x88, 0x00, 0x00, 0xff}}, + Color{Color: color.RGBA{0x88, 0x00, 0x44, 0xff}}, + Color{Color: color.RGBA{0x99, 0x00, 0x4c, 0xff}}, + Color{Color: color.RGBA{0x99, 0x00, 0x99, 0xff}}, + Color{Color: color.RGBA{0x93, 0x00, 0xdd, 0xff}}, + Color{Color: color.RGBA{0x99, 0x4c, 0x00, 0xff}}, + Color{Color: color.RGBA{0x99, 0x4c, 0x4c, 0xff}}, + Color{Color: color.RGBA{0x99, 0x4c, 0x99, 0xff}}, + Color{Color: color.RGBA{0x93, 0x49, 0xdd, 0xff}}, + Color{Color: color.RGBA{0x99, 0x99, 0x00, 0xff}}, + Color{Color: color.RGBA{0x99, 0x99, 0x4c, 0xff}}, + Color{Color: color.RGBA{0x99, 0x99, 0x99, 0xff}}, + Color{Color: color.RGBA{0x93, 0x93, 0xdd, 0xff}}, + Color{Color: color.RGBA{0x93, 0xdd, 0x00, 0xff}}, + Color{Color: color.RGBA{0x93, 0xdd, 0x49, 0xff}}, + Color{Color: color.RGBA{0x93, 0xdd, 0x93, 0xff}}, + Color{Color: color.RGBA{0x93, 0xdd, 0xdd, 0xff}}, + Color{Color: color.RGBA{0x99, 0x00, 0x00, 0xff}}, + Color{Color: color.RGBA{0xaa, 0x00, 0x00, 0xff}}, + Color{Color: color.RGBA{0xaa, 0x00, 0x55, 0xff}}, + Color{Color: color.RGBA{0xaa, 0x00, 0xaa, 0xff}}, + Color{Color: color.RGBA{0x9e, 0x00, 0xee, 0xff}}, + Color{Color: color.RGBA{0xaa, 0x55, 0x00, 0xff}}, + Color{Color: color.RGBA{0xaa, 0x55, 0x55, 0xff}}, + Color{Color: color.RGBA{0xaa, 0x55, 0xaa, 0xff}}, + Color{Color: color.RGBA{0x9e, 0x4f, 0xee, 0xff}}, + Color{Color: color.RGBA{0xaa, 0xaa, 0x00, 0xff}}, + Color{Color: color.RGBA{0xaa, 0xaa, 0x55, 0xff}}, + Color{Color: color.RGBA{0xaa, 0xaa, 0xaa, 0xff}}, + Color{Color: color.RGBA{0x9e, 0x9e, 0xee, 0xff}}, + Color{Color: color.RGBA{0x9e, 0xee, 0x00, 0xff}}, + Color{Color: color.RGBA{0x9e, 0xee, 0x4f, 0xff}}, + Color{Color: color.RGBA{0x9e, 0xee, 0x9e, 0xff}}, + Color{Color: color.RGBA{0x9e, 0xee, 0xee, 0xff}}, + Color{Color: color.RGBA{0xaa, 0xff, 0xff, 0xff}}, + Color{Color: color.RGBA{0xbb, 0x00, 0x00, 0xff}}, + Color{Color: color.RGBA{0xbb, 0x00, 0x5d, 0xff}}, + Color{Color: color.RGBA{0xbb, 0x00, 0xbb, 0xff}}, + Color{Color: color.RGBA{0xaa, 0x00, 0xff, 0xff}}, + Color{Color: color.RGBA{0xbb, 0x5d, 0x00, 0xff}}, + Color{Color: color.RGBA{0xbb, 0x5d, 0x5d, 0xff}}, + Color{Color: color.RGBA{0xbb, 0x5d, 0xbb, 0xff}}, + Color{Color: color.RGBA{0xaa, 0x55, 0xff, 0xff}}, + Color{Color: color.RGBA{0xbb, 0xbb, 0x00, 0xff}}, + Color{Color: color.RGBA{0xbb, 0xbb, 0x5d, 0xff}}, + Color{Color: color.RGBA{0xbb, 0xbb, 0xbb, 0xff}}, + Color{Color: color.RGBA{0xaa, 0xaa, 0xff, 0xff}}, + Color{Color: color.RGBA{0xaa, 0xff, 0x00, 0xff}}, + Color{Color: color.RGBA{0xaa, 0xff, 0x55, 0xff}}, + Color{Color: color.RGBA{0xaa, 0xff, 0xaa, 0xff}}, + Color{Color: color.RGBA{0xcc, 0x00, 0xcc, 0xff}}, + Color{Color: color.RGBA{0xcc, 0x44, 0x00, 0xff}}, + Color{Color: color.RGBA{0xcc, 0x44, 0x44, 0xff}}, + Color{Color: color.RGBA{0xcc, 0x44, 0x88, 0xff}}, + Color{Color: color.RGBA{0xcc, 0x44, 0xcc, 0xff}}, + Color{Color: color.RGBA{0xcc, 0x88, 0x00, 0xff}}, + Color{Color: color.RGBA{0xcc, 0x88, 0x44, 0xff}}, + Color{Color: color.RGBA{0xcc, 0x88, 0x88, 0xff}}, + Color{Color: color.RGBA{0xcc, 0x88, 0xcc, 0xff}}, + Color{Color: color.RGBA{0xcc, 0xcc, 0x00, 0xff}}, + Color{Color: color.RGBA{0xcc, 0xcc, 0x44, 0xff}}, + Color{Color: color.RGBA{0xcc, 0xcc, 0x88, 0xff}}, + Color{Color: color.RGBA{0xcc, 0xcc, 0xcc, 0xff}}, + Color{Color: color.RGBA{0xcc, 0x00, 0x00, 0xff}}, + Color{Color: color.RGBA{0xcc, 0x00, 0x44, 0xff}}, + Color{Color: color.RGBA{0xcc, 0x00, 0x88, 0xff}}, + Color{Color: color.RGBA{0xdd, 0x00, 0x93, 0xff}}, + Color{Color: color.RGBA{0xdd, 0x00, 0xdd, 0xff}}, + Color{Color: color.RGBA{0xdd, 0x49, 0x00, 0xff}}, + Color{Color: color.RGBA{0xdd, 0x49, 0x49, 0xff}}, + Color{Color: color.RGBA{0xdd, 0x49, 0x93, 0xff}}, + Color{Color: color.RGBA{0xdd, 0x49, 0xdd, 0xff}}, + Color{Color: color.RGBA{0xdd, 0x93, 0x00, 0xff}}, + Color{Color: color.RGBA{0xdd, 0x93, 0x49, 0xff}}, + Color{Color: color.RGBA{0xdd, 0x93, 0x93, 0xff}}, + Color{Color: color.RGBA{0xdd, 0x93, 0xdd, 0xff}}, + Color{Color: color.RGBA{0xdd, 0xdd, 0x00, 0xff}}, + Color{Color: color.RGBA{0xdd, 0xdd, 0x49, 0xff}}, + Color{Color: color.RGBA{0xdd, 0xdd, 0x93, 0xff}}, + Color{Color: color.RGBA{0xdd, 0xdd, 0xdd, 0xff}}, + Color{Color: color.RGBA{0xdd, 0x00, 0x00, 0xff}}, + Color{Color: color.RGBA{0xdd, 0x00, 0x49, 0xff}}, + Color{Color: color.RGBA{0xee, 0x00, 0x4f, 0xff}}, + Color{Color: color.RGBA{0xee, 0x00, 0x9e, 0xff}}, + Color{Color: color.RGBA{0xee, 0x00, 0xee, 0xff}}, + Color{Color: color.RGBA{0xee, 0x4f, 0x00, 0xff}}, + Color{Color: color.RGBA{0xee, 0x4f, 0x4f, 0xff}}, + Color{Color: color.RGBA{0xee, 0x4f, 0x9e, 0xff}}, + Color{Color: color.RGBA{0xee, 0x4f, 0xee, 0xff}}, + Color{Color: color.RGBA{0xee, 0x9e, 0x00, 0xff}}, + Color{Color: color.RGBA{0xee, 0x9e, 0x4f, 0xff}}, + Color{Color: color.RGBA{0xee, 0x9e, 0x9e, 0xff}}, + Color{Color: color.RGBA{0xee, 0x9e, 0xee, 0xff}}, + Color{Color: color.RGBA{0xee, 0xee, 0x00, 0xff}}, + Color{Color: color.RGBA{0xee, 0xee, 0x4f, 0xff}}, + Color{Color: color.RGBA{0xee, 0xee, 0x9e, 0xff}}, + Color{Color: color.RGBA{0xee, 0xee, 0xee, 0xff}}, + Color{Color: color.RGBA{0xee, 0x00, 0x00, 0xff}}, + Color{Color: color.RGBA{0xff, 0x00, 0x00, 0xff}}, + Color{Color: color.RGBA{0xff, 0x00, 0x55, 0xff}}, + Color{Color: color.RGBA{0xff, 0x00, 0xaa, 0xff}}, + Color{Color: color.RGBA{0xff, 0x00, 0xff, 0xff}}, + Color{Color: color.RGBA{0xff, 0x55, 0x00, 0xff}}, + Color{Color: color.RGBA{0xff, 0x55, 0x55, 0xff}}, + Color{Color: color.RGBA{0xff, 0x55, 0xaa, 0xff}}, + Color{Color: color.RGBA{0xff, 0x55, 0xff, 0xff}}, + Color{Color: color.RGBA{0xff, 0xaa, 0x00, 0xff}}, + Color{Color: color.RGBA{0xff, 0xaa, 0x55, 0xff}}, + Color{Color: color.RGBA{0xff, 0xaa, 0xaa, 0xff}}, + Color{Color: color.RGBA{0xff, 0xaa, 0xff, 0xff}}, + Color{Color: color.RGBA{0xff, 0xff, 0x00, 0xff}}, + Color{Color: color.RGBA{0xff, 0xff, 0x55, 0xff}}, + Color{Color: color.RGBA{0xff, 0xff, 0xaa, 0xff}}, + Color{Color: color.RGBA{0xff, 0xff, 0xff, 0xff}}, + }}, +}