forked from glue-viz/glue
-
Notifications
You must be signed in to change notification settings - Fork 0
/
colors.py
29 lines (20 loc) · 912 Bytes
/
colors.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from __future__ import absolute_import, division, print_function
from matplotlib.colors import ColorConverter
__all__ = ['alpha_blend_colors']
COLOR_CONVERTER = ColorConverter()
def alpha_blend_colors(colors, additional_alpha=1.0):
"""
Given a sequence of colors, return the alpha blended color.
This assumes the last color is the one in front.
"""
srcr, srcg, srcb, srca = COLOR_CONVERTER.to_rgba(colors[0])
srca *= additional_alpha
for color in colors[1:]:
dstr, dstg, dstb, dsta = COLOR_CONVERTER.to_rgba(color)
dsta *= additional_alpha
outa = srca + dsta * (1 - srca)
outr = (srcr * srca + dstr * dsta * (1 - srca)) / outa
outg = (srcg * srca + dstg * dsta * (1 - srca)) / outa
outb = (srcb * srca + dstb * dsta * (1 - srca)) / outa
srca, srcr, srcg, srcb = outa, outr, outg, outb
return srcr, srcg, srcb, srca