Exemplo n.º 1
0
    def test_rgb_to_hsl(self):
        calculator = Color("#123456")
        self.assertEqual((210, 65, 20), calculator.hsl())

        calculator = Color("#D9832E")
        self.assertEqual((30, 69, 52), calculator.hsl())

        calculator = Color("#107D41")
        self.assertEqual((147, 77, 28), calculator.hsl())
def color_name(hue):
    color = Color(hsl=(int(hue), 100, 50))
    name = find_closest(color.rgb)

    try:
        return name + ' hue'
    except KeyError:
        return str(color) + ' hue'
Exemplo n.º 3
0
    def test_AAA_textcolors(self):
        bg_color = Color("#00ff00")
        calculator = TextColorCalculator()
        approved_colors = calculator.AAA_textcolors(bg_color)

        for color in approved_colors:
            self.assertIsInstance(color, Color)
            self.assertGreaterEqual(calculator.contrast(color, bg_color), 7)
Exemplo n.º 4
0
def post_bgcolor(request):
    """Take a bg color, return a list of acceptable text colors"""
    bg_color = Color(request.data.get('color'))

    aa_colors = list(map(str, TextColorCalculator().AA_textcolors(bg_color)))
    aaa_colors = list(map(str, TextColorCalculator().AAA_textcolors(bg_color)))

    return Response({
        'background_color': str(bg_color),
        'aa_colors': aa_colors,
        'aaa_colors': aaa_colors,
    })
Exemplo n.º 5
0
 def test_analogous_colors(self):
     self.assertEqual(
         [Color(hsl=(105, 100, 50)).rgb,
          Color(hsl=(135, 100, 50)).rgb],
         list(
             map(lambda x: getattr(x, 'rgb'),
                 Color(hsl=(120, 100, 50)).analogous_colors())))
     self.assertEqual(
         [Color(hsl=(350, 100, 50)).rgb,
          Color(hsl=(20, 100, 50)).rgb],
         list(
             map(lambda x: getattr(x, 'rgb'),
                 Color(hsl=(5, 100, 50)).analogous_colors())))
     self.assertEqual(
         [Color(hsl=(165, 100, 50)).rgb,
          Color(hsl=(195, 100, 50)).rgb],
         list(
             map(lambda x: getattr(x, 'rgb'),
                 Color(hsl=(180, 100, 50)).analogous_colors())))
Exemplo n.º 6
0
 def test_complementary_color(self):
     self.assertEqual(
         Color(hsl=(180, 100, 50)).rgb,
         Color(hsl=(0, 100, 50)).complementary_color().rgb)
     self.assertEqual(
         Color(hsl=(20, 100, 50)).rgb,
         Color(hsl=(200, 100, 50)).complementary_color().rgb)
     self.assertEqual(
         Color(hsl=(190, 100, 50)).rgb,
         Color(hsl=(10, 100, 50)).complementary_color().rgb)
Exemplo n.º 7
0
    def test_contrast_calculation(self):
        calculator = TextColorCalculator()

        self.assertAlmostEqual(
            21, calculator.contrast(Color(rgb="#00000"),
                                    Color(hsl=(0, 0, 100))))

        self.assertAlmostEqual(
            5,
            calculator.contrast(Color(rgb="#cc3922"),
                                Color(hsl=(120, 50, 100))))

        self.assertAlmostEqual(
            1, calculator.contrast(Color(rgb="#ffffff"),
                                   Color(hsl=(0, 0, 100))))
from django import template

import webcolors

from accessible_text_color.calculator import Color

register = template.Library()

HEX_LIST = {}
for (key, value) in webcolors.css3_hex_to_names.items():
    HEX_LIST[value] = Color(key).rgb


def find_closest(rgb):
    distances = []
    for (name, color) in HEX_LIST.items():
        dist = pow(color[0] - rgb[0], 2) + \
            pow(color[1] - rgb[1], 2) + \
            pow(color[2] - rgb[2], 2)
        distances.append([name, dist])

    distances.sort(key=lambda x: x[1])
    return distances[0][0]


@register.filter
def color_name(hue):
    color = Color(hsl=(int(hue), 100, 50))
    name = find_closest(color.rgb)

    try:
Exemplo n.º 9
0
 def test_luminance(self):
     self.assertEqual(0, Color('#000000').luminance())
     self.assertEqual(1, Color('#ffffff').luminance())
     self.assertEqual(0.7152, Color('#00ff00').luminance())
     self.assertEqual(0.2126, Color('#ff0000').luminance())
     self.assertEqual(0.0722, Color('#0000ff').luminance())
Exemplo n.º 10
0
 def test_init_method(self):
     self.assertEqual((171, 205, 239), Color(rgb="#abcdef").rgb)
     self.assertEqual((100, 100, 100), Color(rgb=(100, 100, 100)).rgb)
     self.assertEqual((169, 204, 239), Color(hsl=(210, 68, 80)).rgb)
     self.assertEqual((16, 126, 66), Color(hsl=(147, 77, 28)).rgb)