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