1 2from PyObjCTools.TestSupport import * 3from Quartz.CoreGraphics import * 4import array 5import sys 6 7try: 8 long 9except NameError: 10 long = int 11 12try: 13 unicode 14except NameError: 15 unicode = str 16 17if sys.version_info[0] != 2: 18 def buffer(value): 19 if isinstance(value, bytes): 20 return value 21 return value.encode('latin1') 22 23class TestCGColorSpace (TestCase): 24 def testConstants(self): 25 self.assertEqual(kCGRenderingIntentDefault, 0) 26 self.assertEqual(kCGRenderingIntentAbsoluteColorimetric, 1) 27 self.assertEqual(kCGRenderingIntentRelativeColorimetric, 2) 28 self.assertEqual(kCGRenderingIntentPerceptual, 3) 29 self.assertEqual(kCGRenderingIntentSaturation, 4) 30 31 self.assertEqual(kCGColorSpaceModelUnknown, -1) 32 self.assertEqual(kCGColorSpaceModelMonochrome, 0) 33 self.assertEqual(kCGColorSpaceModelRGB, 1) 34 self.assertEqual(kCGColorSpaceModelCMYK, 2) 35 self.assertEqual(kCGColorSpaceModelLab, 3) 36 self.assertEqual(kCGColorSpaceModelDeviceN, 4) 37 self.assertEqual(kCGColorSpaceModelIndexed, 5) 38 self.assertEqual(kCGColorSpaceModelPattern, 6) 39 40 self.assertIsInstance(kCGColorSpaceGenericGray, unicode) 41 self.assertIsInstance(kCGColorSpaceGenericRGB, unicode) 42 self.assertIsInstance(kCGColorSpaceGenericCMYK, unicode) 43 44 self.assertIsInstance(kCGColorSpaceUserGray, (str, unicode)) 45 self.assertIsInstance(kCGColorSpaceUserRGB, (str, unicode)) 46 self.assertIsInstance(kCGColorSpaceUserCMYK, (str, unicode)) 47 48 @min_os_level('10.5') 49 def testConstants10_5(self): 50 self.assertIsInstance(kCGColorSpaceGenericRGBLinear, unicode) 51 self.assertIsInstance(kCGColorSpaceAdobeRGB1998, unicode) 52 self.assertIsInstance(kCGColorSpaceSRGB, unicode) 53 54 55 @min_os_level('10.6') 56 def testConstants10_6(self): 57 self.assertIsInstance(kCGColorSpaceGenericGrayGamma2_2, unicode) 58 59 60 def testFunctions(self): 61 self.assertResultIsCFRetained(CGColorSpaceCreateDeviceGray) 62 self.assertIsInstance(CGColorSpaceCreateDeviceGray(), CGColorSpaceRef) 63 64 self.assertResultIsCFRetained(CGColorSpaceCreateDeviceRGB) 65 self.assertIsInstance(CGColorSpaceCreateDeviceRGB(), CGColorSpaceRef) 66 67 self.assertResultIsCFRetained(CGColorSpaceCreateDeviceCMYK) 68 self.assertIsInstance(CGColorSpaceCreateDeviceCMYK(), CGColorSpaceRef) 69 70 self.assertResultIsCFRetained(CGColorSpaceCreateCalibratedGray) 71 csp = CGColorSpaceCreateCalibratedGray((0, 0, 0), (1, 1, 1), 0.8) 72 self.assertIsInstance(csp, CGColorSpaceRef) 73 74 self.assertResultIsCFRetained(CGColorSpaceCreateCalibratedRGB) 75 csp = CGColorSpaceCreateCalibratedRGB((0.5, 0.5, 0.2), (0.9, 0.95, 1.0), (0.7, 0.8, 0.9), (0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99, 0.99)) 76 self.assertIsInstance(csp, CGColorSpaceRef) 77 78 self.assertResultIsCFRetained(CGColorSpaceCreateLab) 79 csp = CGColorSpaceCreateLab((0.1, 0.1, 0.1), (0.99, 0.99, 0.99), (0.1, 0.79, 0.5, 0.99)) 80 self.assertIsInstance(csp, CGColorSpaceRef) 81 82 self.assertResultIsCFRetained(CGColorSpaceCreatePattern) 83 csp = CGColorSpaceCreatePattern(csp) 84 self.assertIsInstance(csp, CGColorSpaceRef) 85 86 self.assertResultIsCFRetained(CGColorSpaceCreateWithName) 87 csp = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB) 88 self.assertIsInstance(csp, CGColorSpaceRef) 89 90 v = CGColorSpaceRetain(csp) 91 self.assertTrue(v is csp) 92 CGColorSpaceRelease(csp) 93 94 self.assertIsInstance(CGColorSpaceGetTypeID(), (int, long)) 95 self.assertIsInstance(CGColorSpaceGetNumberOfComponents(csp), (int, long)) 96 97 @min_os_level('10.5') 98 def testFunctions10_5(self): 99 csp = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB) 100 self.assertIsInstance(CGColorSpaceGetModel(csp), (int, long)) 101 102 v = CGColorSpaceGetBaseColorSpace(csp) 103 self.assertTrue(v is None) 104 105 v = CGColorSpaceCreatePattern(csp) 106 v = CGColorSpaceGetBaseColorSpace(v) 107 self.assertTrue(v is csp) 108 109 v = CGColorSpaceGetColorTableCount(csp) 110 self.assertEqual(v, 0) 111 112 v = CGColorSpaceCopyICCProfile(csp) 113 self.assertIsInstance(v, CFDataRef) 114 115 with open('/Library/ColorSync/Profiles/WebSafeColors.icc', 'rb') as fp: 116 data = fp.read() 117 provider = CGDataProviderCreateWithCFData(buffer(data)) 118 spc = CGColorSpaceCreateICCBased(3, [0.0, 255.0, 0.0, 255.0, 0.0, 255.0], 119 provider, CGColorSpaceCreateDeviceRGB()) 120 self.assertIsInstance(spc, CGColorSpaceRef) 121 122 dta= CGColorSpaceCopyICCProfile(csp) 123 self.assertIsInstance(dta, CFDataRef) 124 125 spc = CGColorSpaceCreateIndexed(CGColorSpaceCreateDeviceRGB(), 10, 126 (0, 1, 2)*11) 127 self.assertIsInstance(spc, CGColorSpaceRef) 128 129 self.assertEqual(CGColorSpaceGetModel(spc), kCGColorSpaceModelIndexed) 130 131 v = CGColorSpaceGetColorTableCount(spc) 132 self.assertEqual(v, 11) 133 134 buf = array.array('B', [99] * (3*11)) 135 v = CGColorSpaceGetColorTable(spc, buf) 136 self.assertTrue(buf is v) 137 self.assertTrue(buf[0] == 0) 138 self.assertTrue(buf[1] == 1) 139 self.assertTrue(buf[2] == 2) 140 self.assertTrue(buf[3] == 0) 141 self.assertTrue(buf[4] == 1) 142 self.assertTrue(buf[5] == 2) 143 144 spc = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB) 145 self.assertIsInstance(spc, CGColorSpaceRef) 146 147 dta= CGColorSpaceCopyICCProfile(spc) 148 self.assertIsInstance(dta, CFDataRef) 149 150 self.assertResultIsCFRetained(CGColorSpaceCreateWithICCProfile) 151 v = CGColorSpaceCreateWithICCProfile(dta) 152 self.assertIsInstance(v, CGColorSpaceRef) 153 154 @min_os_level('10.6') 155 def testFunctions10_6(self): 156 csp = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB) 157 self.assertIsInstance(csp, CGColorSpaceRef) 158 159 v = CGColorSpaceCopyName(csp) 160 self.assertIsInstance(v, unicode) 161 162 163if __name__ == "__main__": 164 main() 165