51 lines
830 B
Go
51 lines
830 B
Go
|
package chart
|
||
|
|
||
|
import (
|
||
|
"image/color"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
// ColorIsZero returns if a color.RGBA is unset or not.
|
||
|
func ColorIsZero(c color.RGBA) bool {
|
||
|
return c.R == 0 && c.G == 0 && c.B == 0 && c.A == 0
|
||
|
}
|
||
|
|
||
|
// MinAndMax returns both the min and max in one pass.
|
||
|
func MinAndMax(values ...float64) (min float64, max float64) {
|
||
|
if len(values) == 0 {
|
||
|
return
|
||
|
}
|
||
|
min = values[0]
|
||
|
max = values[0]
|
||
|
for _, v := range values {
|
||
|
if max < v {
|
||
|
max = v
|
||
|
}
|
||
|
if min > v {
|
||
|
min = v
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// MinAndMaxOfTime returns the min and max of a given set of times
|
||
|
// in one pass.
|
||
|
func MinAndMaxOfTime(values ...time.Time) (min time.Time, max time.Time) {
|
||
|
if len(values) == 0 {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
min = values[0]
|
||
|
max = values[0]
|
||
|
|
||
|
for _, v := range values {
|
||
|
if max.Before(v) {
|
||
|
max = v
|
||
|
}
|
||
|
if min.After(v) {
|
||
|
min = v
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|