Added more tests
This commit is contained in:
32
RGB.go
Normal file
32
RGB.go
Normal file
@ -0,0 +1,32 @@
|
||||
package color
|
||||
|
||||
import "math"
|
||||
|
||||
// RGB creates a new color with red, green and blue values in the range of 0.0 to 1.0.
|
||||
func RGB(r Value, g Value, b Value) Color {
|
||||
return Color{r, g, b}
|
||||
}
|
||||
|
||||
// inSRGB indicates whether the given color can be mapped to the sRGB color space.
|
||||
func inSRGB(l Value, a Value, b Value, chroma Value) bool {
|
||||
r, g, b := oklabToLinearRGB(l, a*chroma, b*chroma)
|
||||
return r >= 0 && g >= 0 && b >= 0 && r <= 1 && g <= 1 && b <= 1
|
||||
}
|
||||
|
||||
// sRGB performs gamma correction to convert linear RGB to sRGB.
|
||||
// Source: IEC 61966-2-2
|
||||
func sRGB(x Value) Value {
|
||||
if x < 0 {
|
||||
return 0
|
||||
}
|
||||
|
||||
if x < 0.0031308 {
|
||||
return 12.92 * x
|
||||
}
|
||||
|
||||
if x < 1.0 {
|
||||
return 1.055*math.Pow(x, 1/2.4) - 0.055
|
||||
}
|
||||
|
||||
return 1.0
|
||||
}
|
Reference in New Issue
Block a user