// Various ways to generate single random colors package colorful import ( "math/rand" ) // Creates a random dark, "warm" color through a restricted HSV space. func FastWarmColor() Color { return Hsv( rand.Float64() * 360.0, 0.5 + rand.Float64()*0.3, 0.3 + rand.Float64()*0.3) } // Creates a random dark, "warm" color through restricted HCL space. // This is slower than FastWarmColor but will likely give you colors which have // the same "warmness" if you run it many times. func WarmColor() (c Color) { for c = randomWarm() ; !c.IsValid() ; c = randomWarm() {} return } func randomWarm() Color { return Hcl( rand.Float64() * 360.0, 0.1 + rand.Float64()*0.3, 0.2 + rand.Float64()*0.3) } // Creates a random bright, "pimpy" color through a restricted HSV space. func FastHappyColor() Color { return Hsv( rand.Float64() * 360.0, 0.7 + rand.Float64()*0.3, 0.6 + rand.Float64()*0.3) } // Creates a random bright, "pimpy" color through restricted HCL space. // This is slower than FastHappyColor but will likely give you colors which // have the same "brightness" if you run it many times. func HappyColor() (c Color) { for c = randomPimp() ; !c.IsValid() ; c = randomPimp() {} return } func randomPimp() Color { return Hcl( rand.Float64() * 360.0, 0.5 + rand.Float64()*0.3, 0.5 + rand.Float64()*0.3) }