1 2from PyObjCTools.TestSupport import * 3from Quartz.CoreGraphics import * 4import sys 5 6import sys 7 8if sys.version_info[0] != 2: 9 def buffer(value): 10 if isinstance(value, bytes): 11 return value 12 return value.encode('latin1') 13 14 15class TestCGImage (TestCase): 16 def testConstants(self): 17 self.assertEqual(kCGImageAlphaNone, 0) 18 self.assertEqual(kCGImageAlphaPremultipliedLast, 1) 19 self.assertEqual(kCGImageAlphaPremultipliedFirst, 2) 20 self.assertEqual(kCGImageAlphaLast, 3) 21 self.assertEqual(kCGImageAlphaFirst, 4) 22 self.assertEqual(kCGImageAlphaNoneSkipLast, 5) 23 self.assertEqual(kCGImageAlphaNoneSkipFirst, 6) 24 self.assertEqual(kCGImageAlphaOnly, 7) 25 26 self.assertEqual(kCGBitmapAlphaInfoMask, 0x1F) 27 self.assertEqual(kCGBitmapFloatComponents, (1 << 8)) 28 self.assertEqual(kCGBitmapByteOrderMask, 0x7000) 29 self.assertEqual(kCGBitmapByteOrderDefault, (0 << 12)) 30 self.assertEqual(kCGBitmapByteOrder16Little, (1 << 12)) 31 self.assertEqual(kCGBitmapByteOrder32Little, (2 << 12)) 32 self.assertEqual(kCGBitmapByteOrder16Big, (3 << 12)) 33 self.assertEqual(kCGBitmapByteOrder32Big, (4 << 12)) 34 35 if sys.byteorder == 'big': 36 self.assertEqual(kCGBitmapByteOrder16Host, kCGBitmapByteOrder16Big) 37 self.assertEqual(kCGBitmapByteOrder32Host, kCGBitmapByteOrder32Big) 38 else: 39 self.assertEqual(kCGBitmapByteOrder16Host, kCGBitmapByteOrder16Little) 40 self.assertEqual(kCGBitmapByteOrder32Host, kCGBitmapByteOrder32Little) 41 42 def testFunctions(self): 43 self.assertIsInstance(CGImageGetTypeID(), (int, long)) 44 45 provider = CGDataProviderCreateWithCFData(buffer("1" * 4 * 100 * 80)) 46 self.assertArgHasType(CGImageCreate, 9, objc._C_BOOL) 47 self.assertResultIsCFRetained(CGImageCreate) 48 image = CGImageCreate(100, 80, 8, 32, 400, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast, 49 provider, None, False, kCGRenderingIntentDefault) 50 self.assertIsInstance(image, CGImageRef) 51 52 image2 = CGImageCreate(100, 80, 8, 32, 400, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaNoneSkipLast, 53 provider, [0, 1, 0, 1, 0, 1], False, kCGRenderingIntentDefault) 54 self.assertIsInstance(image2, CGImageRef) 55 56 provider = CGDataProviderCreateWithCFData(buffer("1" * 4 * 20 * 10)) 57 self.assertArgHasType(CGImageMaskCreate, 7, objc._C_BOOL) 58 self.assertResultIsCFRetained(CGImageMaskCreate) 59 mask = CGImageMaskCreate(20, 10, 8, 32, 80, provider, None, True) 60 self.assertIsInstance(mask, CGImageRef) 61 62 self.assertResultIsCFRetained(CGImageCreateCopy) 63 v = CGImageCreateCopy(image) 64 self.assertIsInstance(v, CGImageRef) 65 66 provider = CGDataProviderCreateWithCFData(buffer( 67 open('/System/Library/CoreServices/DefaultDesktop.jpg', 'rb').read())) 68 self.assertResultIsCFRetained(CGImageCreateWithJPEGDataProvider) 69 self.assertArgHasType(CGImageCreateWithJPEGDataProvider, 2, objc._C_BOOL) 70 v = CGImageCreateWithJPEGDataProvider(provider, None, True, kCGRenderingIntentDefault) 71 self.assertIsInstance(v, CGImageRef) 72 73 provider = CGDataProviderCreateWithCFData(buffer( 74 open('/System/Library//CoreServices/Installer.app/Contents/PlugIns/Summary.bundle/Contents/Resources/Success.png', 'rb').read())) 75 self.assertResultIsCFRetained(CGImageCreateWithPNGDataProvider) 76 self.assertArgHasType(CGImageCreateWithPNGDataProvider, 2, objc._C_BOOL) 77 v = CGImageCreateWithPNGDataProvider(provider, None, True, kCGRenderingIntentDefault) 78 self.assertIsInstance(v, CGImageRef) 79 80 self.assertResultIsCFRetained(CGImageCreateWithImageInRect) 81 v = CGImageCreateWithImageInRect(image, ((10, 10), (30, 40))) 82 self.assertIsInstance(v, CGImageRef) 83 84 self.assertResultIsCFRetained(CGImageCreateWithMask) 85 v = CGImageCreateWithMask(image, mask) 86 self.assertIsInstance(v, CGImageRef) 87 88 89 self.assertResultIsCFRetained(CGImageCreateWithMaskingColors) 90 v = CGImageCreateWithMaskingColors(image2, [0,255]*4) 91 self.assertIsInstance(v, CGImageRef) 92 93 self.assertResultIsCFRetained(CGImageCreateCopyWithColorSpace) 94 v = CGImageCreateCopyWithColorSpace(image, CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB)) 95 self.assertIsInstance(v, CGImageRef) 96 97 v = CGImageRetain(image) 98 self.assertTrue(v is image) 99 CGImageRelease(image) 100 101 self.assertResultHasType(CGImageIsMask, objc._C_BOOL) 102 self.assertTrue(CGImageIsMask(image) is False) 103 self.assertTrue(CGImageIsMask(mask) is True) 104 105 v = CGImageGetWidth(image) 106 self.assertIsInstance(v, (int, long)) 107 108 v = CGImageGetHeight(image) 109 self.assertIsInstance(v, (int, long)) 110 111 v = CGImageGetBitsPerComponent(image) 112 self.assertIsInstance(v, (int, long)) 113 114 v = CGImageGetBitsPerPixel(image) 115 self.assertIsInstance(v, (int, long)) 116 117 v = CGImageGetBytesPerRow(image) 118 self.assertIsInstance(v, (int, long)) 119 120 v = CGImageGetColorSpace(image) 121 self.assertIsInstance(v, CGColorSpaceRef) 122 123 v = CGImageGetAlphaInfo(image) 124 self.assertIsInstance(v, (int, long)) 125 126 v = CGImageGetDataProvider(image) 127 self.assertIsInstance(v, CGDataProviderRef) 128 129 v = CGImageGetDecode(image) 130 self.assertTrue(v is objc.NULL) 131 132 v = CGImageGetDecode(image2) 133 self.assertIsInstance(v, objc.varlist) 134 self.assertEqual(v[0], 0.0) 135 self.assertEqual(v[1], 1.0) 136 137 self.assertResultHasType(CGImageGetShouldInterpolate, objc._C_BOOL) 138 v = CGImageGetShouldInterpolate(image) 139 self.assertTrue(v is False) 140 v = CGImageGetShouldInterpolate(mask) 141 self.assertTrue(v is True) 142 143 v = CGImageGetRenderingIntent(image) 144 self.assertIsInstance(v, (int, long)) 145 146 v = CGImageGetBitmapInfo(image) 147 self.assertIsInstance(v, (int, long)) 148 149 150if __name__ == "__main__": 151 main() 152