33 lines
1.3 KiB
Plaintext
33 lines
1.3 KiB
Plaintext
def getHexColorFromInt(num, total=100):
|
|
import colorsys
|
|
|
|
# Calculate the hue by evenly spacing values around the full 360-degree color wheel
|
|
hue = (float(num) / total) * 360 # Ensure hue varies between 0 and 360 degrees
|
|
hue = hue / 360 # Convert to range [0, 1] for colorsys compatibility
|
|
saturation = 0.8 # High saturation for vibrant colors
|
|
lightness = 0.5 # Moderate lightness for balanced colors
|
|
|
|
# Convert HSL to RGB using the colorsys module
|
|
r, g, b = colorsys.hls_to_rgb(hue, lightness, saturation)
|
|
|
|
# Convert RGB values to the 0-255 range and format as a hex color
|
|
r = int(r * 255)
|
|
g = int(g * 255)
|
|
b = int(b * 255)
|
|
|
|
# Return the color as a hex string
|
|
color_hex = "#{:02x}{:02x}{:02x}".format(r, g, b)
|
|
return color_hex
|
|
|
|
def getComplimentaryLabelColor(backgroundColor):
|
|
# Convert hex color to RGB components
|
|
r = int(backgroundColor[1:3], 16)
|
|
g = int(backgroundColor[3:5], 16)
|
|
b = int(backgroundColor[5:7], 16)
|
|
|
|
# Calculate luminance (perceived brightness) using the formula
|
|
# Luminance formula adjusted for human perception
|
|
luminance = 0.299 * r + 0.587 * g + 0.114 * b
|
|
|
|
# If the luminance is greater than 128, use black text; otherwise, use white text
|
|
return '#000000' if luminance > 128 else '#FFFFFF' |