def color_is_dark(bg_color): # Remove '#' if present color = bg_color[1:] if bg_color.startswith('#') else bg_color # Extract RGB components r = int(color[0:2], 16) # Hex to R g = int(color[2:4], 16) # Hex to G b = int(color[4:6], 16) # Hex to B # Convert RGB values to normalized UI colors uicolors = [r / 255.0, g / 255.0, b / 255.0] # Apply formula to calculate perceived luminance c = [ col / 12.92 if col <= 0.03928 else ((col + 0.055) / 1.055) ** 2.4 for col in uicolors ] # Calculate luminance luminance = (0.2126 * c[0]) + (0.7152 * c[1]) + (0.0722 * c[2]) # Return whether the color is considered "dark" return luminance <= 0.179