docs: def color_overlap(color1, *args):
      '''
      color_overlap(color1, color2...) yields the rgba value associated with overlaying color2 on top
        of color1 followed by any additional colors (overlaid left to right). This respects alpha
        values when calculating the results.
      Note that colors may be lists of colors, in which case a matrix of RGBA values is yielded.
      '''
      args = list(args)
      args.insert(0, color1)
      rgba = np.asarray([0.5,0.5,0.5,0])
      for c in args:
          c = to_rgba(c)
          a = c[...,3]
          a0 = rgba[...,3]
          if   np.isclose(a0, 0).all(): rgba = np.ones(rgba.shape) * c
          elif np.isclose(a,  0).all(): continue
          else:                         rgba = times(a, c) + times(1-a, rgba)
      return rgba