10000 Merge pull request #13726 from anntzer/blend_hsv · matplotlib/matplotlib@35dc7c8 · GitHub
[go: up one dir, main page]

Skip to content

Commit 35dc7c8

Browse files
authored
Merge pull request #13726 from anntzer/blend_hsv
Clarify a bit the implementation of blend_hsv.
2 parents 24e4bea + b55a908 commit 35dc7c8

File tree

1 file changed

+15
-16
lines changed

1 file changed

+15
-16
lines changed

lib/matplotlib/colors.py

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1843,24 +1843,23 @@ def blend_hsv(self, rgb, intensity, hsv_max_sat=None, hsv_max_val=None,
18431843
intensity = intensity[..., 0]
18441844
intensity = 2 * intensity - 1
18451845

1846-
# convert to rgb, then rgb to hsv
1846+
# Convert to rgb, then rgb to hsv
18471847
hsv = rgb_to_hsv(rgb[:, :, 0:3])
1848-
1849-
# modify hsv values to simulate illumination.
1850-
np.putmask(hsv[:, :, 1], # i.e. A[mask] = B[mask].
1851-
(np.abs(hsv[:, :, 1]) > 1.e-10) & (intensity > 0),
1852-
(1 - intensity) * hsv[:, :, 1] + intensity * hsv_max_sat)
1853-
np.putmask(hsv[:, :, 2],
1854-
intensity > 0,
1855-
(1 - intensity) * hsv[:, :, 2] + intensity * hsv_max_val)
1856-
np.putmask(hsv[:, :, 1],
1857-
(np.abs(hsv[:, :, 1]) > 1.e-10) & (intensity < 0),
1858-
(1 + intensity) * hsv[:, :, 1] - intensity * hsv_min_sat)
1859-
np.putmask(hsv[:, :, 2],
1860-
intensity < 0,
1861-
(1 + intensity) * hsv[:, :, 2] - intensity * hsv_min_val)
1848+
hue, sat, val = np.moveaxis(hsv, -1, 0)
1849+
1850+
# Modify hsv values (in place) to simulate illumination.
1851+
# putmask(A, mask, B) <=> A[mask] = B[mask]
1852+
np.putmask(sat, (np.abs(sat) > 1.e-10) & (intensity > 0),
1853+
(1 - intensity) * sat + intensity * hsv_max_sat)
1854+
np.putmask(sat, (np.abs(sat) > 1.e-10) & (intensity < 0),
1855+
(1 + intensity) * sat - intensity * hsv_min_sat)
1856+
np.putmask(val, intensity > 0,
1857+
(1 - intensity) * val + intensity * hsv_max_val)
1858+
np.putmask(val, intensity < 0,
1859+
(1 + intensity) * val - intensity * hsv_min_val)
18621860
np.clip(hsv[:, :, 1:], 0, 1, out=hsv[:, :, 1:])
1863-
# convert modified hsv back to rgb.
1861+
1862+
# Convert modified hsv back to rgb.
18641863
return hsv_to_rgb(hsv)
18651864

18661865
def blend_soft_light(self, rgb, intensity):

0 commit comments

Comments
 (0)
0