示例#1
0
文件: test_fract4d.py 项目: asa-Q/HL
    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)
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
    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)
示例#5
0
    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
示例#6
0
    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