def testCmap(self): cmap = fract4dc.cmap_create( [(0.0, 255, 0, 100, 255), (1.0, 0, 255, 50, 255)]) self.assertEqual(fract4dc.cmap_lookup(cmap, 0.0), (255, 0, 100, 255)) self.assertEqual( fract4dc.cmap_lookup( cmap, 1.0 - 1e-10), (0, 254, 50, 255)) self.assertEqual(fract4dc.cmap_lookup(cmap, 1.0), (0, 255, 50, 255)) self.assertEqual(fract4dc.cmap_lookup(cmap, 0.5), (127, 127, 75, 255)) self.assertEqual( fract4dc.cmap_lookup( cmap, 0.00000001), (254, 0, 99, 255)) cmap = fract4dc.cmap_create( [(0.0, 255, 0, 100, 255)]) expc1 = (255, 0, 100, 255) self.assertEqual(fract4dc.cmap_lookup(cmap, 0.0), expc1) self.assertEqual(fract4dc.cmap_lookup(cmap, 1.0), expc1) self.assertEqual(fract4dc.cmap_lookup(cmap, 0.4), expc1) colors = [] for i in range(256): colors.append( (i / 255.0, (i * 17) % 256, 255 - i, i // 2, i // 2 + 127)) cmap = fract4dc.cmap_create(colors) for i in range(256): self.assertEqual(fract4dc.cmap_lookup( cmap, i / 255.0), colors[i][1:], i)
def checkCGradientAndPyGradientEquivalent(self, grad): # We have 2 sets of gradient-drawing code, in C and Python # check they calculate the same answer self.assertWellFormedGradient(grad) cmap = fract4dc.cmap_create_gradient(grad.segments) for i in range(1000): fi = i / 1000.0 (r, g, b, a) = grad.get_color_at(fi) # print "%d: %.17g, %.17g, %.17g, %.17g" % (i,r,g,b,a) cmap_color = fract4dc.cmap_lookup(cmap, fi) grad_color = (int(r * 255.0), int(g * 255.0), int(b * 255.0), int(a * 255.0)) self.assertNearlyEqual( grad_color, cmap_color, "colorlist(%s) = %s but gradient(%s) = %s" % (fi, cmap_color, fi, grad_color), 1.5)
def checkCGradientAndPyGradientEquivalent(self,grad): # We have 2 sets of gradient-drawing code, in C and Python # check they calculate the same answer self.assertWellFormedGradient(grad) cmap = fract4dc.cmap_create_gradient(grad.segments) for i in range(1000): fi = i / 1000.0 (r,g,b,a) = grad.get_color_at(fi) #print "%d: %.17g, %.17g, %.17g, %.17g" % (i,r,g,b,a) cmap_color = fract4dc.cmap_lookup(cmap, fi) grad_color = (int(r*255.0), int(g*255.0), int(b*255.0), int(a*255.0)) self.assertNearlyEqual( grad_color, cmap_color, "colorlist(%s) = %s but gradient(%s) = %s" % \ (fi, cmap_color, fi, grad_color), 1.5)
def testCmap(self): cmap = fract4dc.cmap_create( [(0.0,255,0,100,255), (1.0, 0, 255, 50, 255)]) self.assertEqual(fract4dc.cmap_lookup(cmap,0.0), (255,0,100,255)) self.assertEqual(fract4dc.cmap_lookup(cmap,1.0-1e-10), (0,254,50,255)) self.assertEqual(fract4dc.cmap_lookup(cmap,1.0), (0,255,50,255)) self.assertEqual(fract4dc.cmap_lookup(cmap,0.5), (127,127,75,255)) self.assertEqual(fract4dc.cmap_lookup(cmap,0.00000001), (254,0,99,255)) cmap = fract4dc.cmap_create( [(0.0,255,0,100,255)]) expc1 = (255,0,100,255) self.assertEqual(fract4dc.cmap_lookup(cmap,0.0),expc1) self.assertEqual(fract4dc.cmap_lookup(cmap,1.0),expc1) self.assertEqual(fract4dc.cmap_lookup(cmap,0.4),expc1) colors = [] for i in range(256): colors.append((i/255.0,(i*17)%256,255-i,i//2,i//2+127)) cmap = fract4dc.cmap_create(colors) for i in range(256): self.assertEqual(fract4dc.cmap_lookup(cmap,i/255.0),colors[i][1:],i)
def checkColorMapAndGradientEquivalent(self, colorlist, maxdiff=0): grad = gradient.Gradient() grad.load_list(colorlist, maxdiff) self.assertWellFormedGradient(grad) if maxdiff != 0: # don't have any robust metric for how close this will be return cmap = fract4dc.cmap_create(colorlist) for i in range(1000): fi = i / 1000.0 (r, g, b, a) = grad.get_color_at(fi) cmap_color = fract4dc.cmap_lookup(cmap, fi) grad_color = (int(r * 255.0), int(g * 255.0), int(b * 255.0), int(a * 255.0)) self.assertNearlyEqual( grad_color, cmap_color, "colorlist(%s) = %s but gradient(%s) = %s" % (fi, cmap_color, fi, grad_color), 1.5) return grad
def checkColorMapAndGradientEquivalent(self,colorlist,maxdiff=0): grad = gradient.Gradient() grad.load_list(colorlist,maxdiff) self.assertWellFormedGradient(grad) if maxdiff != 0: # don't have any robust metric for how close this will be return cmap = fract4dc.cmap_create(colorlist) for i in range(1000): fi = i / 1000.0 (r,g,b,a) = grad.get_color_at(fi) cmap_color = fract4dc.cmap_lookup(cmap, fi) grad_color = (int(r*255.0), int(g*255.0), int(b*255.0), int(a*255.0)) self.assertNearlyEqual( grad_color, cmap_color, "colorlist(%s) = %s but gradient(%s) = %s" % \ (fi, cmap_color, fi, grad_color), 1.5) return grad