1 2from PyObjCTools.TestSupport import * 3from Quartz.CoreGraphics import * 4from Quartz import CoreGraphics 5 6try: 7 long 8except NameError: 9 long = int 10 11try: 12 unicode 13except NameError: 14 unicode = str 15 16class TestCGDirectDisplay (TestCase): 17 18 @min_os_level('10.8') 19 def testConstants10_8(self): 20 self.assertIsInstance(kCGDisplayShowDuplicateLowResolutionModes, unicode) 21 22 @min_os_level('10.8') 23 def testFunctions10_8(self): 24 mainID = CGMainDisplayID() 25 mode = CGDisplayCopyDisplayMode(mainID) 26 self.assertIsInstance(mode, CGDisplayModeRef) 27 28 w = CGDisplayModeGetPixelWidth(mode) 29 self.assertIsInstance(w, (int, long)) 30 31 h = CGDisplayModeGetPixelHeight(mode) 32 self.assertIsInstance(h, (int, long)) 33 34 def testConstants(self): 35 self.assertEqual(kCGNullDirectDisplay, 0) 36 37 self.assertEqual(kCGDisplayWidth, "Width") 38 self.assertEqual(kCGDisplayHeight, "Height") 39 self.assertEqual(kCGDisplayMode, "Mode") 40 self.assertEqual(kCGDisplayBitsPerPixel, "BitsPerPixel") 41 self.assertEqual(kCGDisplayBitsPerSample, "BitsPerSample") 42 self.assertEqual(kCGDisplaySamplesPerPixel, "SamplesPerPixel") 43 self.assertEqual(kCGDisplayRefreshRate, "RefreshRate") 44 self.assertEqual(kCGDisplayModeUsableForDesktopGUI, "UsableForDesktopGUI") 45 self.assertEqual(kCGDisplayIOFlags, "IOFlags") 46 self.assertEqual(kCGDisplayBytesPerRow, "kCGDisplayBytesPerRow") 47 self.assertEqual(kCGIODisplayModeID, "IODisplayModeID") 48 49 self.assertEqual(kCGDisplayModeIsSafeForHardware, "kCGDisplayModeIsSafeForHardware") 50 self.assertEqual(kCGDisplayModeIsInterlaced, "kCGDisplayModeIsInterlaced") 51 self.assertEqual(kCGDisplayModeIsStretched, "kCGDisplayModeIsStretched") 52 self.assertEqual(kCGDisplayModeIsTelevisionOutput, "kCGDisplayModeIsTelevisionOutput" ) 53 54 self.assertEqual(kCGCaptureNoOptions, 0) 55 self.assertEqual(kCGCaptureNoFill, 1) 56 57 self.assertNotHasAttr(CoreGraphics, 'kCGDirectMainDisplay') 58 59 def testFunctions(self): 60 self.assertIsInstance(CGMainDisplayID(), (int, long)) 61 62 self.assertArgIsOut(CGGetDisplaysWithPoint, 2) 63 self.assertArgIsOut(CGGetDisplaysWithPoint, 3) 64 v, ids, cnt = CGGetDisplaysWithPoint((0, 0), 10, None, None) 65 self.assertIsInstance(v, (int, long)) 66 self.assertIsInstance(cnt, (int, long)) 67 self.assertTrue(cnt) 68 self.assertEqual(len(ids), cnt) 69 self.assertIsInstance(ids[0], (int, long)) 70 71 self.assertArgIsOut(CGGetDisplaysWithRect, 2) 72 self.assertArgIsOut(CGGetDisplaysWithRect, 3) 73 v, ids, cnt = CGGetDisplaysWithRect(((0, 0), (400, 500)), 74 10, None, None) 75 self.assertIsInstance(v, (int, long)) 76 self.assertIsInstance(cnt, (int, long)) 77 self.assertTrue(cnt) 78 self.assertEqual(len(ids), cnt) 79 self.assertIsInstance(ids[0], (int, long)) 80 81 82 self.assertArgIsOut(CGGetDisplaysWithOpenGLDisplayMask, 2) 83 self.assertArgIsOut(CGGetDisplaysWithOpenGLDisplayMask, 3) 84 v, ids, cnt = CGGetDisplaysWithOpenGLDisplayMask(0xff, 85 10, None, None) 86 self.assertIsInstance(v, (int, long)) 87 self.assertIsInstance(cnt, (int, long)) 88 self.assertTrue(cnt) 89 self.assertEqual(len(ids), cnt) 90 self.assertIsInstance(ids[0], (int, long)) 91 92 self.assertArgIsOut(CGGetActiveDisplayList, 1) 93 self.assertArgIsOut(CGGetActiveDisplayList, 2) 94 v, ids, cnt = CGGetActiveDisplayList(10, None, None) 95 self.assertIsInstance(v, (int, long)) 96 self.assertIsInstance(cnt, (int, long)) 97 self.assertTrue(cnt) 98 self.assertEqual(len(ids), cnt) 99 self.assertIsInstance(ids[0], (int, long)) 100 101 self.assertArgIsOut(CGGetOnlineDisplayList, 1) 102 self.assertArgIsOut(CGGetOnlineDisplayList, 2) 103 v, ids, cnt = CGGetOnlineDisplayList(10, None, None) 104 self.assertIsInstance(v, (int, long)) 105 self.assertIsInstance(cnt, (int, long)) 106 self.assertTrue(cnt) 107 self.assertEqual(len(ids), cnt) 108 self.assertIsInstance(ids[0], (int, long)) 109 110 v = CGDisplayIDToOpenGLDisplayMask(CGMainDisplayID()) 111 self.assertIsInstance(v, (int, long)) 112 self.assertNotEqual(v, 0) 113 114 id = CGOpenGLDisplayMaskToDisplayID(v) 115 self.assertIsInstance(id, (int, long)) 116 self.assertEqual(id, CGMainDisplayID()) 117 118 box = CGDisplayBounds(CGMainDisplayID()) 119 self.assertIsInstance(box, CGRect) 120 121 v = CGDisplayPixelsWide(CGMainDisplayID()) 122 self.assertIsInstance(v, (int, long)) 123 v = CGDisplayPixelsHigh(CGMainDisplayID()) 124 self.assertIsInstance(v, (int, long)) 125 126 modes = CGDisplayAvailableModes(CGMainDisplayID()) 127 self.assertIsInstance(modes, CFArrayRef) 128 self.assertTrue(len(modes) > 0) 129 self.assertIsInstance(modes[0], CFDictionaryRef) 130 131 v, exact = CGDisplayBestModeForParameters(CGMainDisplayID(), 132 32, 800, 600, None) 133 self.assertIsInstance(v, CFDictionaryRef) 134 self.assertIsInstance(exact, (int, long)) 135 136 v, exact = CGDisplayBestModeForParametersAndRefreshRate( 137 CGMainDisplayID(), 32, 800, 600, 70, None) 138 self.assertIsInstance(v, CFDictionaryRef) 139 self.assertIsInstance(exact, (int, long)) 140 141 v, exact = CGDisplayBestModeForParametersAndRefreshRateWithProperty( 142 CGMainDisplayID(), 32, 800, 600, 70, 143 kCGDisplayModeIsSafeForHardware, None) 144 self.assertIsInstance(v, CFDictionaryRef) 145 self.assertIsInstance(exact, (int, long)) 146 147 cur = CGDisplayCurrentMode(CGMainDisplayID()) 148 self.assertIsInstance(cur, CFDictionaryRef) 149 150 v = CGDisplaySwitchToMode(CGMainDisplayID(), v) 151 self.assertEqual(v, 0) 152 v = CGDisplaySwitchToMode(CGMainDisplayID(), cur) 153 self.assertEqual(v, 0) 154 155 v = CGDisplayBitsPerPixel(CGMainDisplayID()) 156 self.assertIsInstance(v, (int, long)) 157 158 v = CGDisplayBitsPerSample(CGMainDisplayID()) 159 self.assertIsInstance(v, (int, long)) 160 161 v = CGDisplaySamplesPerPixel(CGMainDisplayID()) 162 self.assertIsInstance(v, (int, long)) 163 164 v = CGDisplayBytesPerRow(CGMainDisplayID()) 165 self.assertIsInstance(v, (int, long)) 166 167 self.assertArgIsOut(CGGetDisplayTransferByFormula, 1) 168 self.assertArgIsOut(CGGetDisplayTransferByFormula, 2) 169 self.assertArgIsOut(CGGetDisplayTransferByFormula, 3) 170 self.assertArgIsOut(CGGetDisplayTransferByFormula, 4) 171 self.assertArgIsOut(CGGetDisplayTransferByFormula, 5) 172 self.assertArgIsOut(CGGetDisplayTransferByFormula, 6) 173 self.assertArgIsOut(CGGetDisplayTransferByFormula, 7) 174 self.assertArgIsOut(CGGetDisplayTransferByFormula, 8) 175 self.assertArgIsOut(CGGetDisplayTransferByFormula, 9) 176 v = CGGetDisplayTransferByFormula(CGMainDisplayID(), 177 None, None, None, None, None, None, None, None, None) 178 self.assertIsInstance(v[0], (int, long)) 179 for i in range(9): 180 self.assertIsInstance(v[i+1], float) 181 182 183 v = CGSetDisplayTransferByFormula(CGMainDisplayID(), *v[1:]) 184 self.assertEqual(v, 0) 185 186 187 tablen = CGDisplayGammaTableCapacity(CGMainDisplayID()) 188 self.assertIsInstance(tablen, (int, long)) 189 190 err, red, green, blue, count = CGGetDisplayTransferByTable( 191 CGMainDisplayID(), tablen, None, None, None, None) 192 self.assertIsInstance(err, (int, long)) 193 self.assertIsInstance(count, (int, long)) 194 self.assertEqual(err, 0) 195 self.failIfEqual(count, 0) 196 197 198 err = CGSetDisplayTransferByTable(CGMainDisplayID(), count, 199 red, green, blue) 200 self.assertEqual(err, 0) 201 202 err, red, green, blue, count = CGGetDisplayTransferByTable( 203 CGMainDisplayID(), tablen, None, None, None, None) 204 self.assertIsInstance(err, (int, long)) 205 self.assertIsInstance(count, (int, long)) 206 self.assertEqual(err, 0) 207 self.failIfEqual(count, 0) 208 209 err = CGSetDisplayTransferByTable(CGMainDisplayID(), count, 210 red, green, blue) 211 self.assertEqual(err, 0) 212 213 CGDisplayRestoreColorSyncSettings() 214 215 v = CGDisplayIsCaptured(CGMainDisplayID()) 216 self.assertIsInstance(v, int) 217 self.failIf(v) 218 219 err = CGDisplayCapture(CGMainDisplayID()) 220 self.assertEqual(err, 0) 221 222 v = CGDisplayIsCaptured(CGMainDisplayID()) 223 self.assertTrue(v) 224 225 err = CGDisplayRelease(CGMainDisplayID()) 226 self.assertEqual(err, 0) 227 228 v = CGDisplayIsCaptured(CGMainDisplayID()) 229 self.failIf(v) 230 231 err = CGDisplayCaptureWithOptions(CGMainDisplayID(), 0) 232 self.assertEqual(err, 0) 233 234 err = CGDisplayRelease(CGMainDisplayID()) 235 self.assertEqual(err, 0) 236 237 err = CGCaptureAllDisplays() 238 self.assertEqual(err, 0) 239 240 ctx = CGDisplayGetDrawingContext(CGMainDisplayID()) 241 self.assertIsInstance(ctx, CGContextRef) 242 243 err = CGReleaseAllDisplays() 244 self.assertEqual(err, 0) 245 246 err = CGCaptureAllDisplaysWithOptions(0) 247 self.assertEqual(err, 0) 248 249 err = CGReleaseAllDisplays() 250 self.assertEqual(err, 0) 251 252 v = CGShieldingWindowID(CGMainDisplayID()) 253 self.assertIsInstance(v, (int, long)) 254 255 v = CGShieldingWindowLevel() 256 self.assertIsInstance(v, (int, long)) 257 258 v = CGDisplayBaseAddress(CGMainDisplayID()) 259 if v is not objc.NULL: 260 self.assertIsInstance(v, objc.varlist) 261 self.assertIsInstance(v[0], bytes) 262 263 v = CGDisplayAddressForPosition(CGMainDisplayID(), 100, 100) 264 if v is not objc.NULL: 265 self.assertIsInstance(v, objc.varlist) 266 self.assertIsInstance(v[0], str) 267 268 err = CGDisplayHideCursor(CGMainDisplayID()) 269 self.assertEqual(err, 0) 270 271 err = CGDisplayShowCursor(CGMainDisplayID()) 272 self.assertEqual(err, 0) 273 274 err = CGDisplayMoveCursorToPoint(CGMainDisplayID(), (100, 100)) 275 276 dX, dY = CGGetLastMouseDelta(None, None) 277 self.assertIsInstance(dX, (int, long)) 278 self.assertIsInstance(dY, (int, long)) 279 280 v = CGDisplayCanSetPalette(CGMainDisplayID()) 281 self.assertIsInstance(v, (int, long)) 282 283 err = CGDisplayWaitForBeamPositionOutsideLines(CGMainDisplayID(), 200, 400) 284 self.assertEqual(err, 0) 285 286 v = CGDisplayBeamPosition(CGMainDisplayID()) 287 self.assertIsInstance(v, (int, long)) 288 289 palette = CGPaletteCreateDefaultColorPalette() 290 self.assertIsInstance(palette, CGDirectPaletteRef) 291 292 err = CGDisplaySetPalette(CGMainDisplayID(), palette) 293 self.assertIsInstance(err, (int, long)) 294 295 # Don't actually call CGSetDisplayTransferByByteTable, it might have 296 # permanent effects. 297 self.assertResultHasType(CGSetDisplayTransferByByteTable, objc._C_INT) 298 self.assertArgHasType(CGSetDisplayTransferByByteTable, 0, objc._C_UINT) 299 self.assertArgHasType(CGSetDisplayTransferByByteTable, 1, objc._C_UINT) 300 self.assertArgHasType(CGSetDisplayTransferByByteTable, 2, b'n^' + objc._C_CHAR_AS_INT) 301 self.assertArgSizeInArg(CGSetDisplayTransferByByteTable, 2, 1) 302 self.assertArgHasType(CGSetDisplayTransferByByteTable, 3, b'n^' + objc._C_CHAR_AS_INT) 303 self.assertArgSizeInArg(CGSetDisplayTransferByByteTable, 3, 1) 304 self.assertArgHasType(CGSetDisplayTransferByByteTable, 4, b'n^' + objc._C_CHAR_AS_INT) 305 self.assertArgSizeInArg(CGSetDisplayTransferByByteTable, 4, 1) 306 307 @min_os_level('10.6') 308 def testTypes10_6(self): 309 self.assertIsCFType(CGDisplayModeRef) 310 311 @min_os_level('10.6') 312 def testFunction10_6(self): 313 mainID = CGMainDisplayID() 314 315 self.assertResultIsCFRetained(CGDisplayCopyAllDisplayModes) 316 v = CGDisplayCopyAllDisplayModes(mainID, None) 317 self.assertIsInstance(v, CFArrayRef) 318 319 self.assertResultIsCFRetained(CGDisplayCopyDisplayMode) 320 mode = CGDisplayCopyDisplayMode(mainID) 321 self.assertIsInstance(mode, CGDisplayModeRef) 322 323 v = CGDisplaySetDisplayMode(mainID, mode, None) 324 self.assertIsInstance(v, (int, long)) 325 326 v = CGDisplayModeGetWidth(mode) 327 self.assertIsInstance(v, (int, long)) 328 v = CGDisplayModeGetHeight(mode) 329 self.assertIsInstance(v, (int, long)) 330 v = CGDisplayModeCopyPixelEncoding(mode) 331 self.assertIsInstance(v, unicode) 332 v = CGDisplayModeGetRefreshRate(mode) 333 self.assertIsInstance(v, float) 334 v = CGDisplayModeGetIOFlags(mode) 335 self.assertIsInstance(v, (int, long)) 336 v = CGDisplayModeGetIODisplayModeID(mode) 337 self.assertIsInstance(v, (int, long)) 338 v = CGDisplayModeIsUsableForDesktopGUI(mode) 339 self.assertIsInstance(v, bool) 340 v = CGDisplayModeGetTypeID() 341 self.assertIsInstance(v, (int, long)) 342 v = CGDisplayModeRetain(mode) 343 self.assertTrue(v is mode) 344 CGDisplayModeRelease(mode) 345 346 self.assertResultIsCFRetained(CGDisplayCreateImage) 347 v = CGDisplayCreateImage(mainID) 348 self.assertIsInstance(v, CGImageRef) 349 self.assertResultIsCFRetained(CGDisplayCreateImageForRect) 350 v = CGDisplayCreateImageForRect(mainID, ((0, 0), (100, 100))) 351 self.assertIsInstance(v, CGImageRef) 352 353 354 355 356if __name__ == "__main__": 357 main() 358