def test_rgb(self): self.assertEqual(Hex('#f00'), Hex('#ff0000')) self.assertEqual(Hex('#ff0000'), Rgb(255, 0, 0)) self.assertEqual(Rgb(255, 0, 0), Rgb(Pr(100), Pr(0), Pr(0))) self.assertEqual(Rgb(Pr(100), Pr(0), Pr(0)), Hex('#f00')) self.assertEqual(Rgb(255, 0, 0), Rgba(255, 0, 0, 1)) self.assertEqual(Rgb(Pr(100), Pr(0), Pr(0)), Rgba(255, 0, 0, 1))
def mix(color, color1, weight=Pr(50)): """Mixes two colors together""" p = weight.value / 100.0 w = p * 2 - 1 a = color.a - color1.a w1 = ((w if w * a == -1 else (w + a) / (1 + w * a)) + 1) / 2.0 w2 = 1 - w1 r = color.r * w1 + color1.r * w2 g = color.g * w1 + color1.g * w2 b = color.b * w1 + color1.b * w2 a = color.a * p + color1.a * (1 - p) return Color(r, g, b, a)
def spinin(color, value=Pr(10)): """Changes the hue of a color.""" color = Color(color) color.h += value return color
def percentage(value): """Converts a unitless number to a percentage.""" return Pr(value)
def fadeout(color, value=Pr(10)): """Add or change an alpha layer for any color value.""" color = Color(color) color.a -= value return color
def desaturate(color, value=Pr(10)): """Makes a color less saturated.""" color = Color(color) color.s -= value return color
def saturate(color, value=Pr(10)): """Makes a color more saturated.""" color = Color(color) color.s += value return color
def darken(color, value=Pr(10)): """Makes a color darker.""" color = Color(color) color.l -= value return color
def lighten(color, value=Pr(10)): """Makes a color lighten.""" color = Color(color) color.l += value return color
def test_hls(self): self.assertEqual(Hsl(120, Pr(100), Pr(50)), Hsla(120, Pr(100), Pr(50), 1))