File: colors.py

package info (click to toggle)
glueviz 0.9.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 17,180 kB
  • ctags: 6,728
  • sloc: python: 37,111; makefile: 134; sh: 60
file content (29 lines) | stat: -rw-r--r-- 912 bytes parent folder | download | duplicates (2)
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