This commit is contained in:
hugovk 2014-08-26 12:16:32 +03:00
parent 6b5871a484
commit 08499d3547
2 changed files with 14 additions and 8 deletions

View File

@ -24,6 +24,7 @@ from PIL._binary import o8
EPSILON = 1e-10
def linear(middle, pos):
if pos <= middle:
if middle < EPSILON:
@ -38,25 +39,30 @@ def linear(middle, pos):
else:
return 0.5 + 0.5 * pos / middle
def curved(middle, pos):
return pos ** (log(0.5) / log(max(middle, EPSILON)))
def sine(middle, pos):
return (sin((-pi / 2.0) + pi * linear(middle, pos)) + 1.0) / 2.0
def sphere_increasing(middle, pos):
return sqrt(1.0 - (linear(middle, pos) - 1.0) ** 2)
def sphere_decreasing(middle, pos):
return 1.0 - sqrt(1.0 - linear(middle, pos) ** 2)
SEGMENTS = [ linear, curved, sine, sphere_increasing, sphere_decreasing ]
SEGMENTS = [linear, curved, sine, sphere_increasing, sphere_decreasing]
class GradientFile:
gradient = None
def getpalette(self, entries = 256):
def getpalette(self, entries=256):
palette = []
@ -89,6 +95,7 @@ class GradientFile:
return b"".join(palette), "RGBA"
##
# File handler for GIMP's gradient format.
@ -114,13 +121,13 @@ class GimpGradientFile(GradientFile):
s = fp.readline().split()
w = [float(x) for x in s[:11]]
x0, x1 = w[0], w[2]
xm = w[1]
rgb0 = w[3:7]
rgb1 = w[7:11]
x0, x1 = w[0], w[2]
xm = w[1]
rgb0 = w[3:7]
rgb1 = w[7:11]
segment = SEGMENTS[int(s[11])]
cspace = int(s[12])
cspace = int(s[12])
if cspace != 0:
raise IOError("cannot handle HSV colour space")

View File

@ -95,7 +95,6 @@ class TestImage(PillowTestCase):
self.assertEqual(len(palette[0]), 1024)
self.assertEqual(palette[1], "RGBA")
def test_load_1_3_via_imagepalette(self):
# Arrange
from PIL import ImagePalette