34 lines
867 B
Python
34 lines
867 B
Python
# -*- coding=utf-8 -*-
|
||
|
||
"""
|
||
kivy color:
|
||
[ r, g, b, a]
|
||
不同的颜色值总能找到一个人眼感知的灰度值,这是著名的心理学公式:
|
||
灰度 = 红×0.299 + 绿×0.587 + 蓝×0.114
|
||
当灰度值大于0.5时使用暗色,否则使用明色
|
||
colors 两个颜色,缺省为空,使用函数内置的两个颜色
|
||
"""
|
||
|
||
def color_gray_rate(color):
|
||
graylevel = 0.299 * color[0] + \
|
||
0.587 * color[1] + \
|
||
0.114 * color[2]
|
||
return graylevel
|
||
|
||
def get_fgcolor_from_bgcolor(bgcolor, colors=None):
|
||
dark_fgcolor=[0.11,0.11,0.11,1]
|
||
bright_fgcolor=[0.89,0.89,0.89,1]
|
||
|
||
graylevel = color_gray_rate(bgcolor)
|
||
if colors == None:
|
||
if graylevel > 0.5:
|
||
return dark_fgcolor
|
||
else:
|
||
return bright_fgcolor
|
||
r1 = color_gray_rate(colors[0])
|
||
r2 = color_gray_rate(colors[1])
|
||
if abs(graylevel - r1) > abs(graylevel - r2):
|
||
return colors[0]
|
||
return colors[1]
|
||
|