1
2from PyObjCTools.TestSupport import *
3from Quartz.CoreGraphics import *
4import array
5
6try:
7    long
8except NameError:
9    long = int
10
11class TestCGBitmapContext (TestCase):
12    def testFunctions(self):
13        bytes_val = array.array('B', (0 for i in range(100*80*4)))
14        self.assertIsInstance(bytes_val, array.array)
15        self.assertEqual(len(bytes_val), 100*80*4)
16        ctx = CGBitmapContextCreate(bytes_val, 100, 80, 8, 400, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast)
17        self.assertIsInstance(ctx, CGContextRef)
18
19        buf = CGBitmapContextGetData(ctx)
20        self.assertIsInstance(buf, objc.varlist)
21        self.assertIsInstance(buf[0], bytes)
22
23        self.assertEqual(CGBitmapContextGetWidth(ctx), 100)
24        self.assertEqual(CGBitmapContextGetHeight(ctx), 80)
25        self.assertEqual(CGBitmapContextGetBitsPerComponent(ctx), 8)
26        self.assertEqual(CGBitmapContextGetBitsPerPixel(ctx), 32)
27        self.assertEqual(CGBitmapContextGetBytesPerRow(ctx), 400)
28
29        v = CGBitmapContextGetColorSpace(ctx)
30        self.assertIsInstance(v, CGColorSpaceRef)
31
32        v = CGBitmapContextGetAlphaInfo(ctx)
33        self.assertIsInstance(v, (int, long))
34
35        v = CGBitmapContextGetBitmapInfo(ctx)
36        self.assertIsInstance(v, (int, long))
37
38        img = CGBitmapContextCreateImage(ctx)
39        self.assertIsInstance(img, CGImageRef)
40
41
42    @min_os_level('10.6')
43    def testFunctions10_6(self):
44        bytes_val = array.array('B', (0 for i in range(100*80*4)))
45        ctx = CGBitmapContextCreateWithData(bytes_val, 100, 80, 8, 400, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast, None, None)
46        self.assertIsInstance(ctx, CGContextRef)
47        del ctx
48
49        list = []
50        release_info = object()
51        def callback(info, data):
52            list.append((info, data))
53
54        ctx = CGBitmapContextCreateWithData(bytes_val, 100, 80, 8, 400, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast, callback, release_info)
55        self.assertIsInstance(ctx, CGContextRef)
56        del ctx
57
58        self.assertEquals(len(list), 1)
59        self.assertIs(list[0][0], release_info)
60        self.assertIs(list[0][1], bytes_val)
61
62
63if __name__ == "__main__":
64    main()
65